Go offline with the Player FM app!
#444 Begone Python of Yore!
Manage episode 499609094 series 1305988
- Coverage.py regex pragmas
- * Python of Yore*
- * nox-uv*
- * A couple Django items*
- Extras
- Joke
About the show
Sponsored by DigitalOcean: pythonbytes.fm/digitalocean-gen-ai Use code DO4BYTES and get $200 in free credit
Connect with the hosts
- Michael: @[email protected] / @mkennedy.codes (bsky)
- Brian: @[email protected] / @brianokken.bsky.social
- Show: @[email protected] / @pythonbytes.fm (bsky)
Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.
Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.
Brian #1: Coverage.py regex pragmas
Ned Batchelder
The regex implementation of how coverage.py recognizes pragmas is pretty amazing.
It’s extensible through plugins
- covdefaults adds a bunch of default exclusions, and also platform- and version-specific comment syntaxes.
- coverage-conditional-plugin gives you a way to create comment syntaxes for entire files, for whether other packages are installed, and so on.
A change from last year (as part of coverage.py 7.6 allows multiline regexes, which let’s us do things like:
- Exclude an entire file with
\\A(?s:.*# pragma: exclude file.*)\\Z
- Allow start and stop delimiters with
# no cover: start(?s:.*?)# no cover: stop
- Exclude empty placeholder methods with
^\\s*(((async )?def .*?)?\\)(\\s*->.*?)?:\\s*)?\\.\\.\\.\\s*(#|$)
- See Ned’s article for explanations of these
- Exclude an entire file with
Michael #2: Python of Yore
- via Matthias
- Use
YORE: ...
comments to highlight CPython version dependencies.# YORE: EOL 3.8: Replace block with line 4. if sys.version_info < (3, 9): from astunparse import unparse else: from ast import unparse
Then check when they go out of support:
$ yore check --eol-within '5 months' ./src/griffe/agents/nodes/_values.py:11: Python 3.8 will reach its End of Life within approx. 4 months
Even fix them with fix
.
Michael #3: nox-uv
- via John Hagen
- What nox-uv does is make it very simple to install uv extras and/or dependency groups into a nox session's virtual environment.
- The versions installed are constrained by uv's lockfile meaning that everything is deterministic and pinned.
- Dependency groups make it very easy to install only want is necessary for a session (e.g., only linting dependencies like Ruff, or main dependencies + mypy for type checking).
Brian #4: A couple Django items
- Stop Using Django's squashmigrations: There's a Better Way
- Johnny Metz
- Resetting migrations is sometimes the right thing.
- Overly simplified summary: delete migrations and start over
- dj-lite
- Adam Hill
- Use SQLite in production with Django
- “Simplify deploying and maintaining production Django websites by using SQLite in production.
dj-lite
helps enable the best performance for SQLite for small to medium-sized projects. It requires Django 5.1+.”
Extras
Brian:
- Test & Code 237: FastAPI Cloud with Sebastian Ramirez
- will be out later today
- pythontest.com: pytest fixtures nuts and bolts - revisited
- A blog series that I wrote a long time ago.
- I’ve updated it into more managable bite-sized pieces, updated and tested with Python 3.13 and pytest 8
Michael:
- New course: Just Enough Python for Data Scientists
- My live stream about uv is now on YouTube
- Cursor CLI: Built to help you ship, right from your terminal.
Joke: Copy/Paste
448 episodes
Manage episode 499609094 series 1305988
- Coverage.py regex pragmas
- * Python of Yore*
- * nox-uv*
- * A couple Django items*
- Extras
- Joke
About the show
Sponsored by DigitalOcean: pythonbytes.fm/digitalocean-gen-ai Use code DO4BYTES and get $200 in free credit
Connect with the hosts
- Michael: @[email protected] / @mkennedy.codes (bsky)
- Brian: @[email protected] / @brianokken.bsky.social
- Show: @[email protected] / @pythonbytes.fm (bsky)
Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.
Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.
Brian #1: Coverage.py regex pragmas
Ned Batchelder
The regex implementation of how coverage.py recognizes pragmas is pretty amazing.
It’s extensible through plugins
- covdefaults adds a bunch of default exclusions, and also platform- and version-specific comment syntaxes.
- coverage-conditional-plugin gives you a way to create comment syntaxes for entire files, for whether other packages are installed, and so on.
A change from last year (as part of coverage.py 7.6 allows multiline regexes, which let’s us do things like:
- Exclude an entire file with
\\A(?s:.*# pragma: exclude file.*)\\Z
- Allow start and stop delimiters with
# no cover: start(?s:.*?)# no cover: stop
- Exclude empty placeholder methods with
^\\s*(((async )?def .*?)?\\)(\\s*->.*?)?:\\s*)?\\.\\.\\.\\s*(#|$)
- See Ned’s article for explanations of these
- Exclude an entire file with
Michael #2: Python of Yore
- via Matthias
- Use
YORE: ...
comments to highlight CPython version dependencies.# YORE: EOL 3.8: Replace block with line 4. if sys.version_info < (3, 9): from astunparse import unparse else: from ast import unparse
Then check when they go out of support:
$ yore check --eol-within '5 months' ./src/griffe/agents/nodes/_values.py:11: Python 3.8 will reach its End of Life within approx. 4 months
Even fix them with fix
.
Michael #3: nox-uv
- via John Hagen
- What nox-uv does is make it very simple to install uv extras and/or dependency groups into a nox session's virtual environment.
- The versions installed are constrained by uv's lockfile meaning that everything is deterministic and pinned.
- Dependency groups make it very easy to install only want is necessary for a session (e.g., only linting dependencies like Ruff, or main dependencies + mypy for type checking).
Brian #4: A couple Django items
- Stop Using Django's squashmigrations: There's a Better Way
- Johnny Metz
- Resetting migrations is sometimes the right thing.
- Overly simplified summary: delete migrations and start over
- dj-lite
- Adam Hill
- Use SQLite in production with Django
- “Simplify deploying and maintaining production Django websites by using SQLite in production.
dj-lite
helps enable the best performance for SQLite for small to medium-sized projects. It requires Django 5.1+.”
Extras
Brian:
- Test & Code 237: FastAPI Cloud with Sebastian Ramirez
- will be out later today
- pythontest.com: pytest fixtures nuts and bolts - revisited
- A blog series that I wrote a long time ago.
- I’ve updated it into more managable bite-sized pieces, updated and tested with Python 3.13 and pytest 8
Michael:
- New course: Just Enough Python for Data Scientists
- My live stream about uv is now on YouTube
- Cursor CLI: Built to help you ship, right from your terminal.
Joke: Copy/Paste
448 episodes
All episodes
×Welcome to Player FM!
Player FM is scanning the web for high-quality podcasts for you to enjoy right now. It's the best podcast app and works on Android, iPhone, and the web. Signup to sync subscriptions across devices.