Python Study Group

What is it?

The Python Study Group is an opportunity to learn, teach and discuss Python with your fellow edXers! Meetings occur once every three weeks and are listed on the engineering calendar.

How does it work?

Usually, a single presenter will put together a talk on a topic of their choosing. It can be anything related to python, including particular libraries or edX-specific patterns and usages. Sometimes we vary the format with things like

  • Group code reviews

  • Helping someone with a personal project

  • Roundtable

  • AMAs with some of our experts

We are also actively looking to expand the different types of study group meetings, so if you have an idea please ping the group runner (currently @Rebecca Graber ) on slack.

Who can present?

Newbies, experts, and everyone in between. We especially encourage folks who are newer to python to present, as there is no better way to learn a topic than to teach others. We have also had presentations of the form ‘please help me with this thing I don’t understand,' where one person picked the brain of the assembly on a topic they were struggling with.

Tell me more about presenting

We have put together a handy guide to presenting at PSG: https://openedx.atlassian.net/wiki/spaces/AC/pages/2856158322 . If you are interested in presenting, please reach out to @Rebecca Graber in Slack.

Schedule:

Most recent event should be at the top of the table.

Date

Topic

Presenter

Links

Date

Topic

Presenter

Links

2021-11-09

XBlocks

@Nathan Sprenkle

video: https://drive.google.com/file/d/1aEpBHqQdFbSS4RdwHw-DWrgbzKOgbF7L/view?usp=sharing

On the role of XBlocks going forward:

Extra XBlock thoughts (+ regrets):

2021-10-19

Well That’s Interesting: edX’s Favorite Python Gotchas

Many!

video: https://drive.google.com/file/d/1RqFemzBYf6-qZP6V_UXbLWbF20PF77D1/view?usp=sharing

Notebook: https://colab.research.google.com/drive/1y9rWR4OEvAzfbf_NuJSUTCUkuBdxMYqA?usp=sharing

2021-09-28

When To Use FP in Python

@Kevin Afable (Deactivated)

https://drive.google.com/file/d/1GoHIAvrD-jE7tMbQS79VBAK8dXVCS1Hp/view?usp=sharing

2021-09-07

N+1

@Ken Clary

https://docs.google.com/presentation/d/1DQTiV77ria8elHcFPbicRG0x-Xtt2C9XrG-XdQzBSgY/edit

2021-07-06

Group code review

@Feanil Patel

https://drive.google.com/file/d/1n-Jbzd0bdl7uh3HoPtcWF2hRc4m1rSvE/view?usp=sharing

2021-06-15

Generators

@Diane Kaplan

recording: https://drive.google.com/file/d/17DCNnHZpfl25TbCYS1FShuoe0BHF4QQ3/view?usp=sharing

2021-05-25

Persistent Celery Task Results

@Alexander Dusenbery

https://openedx.atlassian.net/wiki/spaces/~adusenbery/blog/2021/03/16/2499870990/Fun+with+Celery+Task+Results#Links-to-things (link to demo PR inside)

2021-04-13

Django Admin

@Dave Ormsbee (Do Not Use)

recording: https://drive.google.com/file/d/15M4Mn8CMtpAS-ZeLXo-Bp8gnErF4GIc2/view?usp=sharing

2021-03-23

Ask me (ned) anything!

@Ned Batchelder

https://openedx.atlassian.net/wiki/spaces/AC/pages/2446590287/Python+AMA+6https://drive.google.com/file/d/1aM31KERPxr8J13ZdkWsb1-yEl4Wz-80u/view?usp=sharing

2021-03-02

Debugging tricky problems

 

@Feanil Patel @Tim McCormack

recording

https://docs.google.com/document/d/115hCwSFyekQfG5P1ws5BsMdyRf1IRWhpos4GSGcUf50/edit

2021-02-09

HACKATHON!!!

 

 

2021-01-19

Dunder Methods

@Christopher Pappas

recording

Whe

 

Potential Topics

Date

Topic

Presenter

Links

Date

Topic

Presenter

Links

DATE TBD

Async/Await

@Christopher Pappas



DATE TBD

Is Python pass-by-value or pass-by-reference

@Nathan Sprenkle



DATE TBD

How XBlocks work in the context of edX platform

@Nathan Sprenkle



DATE TBD (but not soon, busy ramping up with devops/SRE)

Context Managers

@Christopher Pappas



DATE TBD

pip-tools: Demystifying "make upgrade"

@Kyle McCormick (Do Not Use)



Older Study Group Sessions

Date

Topic

Presenter

Links

Date

Topic

Presenter

Links

3/15/18

Generators





4/3/18

Generator Expressions





4/17/18

Multiple Inheritance





5/1/18

Decorators





5/22/18

Special Methods





6/12/18

Itertools





6/26/18

Py 2 vs. Py 3





7/10/18

Inheritance





7/31/18

Assignment





8/14/18

Exceptions





8/28/18

Scoping

@Bessie Steinberg (Deactivated)

https://github.com/BessieSteinberg/py_study_group/tree/master/scoping

9/11/18

Mocking

@Bessie Steinberg (Deactivated)



9/25/18

Cancelled due to Hackathon





10/9/18

Callables: a Smorgasbord

@Ben Holt

https://github.com/inventhouse/tutorials/tree/master/PySG-Callables

10/23/18

More Fun with Callables!

@Bessie Steinberg (Deactivated)

https://github.com/BessieSteinberg/py_study_group/tree/master/callables

11/6/18

Decorators

@Bessie Steinberg (Deactivated)



11/20/18

Context Managers

@Bessie Steinberg (Deactivated)



12/4/18

Python 3

Troy Sankey



12/18/18

Iterators and Iterables

@Bessie Steinberg (Deactivated)



1/1/19

