Python Bytes 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
  • #441 It's Michaels All the Way Down
    Jul 21 2025
    Topics covered in this episode: * Distributed sqlite follow up: Turso and Litestream** PEP 792 – Project status markers in the simple index*Run coverage on testsdocker2exe: Convert a Docker image to an executableExtrasJokeWatch on YouTube About the show Sponsored by Digital Ocean: pythonbytes.fm/digitalocean-gen-ai Use code DO4BYTES and get $200 in free credit 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: Distributed sqlite follow up: Turso and Litestream Michael Booth: Turso marries the familiarity and simplicity of SQLite with modern, scalable, and distributed features.Seems to me that Turso is to SQLite what MotherDuck is to DuckDB.Mike Fiedler Continue to use the SQLite you love and care about (even the one inside Python runtime) and launch a daemon that watches the db for changes and replicates changes to an S3-type object store.Deeper dive: Litestream: Revamped Brian #2: PEP 792 – Project status markers in the simple index Currently 3 status markers for packages Trove Classifier statusIndices can be yankedPyPI projects - admins can quarantine a project, owners can archive a projectProposal is to have something that can have only one state activearchivedquarantineddeprecatedThis has been Approved, but not Implemented yet. Brian #3: Run coverage on tests Hugo van KemenadeAnd apparently, run Ruff with at least F811 turned onHelps with copy/paste/modify mistakes, but also subtler bugs like consumed generators being reused. Michael #4: docker2exe: Convert a Docker image to an executable This tool can be used to convert a Docker image to an executable that you can send to your friends.Build with a simple command: $ docker2exe --name alpine --image alpine:3.9Requires docker on the client deviceProbably doesn’t map volumes/ports/etc, though could potentially be exposed in the dockerfile. Extras Brian: Back catalog of Test & Code is now on YouTube under @TestAndCodePodcast So far 106 of 234 episodes are up. The rest are going up according to daily limits.Ordering is rather chaotic, according to upload time, not release ordering.There will be a new episode this week pytest-django with Adam Johnson Joke: If programmers were doctors
    Show More Show Less
    28 mins
  • #440 Can't Register for VibeCon
    Jul 15 2025
    Topics covered in this episode: * Switching to direnv, Starship, and uv** rqlite - Distributed SQLite DB** Some Markdown Stuff*ExtrasJokeWatch on YouTube About the show Sponsored by PropelAuth: pythonbytes.fm/propelauth77 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. Brian #1: Switching to direnv, Starship, and uv Last week I mentioned that I’m ready to try direnv again, but secretly, I still had some worries about the process. Thankfully, Trey has a tutorial to walk me past the troublesome parts.direnv - an extension for your shell. It augments existing shells with a new feature that can load and unload environment variables depending on the current directory.Switching from virtualenvwrapper to direnv, Starship, and uv - Trey Hunner** Trey has solved a bunch of the problems I had when I tried direnv before Show the virtual environment name in the promptPlace new virtual environments in local .venv instead of in .direnv/python3.12Silence all of the “loading”, “unloading” statements every time you enter a directoryHave a script called venv to create an environment, activate it, create a .envrc file I’m more used to a create script, so I’ll stick with that name and Trey’s contentsA workon script to be able to switch around to different projects. This is a carry over from “virtualenvwrapper’, but seems cool. I’ll take it.Adding uv to the mix for creating virtual environments. Interestingly including --seed which, for one, installs pip in the new environment. (Some tools need it, even if you don’t)Starship Trey also has some setup for Starship. But I’ll get through the above first, then MAYBE try Starship again.Some motivation Trey’s setup is pretty simple. Maybe I was trying to get too fancy beforeStarship config in toml files that can be loaded with direnv and be different for different projects. NeatoAlso, Trey mentions his dotfiles repo. This is a cool idea that I’ve been meaning to do for a long time.See also: It's Terminal - Bootstrapping With Starship, Just, Direnv, and UV - Mario Munoz Michael #2: rqlite - Distributed SQLite DB via themlu, thanks!rqlite is a lightweight, user-friendly, distributed relational database built on SQLite.Built on SQLite, the world’s most popular databaseSupports full-text search, Vector Search, and JSON documentsAccess controls and encryption for secure deployments Michael #3: A Python dict that can report which keys you did not use by Peter BengtssonVery cool for testing that a dictionary has been used as expected (e.g. all data has been sent out via an API or report).Note: It does NOT track d.get(), but it’s easy to just add it to the class in the post.Maybe someone should polish it up and put it on pypi (that person is not me :) ). Brian #4: Some Markdown Stuff Textual 4.0.0 adds Markdown.append which can be used to efficiently stream markdown content The reason for the major bump is due to an interface change to Widget.anchorRefreshing to see a symantic change cause a major version bump.html-to-markdown Converts html to markdownA complete rewrite fork of markdownifyLots of fun features like “streaming support” Curious if it can stream to Textual’s Markdown.append method. hmmm. Joke: Vibecon is hard to attend
    Show More Show Less
    25 mins
  • #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

What listeners say about Python Bytes

Average Customer Ratings
Overall
  • 5 out of 5 stars
  • 5 Stars
    1
  • 4 Stars
    0
  • 3 Stars
    0
  • 2 Stars
    0
  • 1 Stars
    0
Performance
  • 5 out of 5 stars
  • 5 Stars
    1
  • 4 Stars
    0
  • 3 Stars
    0
  • 2 Stars
    0
  • 1 Stars
    0
Story
  • 5 out of 5 stars
  • 5 Stars
    1
  • 4 Stars
    0
  • 3 Stars
    0
  • 2 Stars
    0
  • 1 Stars
    0

Reviews - Please select the tabs below to change the source of reviews.

In the spirit of reconciliation, Audible acknowledges the Traditional Custodians of country throughout Australia and their connections to land, sea and community. We pay our respect to their elders past and present and extend that respect to all Aboriginal and Torres Strait Islander peoples today.