Episodit
-
Topics covered in this episode:
LLM CatcherOn PyPI Quarantine processRESPXUnpacking kwargs with custom objectsExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect 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 fileBrian #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 fixtureBrian #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 YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect 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 --previewMichael #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.comMichael:
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 HarihareswaraJoke: That's a stupid cup
-
Puuttuva jakso?
-
Topics covered in this episode:
dbos-transact-pyTyped Python in 2024: Well adopted, yet usability challenges persistRightTyperLazy self-installing Python scripts with uvExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect 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, 2024Michael #3: RightTyper
A fast and efficient type assistant for Python, including tensor shape inferenceBrian #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 YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect 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 pytestMichael #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 stormExtras
Brian:
More Django: Dracula Theme for Django AdminMichael:
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 YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect 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 pydanticBrian #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 CharlieMichael #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 workflowExtras
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 SurveillanceMichael:
Go sponsor a bunch of projects on GitHubRegistration is open for PyConJoke: Inf
-
Topics covered in this episode:
Loop targetsasyncstdlibBagels: TUI Expense Trackerrloop: An AsyncIO event loop implemented in RustExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect 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: Loop targets
Ned BatchelderI donât think I would have covered this had it not been the surprising opposition to Nedâs code.Hereâs the snippet:
params = { "query": QUERY, "page_size": 100,}*# Get page=0, page=1, page=2, ...***for** params["page"] in itertools.count(): data = requests.get(SEARCH_URL, params).json() **if** not data["results"]: **break** ...Ned is utilizing the assignment in the for loop to use the value of count() and store it into the params["page"].
The article includes another version with a temp variable page_num, which I think the naysayers would prefer.But frankly, I think both are fine. Why not put the value right where you want it?Michael #2: asyncstdlib
The asyncstdlib library re-implements functions and classes of the Python standard library to make them compatible with async callables, iterables and context managers. It is fully agnostic to async event loops and seamlessly works with asyncio, third-party libraries such as trio, as well as any custom async event loop.Full set of async versions of advantageous standard library helpers, such as zip, map, enumerate, functools.reduce, itertools.tee, itertools.groupby and many others.Safe handling of async iterators to ensure prompt cleanup, as well as various helpers to simplify safely using custom async iterators.Small but powerful toolset to seamlessly integrate existing sync code into async programs and libraries.Brian #3: Bagels: TUI Expense Tracker
Jax TamâBagels expense tracker is a TUI application where you can track and analyse your money flow, with convenience oriented features and a complete interface.
Why an expense tracker in the terminal? I found it easier to build a habit and keep an accurate track of my expenses if I do it at the end of the day, instead of on the go. So why not in the terminal where it's fast, and I can keep all my data locally?â
Who hasnât wanted to write their own expense tracker?
This implementation is fun for lots of reasonsItâs still new and pretty small, so forking it for your own uses should be easyBuilt on textual is funinstall instructions based on uv tool seems to be the new normal: uv tool install --python 3.13 bagelstest suite startedpretty useful as is, actuallyNice that it includes a roadmap of future goalsWould be a fun project to help out with for anyone looking for anyone looking for a shiny new codebase to contribute to.Michael #4: rloop: An AsyncIO event loop implemented in Rust
An AsyncIO event loop implemented in RustFrom Giovanni Barillari, Creator of GranianRLoop is an AsyncIO event loop implemented in Rust on top of the mio crate.Disclaimer: This is a work in progress and definitely not ready for production usage.Run asyncio.set_event_loop_policy(rloop.EventLoopPolicy()) and done.Similar to uvloop.Extras
Brian:
Iâm currently listening to Four Thousand Weeks - Time Management for Mortals by Oliver Burkeman for the second time. Highly recommend. Development Advent Calendars for 2024 - Adrian RoselliBlack Friday at PythonTest.comMichael:
Docker cluster monitorCompare engagement across Mastodon / Bsky / Twitterhttps://bsky.app/profile/pythonbytes.fm/post/3lbseqgr5m22zhttps://fosstodon.org/@pythonbytes/113545509565796190https://x.com/pythonbytes/status/1861166179236319288Back on #277 we talked about StrEnum. Got a nice chance to use it this weekend.Maybe FinanceGo sponsor a bunch of projects on GitHubBlack Friday at Talk PythonJoke: CTRL + X onion
-
Topics covered in this episode:
Talk Python rewritten in QuartPyPI now supports digital attestationsDjango Rusty TemplatesPEP 639 is now supported by PYPIExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect 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: Talk Python rewritten in Quart
Rewrote all of talkpython.fm in Quart (10k lines of code total, 4k changed)Considered FastAPILitestarDjangoHugo Static Site + PythonFlaskDiscussed the multistage upgrade / conversion processAutomating tests for all 1,000 pagesBrian #2: PyPI now supports digital attestations
Dustin IngramâAttestations provide a verifiable link to an upstream source repository: By signing with the identity of the upstream source repository, such as in the case of an upload of a project built with GitHub Actions, PyPI's support for digital attestations defines a strong and verifiable association between a file on PyPI and the source repository, workflow, and even the commit hash that produced and uploaded the file. Additionally, publishing attestations to a transparency log helps mitigate against both compromise of PyPI and compromise of the projects themselves.âFor maintainersIf using GH Actions and Trusted Publishingmake sure you use pypa/gh-action-pypi-publish, version v1.11.0 or newerthatâs itIf notâSupport for automatic attestation generation and publication from other Trusted Publisher environments is planned.ââWhile not recommended, maintainers can also manually generate and publish attestations.âSee also PyPI Introduces Digital Attestations to Strengthen Python Package Security by Sarah GoodingAre we PEP 740 yet?Michael #3: Django Rusty Templates
by Lily FooteAn experimental reimplementation of Django's templating language in Rust.Goals100% compatibility of rendered output.Error reporting that is at least as useful as Django's errors.Improved performance over Django's pure Python implementation.Brian #4: PEP 639 is now supported by PYPI
from Brett CannonPEP 639 â Improving License Clarity with Better Package MetadataFor project metadata, use these fields: license and license-files:Examples license field
[project]license = "MIT"[project]license = "MIT AND (Apache-2.0 OR BSD-2-clause)"[project]license = "MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)"[project]license = "LicenseRef-Proprietary"Examples of license-files:
[project] license-files = ["LICEN[CS]E*", "AUTHORS*"] [project] license-files = ["licenses/LICENSE.MIT", "licenses/LICENSE.CC0"] [project] license-files = ["LICENSE.txt", "licenses/*"] [project] license-files = []Extras
Brian:
Playground Wisdom: Threads Beat Async/Await - interesting read from Armin Ronacher about different language abstractions around concurrency.PythonTest.com Discord community is now liveLaunched last week, as of this morning weâve got 89 membersAnyone already a pythontest community member has received an inviteAnyone can join through courses.pythontest.comEverything at pythontest.com is 20% off through Dec 2 with code turkeysale2024âPython Testing with pytestâ eBook 40% off through Dec 2, use code turkeysale2024Michael:
Python 3.14.0a2 releasedStarter packs:Michaelâs Python people: https://bsky.app/starter-pack/mkennedy.codes/3lbdnupl26e2x Directory: https://blueskydirectory.com/starter-packs/allJoke: curl - heavy metal style!
-
Topics covered in this episode:
Thoughts on Djangoâs CorefuturepoolDon't return named tuples in new APIsZiglang: Migrating from AWS to Self-HostingExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest CoursePatreon SupportersConnect 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: Thoughts on Djangoâs Core
Carlton GibsonGreat discussion on Django and Core vs PluginsSustainability with limited peopleKeeping core smallThe release cycleeembrace plugins vs endorsing plugins.Michael #2: futurepool
via Pat DeckerTakes the concept of multiprocessing Pool to the async/await world.Create a pool then delegate the work:
async with FuturePool(2) as fp: result = await fp.map(async_pool_fn, range(10))I would LOVE to see something like this in a broader background asyncio worker pool concept.
But that concept doesnât exist in asyncio in Python and thatâs a failing of the framework IMO.Brian #3: Don't return named tuples in new APIs
Brett CannonFirst off, Iâm grateful for any post that talks about APIs and the API is a module, class, or package API and not a Web/REST API. The term API existed long before the internet.âe.g., get_mouse_position() very likely has a two-item tuple of X and Y coordinates of the screenââit actually makes your API more complex for both you and your users to use. For you, it doubles the data access API surface for your return type as you have to now support index-based and attribute-based data access forever (or until you choose to break your users and change your return type so it doesn't support both approaches)ââ⊠you probably don't want people doing with your return type, like slicing, iterating over all the items âŠâAlternativesclassdataclassdictionaryTypedDictSimpleNamespaceâMy key point in all of this is to prefer readability and ergonomics over brevity in your code. That means avoiding named tuples except where you are expanding to tweaking an existing API where the named tuple improves over the plain tuple that's already being used.âMichael #4: Ziglang: Migrating from AWS to Self-Hosting
The Rust Foundation for example, reports that they spent $404,400 on infrastructure costs in 2023.Zig lang has decided to use a single big cloud machine + mirrorsExtras
Brian:
Changing the Python Test communityWas started to answer questions for Test & Code listeners years ago. Primarily pytest questionsUsed to be Slack. Then moved to Podia forum. Now Iâm trying to work out a Discord solution that is both sustainable and usable.Michael:
PWang Bsky essayBuilding A Business From Python Expertise - Michael Kennedy on Work Item PodcastSubscribe to package releases, just put .atom on the end of their releases URL, for example: github.com/mikeckennedy/jinja_partials/releases â add .atom for RSSpytest-bdd 8.0.0 was just released via Jamie ThomsonThe big feature (in Jamieâs opinion) is the addition of data tables https://github.com/pytest-dev/pytest-bdd/blob/master/CHANGES.rst#800---2024-11-14Joke: Breaking: JavaScript Developer Commits to Framework for Record-Breaking 3 Weeks
-
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 doExtrasJokeWatch on YouTubeAbout the show
Sponsored by:
ScoutAPM - Django Application Performance MonitoringCodeium - Free AI Code Completion & ChatConnect 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: terminal-tree
An experimental filesystem navigator for the terminal, built with TextualTested in macOS only at this point. Chances are very high it works on Linux. Slightly lower chance (but non-zero) that it works on Windows.Can confirm it works on LinuxBrian #2: posting: The API client that lives in your terminal
Also uses TextualFrom Darren BurnsInteresting that the installation instructions recommends using uv:uv tool install --python 3.12 postingVery cool. Great docs. Beautiful. keyboard centric, but also usable with a mouse.âFly through your API workflow with an approachable yet powerful keyboard-centric interface. Run it locally or over SSH on remote machines and containers. Save your requests in a readable and version-control friendly format.âAble to save multiple environmentsGreat colorsAllows scripting to run Python code before and after requests to prepare headers, set variables, etc.Michael #3: Extra, extra, extra
spaCy course swag give-away, enter for freeNew essay: Opposite of Cloud Native is?News: We've moved to HetznerNew package: Introducing chameleon-flask packageNew release: Listmonk Python clientTIOBE UpdatePEP 750 â Template StringsCanary emailLeft Omnivore, for Pocket, left Pocket for, âŠ, landed on InstapaperSupports direct import from Omnivore and PocketThough Hoarder is compellingTrying out Zen BrowserWasnât a fan of Arc (especially now) but the news turned me on to ZenBrian #4: UV does everything or enough that I'm not sure what else it needs to do
Jeff TriplettâUV feels like one of those old infomercials where it solves everything, which is where we have landed in the Python world.ââMy favorite feature is that UV can now bootstrap a project to run on a machine that does not previously have Python installed, along with installing any packages your application might require.âPartial list (see Jeffâs post for his complete list)uv pip install replaces pip installuv venv replaces python -m venvuv run, uv tool run, and uv tool install replaces pipxuv build - Build your Python package for pypiuv publish - Upload your Python package to pypi, replacing twine and flit publishExtras
Brian:
Coverage.py originally was just one fileTrying out BlueSky brianokken.bsky.socialNot because of Taylor Swift, but nice. There are a lot of Python people there.Joke: How programmers sleep
-
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 2025ExtrasJokeWatch on YouTubeAbout the show
Sponsored by:
ScoutAPM - Django Application Performance MonitoringCodeium - Free AI Code Completion & ChatConnect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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: GitHub action security: zizmor
Article: Ned Batchelder zizmor: William Woodruff & othersâa new tool to check your GitHub action workflows for security concerns.âInstall with cargo or brew, then point it at workflow yml files.It reports security concerns.Michael #2: Python is now the top language on GitHub
Thanks to Pat Decker for the heads up.A rapidly growing number of developers worldwideThis suggests AI isnât just helping more people learn to write code or build software fasterâitâs also attracting and helping more people become developers. First-time open source contributors continue to show wide-scale interest in AI projects. But we arenât seeing signs that AI has hurt open source with low-quality contributions.Python is now the most used language on GitHub as global open source activity continues to extend beyond traditional software development.The rise in Python usage correlates with large communities of people joining the open source community from across the STEM world rather than the traditional community of software developers.Thereâs a continued increase in first-time contributors to open source projects. 1.4 million new developers globally joined open source with a majority contributing to commercially backed and generative AI projects. Notably, we did not see a rise in rejected pull requests. This could indicate that quality remains high despite the influx of new contributors.Brian #3: Python 3.13, what didn't make the headlines
Some pretty cool updates to pdb : the command line Python debuggermultiline editingcode completion pathlib has a bunch of performance updatespython -m venv adds a .gitignore file that auto ignores the venv.Michael #4: PyCon US 2025
Site is live with CFP and datesHealth code is finally reasonable: âMasks are Encouraged but not RequiredâPyCon US 2025 DatesTutorials - May 14-15, 2025Sponsor Presentations - May 15, 2025Opening Reception - May 15, 2025Main Conference and Online - May 16-18, 2025Job Fair - May 18, 2025Sprints - May 19-May 22, 2025Extras
Brian:
Please publish and share more - Jeff TriplettMichael:
pre-commit-uvJust spoke with Sefanie Molin about pre-commit hooks on Talk PythonCurse you Omnivore!We have moved to hetzner Typora markdown appfree-threaded Python is now available via uvuv self updateuv python install --python-preference only-managed 3.13tJoke: Debugging char
-
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-metadataExtrasJokeWatch on YouTubeAbout the show
Sponsored by us! Support our work through:
Our courses at Talk Python TrainingThe Complete pytest Course & Hello, pytest!Patreon SupportersConnect with the hosts
Michael: @[email protected]: @[email protected]: @[email protected]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: Python 3.14.0 alpha 1 is now available
First of seven planned alpha releases.Many new features for Python 3.14 are still being planned and written. Among the new major new features and changes so far:PEP 649: deferred evaluation of annotationsImproved error messagesBrian #2: uv supports dependency groups
we covered dependency groups in episode 406as of 0.4.27, uv supports dependency groupsdocs show how to add dependencies with uv add --groupalso âThe --dev, --only-dev, and --no-dev flags are equivalent to --group dev, --only-group dev, and --no-group dev respectively.âTo install a group, uv pip install --group doesnât work yet. Itâs waiting for PyPA to decide on an interface for pip, and uv pip will use that interface.But sync works.$ uv init # create a pyproject.toml$ uv add --group foo pytest$ uv venv # create venv$ uv sync --group foo # will install all dependencies, including group "foo"Michael #3: dive: A tool for exploring each layer in a docker image
via Mike FiedlerFeatures:Show Docker image contents broken down by layerIndicate what's changed in each layerEstimate "image efficiency"Quick build/analysis cyclesCI IntegrationBrian #4: pytest-metadata
An incredibly useful plugin for adding, you guessed it, metadata, to your pytest results.Required for pytest-html but also useful on itâs ownAdds metadata totext output with --verbosexml output when using --junit-xml, handy for CI systems that support junit.xmlOther plugins depend on this and report in other ways, such as pytest-htmlBy default, already grabsPython versionPlatform infoList of installed packagesList of installed pytest pluginsYou can add your own metadataYou can access all metadata (and add to it) from tests, fixtures, and hook functions via a metadata fixture.This is in the Top pytest Plugins list, currently #5.Extras
Brian:
Iâve started filtering deprecated plugins from the pytest plugin list.Iâm also going to start reviewing the list and pulling out interesting plugins as the topic of the next season of Test & Code.Michael:
Pillow 11 is outpip install deutschlandTalk Python has a dedicated blog, please subscribe!Joke: Dog names
-
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 -
Topics covered in this episode:
uv under discussion on Mastodonerdantic: Entity Relationship DiagramsExtra, Extra, ExtraDjango Extra, Extra, ExtraExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/403 -
Topics covered in this episode:
Architecture Decision Records (ADRs)narwhals: extremely lightweight compatibility layer between dataframesMicrosoft wants Three Mile Island to fuel its AI power needszsh-in-dockerExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/402 -
Topics covered in this episode:
âWe must replace uwsgi by something elseâLetâs build and optimize a Rust extension for PythonFake recruiter coding tests target devs with malicious Python packagesMonthly PSF Board Office HoursExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/401 -
Topics covered in this episode:
Python 3.13.0RC2, 3.12.6, 3.11.10, 3.10.15, 3.9.20, and 3.8.20 are now available!Docker images using uv's python10 years of sustainable open source - Read the DocshumanizeExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/400 -
Topics covered in this episode:
Why I Still Use Python Virtual Environments in DockerPython Developer Survey ResultsAnaconda Code add-in for Microsoft ExcelDisabling Scheduled Dependency UpdatesExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/399 -
Topics covered in this episode:
Open Source Mythsuv 0.3.0 and all the excitementTop pytest PluginsA comparison of hosts / providers for Python serverless functions (aka Faas)ExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/398 - Näytä enemmän