Cancelled due to Work Holiday





1/15/19

Fun with import

@Bessie Steinberg (Deactivated)



1/29/19

Cancelled due to Hackathon





2/12/19

Comprehensions

@Ben Holt

Postponed due to winter storm - get home safely!

2/26/19

Comprehensions

@Ben Holt

Ben sick today, sorry! 😞

2019-03-12

Write a unit test from scratch

@Alexander Dusenbery

Unit Testing in edx-platform

2019-03-26

Cancelled due to Open edX Conference





2019-04-09

Comprehensions

@Ben Holt

Notes and examples

2019-04-23

Factories (Fuzzy text and stuff)

@Rickie Reilly (Deactivated)



2019-05-07







2019-05-21

Debugging, pdb, finding stuff

@Alexander Dusenbery



2019-06-06

Assignment Rerun

@Bessie Steinberg (Deactivated)



2019-06-18

Factories (Fuzzy text and stuff)

@Rickie Reilly (Deactivated)



2019-07-02

Regular Expressions

@Christopher Pappas



2019-07-16

DRYer testing (with mixins, ddt, etc.)

@Kyle McCormick (Do Not Use)

https://github.com/kdmccormick/edx-python-study-group

2019-07-30

Decorators

@Jinder Singh



2019-08-13

Inheritance

@Bessie Steinberg (Deactivated)



2019-08-27

Pickling

@Rebecca Graber



2019-09-10

Which is faster?

@Feanil Patel



2019-09-24

Efficient Queries with the Django ORM

@Calen Pennington (Deactivated)



2019-10-08

Virtual Env Wrappers

@Christopher Pappas



2019-10-22

CLI tools

@Rebecca Graber

Slides

2019-11-05

Potpourri

@Alexander Dusenbery



2019-11-19

Objects

@Kyle McCormick (Do Not Use)



2019-12-03

Mocking

@Christopher Pappas



2019-12-17

Ask me (Ned) anything!

@Ned Batchelder



2019-12-31

NEW YEARS EVE





2020-1-14

Magnets Decorators, how do they work??

@Ben Holt

https://github.com/inventhouse/tutorials/blob/master/PySG-Decorators/Decorators.ipynb

2020-1-28

Scope (and Closures)

@Christopher Pappas



2020-2-11

CANCELLED: HACKATHON





2020-2-25

Parse time vs run time evaluation

@Rebecca Graber



2020-3-10

Strings underneath the hood

@Christopher Pappas



2020-3-31

Type Hints

@Jinder Singh



2020-4-21

Django Shell and observing DB stuff

@Christopher Pappas



2020-5-12

Fooling Algolia With Delegators: A Case Study

@Rebecca Graber

https://tinyurl.com/y77osnqd

2020-06-01

String formatting

@Juliana Kang

https://github.com/julianajlk/study/blob/master/PSG_formatstring.ipynb

2020-06-23

Python Governance

@Jinder Singh



2020-07-14

Django at 20,000 Feet

@Nathan Sprenkle

Slides,

 

2020-08-03

Decorators

@Emma Green (Deactivated)

2020-08-25

Role-based access control, JWTs, and how to live your best life in 2020 (w.r.t. to Django view AuthN/Z).

@Alexander Dusenbery

https://github.com/edx/edx-rbac

https://github.com/iloveagent57/edx_rbac_demo demonstrates how to make use of edx-rbac in a toy IDA that can get a JWT from the devstack LMS.

2020-09-15

Decorators part 2

@Emma Green (Deactivated)

2020-10-06

"What does that do?" – Interesting Python snippets from edX repositories

@Kyle McCormick (Do Not Use)

recording

2020-10-27

Closures (and more!)

@Tim McCormack

Jupyter notebook dump: https://gist.github.com/timmc-edx/adb53ef9409233fcb3573b5e1e2c1b1c
https://drive.google.com/file/d/1k2qsiiKuSqSocM8u0Eh6SwGw3MP6TrkX/view?usp=sharing

2020-11-17

Context Managers

@Rebecca Graber

Jupyter notebook:

https://drive.google.com/file/d/1B8z1XJofd6PRqhCI011Q6CLxcQHNHxOM/view?usp=sharing

2020-12-08

Multithreading

@Diane Kaplan

https://drive.google.com/file/d/1UCX-8h8Ob64BQcjkLf1GWysx7IPtJNA5/view?usp=sharing

Topic Ideas:

Is there something in python that seems like magic?  Is there a topic you wish you knew more about? Add it to the list! You don't have to present it, but it's helpful to have a list to pull from.

  • decorators

    • mock patch, decorators used in testing

  • context managers 

  • py2 vs. py3

  • Bultin vs. local

  • mocking

  • descriptors

  • pdb and other debuggers

  • spying & advanced mocking (ex. called with correct args)

  • testing

    • pytest feature rundown

  • generators

  • generator comprehensions and list comprehensions

  • iterators/iterables

  • write a new unit test from scratch / from the code base

  • installing dependeces / set up tools "whole ecosystem of crap that you need to use python"

    • publish package to pip

    • how do we do it here?

    • the src dir in our docker devstack

  • regular expressions

  • pickle: And it's three fatal flaws! SPOOKY!

  • setup.py

  • modules and imports; how to import modules; import statements

    • sys.path

    • python 3 changes to relative path

    • from _ _future_ _

  • Random library

  • venv wrappers

  • Objects

  • Lambdas

  • Writing command-line tools

    • Argparse

    • click

  • Jupyter

    • edX BI Toolkit

  • Xonsh

  • Context managers

  • Parse time vs run time evaluation

    • Is Python interpreted or compiled? Yes!

Sad that Python Study Group is only every three weeks?

Head over to Frontend Study Group and Arch Study Group!