Afleveringen

  • Topics covered in this episode:
    pysqlscribeA map of PythonRust, C++, and Python trends in jobs on Hacker News (February 2025)The features of Python's help() functionExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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.

    Michael #1: pysqlscribe

    A Python library intended to make building SQL queries in your code a bit easier.A Query object can be constructed using the QueryRegistry's get_builder featuring a dialect (e.g; "mysql", "postgres", "oracle").

    Brian #2: A map of Python

    Cool visualization of dependencies in PyPI packagesEven cooler visualization (linked from main article)

    Michael #3: Rust, C++, and Python trends in jobs on Hacker News (February 2025)

    Interesting supply and demand comparisons from at least on source.

    Brian #4: The features of Python's help() function

    Trey HunnerDon’t forget how useful and cool help() is.

    Extras

    Michael:

    Granian works with FastAPI again

    Joke: Computer engineer vs. Geologist

  • Topics covered in this episode:
    My 2025 uv-based Python Project Layout for Production AppsaiolimiterA peek into a possible future of Python in the browserReloadiumExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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: My 2025 uv-based Python Project Layout for Production Apps

    Hynek SchlawackDiscusses uv, a simple pyproject.toml, a simple project layout, and uv.lock as the modern way to ditch requirements.txt filesThis is the starting video in a series, but it’s already very worthwhile

    Michael #2: aiolimiter

    An efficient implementation of a rate limiter for asyncio.This project implements the Leaky bucket algorithm, giving you precise control over the rate a code section can be entered.

    Brian #3: A peek into a possible future of Python in the browser

    a.k.a “Secret SPy Stuff”Ɓukasz LangaA peek at SPy, a new language for Python on the web.

    Michael #4: Reloadium

    Hot Reloading and Profiling for PythonIf you are a PyCharm user please check out Reloadium pluginSee also: github.com/mikeckennedy/server-hot-reload

    Extras

    Brian:

    Making an alternate version of The Complete pytest Course

    Michael:

    Book: Zero Day: A Jeff Aiken NovelWarp terminal on Windows is out.PyCon Ed Summit announced.

    Joke: py programmer walks into a bar

  • Topics covered in this episode:
    httpdbgPyPI Now Supports iOS and Android Wheels for Mobile Python DevelopmentArcade Game Platform goes 3.0PEP 765 – Disallow return/break/continue that exit a finally blockExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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.

    Michael #1: httpdbg

    A tool for Python developers to easily debug the HTTP(S) client requests in a Python program.To use it, execute your program using the pyhttpdbg command instead of python and that's it. Open a browser to http://localhost:4909 to view the requests

    Brian #2: PyPI Now Supports iOS and Android Wheels for Mobile Python Development

    Sara Gooding“the Python Packaging Index (PyPI) has officially begun accepting and distributing pre-compiled binary packages, known as "wheels," for both iOS and Android platforms. “Next up, “cibuildwheel Updates Are in Progress to Simplify iOS and Android Wheel Creation”

    Michael #3: Arcade Game Platform goes 3.0

    via Maic SiemeringThis is our first major release since 2022.It keeps the beginner-friendly API while adding power and efficiency.Arcade now supports both standard OpenGL and ShaderToy (www.shadertoy.com) a-shaders through a compatibility layer.Since 3.0 is a major release, the full list of changes is over ingithub.com/pythonarcade/arcade/blob/development/CHANGELOG.md

    Brian #4: PEP 765 – Disallow return/break/continue that exit a finally block

    Accepted for Python 3.14I wouldn’t have thought to do this anyway, but it’s weird, so don’t.Will become a SyntaxWarning catchable by running with -We

    Extras

    Brian:

    Correction: Niki Tonsky was originator of “Pride Versioning”. Thanks NikitaCorrection: Scheme is actually awesome. Brian is just a curmudgeonAlso: pytest-rerunfailures is good for exposing flaky testsAnd apparently me being wrong was a great to get at least one person to blog more.Cheers Filip Ɓajszczak

    Michael:

    Tea pot follow upWhile you're right that some software actually had this implemented, Python does not. It's not an officially accepted HTTP status code, it was proposed in a 'joke' RFC. I guess Python - even though its name comes from the funny TV series Monty Python - is not so funny. httpx, your (or at least -my-) favorite HTTP module for python, does have the I_AM_A_TEAPOT constant.By the way, there are some HTTP status codes that changed their names in RFC 9110, for instance, http.HTTPStatus.UNPROCESSABLE_CONTENT (422, previously UNPROCESSABLE_ENTITY)Pride follow up fosstodon.org/@kytta/114034442981727301Time to upgrade your mini?

    Joke: How old is she?

  • Topics covered in this episode:
    PEP 772 – Packaging governance processOfficial Django MongoDB Backend Now Available in Public PreviewDeveloper PhilosophyPython 3.13.2 releasedExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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: PEP 772 – Packaging governance process

    draft, created 21-Jan, by Barry Warsaw, Deb Nicholson, Pradyun Gedam“As Python packaging has matured, several interrelated problems with the current way of managing the technical development, decision making and processes have become apparent.”“This PEP proposes a Python Packaging Council with broad authority over packaging standards, tools, and implementations. Like the Python Steering Council, the Packaging Council seeks to exercise this authority as rarely as possible; instead, they use this power to establish standard processes.”PEP discussesPyPA, Packaging-WG, Interoperability Standards, Python Steering Council, and Expectations of an elected Packaging CouncilA specification withComposition: 5 peopleMandate, Responsibilities, Delegations, Process, Terms, etc.

    Michael #2: Official Django MongoDB Backend Now Available in Public Preview

    Over the last few years, Django developers have increasingly used MongoDB, presenting an opportunity for an official MongoDB-built Python package to make integrating both technologies as painless as possible.FeaturesThe ability to use Django models with confidence. Developers can use Django models to represent MongoDB documents, with support for Django forms, validations, and authentication.Django admin support. The package allows users to fire up the Django admin page as they normally would, with full support for migrations and database schema history.Native connecting from settings.py. Just as with any other database provider, developers can customize the database engine in settings.py to get MongoDB up and running.MongoDB-specific querying optimizations. Field lookups have been replaced with aggregation calls (aggregation stages and aggregate operators), JOIN operations are represented through $lookup, and it’s possible to build indexes right from Python.Limited advanced functionality. While still in development, the package already has support for time series, projections, and XOR operations.Aggregation pipeline support. Raw querying allows aggregation pipeline operators. Since aggregation is a superset of what traditional MongoDB Query API methods provide, it gives developers more functionality.

    Brian #3: Developer Philosophy

    by qntmIntended as “advice for junior developers about personal dev philosophy”, I think these are just great tips to keep in mind.The itemsAvoid, at all costs, arriving at a scenario where the ground-up rewrite starts to look attractiveThis is less about “don’t do rewrites”, but about noticing the warning signs ahead of time.Aim to be 90% done in 50% of the available timeGreat quote: “The first 90% of the job takes 90% of the time. The last 10% of the job takes the other 90% of the time.”Automate good practicesThink about pathological data“Nobody cares about the golden path. Edge cases are our entire job.”Brian’s note: But also think about the happy path. Documenting and testing what you think of as the happy path is a testing start and helps others understand your idea of how things are supposed to work.There’s usually a simpler way to write itWrite code to be testableIt is insufficient for code to be provably correct; it should be obviously, visibly, trivially correctBrian’s note: Even if it’s obviously, visibly, trivially correct, it will still break. So test it anyway.

    Michael #4: Python 3.13.2 released

    Python 3.13’s second maintenance release. About 250 changes went into this updateAlso Python 3.12.9, Python 3.12’s ninth maintenance release already. Just 180 changes for 3.12, but it’s still worth upgrading.For us, it’s simply rebuilding our Docker base (i.e. —no-cache) with these lines:RUN curl -LsSf https://astral.sh/uv/install.sh | shRUN --mount=type=cache,target=/root/.cache uv venv --python 3.13 /venv

    Extras

    Brian:

    Still thinking about pytest plugins a lot.The top pytest plugin listHas been updated for FebIs starting to include things without “pytest” in the name, like Hypothesis and Syrupy. Eventually I’ll have to add “looking at trove classifiers” as part of the search, but for now, let me know if you’re favorite is missing.Includes T&C podcast episode links if I’ve covered it on the show. There’s 2 so far

    Michael:

    There's a new release of PyScript out. All the details are here: Highlight is new PyGame-CE support. Go play!PEP 2026 – Calendar versioning for Python rejected. :(PEP 759 – External Wheel Hosting withdrawn

    Joke:

    Pride Versioning
  • Topics covered in this episode:
    content-types package for better MIME types/Content-TypeWagtail 6.4Build It YourselfBuild backend popularity over timeExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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.

    Michael #1: content-types package for better MIME types/Content-Type

    It started with this comment from Raf.mimetypes — Map filenames to MIME typesIt is oddly missing very common types and varies by platform, OS install and other factors (see this function).Search around and found python-magic. Seems great butImportError: failed to find libmagic. Check your installation → brew install libmagicmagic.from_file("testdata/test.pdf") → FileNotFoundError: [Errno 2] No such file or directory: 'testdata/test.pdf'hmmSo I had to create my own. Introducing content-typesA Python library to map file extensions to MIME types.Unlike other libraries, this one does not try to access the file or parse the bytes of the file or stream. It just looks at the extension.Better support than mimetypes builtin.

    Brian #2: Wagtail 6.4

    Release notesLots of great updates, but I want to zoom in on background tasks.6.4 includes django-taskswhich is an available implementation of DEP 0014: Background workers This proposal is accepted and this thread includes a great talk from DjangoCon Europe 2024Why is this cool?Even though django-tasks says it’s “under active development”, as long as you pin the version and test your behavior depending on this, it must be ready to use if wagtail is going for it. Don't you think?

    Michael #3: Build It Yourself

    from Armin Ronacher, sent in by Rafael WeingartnerAn excellent article pushing back on too many dependenciesMaybe the advice of always prefer code reuse isn’t that great after all?It’s much much easier to solve small little problems these days due to AI.

    Take Postmark as an example.

    “It's time to have a new perspective: we should give kudos to engineers who write a small function themselves instead of hooking in a transitive web of crates. We should be suspicious of big crate graphs. Celebrated are the minimal dependencies, the humble function that just quietly does the job, the code that doesn't need to be touched for years because it was done right once.” - Armin

    Brian #4: Build backend popularity over time

    Bastian VenthurThis is just for projects using pyproject.tomlApparently he did this last year as well, so we can see some trends.Resultssetuptools: ~50% (last year ~50%)poetry: ~30% (last year ~33%)hatchling: (percent not listed, but looks like 12-15%), (last year 10%)flit: ~5% (last year ~10%)other: (above flit now)Analysis:setuptools continues to grow in absolute numbers and maintain it’s percentage.poetry declininghatchling growingflit decliningBrian commentaryThis is not surprising to me. I generally use hatchling for more control, and setuptools for simple projects. I think we might end up with mostly setuptools and hatchling in a couple years.

    Extras

    Brian:

    Test & Code Archive is now all episodes on one pageOld method was 30 episodes per pageFor something completely differentNameGrapher - popularity of US namesNo wonder I don’t meet a lot of kids named BrianMichael is #16 (#1 in 1950s - 1990s)Brian is #317 (#8 in 1970s)

    Joke: The long path to rejection.

  • Topics covered in this episode:
    In memoriam: Michael Foord 1974-2025Valkey (Redis Replacement)30 best practices for software development and testingmimetype.ioExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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: In memoriam: Michael Foord 1974-2025

    Guido van Rossum and othersWe’ve just lost Michael Foord this last weekend.From Guido:“Michael, an original thinker if there ever was one, started the tradition of having Language Summit events at PyCon, IIRC together with Barry Warsaw. He also wrote and contributed the influential mock library. 
 “ “PS. Feel free to post your own (positive) memories of meeting Michael – perhaps his children (10 and 13) will read them when they’re older and this thread might help them remember their father.” I’ve added my memories. I think this is a great (and small) way to honor him.My friend Michael - Nicholas TolerveyAfter 5 years of trying, I did get an interview with Michael. I wish I’d have gotten that followup.Test & Code episode with Michael, ep 145, “For those about to mock”

    Michael #2: Valkey (Redis Replacement)

    Thanks Calvin HPAn open source (BSD) high-performance key/value datastore that supports a variety of workloads such as caching, message queues.Can act as a primary database.Valkey can run as either a standalone daemon or in a cluster, with options for replication and high availability.Valkey natively supports a rich collection of datatypes, including strings, numbers, hashes, lists, sets, sorted sets, bitmaps, hyperloglogs and more. You can operate on data structures in-place with an expressive collection of commands.

    Brian #3: 30 best practices for software development and testing

    Michael Foord (from 2017)Some gems1 - YAGNI6 - Unit tests test to the unit of behavior, not the unit of implementation. 8 - Code is the enemy: It can go wrong, and it needs maintenance. Write less code. Delete code. Don’t write code you don’t need.15 - The more you have to mock out to test your code, the worse your code is.and so many more 


    Michael #4: mimetype.io

    I’m always forgetting content types!Also, shout out to httpstatuses.io

    Extras

    Brian:

    Python 1.0.0 released 31 years ago

    Michael:

    Python 3.14.0 alpha 4 is out

    Joke: Tea Time

  • Topics covered in this episode:
    LLM CatcherOn PyPI Quarantine processRESPXUnpacking kwargs with custom objectsExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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.

    Michael #1: LLM Catcher

    via Pat DeckerLarge language model diagnostics for python applications and FastAPI applications .FeaturesException diagnosis using LLMs (Ollama or OpenAI)Support for local LLMs through OllamaOpenAI integration for cloud-based modelsMultiple error handling approaches:Function decorators for automatic diagnosisTry/except blocks for manual controlGlobal exception handler for unhandled errors from imported modulesBoth synchronous and asynchronous APIsFlexible configuration through environment variables or config file

    Brian #2: On PyPI Quarantine process

    Mike FiedlerProject Lifecycle Status - Quarantine in his "Safety & Security Engineer: First Year in Review post” Some more info now in Project QuarantineReports of malware in a project kick things offAdmins can now place a project in quarantine, allowing it to be unavailable for install, but still around for analysis.New process allows for packages to go back to normal if the report is false.HoweverSince August, the Quarantine feature has been in use, with PyPI Admins marking ~140 reported projects as Quarantined.Of these, only a single project has exited Quarantine, others have been removed.

    Michael #3: RESPX

    Mock HTTPX with awesome request patterns and response side effects A simple, yet powerful, utility for mocking out the HTTPX, and HTTP Core, libraries.Start by patching HTTPX, using respx.mock, then add request routes to mock responses.For a neater pytest experience, RESPX includes a respx_mock fixture

    Brian #4: Unpacking kwargs with custom objects

    RodrigoA class needs to have a keys() method that returns an iterable.a __getitem__() method for lookupThen double splat ** works on objects of that type.

    Extras

    Brian:

    A surprising thing about PyPI's BigQuery data - HugovkTop PyPI Packages (and therefore also Top pytest Plugins) uses a BigQuery datasetHas grabbed 30-day data of 4,000, then 5,000, then 8,000 packages.Turns out 531,022 packages (amount returned when limit set to a million) is the same cost.So
