Afleveringen
-
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
-
Zijn er afleveringen die ontbreken?
-
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.tomllivereloadExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect 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: Open Source Pledge
Learned about this because of this postWhy Django supports the Open Source PledgeStepsPay Open Source maintainers. Min to participate is 2k/year/dev at your companySelf-report annuallyPublish a blog post outlining your paymentsArminâs post about launching Open Source Pledge and mixing money with open sourceMichael #2: Jeff Triplet's DjangoTV
A nice aggregation of lots of Django conference talksFilter by conferenceGood search as wellBrian #3: PEP 735 â Dependency Groups in pyproject.toml
Author: Stephen Rosen, Sponsor: Brett Cannon, PEP-Delegate: Paul MooreAccepted. Resolotion Oct 10, 2024âThis PEP specifies a mechanism for storing package requirements in pyproject.toml files such that they are not included in any built distribution of the project.âAllow us to define named groups of dependencies that can be independent of the main project.ex:
[dependency-groups]test = ["pytest", "coverage"]docs = ["sphinx", "sphinx-rtd-theme"]typing = ["mypy", "types-requests"]typing-test = [{include-group = "typing"}, {include-group = "test"}, "useful-types"]âmightâ work like this: pip install --dependency-groups=test,typing
but tool venders are able to define how they use groups. Of course.Similar solutions multiple requirements.txt files: requirements_test.txt, requirements_docs.txt, etc.no standard naming convention, not standardized package extras: not gauranteed to be statically defined (TIL)additional to main dependencies, so not independentMichael #4: livereload
Example from talkpython.fm: asset_bundler_watcher.pyThe docs are sparse, so see the gist aboveExtras
Brian:
Personal Blogs are no longer personal when AI gets too involved - KJayMillerMind Your Image Metadata - Stefanie MolinMichael:
14% of our listeners are in Germany, thanks Germany!Prost!Hetzner comes to the USJoke:
A programmerâs partner asks them: âWould you go get a loaf of bread from the store? And if they have eggs, get a dozen.â A while later, the programmer returns with 12 loaves of bread and says âThey had eggs.âFrom https://savvyprogrammer.io/software-jokes/ -
Topics covered in this episode:
Briefer: Dashboards and notebooks in a single placeIntroduction to programming with Pythonsetup-uvHTML for peopleExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect 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: Briefer: Dashboards and notebooks in a single place
Notebooks and dashboards with Python, SQL, scheduling, native visualizations, code generation, and more.In Briefer, you can: Create notebooks and dashboards using Markdown, Python, SQL, and native visualizations. Build interactive data apps using inputs, dropdowns, and date pickers. Generate code and queries using an AI that understands your database schema and your notebook's context. Schedule notebooks and dashboards to run and update periodically. Create and test ad-hoc pipelines using writebacks.Briefer vs. Traditional BI Tools: Briefer is better than traditional BI tools because it's faster and more flexible, thanks to Python.Briefer vs. Traditional Notebooks: In Briefer, you can run SQL queries against connected data sources directly in your notebook. Then, Briefer will automatically turn your query into a data frame and store it in a variable that you can use in your Python blocks.Brian #2: Introduction to programming with Python
Jose BlancaâPython intro aimed at students with no prior programming experience.ââRelies mainly on examples and exercises.ââDoes not try to cover every detail of the Python language, but just what a beginner might need to start the journey.âTech: â⊠built with the quarto publishing system complemented by the quarto live extension that allows Python to run in the web browser by using pyodide.âRuns on anything, since it doesnât require a local install of PythonRunning 3.12.1, looks like. Although thatâs a bit hidden. Seems like it should be more visible.Michael #3: setup-uv
Set up your GitHub Actions workflow with a specific version of uvInstall a version of uv and add it to PATHCache the installed version of uv to speed up consecutive runs on self-hosted runnersRegister problem matchers for error output(Optional) Persist the uv's cache in the GitHub Actions Cache(Optional) Verify the checksum of the downloaded uv executableBrian #4: HTML for people
Teaching HTML in a rather fun way.Includes basic CSSExtras
Michael:
A new article: We Must Replace uWSGI With Something ElseDjango unique email loginJoke: So much OâReally
-
Topics covered in this episode:
Python 3.13.0 released Oct 7PEP 759 â External Wheel Hostingpytest-freethreadedpytest-editExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect 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: Python 3.13.0 released Oct 7
Thatâs today!Whatâs New In Python 3.13Interpreter (REPL) improvementsexit works (really, this is worth the release right here)Multiline editing with history preservation.history sticks around between sessionsDirect support for REPL-specific commands like help, exit, and quit, without the need to call them as functions.Prompts and tracebacks with color enabled by default.Interactive help browsing using F1 with a separate command history.History browsing using F2 that skips output as well as the >>> and ⊠prompts.âPaste modeâ with F3 that makes pasting larger blocks of code easier (press F3 again to return to the regular prompt).exit now works without parensImproved error messagesColorful tracebacksBetter messages fornaming a script/module the same name as a stdlib module.naming a script/module the same name as an installed third party module.misspelling a keyword argumentFree threaded CPythonIncluded in official installers on Windows and macOSRead these links to figure out how - itâs not turned on by defaultLotâs more. see the Whatâs new pageMichael #2: PEP 759 â External Wheel Hosting
pypi.org ships over 66 petabytes / month backed by FastlyThere are hard project size limits for publishers to PyPIWe can host the essence of a .whl as a .rim file, then allow an external download URLSecurity: Several factors as described in this proposal should mitigate security concerns with externally hosted wheels, such as:Wheel file checksums MUST be included in .rim files, and once uploaded cannot be changed. Since the checksum stored on PyPI is immutable and required, it is not possible to spoof an external wheel file, even if the owning organization lost control of their hosting domain.Externally hosted wheels MUST be served over HTTPS.In order to serve externally hosted wheels, organizations MUST be approved by the PyPI admins.Brian #3: pytest-freethreaded
PyCon JP 2024 Team:This extension was created at PyCon JP sprints with Anthony Shaw and 7 other folks listed in credits.âA pytest plugin for helping verify that your tests and libraries are thread-safe with the Python 3.13 experimental freethreaded mode.âTesting your project for compatibility with freethreaded Python.Testing in single thread doesnât test that.Neither does testing with pytest-xdist, because it uses multiprocessing to parallelize tests.So, Ant and others âmade this plugin to help you run your tests in a thread-pool with the GIL disabled, to help you identify if your tests are thread-safe.ââAnd the first library we tested it on (which was marked as compatible) caused a segmentation fault in CPython! So you should give this a go if you're a package maintainer.âMichael #4: pytest-edit
A simple Pytest plugin for opening editor on the failed tests.Type pytest --edit to open the failing test code Be sure to set your favorite editor in the ENV variablesExtras
Michael:
New way to explore Talk Python courses via topicsThis has been in our mobile apps since their rewrite but finally comes to the webLet's go easy on PyPI, OK? essayHynekâs video: uv IS the Future of Python Packaging djade-pre-commitPolyfill.io, BootCDN, Bootcss, Staticfile attack traced to 1 operatorPurgeCSS CLI Python 3.12.7 releasedIncremental GC and pushing back the 3.13.0 releaseuv making the roundsLLM fatigue, is it real?Take the Python Developers Survey 2024Joke: Funny 404 pages
We have something at least interesting at pythonbytes.fm -
Topics covered in this episode:
uv under discussion on Mastodonerdantic: Entity Relationship DiagramsExtra, Extra, ExtraDjango Extra, Extra, ExtraExtrasJokeWatch 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]: @[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: uv under discussion on Mastodon
Itâs interesting that uv is slightly controversialRussell:
As enthusiastic as I am about the direction uv is going, I haven't adopted them anywhere - because I want very much to understand Astralâs intended business model before I hook my wagon to their tools.
Hynek:
As much as I hate VC, [...] FOSS projects flame out all the time too. ⊠To me uv looks like a genius sting to trick VCs into paying to fix packaging. Weâll be better off either way.
Glyph:
Rust is more expensive and difficult to maintain, not to mention "non-native" to the average customer here. ⊠it can burn out all the other projects in the ecosystem simultaneously, creating a risk of monoculture
Hynek on Rust:
I donât think yâall quite grok what uv makes so special due to your seniority. The speed is really cool, but the reason Rust is elemental is that itâs one compiled blob that can be used to bootstrap and maintain a Python development.
Christopher Neugebauer:
Just dropping in here to say that corporate capture of the Python ecosystem is the #1 keeps-me-up-at-night subject in my community work, so I watch Astral with interest, even if I'm not yet too worried.
Armin Ronacher
What uv is doing, even in the worst possible future this is a very forkable and maintainable thing.
Finally, see the comment at the end by Charlie Marsh
Brian #2: erdantic: Entity Relationship Diagrams
âerdantic is a simple tool for drawing entity relationship diagrams (ERDs) for Python data model classes. Diagrams are rendered using the venerable Graphviz library.âSupported data modeling frameworks are:Pydantic V2Pydantic V1 legacyattrsdataclassesMichael #3: Extra, Extra, Extra
Added Python Bytes Search as a custom search engine.Along came passkeys. A cool idea that quickly turned evil.Follow up from post and my conversation last week: vaultwarden (via Pablo)uv publishTrying the tabs on bottom lifestyle inspired by ArcAdding Python Bytes (and Talk Python) as custom search engines.PyCon 2025 dates: From 14 May through 22 May, 2025Brian #4: Django Extra, Extra, Extra
Django Project IdeasEvgenia VerbinaProject ideas with list of tech stack stuff youâll learn and/or work on with the projectEx: Recipe organizertech stack: Django templates, Django ORM, Optional JavaScriptâFamiliarize yourself with Djangoâs ORM (object-relational mapper) and database support by building an app to keep track of your favorite recipes. Add a web-based frontend with options to filter recipes by category, ingredients, and user ratings so you can easily browse for inspiration.âDjangoTVJeff TriplettDjango conference videos and tutorials.Django CommonsHeard about from Lacey HenschelâDjango Commons is an organization dedicated to supporting the community's efforts to maintain packages. It seeks to improve the maintenance experience for all contributors; reducing the barrier to entry for new contributors and reducing overhead for existing maintainers.âDjango 5 has simplified templates for better form field renderingBut if you want a completely different take on forms, maybe try iommi formsThey wrote about it on Why we wrote a new form library for DjangoDjade: a Django template formatterAdam JohnsonLike black or ruff, but for Django templates.Extras
Brian:
The Open Source Project Maintainer's GuideSuggested by Rafael WeingartnerJoke: A Machine Learning algorithm walks into a barâŠ
-
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-dockerExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect 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: Architecture Decision Records (ADRs)
Suggested by Christian GesellDocumenting Architecture DecisionsMychael NygardOriginal article from 2011Why you should be using architecture decision records to document your projectRed HatIncludes a quick overview and links to some templatesNotes so farWriting this out helps me solidify my thinking about a problem.Iâm doing this both before starting, and while implementing a first draftGitHub and GitLab render markdown so well that generating a docs site is unnecessary, just throwing these files in something like docs/adr is enough.The lightweight process is enough but not too much.Iâve already filled out None for lots of sections, like âoptions consideredâIâm still playing with what level of decision should have an ADR.My template that Iâve been using so farSaved in 000-adr-template.mdFor easy copy/paste/modify for new records.File name is something like 001-some-change.mdMichael #2: narwhals: extremely lightweight compatibility layer between dataframes
Recently had Marco on Talk Python to discussPrimarily for library creators who want to support interacting with multiple data frame libraries (.e.g. Pandas & Polars)Just use a subset of the Polars APIBrian #3: Microsoft wants Three Mile Island to fuel its AI power needs
âMicrosoft just signed a deal to revive the shuttered Three Mile Island nuclear power plant. If approved by regulators, the software maker would have exclusive rights to 100 percent of the output for its AI data center needs.âAlso ran on CNN and other sources: Three Mile Island is reopening and selling its power to MicrosoftThree Mile Island was the site of the worst nuclear disaster in the US, when one of two reactors experienced a partial meltdown, in 1979. It was still operating up until 2019, and now expected to re-open in 2028Will be renamed âCrane Clean Energy CenterârelatedThe Department of Energy Wants You to Know Your Conservation Efforts Are Making a DifferenceâBy switching all the lightbulbs in your house to LED, you saved enough energy for a self-driving car to make an unprotected lefthand turn across three lanes of traffic.ââWe know you adopted energy-saving practices to help conserve our planetâs resources and bring down our collective carbon footprint, but what you ultimately accomplished is just as important: helping AI do something menial and stupid.âMichael #4: zsh-in-docker
Install Zsh, Oh My Zsh and plugins inside a Docker container with one line!Yes docker containers should be light, but also, think of how painful it can be when you run into trouble.With Oh My ZSH, you get a nice experience when you have to result to docker exec -it CONTAINER zshJust enter a single command in your docker file:RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.0/zsh-in-docker.sh)" -- \ -t robbyrussellExtras
Michael:
self-hosting mkennedy.codesLoren's journey to developerItâs time to stop using Python 3.8Sonoma â Sequoia â Sonoma (yikes!)Passkeys, maybe they will work out if we donât let them become lock-in (bitwardenâs support)Joke:
How to Monetize a BlogDonât forget to click on the bottom link: Credits / how this was made -
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 HoursExtrasJokeWatch on YouTubeAbout the show
Sponsored by ScoutAPM: pythonbytes.fm/scout
Connect 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: âWe must replace uwsgi by something elseâ
uWSGI is now in maintenance mode: https://uwsgi-docs.readthedocs.io/en/latest/The project is in maintenance mode (only bugfixes and updates for new languages apis). Do not expect quick answers on github issues and/or pull requests (sorry for that) A big thanks to all of the users and contributors since 2009.Reasonable options look like:granianuvicornhypercorngunicorn (potentially with uvicorn workers for async)Brian #2: Letâs build and optimize a Rust extension for Python
Itamar Turner-TrauringExample: algorithm for approximating the number of unique values in a listComparison to non-approximation non-approx is faster but uses way more memoryRust versionUse Maturin and PyO3Pull in Rust dependencies (rand for random numbers)Optimizationlink-time optimizationfaster randomstore hashes onlyFuture optimizationschange algorithm maybepass numpy array instead of Python list (Iâd like to see that spedup)Michael #3: Fake recruiter coding tests target devs with malicious Python packages
via python weeklyGitHub projects that have been linked to previous, targeted attacks in which developers are lured using fake job interviews.Attackers posing as employees of major financial services firms.This previously happened via other means such as NPMThis analysis revealed that the direct parent of the detected, malicious files is a PythonPYC file, meaning that once again the team encountered malware hidden in a compiled Python file.âThe README files tell would-be candidates to make sure the project is running successfully on their system before making modifications.âWhat can you do (according to Michael)?Try out new packages in a docker containerWork on code and projects using a VM which has snapshotting (to roll back completely after youâre done)Fire up a Windows desktop in the cloud for the project then destroy itBrian #4: Monthly PSF Board Office Hours
âThe Office Hours will be sessions where you can share with us how we can help your community, express your perspectives, and provide feedback for the PSF.ââUnless we have a dedicated topic for a session, you are not limited to talking with us about the above topics, although the discussions should be focused on Python, the PSF, and our community. If you think thereâs something we can help with or we should know, we welcome you to come and talk to us!âUpcoming office hoursOctober 8th, 2024: 9pm UTCNovember 12th, 2024: 2pm UTCDecember 10th, 2024: 9pm UTCJanuary 14th, 2025: 2pm UTCFebruary 11th, 2025: 9pm UTCMarch 11th, 2025: 1pm UTCApril 8th, 2025: 9pm UTCMay 13th, 2025: 1pm UTC (Live from PyCon US!)June 10th, 2025: 9pm UTCJuly 9th, 2025: 1pm UTCAugust 12th, 2025: 9pm UTCExtras
Brian:
PyCascades CFP closes Friday, Sept 20PyCascades is in Portland in 2025 (Feb 8 & 9)uv now supports Python 3.13.0rc2
uv self updateuv venv -p 3.13Free threaded is still an open issue
Michael:
Big Python Humble Bundle with both of our productsGet $1,800 worth of Python content and tools for $30 and contribute to charityIncludes 5 Talk Python coursesSeveral of Brianâs and his bookDjangonaut Space Session 3 Applications Open!I interviewed Sarah and Tushar on Talk PythonAltTab: Windows alt-tab on macOSJoke: Election joke
-
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 -
Topics covered in this episode:
pyawaitableAnnotated area charts with plotnineDeltaDBPyCon US 2024 Recap + Videos are upExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/397 -
Topics covered in this episode:
uv venv --python & uv pythonPython 3.12.5 releasedCompile and use dependencies for multiple Python versions in ToxCatalog of Dark PatternsExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/396 -
Topics covered in this episode:
py-free-threading.github.ioPythonâs Supportive and Welcoming Environment is Tightly Coupled to Its ProgressStatus pages for sites!PEP 751 â A file format to list Python dependencies for installation reproducibilityExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/395 -
Topics covered in this episode:
Python is easy nowTrying out free-threaded Python on macOSModule itertools overviewuptime-kumaExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/394 -
Topics covered in this episode:
Marimo: âFuture of Notebooksâpytest 8.3.0 & 8.3.1 are outPython Language Summit 2024bash-dungeonExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/393 -
Topics covered in this episode:
2024 PSF Board Election & Proposed Bylaw Change ResultsSATYRN: A modern Jupyter client for MacIncident Report: Leaked GitHub Personal Access TokenExtra extra extraExtrasJokeSee the full show notes for this episode on the website at pythonbytes.fm/392 - Laat meer zien