Épisodes

  • #460 Overlooked Python Typing
    Dec 1 2025
    Topics covered in this episode: Advent of Code starts todayDjango 6 is comingAdvanced, Overlooked Python TypingcodespellExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Brian #1: Advent of Code starts today A few changes, like 12 days this year, which honestly, I’m grateful for. Michael #2: Django 6 is coming Expected December 2025Django 6.0 supports Python 3.12, 3.13, and 3.14Built-in support for the Content Security Policy (CSP) standard is now available, making it easier to protect web applications against content injection attacks such as cross-site scripting (XSS).The Django Template Language now supports template partials, making it easier to encapsulate and reuse small named fragments within a template file.Django now includes a built-in Tasks framework for running code outside the HTTP request–response cycle. This enables offloading work, such as sending emails or processing data, to background workers.Email handling in Django now uses Python’s modern email API, introduced in Python 3.6. This API, centered around the email.message.EmailMessage class Brian #3: Advanced, Overlooked Python Typing get_args, TypeGuard, TypeIs, and more goodies Michael #4: codespell Learned from this PR for the Talk Python book.Fix common misspellings in text files.It's designed primarily for checking misspelled words in source code (backslash escapes are skipped), but it can be used with other files as well.It does not check for word membership in a complete dictionary, but instead looks for a set of common misspellings. Therefore it should catch errors like "adn", but it will not catch "adnasdfasdf".It shouldn't generate false-positives when you use a niche term it doesn't know about. Extras Michael: Follow up on tach from Gerben Dekker: tach has been unmaintained for a bit but is not anymore. It was the main product from Gauge which is a Y combinator startup that pivoted to something unrelated and abandoned tach. However, https://github.com/DetachHead forked it but now got access to the main repo and has committed to maintaining it.ruff analyze graph is fully independent of tach - we actually started to look into alternatives for tach when it became unmaintained and then found ruff analyze graph.For our use case, with just a bit of manipulation on top of ruff analyze graph we replaced our use of deptry (which was slower - and I try to be careful depending on one-man projects).A Review of Michael Kennedy’s book, “Talk Python in Production” - Thanks Doug Joke: NoaaS
    Voir plus Voir moins
    24 min
  • #459 Inverted dependency trees
    Nov 24 2025
    Topics covered in this episode: PEP 814 – Add frozendict built-in typeFrom Material for MkDocs to ZensicalTachSome Python Speedups in 3.15 and 3.16ExtrasJokeAbout the show Sponsored by us! Support our work through: Our courses at Talk Python TrainingThe Complete pytest CoursePatreon Supporters Connect with the hosts Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #0: Black Friday is on at Talk Python What’s on offer: An AI course mini bundle (22% off)20% off our entire library via the Everything Bundle (what's that? ;) )The new Talk Python in Production book (25% off) Brian: This is peer pressure in action 20% off The Complete pytest Course bundle (use code BLACKFRIDAY) through November or use save50 for 50% off, your choice.Python Testing with pytest, 2nd edition, eBook (50% off with code save50) also through November I would have picked 20%, but it’s a PragProg wide thing Michael #1: PEP 814 – Add frozendict built-in type by Victor Stinner & Donghee NaA new public immutable type frozendict is added to the builtins module.We expect frozendict to be safe by design, as it prevents any unintended modifications. This addition benefits not only CPython’s standard library, but also third-party maintainers who can take advantage of a reliable, immutable dictionary type.To add to existing frozen types in Python. Brian #2: From Material for MkDocs to Zensical Suggested by John HagenA lot of people, me included, use Material for MkDocs as our MkDocs theme for both personal and professional projects, and in-house docs.This plugin for MkDocs is now in maintenance modeThe development team is switching to working on Zensical, a static site generator to overcome some technical limitations with MkDocs. There’s a series of posts about the transition and reasoning Transforming Material for MkDocsZensical – A modern static site generator built by the creators of Material for MkDocsMaterial for MkDocs Insiders – Now free for everyoneGoodbye, GitHub DiscussionsMaterial for MkDocs still around, but in maintenance modeall insider features now available to everyoneZensical is / will be compatible with Material for Mkdocs, can natively read mkdocs.yml, to assist with the transitionOpen Source, MIT licensefunded by an offering for professional users: Zensical Spark Michael #3: Tach Keep the streak: pip deps with uv + tachFrom Gerben DeckerWe needed some more control over linting our dependency structure, both internal and external.We use tach (which you covered before IIRC), but also some home built linting rules for our specific structure. These are extremely easy to build using an underused feature of ruff: "uv run ruff analyze graph --python python_exe_path .".Example from an app I’m working on (shhhhh not yet announced!) Brian #4: Some Python Speedups in 3.15 and 3.16 A Plan for 5-10%* Faster Free-Threaded JIT by Python 3.16 5% faster by 3.15 and 10% faster by 3.16Decompression is up to 30% faster in CPython 3.15 Extras Brian: LeanTDD book issue tracker Michael: No. 4 for dependencies: Inverted dep trees from Bob Belderbos Joke: git pull inception
    Voir plus Voir moins
    33 min
  • #458 I will install Linux on your computer
    Nov 17 2025
    Topics covered in this episode: Possibility of a new website for DjangoaiosqlitepooldeptrybrowsrExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Brian #1: Possibility of a new website for Django Current Django site: djangoproject.comAdam Hill’s in progress redesign idea: django-homepage.adamghill.comCommentary in the Want to work on a homepage site redesign? discussion Michael #2: aiosqlitepool 🛡️A resilient, high-performance asynchronous connection pool layer for SQLite, designed for efficient and scalable database operations.About 2x better than regular SQLite.Pairs with aiosqliteaiosqlitepool in three points: Eliminates connection overhead: It avoids repeated database connection setup (syscalls, memory allocation) and teardown (syscalls, deallocation) by reusing long-lived connections.Faster queries via "hot" cache: Long-lived connections keep SQLite's in-memory page cache "hot." This serves frequently requested data directly from memory, speeding up repetitive queries and reducing I/O operations.Maximizes concurrent throughput: Allows your application to process significantly more database queries per second under heavy load. Brian #3: deptry “deptry is a command line tool to check for issues with dependencies in a Python project, such as unused or missing dependencies. It supports projects using Poetry, pip, PDM, uv, and more generally any project supporting PEP 621 specification.”“Dependency issues are detected by scanning for imported modules within all Python files in a directory and its subdirectories, and comparing those to the dependencies listed in the project's requirements.”Note if you use project.optional-dependencies [project.optional-dependencies] plot = ["matplotlib"] test = ["pytest"] you have to set a config setting to get it to work right: [tool.deptry] pep621_dev_dependency_groups = ["test", "docs"] Michael #4: browsr browsr 🗂️ is a pleasant file explorer in your terminal. It's a command line TUI (text-based user interface) application that empowers you to browse the contents of local and remote filesystems with your keyboard or mouse.You can quickly navigate through directories and peek at files whether they're hosted locally, in GitHub, over SSH, in AWS S3, Google Cloud Storage, or Azure Blob Storage.View code files with syntax highlighting, format JSON files, render images, convert data files to navigable datatables, and more. Extras Brian: Understanding the MICROTDD chapter coming out later today or maybe tomorrow, but it’s close. Michael: Peacock is excellent Joke: I will find you
    Voir plus Voir moins
    23 min
  • #457 Tapping into HTTP
    Nov 11 2025
    Topics covered in this episode: httptap10 Smart Performance Hacks For Faster Python CodeFastRTCExplore Python dependencies with pipdeptree and uv pip treeExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: httptap Rich-powered CLI that breaks each HTTP request into DNS, connect, TLS, wait, and transfer phases with waterfall timelines, compact summaries, or metrics-only output.Features Phase-by-phase timing – precise measurements built from httpcore trace hooks (with sane fallbacks when metal-level data is unavailable).All HTTP methods – GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS with request body support.Request body support – send JSON, XML, or any data inline or from file with automatic Content-Type detection.IPv4/IPv6 aware – the resolver and TLS inspector report both the address and its family.TLS insights – certificate CN, expiry countdown, cipher suite, and protocol version are captured automatically.Multiple output modes – rich waterfall view, compact single-line summaries, or -metrics-only for scripting.JSON export – persist full step data (including redirect chains) for later processing.Extensible – clean Protocol interfaces for DNS, TLS, timing, visualization, and export so you can plug in custom behavior.Example: Brian #2: 10 Smart Performance Hacks For Faster Python Code Dido GrigorovA few from the list Use math functions instead of operatorsAvoid exception handling in hot loopsUse itertools for combinatorial operations - huge speedupUse bisect for sorted list operations - huge speedup Michael #3: FastRTC The Real-Time Communication Library for Python: Turn any python function into a real-time audio and video stream over WebRTC or WebSockets.Features 🗣️ Automatic Voice Detection and Turn Taking built-in, only worry about the logic for responding to the user.💻 Automatic UI - Use the .ui.launch() method to launch the webRTC-enabled built-in Gradio UI.🔌 Automatic WebRTC Support - Use the .mount(app) method to mount the stream on a FastAPI app and get a webRTC endpoint for your own frontend!⚡️ Websocket Support - Use the .mount(app) method to mount the stream on a FastAPI app and get a websocket endpoint for your own frontend!📞 Automatic Telephone Support - Use the fastphone() method of the stream to launch the application and get a free temporary phone number!🤖 Completely customizable backend - A Stream can easily be mounted on a FastAPI app so you can easily extend it to fit your production application. See the Talk To Claude demo for an example of how to serve a custom JS frontend. Brian #4: Explore Python dependencies with pipdeptree and uv pip tree Suggested by Nicholas Carsner We have covered it, but in 2017 on episode 17.pipdeptree Use pipdeptree --python auto to allow it to read your venvuv pip tree Also check out uv pip tree and some useful flags --show-version-specifiers to show the rules--outdated notes packages that need updated Extras Brian: Lean TDD 0.1.1 includes an updated intro and another chapter, “Essential Components”VSCode Peacock Extension - color code your different projects Joke: Sure Grandma
    Voir plus Voir moins
    28 min
  • #456 You're so wrong
    Nov 3 2025
    Topics covered in this episode: The PSF has withdrawn a $1.5 million proposal to US government grant programA Binary Serializer for Pydantic ModelsT-strings: Python's Fifth String Formatting Technique?CronboardExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Brian #1: The PSF has withdrawn a $1.5 million proposal to US government grant program Related post from Simon WillisonARS Technica: Python plan to boost software security foiled by Trump admin’s anti-DEI rulesThe Register: Python Foundation goes ride or DEI, rejects government grant with strings attachedIn Jan 2025, the PSF submitted a proposal for a US NSF grant under the Safety, Security, and Privacy of Open Source Ecosystems program. After months of work by the PSF, the proposal was recommended for funding.If the PSF accepted it, however, they would need to agree to the some terms and conditions, including, affirming that the PSF doesn't support diversity. The restriction wouldn't just be around the security work, but around all activity of the PSF as a whole. And further, that any deemed violation would give the NSF the right to ask for the money back.That just won't work, as the PSF would have already spent the money.The PSF mission statement includes "The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers." The money would have obviously been very valuable, but the restrictions are just too unacceptable.The PSF withdrew the proposal. This couldn't have been an easy decision, that was a lot of money, but I think the PSF did the right thing. Michael #2: A Binary Serializer for Pydantic Models 7× Smaller Than JSONA compact binary serializer for Pydantic models that dramatically reduces RAM usage compared to JSON.The library is designed for high-load systems (e.g., Redis caching), where millions of models are stored in memory and every byte matters.It serializes Pydantic models into a minimal binary format and deserializes them back with zero extra metadata overhead.Target Audience: This project is intended for developers working with: high-load APIsin-memory caches (Redis, Memcached)message queuescost-sensitive environments where object size matters Brian #3: T-strings: Python's Fifth String Formatting Technique? Trey HunnerPython 3.14 has t-strings. How do they fit in with the rest of the string story?History percent-style (%) strings - been around for a very long timestring.Template - and t.substitute() - from Python 2.4, but I don’t think I’ve ever used thembracket variables and .format() - Since Python 2.6f-strings - Python 3.6 - Now I feel old. These still seem new to met-strings - Python 3.14, but a totally different beast. These don’t return strings.Trey then covers a problem with f-strings in that the substitution happens at definition time.t-strings have substitution happen later. this is essentially “lazy string interpolation”This still takes a bit to get your head around, but I appreciate Trey taking a whack at the explanation. Michael #4: Cronboard Cronboard is a terminal application that allows you to manage and schedule cronjobs on local and remote servers.With Cronboard, you can easily add, edit, and delete cronjobs, as well as view their status.✨ Features ✔️ Check cron jobs✔️ Create cron jobs with validation and human-readable feedback✔️ Pause and resume cron jobs✔️ Edit existing cron jobs✔️ Delete cron jobs✔️ View formatted last and next run times✔️ Accepts special expressions like @daily, @yearly, @monthly, etc.✔️ Connect to servers using SSH, using password or SSH keys✔️ Choose another user to manage cron jobs if you have the permissions to do so (sudo) Extras Brian: PEP 810: Explicit lazy imports, has been unanimously accepted by steering councilLean TDD book will be written in the open. TOC, some details, and a 10 page introduction are now available. Hoping for the first pass to be complete by the end of the year. I’d love feedback to help make it a great book, and keep it small-ish, on a very limited budget. Joke: You are so wrong!
    Voir plus Voir moins
    26 min
  • #455 Gilded Python and Beyond
    Oct 27 2025
    Topics covered in this episode: Cyclopts: A CLI libraryThe future of Python web services looks GIL-freeFree-threaded GCPolite lazy imports for Python package maintainersExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: Cyclopts: A CLI library A CLI library that fixes 13 annoying issues in TyperMuch of Cyclopts was inspired by the excellent Typer library.Despite its popularity, Typer has some traits that I (and others) find less than ideal. Part of this stems from Typer's age, with its first release in late 2019, soon after Python 3.8's release. Because of this, most of its API was initially designed around assigning proxy default values to function parameters. This made the decorated command functions difficult to use outside of Typer. With the introduction of Annotated in python3.9, type-hints were able to be directly annotated, allowing for the removal of these proxy defaults.The 13: Argument vs OptionPositional or Keyword ArgumentsChoicesDefault CommandDocstring ParsingDecorator ParenthesesOptional ListsKeyword Multiple ValuesFlag NegationHelp DefaultsValidationUnion/Optional SupportAdding a Version FlagDocumentation Brian #2: The future of Python web services looks GIL-free Giovanni Barillari“Python 3.14 was released at the beginning of the month. This release was particularly interesting to me because of the improvements on the "free-threaded" variant of the interpreter. Specifically, the two major changes when compared to the free-threaded variant of Python 3.13 are: Free-threaded support now reached phase II, meaning it's no longer considered experimentalThe implementation is now completed, meaning that the workarounds introduced in Python 3.13 to make code sound without the GIL are now gone, and the free-threaded implementation now uses the adaptive interpreter as the GIL enabled variant. These facts, plus additional optimizations make the performance penalty now way better, moving from a 35% penalty to a 5-10% difference.”Lots of benchmark data, both ASGI and WSGILots of great thoughts in the “Final Thoughts” section, including “On asynchronous protocols like ASGI, despite the fact the concurrency model doesn't change that much – we shift from one event loop per process, to one event loop per thread – just the fact we no longer need to scale memory allocations just to use more CPU is a massive improvement. ”“… for everybody out there coding a web application in Python: simplifying the concurrency paradigms and the deployment process of such applications is a good thing.”“… to me the future of Python web services looks GIL-free.” Michael #3: Free-threaded GC The free-threaded build of Python uses a different garbage collector implementation than the default GIL-enabled build.The Default GC: In the standard CPython build, every object that supports garbage collection (like lists or dictionaries) is part of a per-interpreter, doubly-linked list. The list pointers are contained in a PyGC_Head structure.The Free-Threaded GC: Takes a different approach. It scraps the PyGC_Head structure and the linked list entirely. Instead, it allocates these objects from a special memory heap managed by the "mimalloc" library. This allows the GC to find and iterate over all collectible objects using mimalloc's data structures, without needing to link them together manually.The free-threaded GC does NOT support "generations”By marking all objects reachable from these known roots, we can identify a large set of objects that are definitely alive and exclude them from the more expensive cycle-finding part of the GC process.Overall speedup of the free-threaded GC collection is between 2 and 12 times faster than the 3.13 version. Brian #4: Polite lazy imports for Python package maintainers Will McGugan commented on a LI post by Bob Belderbos regarding lazy importing“I'm excited about this PEP. I wrote a lazy loading mechanism for Textual's widgets. Without it, the entire widget library would be imported even if you needed just one widget. Having this as a core language feature would make me very happy.” https://github.com/Textualize/textual/blob/main/src/textual/widgets/__init__.pyWell, I was excited about Will’s example for how to, essentially, allow users of your package to import only the part they need, when they need it.So I wrote ...
    Voir plus Voir moins
    39 min
  • #454 It's some form of Elvish
    Oct 20 2025
    Topics covered in this episode: djrest2 - A small and simple REST library for Django based on class-based views.Github CLIcaniscrape - Know before you scrape. Analyze any website's anti-bot protections in seconds.🐴 GittyUpExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Brian #1: djrest2 - A small and simple REST library for Django based on class-based views. Emma LevitBased on an interesting blog post Why, in 2025, do we still need a 3rd party app to write a REST API with Django?As opposed to using DRF or Django Ninja - Michael #2: Github CLI GitHub’s official command line toolFeatures Checking out a pull request locallyYou can clone any repository using OWNER/REPO syntax: gh repo clone cli/cliCreate a pull request interactively: gh pr createSee all at cli.github.com/manual/examples Brian #3: caniscrape - Know before you scrape. Analyze any website's anti-bot protections in seconds. reddit announcement and discussioncaniscrape checks a website for common anti-bot mechanisms and reports: A difficulty score (0–10)Which protections are active (e.g., Cloudflare, Akamai, hCaptcha, etc.)What tools you’ll likely need (headless browsers, proxies, CAPTCHA solvers, etc.)Whether using a scraping API might be better This helps you decide the right scraping approach before you waste time building a bot that keeps getting blocked. Michael #4: 🐴 GittyUp Never forget to pull again: Automatically discover and update all your Git repositories with one command.Built initially to solve this problemRebuilt and published last week as part of my upcoming Agentic AI Programming for Python course. Get notified this week at training.talkpython.fm/getnotifiedUpdate everything in a folder tree with gittyupReview changes, blockers, etc with gittyup --explain Extras Brian: Three times faster with lazy imports - Hugo van KemenadeInteresting discussion on Hugo’s post - on MastodonUse lazy module imports now - Graham DumpletonGraham’s post uses wrapt, a “module for decorators, wrappers and monkey patching”, to simulate lazy importsHelpful comment from Adam Johnson on Graham’s post to actually do the import during type checking using if TYPE_CHECKING: import ... Michael: uvloop is back!pypi+ listened. :) https://www.reddit.com/r/Python/comments/1o9dey5/i_just_released_pypipluscom_20_offlineready/Feedback from my “Show me your ls” post. Joke: Some form of Elvish
    Voir plus Voir moins
    29 min
  • #453 Python++
    Oct 16 2025
    Topics covered in this episode: PyPI+uv-ship - a CLI-tool for shipping with uvHow fast is 3.14?air - a new web framework built with FastAPI, Starlette, and Pydantic.ExtrasJokeWatch 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: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)Brian: @brianokken@fosstodon.org / @brianokken.bsky.socialShow: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky) Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: PyPI+ Very nice search and exploration tool for PyPIMinor but annoying bug: content-types ≠ content_types on PyPI+ but they are in Python itself. Minimum Python version seems to be interpreted as max Python version.See dependency graphs and moreExamples content-typesjinja-partialsfastapi-chameleon Brian #2: uv-ship - a CLI-tool for shipping with uv “uv-ship is a lightweight companion to uv that removes the risky parts of cutting a release. It verifies the repo state, bumps your project metadata and optionally refreshes the changelog. It then commits, tags & pushes the result, while giving you the chance to review every step.” Michael #3: How fast is 3.14? by Miguel GrinbergA big focus on threaded vs. non-threaded PythonSome times its faster, other times, it’s slower Brian #4: air - a new web framework built with FastAPI, Starlette, and Pydantic. An very new project in Alpha stage by Daniel & Audrey Felderoy, the “Two Scoops of Django” people.Air Tags are an interesting thing.Also Why? is amazing “Don't use AIR”“Every release could break your code! If you have to ask why you should use it, it's probably not for you.”“If you want to use Air, you can. But we don't recommend it.”“It'll likely infect you, your family, and your codebase with an evil web framework mind virus, , …” Extras Brian: Python 3.15a1 is available uv python install 3.15 already worksPython lazy imports you can use today - one of two blog posts I threatened to write recentlyTesting against Python 3.14 - the other oneFree Threading has some trove classifiers Michael: Blog post about the book: Talk Python in Production book is out! In particular, the extras are interesting.AI Usage TUIShow me your lsHelium Browser is interesting. But also has Python as a big role. GitHub says Languages Python 97.4% 👀Shell 1.9%Other 0.7%Smallest Python release? 3.13.9 Joke: An unforgivable crime
    Voir plus Voir moins
    36 min