Episode Description
- Dumb Ways for an Open Source Project to Die
- How to create a pylock.toml lockfile
- https://github.com/facebook/Lifeguard
- Choosing a Python Logging Library in 2026
- Extras
- Joke
About the show
Sponsored by us! Support our work through:
Connect with the hosts
- Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)
- Brian: @brianokken@fosstodon.org / @brianokken.bsky.social
- Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky)
Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 11am 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.
Michael #1: Dumb Ways for an Open Source Project to Die
- Core categories
- The maintainer left
- The maintainer is still there
- Sabotage and capture
- The release pipeline broke
- Force majeure
- The world moved on
- The project split
- -
- Examples
Brian #2: How to create a pylock.toml lockfile
- Tim Hopper
- Tim walks through using
uv,pipandpdmto createpylock.tomlfiles. - Recommendation: use
uv export --format pylock.toml -o pylock.toml - He also has How to install from a pylock.toml lockfile with pip but the short version is:
- use
-rbecause tools treat it like a requirements file
- use
Michael #3: https://github.com/facebook/Lifeguard
- Lifeguard is a static analyzer to detect Lazy Imports incompatibilities and ease the adoption overhead for Lazy Imports in Python.
- I’m more excited about lazy imports after my Cutting Python Web App Memory Over 31% experience
- Some Python patterns depend on imports executing immediately. For example:
- Module-level side effects — a module that registers a handler or modifies global state at import time will behave differently if that import is deferred.
- The registry pattern — a module that registers itself (e.g., adding to a global dict) when imported will silently fail to register under Lazy Imports.
sys.modulesmanipulation — code that reads or writessys.modulesassumes prior imports have already executed.- Metaclasses and
__init_subclass__— class creation side effects may depend on imports being resolved.
- Project Stage: Beta Lifeguard is in active development. We are aiming to be ready for general use by the Python 3.15 final release.
Brian #4: Choosing a Python Logging Library in 2026
- Ayooluwa Isaiah
- " which libraries matter, how they compare, where they overlap with the standard module, and when each one makes sense.”
- The slant with this article is the need to log json output, which seems reasonable as things like API entry and exit point logging will include json.
- Covered libraries
- standard library
loggingwith a hat tip to python-json-logger- Same site has a guide to setting up python-json-logger
- structlog
- Loguru
- Logbook
- picologging
- standard library
- Some benchmarks with structlog, stdlib+json, and Loguru, with structlog coming out faster
- I liked the Loguru example
- I’m going to have to try
@logger.catchandlogger.exception()for easily logging exceptions andserialize=Trueto enable JSON output.
- I’m going to have to try
Extras
Brian:
- When Women Stopped Coding - Planet Money segment , spotted on BlueSky from Savannah Ostrowski
- Lean TDD is now leaner
- Still working on audio version, but some great changes in 0.7.1 version
- Ch 6, TDD Interpretations, move ATDD and some of BDD to chapter
- Ch 7, Change name to TDD with Teams: BDD and ATDD
- Ch 9, Lean TDD, streamline steps and chapter
- Ch 10, Change name to Lean TDD with Teams: Lean ATDD
- Ch 11, Lean TDD with AI, Add short discussion about guardrails and security
- Still working on audio version, but some great changes in 0.7.1 version
Michael:
- New course: Python Web Security: OWASP Top 10 with Agentic AI
- All courses now with Spanish subtitles, see announcement
Joke: Stop texting me