#481: Ways to die

May 25
33 mins

Episode Description

Topics covered in this episode:
Watch on YouTube

About the show

Sponsored by us! Support our work through:

Connect with the hosts

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
    • Bulma PRs still from 2023, issues and PRs with no maintainer response for years, last release 1.5 years ago
    • diskcache Similar, got hired by OpenAI, crickets after that

Brian #2: How to create a pylock.toml lockfile

  • Tim Hopper
  • Tim walks through using uv, pip and pdm to create pylock.toml files.
  • 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 -r because tools treat it like a requirements file

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.modules manipulation — code that reads or writes sys.modules assumes 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
  • 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.catch and logger.exception() for easily logging exceptions and serialize=True to enable JSON output.

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

Michael:

Joke: Stop texting me

See all episodes