Python Bytes Podcast By Michael Kennedy and Brian Okken cover art

Python Bytes

Python Bytes

By: Michael Kennedy and Brian Okken
Listen for free

About this listen

Python Bytes is a weekly podcast hosted by Michael Kennedy and Brian Okken. The show is a short discussion on the headlines and noteworthy news in the Python, developer, and data science space.Copyright 2016-2025 Politics & Government
Episodes
  • #439 That Astral Episode
    Jul 7 2025
    Topics covered in this episode: * ty documentation site and uv migration guide** uv build backend is now stable + other Astral news** Refactoring long boolean expressions** fastapi-ml-skeleton*ExtrasJokeWatch on YouTube About the show Sponsored by Sentry: pythonbytes.fm/sentry Connect with the hosts Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @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. Michael #1: ty documentation site and uv migration guide via Skyler KaskoAstral created a documentation site for ty (PR #744 in release 0.0.1-alpha.13).Astral added a page on migrating from pip to a uv project in the uv documentation. (PR #12382 in release 0.7.19).Talk Python episode on ty. Brian #2: uv build backend is now stable + other Astral news The uv build backend is now stable Tim Hopper via Python Developer Tooling HandbookFrom Charlie Marsh “The uv build backend is now stable, and considered ready for production use. An alternative to setuptools, hatchling, etc. for pure Python projects, with a focus on good defaults, user-friendly error messages, and performance. When used with uv, it's 10-35x faster.”“(In a future release, we'll make this the default.)” [build-system] requires = ["uv_build>=0.7.19,<0.8.0"] build-backend = "uv_build" I believe it’s faster, but I agree with Brett Cannon in asking “What's being benchmarked? I'm not sure what a "backend sync" is referring to other than maybe installing the build back-end?”See also: uv: Making Python Local Workflows FAST and BORING in 2025 - Hynek Brian #3: Refactoring long boolean expressions Trey HunnerThis is applied boolean logic, and even folks who learned this in a CS program probably did so early on, and may have forgotten it.How can you improve the readability of long Boolean expressions in Python? Put parens around the whole expression and separate clauses onto different linesWhere to put boolean operators between clauses? at the end of the line or the beginning? PEP8 recommends the beginning if (expression1 and expression2 and expression3): ... Naming sub-expressions with variables Odd downside that wouldn’t occur to me. All expressions are evaluated, thus not taking advantage of expression short-circuiting.Naming operations with functions Less readable, but takes advantage of short-circuitingUsing De Morgan’s Law : replacing a compound expression with a similar (and hopefully easier to read) expression # neither: we want both to be false not (a or b) == (not a) and (not b) # never_both: at least one false not (a and b) == (not a) or (not b) Michael #4: fastapi-ml-skeleton FastAPI Skeleton App to serve machine learning models production-ready.This repository contains a skeleton app which can be used to speed-up your next machine learning project.The code is fully tested and provides a preconfigured tox to quickly expand this sample code.A sample regression model for house price prediction is included in this project.Short write up on "What does set -a do?" Extras Brian: OCF Michael: via Wei LeeExtra Airflow ruff rules: Starting from Ruff version 0.11.13, most changes from Airflow 2 to Airflow 3 can be automated using AIR3. (It’s still in preview so a “—-preview” flag is needed) e.g., if you have the following Airflow 2 code import datetime from airflow.models import DAG from airflow.operators.empty import EmptyOperator with DAG( dag_id="my_dag_name", start_date=datetime.datetime(2021, 1, 1), schedule_interval="@daily", ): EmptyOperator(task_id="task") it can be fixed with uvx ruff check --select AIR3 --fix --unsafe-fixes --preview import datetime from airflow.sdk import DAG from airflow.providers.standard.operators.empty import EmptyOperator with DAG( dag_id="my_dag_name", start_date=datetime.datetime(2021, 1, 1), schedule="@daily", ): EmptyOperator(task_id="task") which works with Airflow 3. Joke: Front Toward Enemy
    Show more Show less
    27 mins
  • #437 Python Language Summit 2025 Highlights
    Jun 23 2025
    Topics covered in this episode: * The Python Language Summit 2025*Fixing Python Properties* complexipy** juvio*ExtrasJokeWatch on YouTube About the show Sponsored by Posit: pythonbytes.fm/connect Connect with the hosts Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @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. Michael #1: The Python Language Summit 2025 Write up by Seth Michael LarsonHow can we make breaking changes less painful?: talk by Itamar OrenAn Uncontentious Talk about Contention: talk by Mark ShannonState of Free-Threaded Python: talk by Matt PageFearless Concurrency: talk by Matthew Parkinson, Tobias Wrigstad, and Fridtjof StoldtChallenges of the Steering Council: talk by Eric SnowUpdates from the Python Docs Editorial Board: talk by MariattaPEP 772 - Packaging Governance Process: talk by Barry Warsaw and Pradyun GedamPython on Mobile - Next Steps: talk by Russell Keith-MageeWhat do Python core developers want from Rust?: talk by David HewittUpstreaming the Pyodide JS FFI: talk by Hood ChathamLightning Talks: talks by Martin DeMello, Mark Shannon, Noah Kim, Gregory Smith, Guido van Rossum, Pablo Galindo Salgado, and Lysandros Nikolaou Brian #2: Fixing Python Properties Will McGugan“Python properties work well with type checkers such Mypy and friends. … The type of your property is taken from the getter only. Even if your setter accepts different types, the type checker will complain on assignment.”Will describes a way to get around this and make type checkers happy.He replaces @property with a descriptor. It’s a cool technique.I also like the way Will is allowing different ways to use a property such that it’s more convenient for the user. This is a cool deverloper usability trick. Brian #3: complexipy Calculates the cognitive complexity of Python files, written in Rust.Based on the cognitive complexity measurement described in a white paper by SonarCognitive complexity builds on the idea of cyclomatic complexity.Cyclomatic complexity was intended to measure the “testability and maintainability” of the control flow of a module. Sonar argues that it’s fine for testability, but doesn’t do well with measuring the “maintainability” part. So they came up with a new measure.Cognitive complexity is intended to reflects the relative difficulty of understanding, and therefore of maintaining methods, classes, and applications.complexipy essentially does that, but also has a really nice color output.Note: at the very least, you should be using “cyclomatic complexity” try with ruff check --select C901But also try complexipy.Great for understanding which functions might be ripe for refactoring, adding more documentation, surrounding with more tests, etc. Michael #4: juvio uv kernel for Jupyter⚙️ Automatic Environment Setup: When the notebook is opened, Juvio installs the dependencies automatically in an ephemeral virtual environment (using uv), ensuring that the notebook runs with the correct versions of the packages and Python📁 Git-Friendly Format: Notebooks are converted on the fly to a script-style format using # %% markers, making diffs and version control painlessWhy Use Juvio? No additional lock or requirements files are neededGuaranteed reproducibilityCleaner Git diffsPowered By uv – ultra-fast Python package managementPEP 723 – Python inline dependency standards Extras Brian: Test & Code in slow mode currently. But will be back with some awesome interviews. Joke: The 0.1x Engineer via BalázsAlso StormTrooper vlogBIGFOOT VLOG - ATTACKED BY WENDIGO!
    Show more Show less
    34 mins
All stars
Most relevant  
I've listened for years and am grateful for its content. If you listen, you'll learn much about Python, its ecosystem. and its contributors.

Great content for Python programmers

Something went wrong. Please try again in a few minutes.