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 (Deactivated) ) 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: How to PSG (Python Study Group) . If you are interested in presenting, please reach out to @Rebecca Graber (Deactivated) in Slack.

Schedule:

Some links are still in the process of being migrated as part of the Google docs migration

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

Date

Topic

Presenter

Links

Date

Topic

Presenter

Links

2023-04-18

DRF musings

@Alexander Dusenbery

drf-best-practices/docs/drf-jazz-20230418.md at aed/yells-at-cloud · iloveagent57/drf-best-practices

2022-04-05

Testing roundtable

 

https://drive.google.com/file/d/1bQ7VcW-gz1S9T-Ls4aWgZK54jyOUntQH/view?usp=sharing

2022-03-15

Async IO

@Christopher Pappas and @Ned Batchelder (Deactivated)

https://docs.google.com/document/d/1w_U9mFPRwq7DndQUv5RY3LSozFbE0z10rArfrPzXVJs/edit#

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

2022-02-22

Why Your Mocks Don’t Work

@Ned Batchelder (Deactivated) @Tim McCormack

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

2022-02-01

Particularly Clueless Presenter: ASGI and WSGI

@Rebecca Graber (Deactivated)

Video: https://drive.google.com/drive/u/0/folders/13K7rTX7MUDKmRLNzrMu4KeASq8Q-7rGQ

Slides/notes: https://docs.google.com/presentation/d/1XsSqR4FnaNrLlgXbX3gAYVlaR6qy7dWHZLpxOa4ufrA/edit?usp=sharing

2022-01-11

The Django 3.2 Upgrade: Automation, Coordination, and Highlights

@Jeremy Bowman (Deactivated)

Video: https://drive.google.com/file/d/1Yc91jmPn3t-R5nRlkrU3Fv7JWrbmhaB6/view?usp=sharing

Django 3.2 upgrade project page: Django 3.2 Upgradearchived

Original DjangoCon presentation Jeremy Bowman - Herding Ponies: Coordinating and Automating Django Upgrades Across 100+ Repositories

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 (Deactivated)

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

2021-07-06

Group code review

@Feanil Patel (Deactivated)

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

2021-06-15

Generators

@Diane Kaplan (Deactivated)

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 (Deactivated)

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

2021-03-23

Ask me (ned) anything!

@Ned Batchelder (Deactivated)

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 (Deactivated) @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 (Deactivated)



DATE TBD

Creating public APIs on edx-platform

@Jesper Hodge

 

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 (Deactivated)

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 (Deactivated)

Postponed due to winter storm - get home safely!

2/26/19

Comprehensions

@Ben Holt (Deactivated)

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 (Deactivated)

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 (Deactivated)

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

2019-07-30

Decorators

@Jinder Singh (Deactivated)



2019-08-13

Inheritance

@Bessie Steinberg (Deactivated)



2019-08-27

Pickling

@Rebecca Graber (Deactivated)



2019-09-10

Which is faster?

@Feanil Patel (Deactivated)



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 (Deactivated)

Slides

2019-11-05

Potpourri

@Alexander Dusenbery



2019-11-19

Objects

@Kyle McCormick (Deactivated)



2019-12-03

Mocking

@Christopher Pappas



2019-12-17

Ask me (Ned) anything!

@Ned Batchelder (Deactivated)



2019-12-31

NEW YEARS EVE





2020-1-14

Magnets Decorators, how do they work??

@Ben Holt (Deactivated)

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 (Deactivated)



2020-3-10

Strings underneath the hood

@Christopher Pappas



2020-3-31

Type Hints

@Jinder Singh (Deactivated)



2020-4-21

Django Shell and observing DB stuff

@Christopher Pappas



2020-5-12

Fooling Algolia With Delegators: A Case Study

@Rebecca Graber (Deactivated)

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 (Deactivated)



2020-07-14

Django at 20,000 Feet

@Nathan Sprenkle

Slides,

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

 

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 (Deactivated)

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 (Deactivated)

Jupyter notebook:

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

2020-12-08

Multithreading

@Diane Kaplan (Deactivated)

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!