. hoping future updates to these “Top 
” pages will have way more data. Also, was planning on recording a Test & Code episode on pytest-cov today, but haven’t yet. Hopefully at least a couple of new episodes this week.Finally updated pythontest.com with BlueSky links on home page and contact page.

    Michael:

    Follow up from Owen (uv-secure):Thanks for the multiple shout outs! uv-secure just uses the PyPi json API at present to query package vulnerabilities (same as default source for pip audit). I do smash it asynchronously for all dependencies at once... but it still takes a few seconds.

    Joke: Bugs hide from the light!

  • Topics covered in this episode:
    Terminals & ShellsWinloop: An Alternative library for uvloop compatibility with windowsRuff & uvuv-secureExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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: Terminals & Shells

    Ghostty is outStarted by Mitchel Hashimoto, one of the co-founders of Hashicorp“Ghostty is a terminal emulator that differentiates itself by being fast, feature-rich, and native. While there are many excellent terminal emulators available, they all force you to choose between speed, features, or native UIs. Ghostty provides all three.”Currently for macOS & Linux (Windows planned)Version 1.0.1 released Dec 31, announced in OctFeatures: cross-platform, windows, tabs, and splits, Themes, Ligatures, 
Shell Integration: Some Ghostty features require integrating with your shell. Ghostty can automatically inject shell integration for bash, zsh, fish, and elvish.Fish is moving to Rust“fish is a smart and user-friendly command line shell with clever features that just work, without needing an advanced degree in bash scriptology.”“fish 4.0 is a big upgrade. It’s got lots of new features to make using the command line easier and more enjoyable, such as more natural key binding and expanded history search. And under the hood, we’ve rebuilt the foundation in Rust.”

    Michael #2: Winloop: An Alternative library for uvloop compatibility with windows

    via Owen LamontAn alternative library for uvloop compatibility with windows .It always felt disappointing when libuv is available for windows but windows was never compatible with uvloop.

    Brian #3: Ruff & uv

    Ruff 0.9.0 has a new 2025 style guide f-string formatting improvementsNow formats expressions interpolated inside f-string curly bracesQuotes normalized according to project configUnnecessary escapes removedExamines interpolated expressions to see if splitting the string over multiple lines is okOther changes to, but it’s the f-string improvements I’m excited about.Python 3.14.0a3 is out, and available with uvuv python install 3.14 --preview

    Michael #4: uv-secure

    by Owen Lamont (yes again :) )This tool will scan PyPi dependencies listed in your uv.lock files (or uv generated requirements.txt files) and check for known vulnerabilities listed against those packages and versions in the PyPi json API.I don't intend uv-secure to ever create virtual environments or do dependency resolution - the plan is to leave that all to uv since it does that so well and just target lock files and fully pinned and dependency resolved requirements.txt files).Works “out of the box” with a requirements.txt from uv pip compile.

    Extras

    Brian:

    Test & Code Season 2: pytest pluginsSeason 1 was something like 223 episodes over 9.5 yearsStarted the summer of 2015Send in pytest plugin suggestions to Brian on BlueSky or Mastodon or the contact form at pythontest.com

    Michael:

    Episode Deep Dive feature at Talk PythonFeedback on social media:Those deep dives look really handy. <looks at another one> Yes, those ARE really handy! Thanks for doing that.wow, yes please! This is awesome.Wow, this is amazing. 
 It helps when going back to check something (without having to re-listen).PyCon Austria at.pycon.orgHeavy metal status codesBeautiful Soup feedback CFA via Sumana Harihareswara

    Joke: That's a stupid cup

  • Topics covered in this episode:
    dbos-transact-pyTyped Python in 2024: Well adopted, yet usability challenges persistRightTyperLazy self-installing Python scripts with uvExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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.

    Michael #1: dbos-transact-py

    DBOS Transact is a Python library providing ultra-lightweight durable execution.Durable execution means your program is resilient to any failure.If it is ever interrupted or crashes, all your workflows will automatically resume from the last completed step.Under the hood, DBOS Transact works by storing your program's execution state (which workflows are currently executing and which steps they've completed) in a Postgres database.Incredibly fast, for example 25x faster than AWS Step Functions.

    Brian #2: Typed Python in 2024: Well adopted, yet usability challenges persist

    Aaron Pollack on Engineering at Meta blog“Overall findings88% of respondents “Always” or “Often” use Types in their Python code.IDE tooling, documentation, and catching bugs are drivers for the high adoption of types in survey responses,The usability of types and ability to express complex patterns still are challenges that leave some code unchecked.Latency in tooling and lack of types in popular libraries are limiting the effectiveness of type checkers.Inconsistency in type check implementations and poor discoverability of the documentation create friction in onboarding types into a project and seeking help when using the tools. “NotesSeems to be a different survey than the 2023 (current) dev survey. Diff time frame and results. July 29 - Oct 8, 2024

    Michael #3: RightTyper

    A fast and efficient type assistant for Python, including tensor shape inference

    Brian #4: Lazy self-installing Python scripts with uv

    Trey HunnerCreating your own ~/bin full of single-file command line scripts is common for *nix folks, still powerful but underutilized on Mac, and trickier but still useful on Windows.Python has been difficult in the past to use for standalone scripts if you need dependencies, but that’s no longer the case with uv.Trey walks through user scripts (*nix and Mac)Using #! for scripts that don’thave dependenciesUsing #! with uv run --script and /// script for dependenciesDiscussion about how uv handles that.

    Extras

    Brian:

    Courses at pythontest.comIf you live in a place (or are in a place in your life) where these prices are too much, let me know. I had a recent request and I really appreciate it.

    Michael:

    Python 3.14 update releasedTop episodes of 2024 at Talk PythonUniversal check for updates macOS:Settings > Keyboard > Keyboard shortcuts > App shortcuts > +Then add shortcut for single app, ^U and the menu title.

    Joke: Python with rizz

  • Topics covered in this episode:
    New project to shorten django-admin to django because we are not monstersdjango-unicorn: The magical reactive component framework for Django Testing some tidbitsThe State of Python 2024 articleExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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: New project to shorten django-admin to django because we are not monsters

    Jeff Tripplet has created django-cli-no-admin to shorten django-admin to just django.“One of the biggest mysteries in Django is why I have to run django-admin from my terminal instead of just running django. Confusingly, django-admin has nothing to do with Django’s admin app.”Instead of typing things like: django-admin startproject mysite projectnameWe can type the shorter: django startproject mysite projectnameI love this kind of developer speedup / comfort improvementsAnd yes, Jeff wants Django to eventually include this as the default way to run the command line utilities.

    Michael #2: django-unicorn: The magical reactive component framework for Django

    Add modern site functionality: Quickly add in simple interactions to regular Django templates without learning a new templating language.Skip the JavaScript build toolsNo API required: Skip creating a bunch of serializers and just use Django.

    Brian #3: Testing some tidbits

    Ned BatchelderDifferent ways to test to see if a string has only 0 or 1 in it.And also, a way to check all the different ways to make sure they work.Fun post, and I learned aboutcleandoc - a way to strip leading blank space and maintain code block indentationI usually use textwrap.dedent()partition - splitting strings based on a substringUsing | to pass imports to eval() - I don't use eval much.However, no pytest! Here’s a way to check all this with pytest: Testing some tidbits with pytest

    Michael #4: The State of Python 2024 article

    Python usage with other languages drops as general adoption grows41% of Python developers have under 2 years of experiencePython learning expands through diverse channelsThe Python 2 vs. 3 divide is in the distant pastFlask, Django, and FastAPI remain top Python web frameworksMost Python web apps run on hyperscale cloudsContainers over VMs over hardwareuv takes Python packaging by storm

    Extras

    Brian:

    More Django: Dracula Theme for Django Admin

    Michael:

    Zen Browser updateOffice refreshTranscripts (in some players)

    Joke:

    Volkswagen, passing all the tests
  • Topics covered in this episode:
    jiterA new home for python-build-standalonemoka-pyuv: An In-Depth GuideExtrasJokeWatch on YouTube

    About the show

    Sponsored by us! Support our work through:

    Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters

    Connect with the hosts

    Michael: @[email protected] / @mkennedy.codes (bsky)Brian: @[email protected] / @brianokken.bsky.socialShow: @[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.

    Michael #1: jiter

    Fast iterable JSON parser.About to be the backend for Pydantic and Logfire. Currently powers OpenAI / ChatGPT (along with Pydantic itself), at least their Python library, maybe more.jiter has three interfaces:JsonValue an enum representing JSON dataJiter an iterator over JSON dataPythonParse which parses a JSON string into a Python objectjiter-python - This is a standalone version of the JSON parser used in pydantic-core. The recommendation is to only use this package directly if you do not use pydantic

    Brian #2: A new home for python-build-standalone

    Charlie MarshSee also Transferring Python Build Standalone Stewardship to Astral from Gregory Szorcpython-build-standalone is the project that has prebuilt binaries for different architectures.used by uv python install 3.12 and uv venv .venv --python 3.12 and uv syncThis is good stability news for everyone.Interesting discussion of prebuilt Python from Charlie

    Michael #3: moka-py

    A high performance caching library for Python written in Rustmoka-py is a Python binding for the highly efficient Moka caching library written in Rust. This library allows you to leverage the power of Moka's high-performance, feature-rich cache in your Python projects.FeaturesSynchronous Cache: Supports thread-safe, in-memory caching for Python applications.TTL Support: Automatically evicts entries after a configurable time-to-live (TTL).TTI Support: Automatically evicts entries after a configurable time-to-idle (TTI).Size-based Eviction: Automatically removes items when the cache exceeds its size limit using the TinyLFU policy.Concurrency: Optimized for high-performance, concurrent access in multi-threaded environments.

    Brian #4: uv: An In-Depth Guide

    On SaaS Pegasus blog, so presumably by Cory ZueGood intro to uvAlso a nice list of everyday commandsInstall python: uv python install 3.12I don’t really use this anymore, as uv venv .venv --python 3.12 or uv sync install if necessarycreate a virtual env: uv venv .venv --python 3.12install stuff: uv pip install djangoadd project dependenciesbuild pinned dependenciesAlso discussion about adopting the new workflow

    Extras

    Brian:

    PydanticAI - not sure why I didn’t see that comingIn the “good to know” and “commentary on society” area:Anti-Toxicity Features on BlueskyThe WIRED Guide to Protecting Yourself From Government Surveillance

    Michael:

    Go sponsor a bunch of projects on GitHubRegistration is open for PyCon

    Joke: Inf

  • Topics covered in this episode:
    Loop targetsasyncstdlibBagels: TUI Expense Trackerrloop: An AsyncIO event loop implemented in RustExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/412

  • Topics covered in this episode:
    Talk Python rewritten in QuartPyPI now supports digital attestationsDjango Rusty TemplatesPEP 639 is now supported by PYPIExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/411

  • Topics covered in this episode:
    Thoughts on Django’s CorefuturepoolDon't return named tuples in new APIsZiglang: Migrating from AWS to Self-HostingExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/410

  • Topics covered in this episode:
    terminal-treeposting: The API client that lives in your terminalExtra, extra, extraUV does everything or enough that I'm not sure what else it needs to doExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/409

  • Topics covered in this episode:
    GitHub action security: zizmorPython is now the top language on GitHubPython 3.13, what didn't make the headlinesPyCon US 2025ExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/408

  • Topics covered in this episode:
    Python 3.14.0 alpha 1 is now availableuv supports dependency groupsdive: A tool for exploring each layer in a docker imagepytest-metadataExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/407

  • Topics covered in this episode:
    Open Source PledgeJeff Triplet's DjangoTVPEP 735 – Dependency Groups in pyproject.tomllivereloadExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/406

  • Topics covered in this episode:
    Briefer: Dashboards and notebooks in a single placeIntroduction to programming with Pythonsetup-uvHTML for peopleExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/405

  • Topics covered in this episode:
    Python 3.13.0 released Oct 7PEP 759 – External Wheel Hostingpytest-freethreadedpytest-editExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/404