Should You Understand Your Entire Python Codebase?
<p>Should you understand the entirety of your codebase? How familiar are you with Python’s built-in functions? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent article by Sean Goedecke titled “In Defense of Not Understanding Your Codebase.” We dig into the differences in the scale of software projects and the factors that can obscure understanding of an entire codebase. We cover how opinions and practices people often argue for are based on the development practices from decades ago.</p>
<p>Christopher shares his recent video course that explores Python’s built-in functions. The course is divided into sections to help you find the right built-in for tasks involving math, data types, iterables, and I/O. We discuss which of these functions are frequently used in our code.</p>
<p>We also share other articles and projects from the Python community, including recent releases, querying with f-expressions in Django, replacing <code>if-else</code> chains, a Rust-based replacement for Python’s <code>json</code> module, and a couple of Python cheat sheet resources.</p>
<p>This episode is sponsored by <a href="https://hydradb.com/?utm_source=real-python&utm_medium=real%20python&utm_campaign=dev-tool-listing&utm_content=podcast">HydraDB</a>.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/exploring-pythons-built-in-functions/">Exploring Python’s Built-in Functions</a></p>
<p>Learn Python’s built-in functions for math, data types, iterables, and I/O, and when to use each to write more Pythonic code.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:29 – Christopher’s Python News Song</li>
<li>00:03:18 – Python 3.15.0 Beta 4 Released</li>
<li>00:03:39 – PEP 838: Adding <code>python-version</code> to <code>pyvenv.cfg</code></li>
<li>00:04:59 – PEP 840: Name Resolution in Class Namespaces</li>
<li>00:06:42 – Stop Using <code>if-else</code> Chains</li>
<li>00:13:46 – Sponsor: HydraDB</li>
<li>00:14:44 – Nifty Django Feature: F Expressions</li>
<li>00:20:23 – In Defense of Not Understanding Your Codebase</li>
<li>00:34:13 – Exploring Python’s Built-in Functions</li>
<li>00:45:26 – Video Course Spotlight</li>
<li>00:46:57 – Python strftime/strptime Directive Cheat Sheet</li>
<li>00:50:22 – Itertools Cheatsheet</li>
<li>00:52:59 – Introducing <code>django-orjson</code></li>
<li>00:55:33 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://blog.python.org/2026/07/python-3150-beta-4/">Python 3.15.0 Beta 4 Released</a></li>
<li><a href="https://peps.python.org/pep-0838/">PEP 838: Adding <code>python-version</code> to <code>pyvenv.cfg</code> (Added)</a></li>
<li><a href="https://peps.python.org/pep-0840/">PEP 840: Name Resolution in Class Namespaces (Added)</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://www.kdnuggets.com/stop-using-if-else-chains-use-the-registry-pattern-in-python-instead">Stop Using <code>if-else</code> Chains</a> – Learn a cleaner, more extensible way to dispatch logic in Python using dictionaries and function pointers instead of long if-else chains.</li>
<li><a href="https://www.better-simple.com/django/2026/07/02/nifty-feature-f-expressions/">Nifty Django Feature: F Expressions</a> – Django’s F-Expression provides a way of querying fields from the ORM. They’re particularly handy to traverse relationships in more complex queries.</li>
<li><a href="https://docs.djangoproject.com/en/6.0/ref/models/expressions/#f-expressions">F() Expressions - Django Documentation</a></li>
<li><a href="https://www.seangoedecke.com/in-defense-of-not-understanding-your-codebase/">In Defense of Not Understanding Your Codebase</a> – In this opinion piece, Sean argues that there is a difference in the thought process between maintaining smaller software projects vs larger ones, and that the former is over represented in engineering discussion in the internet.</li>
<li><a href="https://realpython.com/courses/exploring-pythons-built-in-functions/">Exploring Python’s Built-in Functions</a> – Learn Python’s built-in functions for math, data types, iterables, and I/O, and when to use each to write more Pythonic code.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://inventwithpython.com/strftime/">Python strftime/strptime Directive Cheat Sheet</a></li>
<li><a href="https://mathspp.com/blog/itertools-cheatsheet">Itertools Cheatsheet</a> – Cheatsheet with visual diagrams that explain how the iterables from itertools work.</li>
<li><a href="https://adamj.eu/tech/2026/07/15/introducing-django-orjson/">Introducing <code>django-orjson</code></a> – <code>orjson</code> is a Rust-based replacement for Python’s <code>json</code> module. So what would Adam Johnson do with it? Make it easier to use in Django of course.</li>
<li><a href="https://github.com/ijl/orjson">orjson: Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy</a></li>
<li><a href="https://django-orjson.readthedocs.io/en/latest/">django-orjson documentation</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/primer-on-python-decorators/#registering-plugins">Primer on Python Decorators - Registering Plugins</a></li>
<li><a href="https://realpython.com/python-built-in-functions/">Python Built-in Functions: A Complete Guide</a></li>
<li><a href="https://realpython.com/cheatsheets/python/">Python Cheat Sheet – Real Python</a></li>
<li><a href="https://nedbatchelder.com/text/which-py">What’s in which Python - Ned Batchelder</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-datetime-module/">Using Python's datetime Module</a></li>
<li><a href="https://realpython.com/courses/basics-conditional-logic-control-flow/">Python Basics: Conditional Logic and Control Flow</a></li>
<li><a href="https://realpython.com/courses/exploring-pythons-built-in-functions/">Exploring Python's Built-in Functions</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Free-Threaded Python's History & uv in Production
<p>How many attempts have been made to remove Python’s Global Interpreter Lock (GIL)? How do they compare to the current approach? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher shares a recent article about Thomas Wouters’ talk at PyCon US 2026. The talk, titled “Free-threaded Python: past, present, and future,” covers the efforts to remove the GIL starting in 1996. He explains that threads are complex, but they allow multiple tasks to run concurrently within a single process and its address space. </p>
<p>The GIL is how CPython implements threading. The GIL protects Python objects and their reference counts, which determine the current objects in use. The talk also looks forward and shares the current work to remove the GIL, now named free-threaded Python, and the goals for the near future. </p>
<p>We also share other articles and projects from the Python community, including community announcements, a roundup of recent Real Python tutorials and video courses, using <code>uv</code> in Production, employing Wagtail as Django admin on steroids, managing and measuring Python code quality, a pure-Python implementation of <code>jq</code>, and a project to bring interactivity to plotnine.</p>
<p>This episode is sponsored by <a href="https://www.endorlabs.com/platform/developer?utm_source=Real-python-podcast&utm_medium=video&utm_campaign=auri-for-developers">AURI by Endor Labs</a></p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/thread-safety-locks-other-techniques/">Thread Safety in Python: Locks and Other Techniques</a></p>
<p>In this video course, you’ll learn about the issues that can occur when your code is run in a multithreaded environment. Then you’ll explore the various synchronization primitives available in Python’s threading module, such as locks, which help you make your code safe.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:03:08 – PEP 836: JIT Go Brrr: The Path to a Supported JIT Compiler for CPython</li>
<li>00:04:34 – PyCon US 2026 Videos Are Up</li>
<li>00:04:53 – Thinking About Running for the PSF Board? Let’s Talk!</li>
<li>00:05:30 – How to Get Started With the GitHub Copilot CLI</li>
<li>00:06:27 – Python 3.15 Preview: Upgraded JIT Compiler</li>
<li>00:07:23 – Testing MCP Servers With a Python MCP Client</li>
<li>00:08:10 – How to Use GitHub</li>
<li>00:08:50 – Why I Wrote PEP 832: Virtual Environment Discovery</li>
<li>00:09:46 – Free-Threaded Python: Past, Present, and Future</li>
<li>00:16:51 – Sponsor: AURI by EndorLabs</li>
<li>00:17:38 – <code>uv</code> in Production: The Speed Is Real, the Integration Isn’t Free</li>
<li>00:26:18 – Wagtail as Django Admin on Steroids</li>
<li>00:29:52 – Video Course Spotlight</li>
<li>00:31:11 – Managing and Measuring Python Code Quality</li>
<li>00:43:10 – purejq: A Pure-Python Implementation of <code>jq</code></li>
<li>00:46:41 – ninejs: Bringing ✨interactivity✨ to plotnine</li>
<li>00:49:15 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://peps.python.org/pep-0836/">PEP 836: JIT Go Brrr: The Path to a Supported JIT Compiler for CPython (Draft)</a></li>
<li><a href="https://discuss.python.org/t/pep-836-jit-go-brrr-the-path-to-a-supported-jit-compiler-for-cpython/108010">The Path to a Supported JIT Compiler for CPython</a></li>
<li><a href="https://www.youtube.com/c/pyconus">PyCon US 2026 Videos Are Up</a></li>
<li><a href="https://pyfound.blogspot.com/2026/07/thinking-about-running-for-psf-board.html">Thinking About Running for the PSF Board? Let’s Talk!</a> – The Python Software Foundation Board has announced two office-hour sessions dedicated to giving information on running for the PSF Board. If you’re thinking of running in the upcoming election, these sessions can help you understand the ins and outs.</li>
</ul>
<p>Real Python News:</p>
<ul>
<li><a href="https://realpython.com/github-copilot-cli/">How to Get Started With the GitHub Copilot CLI – Tutorial</a></li>
<li><a href="https://realpython.com/courses/managing-and-measuring-python-code-quality/">Managing and Measuring Python Code Quality – Video Course</a><a href="https://realpython.com/python315-jit-compiler/">Python 3.15 Preview: Upgraded JIT Compiler – Tutorial</a></li>
<li><a href="https://realpython.com/courses/testing-mcp-servers-with-a-python-mcp-client/">Testing MCP Servers With a Python MCP Client – Video Course</a></li>
<li><a href="https://realpython.com/how-to-use-github/">How to Use GitHub – Real Python</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://snarky.ca/why-i-wrote-pep-832-virtual-environment-discovery/">Why I Wrote PEP 832: Virtual Environment Discovery</a> – PEP 832 proposes a way to describe where your virtual environment is so that your tools can look in the right place. Although a relatively simple proposal it has caused some contention in the community. This post by Brett, the PEP’s author, describes his reasoning.</li>
<li><a href="https://lwn.net/SubscriberLink/1078367/eaa511915870fdb2/">Free-Threaded Python: Past, Present, and Future</a> – This post summarizes a talk by core developer Thomas Wouters at PyCon US 2026 on Free-threaded Python: the attempt to remove the GIL. It describes why it is being done and what future work looks like.</li>
<li><a href="https://www.youtube.com/watch?v=PZu6LyiZVbM">Free threaded Python past, present and future - YouTube</a></li>
<li><a href="https://tsv.one/articles/uv-in-production-caveats"><code>uv</code> in Production: The Speed Is Real, the Integration Isn’t Free</a> – Oleg’s work moved their tooling from <code>pip</code> to <code>uv</code> and lived with it for ~90 days. They discovered that the speed is real, but that doesn’t mean there aren’t complications.</li>
<li><a href="https://timonweb.com/wagtail/wagtail-as-django-admin-on-steroids/">Wagtail as Django Admin on Steroids</a> – Wagtail can do pretty much everything the Django Admin can do, but includes a much more modern UI and more features. This article shows you how to use Wagtail as an Admin alternative.</li>
<li><a href="https://realpython.com/courses/managing-and-measuring-python-code-quality/">Managing and Measuring Python Code Quality</a> – Master Python code quality tools like linters, formatters, type checkers, and profilers to measure, manage, and improve the code you write.</li>
<li><a href="https://realpython.com/python-code-quality/#managing-trade-offs-between-code-quality-characteristics">Python Code Quality: Best Practices and Tools – Real Python</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/adam2go/purejq">purejq: A Pure-Python Implementation of <code>jq</code></a></li>
<li><a href="https://github.com/y-sunflower/ninejs">ninejs: Bringing ✨interactivity✨ to plotnine</a></li>
<li><a href="https://y-sunflower.github.io/ninejs/">ninejs - Documentation</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/podcasts/rpp/297/">Episode #297: Improving Python Through PEPs and Protocols</a></li>
<li><a href="https://peps.python.org/pep-0766/">PEP 766</a></li>
<li><a href="https://peps.python.org/pep-0008/">PEP 8 – Style Guide for Python Code | peps.python.org</a></li>
<li><a href="https://realpython.com/python-pep8/">How to Write Beautiful Python Code With PEP 8</a></li>
<li><a href="https://www.endorlabs.com/platform/developer?utm_source=Real-python-podcast&utm_medium=video&utm_campaign=auri-for-developers">AURI for Developers - AI-Native AppSec Platform - Endor Labs</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/threading-python/">Threading in Python</a></li>
<li><a href="https://realpython.com/courses/thread-safety-locks-other-techniques/">Thread Safety in Python: Locks and Other Techniques</a></li>
<li><a href="https://realpython.com/courses/testing-mcp-servers-with-a-python-mcp-client/">Testing MCP Servers With a Python MCP Client</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Running Python Locally in a Sandbox
<p>How do you avoid the risk of running a Python application locally that could be malicious, break your code, or leak private data? How can you create a sandboxed local environment using WASM and MicroPython? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We cover a recent article by previous guest Simon Willison titled “Running Python code in a sandbox with MicroPython and WASM.” Simon has been experimenting for years on how to run Python code in a sandbox to reduce the risk of trying out new software, untrusted libraries, and wild ideas. He’s developed a solution using WASM and MicroPython and is sharing it as an alpha package on PyPI.</p>
<p>We also share other articles and projects from the Python community, including new releases, community announcements, a roundup of recent Real Python tutorials and video courses, a plugin case study using Pluggy, a look at whether you’re expected to run five type-checkers now, wrapping programs using the subprocess module, a project for star charts and maps, and a tool for trend detection in Python.</p>
<p>This episode is sponsored by <a href="https://datadriven.io/?utm_source=realpython&utm_medium=podcast&utm_campaign=realpython_podcast_sponsorship&utm_content=shownotes_leaderboard">DataDriven</a>.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Spotlight:</strong> <a href="https://realpython.com/workshops/codex/">Codex for Python Developers: Hands-On Agentic Coding Course</a></p>
<p>Most Python developers use AI as fancy autocomplete. This 2-day live course teaches you to build entire projects with Codex, an AI agent that works inside your codebase.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:48 – PSF Board Election Dates for 2026</li>
<li>00:03:28 – Python 3.15.0 beta 3 is here!</li>
<li>00:03:58 – PEP 835: Shorthand Syntax for Annotated Type Metadata</li>
<li>00:05:13 – Announcing the Search for a DSF Executive Director</li>
<li>00:05:53 – Django 6.1 beta 1 released</li>
<li>00:06:24 – PyData London 26 Videos Released</li>
<li>00:06:50 – Implementing Interfaces in Python: ABCs and Protocols</li>
<li>00:07:36 – Building Python Skills for the Job Market</li>
<li>00:08:21 – Context Engineering for Python Codebases</li>
<li>00:09:14 – Python for Data Analysis: A Practical Guide</li>
<li>00:09:47 – Using LlamaIndex for RAG in Python</li>
<li>00:10:07 – Django Tasks: Exploring the Built-in Tasks Framework</li>
<li>00:10:59 – Plugins Case Study: Pluggy</li>
<li>00:15:10 – Sponsor: <a href="https://datadriven.io/?utm_source=realpython&utm_medium=podcast&utm_campaign=realpython_podcast_sponsorship&utm_content=shownotes_leaderboard">DataDriven</a></li>
<li>00:15:57 – Pyodide 314.0 Release</li>
<li>00:18:54 – Python in a Sandbox With MicroPython and WASM</li>
<li>00:22:35 – The subprocess Module: Wrapping Programs With Python</li>
<li>00:30:08 – Spotlight: Codex for Python Developers</li>
<li>00:31:51 – Are You Expected to Run 5 Type-Checkers Now?</li>
<li>00:39:41 – starplot: ✨ Star charts and maps in Python</li>
<li>00:42:01 – marimo-tutorials: Collection of Marimo Tutorials</li>
<li>00:42:48 – pytrendy: Trend Detection in Python</li>
<li>00:44:35 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://pyfound.blogspot.com/2026/06/psf-board-election-dates-for-2026.html">PSF Board Election Dates for 2026</a></li>
<li><a href="https://blog.python.org/2026/06/python-3150-beta-3/">Python 3.15.0 beta 3 is here! - Python Insider</a></li>
<li><a href="https://peps.python.org/pep-0835/">PEP 835: Shorthand Syntax for Annotated Type Metadata (Added)</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/jun/17/announcing-the-search-for-a-dsf-executive-director/">Announcing the Search for a DSF Executive Director</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/jun/24/django-61-beta-1-released/">Django 6.1 beta 1 released - Django Weblog</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLGVZCDnMOq0rFQykYJg7t441AEpN4SszE">PyData London 26 Videos Released</a></li>
</ul>
<p>Real Python News:</p>
<ul>
<li><a href="https://realpython.com/python-interface/">Implementing Interfaces in Python: ABCs and Protocols</a></li>
<li><a href="https://realpython.com/courses/building-python-skills-for-the-job-market/">Building Python Skills for the Job Market</a></li>
<li><a href="https://realpython.com/python-context-engineering-ai/">Context Engineering for Python Codebases</a></li>
<li><a href="https://realpython.com/python-for-data-analysis/">Python for Data Analysis: A Practical Guide</a></li>
<li><a href="https://realpython.com/courses/using-llamaindex-for-rag-in-python/">Using LlamaIndex for RAG in Python</a></li>
<li><a href="https://realpython.com/django-tasks/">Django Tasks: Exploring the Built-in Tasks Framework</a></li>
</ul>
<p>Topics:</p>
<ul>
<li><a href="https://eli.thegreenplace.net/2026/plugins-case-study-pluggy/">Plugins Case Study: Pluggy</a> – <a href="https://github.com/pytest-dev/pluggy">Pluggy</a> is an open source plugin system used by frameworks such as pytest and tox. This article introduces you to how it works and what you can do with it.</li>
<li><a href="https://blog.pyodide.org/posts/314-release/">Pyodide 314.0 Release</a> – This post announces the Pyodide 314.0 release and describes its features, including a focus on standardization and packaging. You can now build Pyodide wheels and post them to PyPI.</li>
<li><a href="https://simonwillison.net/2026/Jun/6/micropython-in-a-sandbox/">Python in a Sandbox With MicroPython and WASM</a> – Simon’s been in search of the perfect code sandbox. This article is about his latest attempt and covers why he wants a sandbox and what tech he’s used to achieve it.</li>
<li><a href="https://realpython.com/python-subprocess/">The subprocess Module: Wrapping Programs With Python</a> – Python’s <code>subprocess</code> module allows you to run shell commands and manage external processes directly from your Python code. By using <code>subprocess</code>, you can execute shell commands like <code>ls</code> or <code>dir</code>, launch applications, and handle both input and output streams.</li>
<li><a href="https://pyrefly.org/blog/too-many-type-checkers/">Are You Expected to Run 5 Type-Checkers Now?</a> – Library maintainers may feel overwhelmed by the plurality of type checkers that exist. We offer some guidance on how to focus their efforts where they matter most.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/steveberardi/starplot">starplot: ✨ Star charts and maps in Python</a></li>
<li><a href="https://github.com/Haleshot/marimo-tutorials">marimo-tutorials: Collection of Marimo Tutorials</a></li>
<li><a href="https://github.com/RussellSB/pytrendy">pytrendy: Trend Detection in Python</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/podcasts/rpp/226/">Episode #226: PySheets: Spreadsheets in the Browser Using PyScript</a></li>
<li><a href="https://datasette.io/">Datasette: An open source multi-tool for exploring and publishing data</a></li>
<li><a href="https://realpython.com/courses/astrophysics-pandas-matplotlib/">Exploring Astrophysics in Python With pandas and Matplotlib</a></li>
<li><a href="https://realpython.com/courses/astropy-astronomy/">Using Astropy for Astronomy With Python</a></li>
<li><a href="https://realpython.com/courses/investigating-quasar-data-polars-marimo-notebooks/">Investigating Quasar Data With Polars and Interactive marimo Notebooks</a></li>
<li><a href="https://jupyterlite.readthedocs.io/en/stable/">JupyterLite — JupyterLite 0.8.0 documentation</a></li>
<li><a href="https://datadriven.io/?utm_source=realpython&utm_medium=podcast&utm_campaign=realpython_podcast_sponsorship&utm_content=shownotes_leaderboard">DataDriven - Data Engineer Interview Practice Problems</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/astropy-astronomy/">Using Astropy for Astronomy With Python</a></li>
<li><a href="https://realpython.com/courses/using-llamaindex-for-rag-in-python/">Using LlamaIndex for RAG in Python</a></li>
<li><a href="https://realpython.com/courses/building-python-skills-for-the-job-market/">Building Python Skills for the Job Market</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Maintaining Your Python Developer Instincts While Using LLM Tools
<p>Do you feel like your Python skills are atrophying after using LLM coding tools? How do you add the right kind of friction into your coding routine to keep your developer instincts sharp? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent article by previous guest Bob Belderbos about developers keeping their instincts when AI is writing the code. He stresses the importance of the right kind of friction for maintaining skills and scheduling a deliberate coding practice routine.</p>
<p>We also share other articles and projects from the Python community, including new releases, a roundup of recent Real Python tutorials and video courses, sending emails with Python, libraries to enhance your Python Polars workflows, exploring Django Integrity-Policy, a next-generation HTTP client for Python, and a project to detect lazy imports incompatibilities.</p>
<p>This episode is sponsored by <a href="https://www.endorlabs.com/platform/developer?utm_source=Real-python-podcast&utm_medium=video&utm_campaign=auri-for-developers">AURI by Endor Labs</a></p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/multiple-ai-models-openrouter-api/">Accessing Multiple AI Models With the OpenRouter API</a></p>
<p>Access models from popular AI providers in Python through OpenRouter’s unified API with smart routing, fallbacks, and cost controls.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:53 – Python 3.14.6, 3.13.14, and 3.15.0b2 Released</li>
<li>00:03:20 – Django Security Releases Issued: 6.0.6 and 5.2.15</li>
<li>00:03:35 – PyPy v7.3.23 Released</li>
<li>00:04:25 – Python sleep(): How to Add Time Delays to Your Code</li>
<li>00:04:59 – Structuring Your Python Script</li>
<li>00:05:36 – How to Use GitHub Copilot Code Review in Pull Requests</li>
<li>00:06:13 – Accessing Multiple AI Models With the OpenRouter API</li>
<li>00:07:25 – Cursor vs Windsurf: Which AI Code Editor Is Best for Python?</li>
<li>00:08:28 – Sending Emails With Python</li>
<li>00:16:31 – Sponsor:AURI from Endor Labs</li>
<li>00:17:17 – Announcing Polars 1.41</li>
<li>00:19:43 – Libraries for Your Python Polars Workflows</li>
<li>00:23:42 – Django: Introducing Django-Integrity-Policy</li>
<li>00:28:39 – Video Course Spotlight</li>
<li>00:30:21 – Keep Your Developer Instincts When AI Writes the Code</li>
<li>00:39:58 – Lifeguard: Detect Lazy Imports Incompatibilities</li>
<li>00:42:46 – httpx2: A Next Generation HTTP Client for Python</li>
<li>00:45:34 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://blog.python.org/2026/06/python-3146-31314/">Python 3.14.6 and 3.13.14 Released</a></li>
<li><a href="https://www.python.org/downloads/release/python-3150b2/">Python 3.15.0b2 Released</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/jun/03/security-releases/">Django Security Releases Issued: 6.0.6 and 5.2.15</a></li>
<li><a href="https://pypy.org/posts/2026/05/pypy-v7322-release.html">PyPy v7.3.23 Released</a></li>
</ul>
<p>Real Python News:</p>
<ul>
<li><a href="https://realpython.com/python-sleep/">Python sleep(): How to Add Time Delays to Your Code - Tutorial</a></li>
<li><a href="https://realpython.com/courses/structuring-your-python-script/">Structuring Your Python Script - Video Course</a></li>
<li><a href="https://realpython.com/github-copilot-code-review/">How to Use GitHub Copilot Code Review in Pull Requests – Tutorial</a></li>
<li><a href="https://realpython.com/courses/multiple-ai-models-openrouter-api/">Accessing Multiple AI Models With the OpenRouter API – Video Course</a></li>
<li><a href="https://realpython.com/cursor-vs-windsurf-python/">Cursor vs Windsurf: Which AI Code Editor Is Best for Python? – Tutorial</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/python-send-email/">Sending Emails With Python</a> – Learn how to send emails with Python using SMTP, attach files, format HTML messages, and personalize bulk emails for your contact list.</li>
<li><a href="https://pola.rs/posts/polars-1-41/">Announcing Polars 1.41</a> – Polars 1.41 is out and this post covers the new features it includes. Learn about faster parquet metadata decoding, nested subplan elimination, and more.</li>
<li><a href="https://opensource.posit.co/blog/2026-06-04_libraries-for-python-polars/">Libraries for Your Python Polars Workflows</a> – Four excellent libraries for your data science workflow with support for Polars DataFrames</li>
<li><a href="https://adamj.eu/tech/2026/05/31/introducing-django-integrity-policy/">Django: Introducing Django-Integrity-Policy</a> – Recently, browsers have added support for the new Integrity-Policy response header (Firefox 145+, Chrome 138+). Adam quickly went to work to build a library that enables your Django project to take advantage of the feature.</li>
<li><a href="https://belderbos.dev/blog/dont-delegate-the-friction/">How to Keep Your Developer Instincts When AI Writes the Code</a> – The promise was less friction. The cost, it turns out, is instinct, a high price to pay. Bob’s answer: add deliberate practice to your routine, and keep the struggle.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/facebook/Lifeguard">Lifeguard: Detect Lazy Imports Incompatibilities</a></li>
<li><a href="https://github.com/pydantic/httpx2">httpx2: A Next Generation HTTP Client for Python</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://openrouter.ai/">OpenRouter</a></li>
<li><a href="https://realpython.com/podcasts/rpp/214/">Episode #214: Build Captivating Display Tables in Python With Great Tables</a></li>
<li><a href="https://realpython.com/ggplot-python/">Using ggplot in Python: Visualizing Data With plotnine – Tutorial</a></li>
<li><a href="https://belderbos.dev/blog/rust-made-me-a-better-python-developer/">Learning Rust Made Me a Better Python Developer</a></li>
<li><a href="https://httpxyz.org/">HTTPXYZ</a></li>
<li><a href="https://www.endorlabs.com/platform/developer?utm_source=Real-python-podcast&utm_medium=video&utm_campaign=auri-for-developers">AURI for Developers - AI-Native AppSec Platform - Endor Labs</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/graph-data-with-python-and-ggplot/">Graph Your Data With Python and ggplot</a></li>
<li><a href="https://realpython.com/courses/structuring-your-python-script/">Structuring Your Python Script</a></li>
<li><a href="https://realpython.com/courses/multiple-ai-models-openrouter-api/">Accessing Multiple AI Models With the OpenRouter API</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Reducing the Size of Python Docker Containers
<p>How can you easily reduce the size of a Python Docker container? What are the exceptions you should catch in your code? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We cover a tutorial by Khuyen Tran at CodeCut about shrinking the size of a Python Docker container. The piece explores SlimToolKit, which analyzes a container at runtime, identifies what files are used, and then builds a minimal image with only those dependencies.</p>
<p>We dig into a recent piece by Trey Hunner about Python exceptions. When trying to determine a strategy to handle potential errors, which exceptions should you catch and which should you leave unhandled?</p>
<p>We also share other articles and projects from the Python community, including recent releases, two PEPs that have been deferred to 3.16, a critical vulnerability in an open-source ASGI framework, resolving a lazy import manually, a project to anonymize sensitive PII data, and a tool for loading Django settings from a TOML file.</p>
<p>This episode is sponsored by <a href="https://www.endorlabs.com/platform/developer-tools?utm_source=Real-python-podcast&utm_medium=video&utm_campaign=auri-for-developers">AURI by Endor Labs</a>.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/raising-handling-exceptions/">Raising and Handling Python Exceptions</a></p>
<p>In this course, you’ll learn what an exception is and how it differs from a syntax error. You’ll learn about raising exceptions, making assertions, and catching exceptions to change the control flow of your program using the try, except, else, and finally keywords.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:32 – Django 6.1 Alpha 1 Released</li>
<li>00:03:07 – Nuitka Python Compiler Release 4.1</li>
<li>00:04:00 – PEP 813: The Pretty Print Protocol (Deferred to 3.16)</li>
<li>00:04:28 – PEP 830: Add Timestamps to Exceptions and Tracebacks</li>
<li>00:04:50 – Millions of AI agents imperiled by critical vulnerability in open source package</li>
<li>00:07:27 – What Types of Exceptions Should You Catch?</li>
<li>00:13:28 – Sponsor: AURI from Endor Labs</li>
<li>00:14:18 – PyCon US 2026 Packaging Summit Recap</li>
<li>00:18:39 – Slim Down Python Docker Containers</li>
<li>00:24:17 – Video Course Spotlight</li>
<li>00:25:45 – Resolve a Lazy Import Manually</li>
<li>00:28:04 – presidio: Detect, Redact, & Anonymize Sensitive Data (PII)</li>
<li>00:32:37 – dj-toml-settings: Load Django settings from a TOML file</li>
<li>00:37:14 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://www.djangoproject.com/weblog/2026/may/20/django-61-alpha-1-released/">Django 6.1 Alpha 1 Released</a></li>
<li><a href="https://nuitka.net/posts/nuitka-release-41.html">Nuitka Python Compiler Release 4.1</a></li>
<li><a href="https://peps.python.org/pep-0813/">PEP 813: The Pretty Print Protocol (Deferred to 3.16)</a></li>
<li><a href="https://peps.python.org/pep-0830/">PEP 830: Add Timestamps to Exceptions and Tracebacks (Deferred to 3.16)</a></li>
<li><a href="https://arstechnica.com/information-technology/2026/05/millions-of-ai-agents-imperiled-by-critical-vulnerability-in-open-source-package/">Millions of AI agents imperiled by critical vulnerability in open source package - Ars Technica</a></li>
<li><a href="https://github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr">Missing Host header validation poisons request.url.path, bypassing path-based security checks · Advisory · Kludex/starlette</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://www.pythonmorsels.com/what-types-of-exceptions-should-you-catch/">What Types of Exceptions Should You Catch?</a> – The trickiest programming bugs are often caused by catching exceptions that you didn’t mean to catch or handling exceptions in ways that obfuscate the actual error that’s occurring. Which exceptions should you catch and which should you leave unhandled?</li>
<li><a href="https://bernat.tech/posts/pycon-us-2026-packaging-summit-recap/">PyCon US 2026 Packaging Summit Recap</a> – Per-talk notes from the PyCon US 2026 Packaging Summit, including: Emma Smith on Wheel 2.0 and Zstandard compression, Mike Fiedler on PyPI abuse vectors, Mahe Iram Khan on ecosystems, lightning talks on PEP 772, mobile wheels, AI accelerator variants, and the roundtable discussions.</li>
<li><a href="https://codecut.ai/shrink-python-container-slimtoolkit/">Slim Down Python Docker Containers</a> – Learn how SlimToolKit can reduce a Python Docker image by analyzing what your app actually uses at runtime. This tutorial walks through slimming a Chainlit LLM chatbot image, shows where container bloat comes from, and explains how to avoid breaking lazily loaded Python frameworks.</li>
<li><a href="https://mathspp.com/blog/til/resolve-a-lazy-import-manually">Resolve a Lazy Import Manually</a> – Learn how to work around the Python 3.15 machinery to resolve an explicit lazy import manually.</li>
<li><a href="https://mathspp.com/blog/til/inspect-a-lazy-import">TIL #141 – Inspect a lazy import - mathspp</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/microsoft/presidio">presidio: Detect, Redact, & Anonymize Sensitive Data (PII)</a></li>
<li><a href="https://github.com/adamghill/dj-toml-settings">dj-toml-settings: Load Django settings from a TOML file</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/courses/using-raise-for-effective-exceptions/">Using raise for Effective Exceptions - Real Python Video Course</a></li>
<li><a href="https://realpython.com/courses/working-builtin-exceptions/">Working With Python’s Built-in Exceptions – Real Python Video Course</a></li>
<li><a href="https://realpython.com/podcasts/rpp/177/">Episode #177: Welcoming PyPI’s Safety & Security Engineer Mike Fiedler</a></li>
<li><a href="https://chainlit.io/">Chainlit - Build AI applications</a></li>
<li><a href="https://www.endorlabs.com/platform/developer-tools?utm_source=Real-python-podcast&utm_medium=video&utm_campaign=auri-for-developers">AURI for Developers - AI-Native AppSec Platform - Endor Labs</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/raising-handling-exceptions/">Raising and Handling Python Exceptions</a></li>
<li><a href="https://realpython.com/courses/advanced-import-techniques/">Advanced Python import Techniques</a></li>
<li><a href="https://realpython.com/courses/working-builtin-exceptions/">Working With Python's Built-in Exceptions</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Managing Polars Schema Issues & Profiling GitHub Users
<p>How can you avoid schema problems in your Polars data pipeline when adding new columns? How can you quickly examine a GitHub user’s profile to decide how much to invest in their contributions? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher shares a recent article about handling schema issues in Python Polars. The piece covers ways that a schema change can break your data pipeline. It provides strategies to avoid and resolve issues.</p>
<p>We cover a recent project from previous guest Eric Matthes to investigate GitHub profiles of a potential contributor. With the rise of AI-slop pull requests, the tool can provide valuable background on the user.</p>
<p>We also share other articles and projects from the Python community, including recent releases, exploring four different “get” special methods, what’s new in Pip 26.1, inverse Sapir-Whorf and programming languages, and a Python scripting framework for CAD.</p>
<p>This episode is sponsored by <a href="https://sixfeetup.com/?utm_source=realpython">Six Feet Up</a>.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/working-with-python-polars/">Working With Python Polars</a></p>
<p>Welcome to the world of Polars, a powerful DataFrame library for Python. In this video course, you’ll get a hands-on introduction to Polars’ core features and see why this library is catching so much buzz.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:51 – Python 3.14.5 is out!</li>
<li>00:03:16 – Python 3.15.0 beta 1 is here!</li>
<li>00:03:34 – PyPy v7.3.22 Released</li>
<li>00:03:45 – Django Security Releases: 6.0.5 and 5.2.14</li>
<li>00:04:04 – 2026 Django Developers Survey</li>
<li>00:04:24 – PEP 797: Shared Object Proxies (Deferred to 3.16)</li>
<li>00:04:40 – PEP 828: Supporting ‘Yield From’ in Asynchronous Generators</li>
<li>00:05:59 – Do You Get It Now?</li>
<li>00:11:54 – Sponsor: Six Feet Up</li>
<li>00:12:47 – Handling Schema Issues in Polars</li>
<li>00:17:10 – What’s New in Pip 26.1</li>
<li>00:24:27 – Video Course Spotlight</li>
<li>00:25:39 – Inverse Sapir-Whorf and Programming Languages</li>
<li>00:34:04 – cadquery: CAD Scripting Framework</li>
<li>00:38:16 – gh-profiler: Examine a GH user’s profile</li>
<li>00:40:46 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://blog.python.org/2026/05/python-3145-is-out/">Python 3.14.5 is out! - Python Insider</a></li>
<li><a href="https://blog.python.org/2026/05/python-3150-beta-1/">Python 3.15.0 beta 1 is here! - Python Insider</a></li>
<li><a href="https://pypy.org/posts/2026/04/pypy-v7322-release.html">PyPy v7.3.22 Released</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/may/05/security-releases/">Django Security Releases: 6.0.5 and 5.2.14</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/may/12/2026-django-developers-survey/">2026 Django Developers Survey - Django</a></li>
<li><a href="https://peps.python.org/pep-0797/">PEP 797: Shared Object Proxies (Deferred to 3.16)</a></li>
<li><a href="https://peps.python.org/pep-0828/">PEP 828: Supporting ‘Yield From’ in Asynchronous Generators (Deferred to 3.16)</a></li>
</ul>
<p>Topics:</p>
<ul>
<li><a href="https://www.thepythoncodingstack.com/p/do-you-get-it-now-getitem-getattr-getattribute-get">Do You Get It Now?</a> – Learn about Python’s <code>.__getitem__()</code>, <code>.__getattr__()</code>, <code>.__getattribute__()</code>, and <code>.__get__()</code>: how they’re different and where to use them.</li>
<li><a href="https://pola.rs/posts/schema-evolution/">Handling Schema Issues in Polars</a> – You’ve got this great data pipeline going until one day it stops working. A schema error caused by a column upstream has stopped you in your tracks. This post talks about the four different causes of schema errors and what to do about them.</li>
<li><a href="https://ichard26.github.io/blog/2026/04/whats-new-in-pip-26.1/">What’s New in Pip 26.1</a> – pip 26.1 adds support for dependency cooldowns, experimental support for reading/installing from standard lockfiles (pylock.toml), fixes several long-standing limitations of the 2020 resolver, and drops support for Python 3.9.</li>
<li><a href="https://lukeplant.me.uk/blog/posts/inverse-sapir-whorf-and-programming-languages/">Inverse Sapir-Whorf and Programming Languages</a> – The Sapir-Whorf hypothesis is the idea that the languages you speak influence the thoughts you can have. The inverse is the idea that your language limits what you can’t say. When applied to programming, this has subtle results determining core ideas like execution order.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/cadquery/cadquery">cadquery: CAD Scripting Framework</a></li>
<li><a href="https://github.com/ehmatthes/gh-profiler">gh-profiler: Examine a GH user’s profile, to help quickly decide how much to invest in their contributions.</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://www.thepythoncodingstack.com/p/python-descriptors-the-price-is-right">The Weird and Wonderful World of Descriptors in Python</a></li>
<li><a href="https://realpython.com/podcasts/rpp/260/">Episode #260: Harnessing the Power of Python Polars</a></li>
<li><a href="https://realpython.com/podcasts/rpp/280/">Episode #280: Considering Fast and Slow in Python Programming</a></li>
<li><a href="https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns">We should all be using dependency cooldowns - William Woodruff</a></li>
<li><a href="https://packaging.python.org/en/latest/specifications/inline-script-metadata/#inline-script-metadata">PEP 723: Inline script metadata</a></li>
<li><a href="https://ichard26.github.io/blog/2026/01/whats-new-in-pip-26.0/">What’s new in pip 26.0 - prerelease and upload-time filtering! - Richard Si</a></li>
<li><a href="https://www.theverge.com/ai-artificial-intelligence/827820/large-language-models-ai-intelligence-neuroscience-problems">The AI boom is based on a fundamental mistake - The Verge</a></li>
<li><a href="https://cadquery.readthedocs.io/en/latest/">CadQuery Documentation</a></li>
<li><a href="https://www.freecad.org/features.php?lang=en">FreeCAD: Your own 3D parametric modeler</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-git-github-intro/">Introduction to Git and GitHub for Python</a></li>
<li><a href="https://realpython.com/courses/working-with-python-polars/">Working With Python Polars</a></li>
<li><a href="https://realpython.com/courses/missing-data-polars/">Working With Missing Data in Polars</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Declarative Charts in Python & Discerning Iterators vs Iterables
<p>What if you could build charts in Python by describing what your data means, instead of scripting every visual detail? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We cover a recent Real Python article about the data visualization library Altair. Most tools require you to write detailed boilerplate code to set up the axis and figure. Altair follows a declarative approach where you specify which columns go to which axis, the type of chart or plot, and what should be interactive. </p>
<p>We also share other articles and projects from the Python community, including recent releases, clarifying the differences between iterators and iterables, decoupling your business logic from the Django ORM, comparing an LLM-based tool for web scraping against Playwright, a neural network emulator for guitar amplifiers, and a CLI tool to generate ASCII art of the current moon phase.</p>
<p>This episode is sponsored by Build Your Own Coding Agent.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Video Course Spotlight:</strong> <a href="https://realpython.com/courses/use-codex-cli-enhance-your-python-projects/">Use Codex CLI to Enhance Your Python Projects</a></p>
<p>Learn how to use Codex CLI to add features to Python projects directly from your terminal, without needing a browser or IDE plugins.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:38 – Read the Docs Now Supports <code>uv</code> Natively</li>
<li>00:03:09 – Reverting the Incremental GC in Python 3.14 and 3.15</li>
<li>00:04:51 – Altair: Declarative Charts With Python</li>
<li>00:12:23 – Sponsor: Build Your Own Coding Agent</li>
<li>00:13:17 – Decoupling Your Business Logic From the Django ORM</li>
<li>00:19:51 – <code>browser-use</code> vs. Playwright: Which to Pick for Web Scraping?</li>
<li>00:26:58 – 2048: iterators and iterables - Ned Batchelder</li>
<li>00:31:31 – Video Course Spotlight</li>
<li>00:33:00 – Discussion: Jumping back into solo developer mode</li>
<li>00:46:59 – neural-amp-modeler: Neural network emulator for guitar amplifiers</li>
<li>00:51:48 – ascii-moon-phase-python: CLI for ASCII art of the current moon phase</li>
<li>00:53:11 – Thanks and goodbye</li>
<li>00:54:43 – Appendix: Neural Amp Modeler - Demo</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://about.readthedocs.com/blog/2026/04/uv-native-support/">Read the Docs Now Supports <code>uv</code> Natively</a> – Popular open source documentation site Read the Docs has announced they now support native <code>uv</code> in <code>.readthedocs.yaml</code> for Python dependency installation. Learn how to use it in your configurations</li>
<li><a href="https://discuss.python.org/t/reverting-the-incremental-gc-in-python-3-14-and-3-15/107014">Reverting the Incremental GC in Python 3.14 and 3.15</a></li>
<li><a href="https://adamj.eu/tech/2026/04/20/django-python-3.14-incremental-gc/">Fixing a Memory “Leak” From Python 3.14’s Incremental Garbage Collection</a> – Adam encountered an out-of-memory error while migrating a client project to Python 3.14. The issue occurred when running Django’s database migration command on a limited-resource server, and seemed to be caused by the new incremental garbage collection algorithm in Python 3.14.</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/altair-python/">Altair: Declarative Charts With Python</a> – Build interactive Python charts the declarative way with Altair. Map data to visual properties and add linked selections. No JavaScript required.</li>
<li><a href="https://buttondown.com/carlton/archive/decoupling-your-business-logic-from-the-django-orm/">Decoupling Your Business Logic From the Django ORM</a> – Where should I keep my business logic? This is a perennial topic in Django. This article proposes a continuum of cases, each with increasing complexity.</li>
<li><a href="https://codecut.ai/browser-use-ai-browser-agent/"><code>browser-use</code> vs. Playwright: Which to Pick for Web Scraping?</a> – Follow along in this walk-through building a Hacker News synthesizer with browser-use, then see it fail on a harder Newegg scraping task. Includes a side-by-side comparison with Playwright and a breakdown of when each tool is the right call.</li>
<li><a href="https://nedbatchelder.com/blog/202507/2048_iterators_and_iterables">2048: iterators and iterables - Ned Batchelder</a> – Making a terminal based version of the 2048 game, Ned waded into a classic iterator/iterable confusion. This article shows you how they’re different and how confusing them can cause you problems in your code.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/sdatkinson/neural-amp-modeler">neural-amp-modeler: Neural network emulator for guitar amplifiers</a></li>
<li><a href="https://github.com/asweigart/ascii-moon-phase-python">ascii-moon-phase-python: Command line program that outputs ASCII art of the current moon phase</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://altair-viz.github.io/index.html">Vega-Altair: Declarative Visualization in Python — Vega-Altair 6.1.0dev documentation</a></li>
<li><a href="https://realpython.com/python-iterators-iterables/">Iterators and Iterables in Python: Run Efficient Iterations – Real Python</a></li>
<li><a href="https://www.neuralampmodeler.com/">Neural Amp Modeler - Highly-accurate free and open-source amp modeling plugin</a></li>
<li><a href="https://www.tone3000.com/">TONE3000 Official · Neural Amp Modeler (NAM) Profiles and Impulse Responses (IR’s)</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/efficient-iterations-iterators-iterables/">Efficient Iterations With Python Iterators and Iterables</a></li>
<li><a href="https://realpython.com/courses/use-codex-cli-enhance-your-python-projects/">Use Codex CLI to Enhance Your Python Projects</a></li>
<li><a href="https://realpython.com/courses/graph-data-with-python-and-ggplot/">Graph Your Data With Python and ggplot</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Becoming a Better Python Developer Through Learning Rust
<p>How can learning Rust help make you a better Python Developer? How do techniques required by a compiled language translate to improving your Python code? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent article by Bob Belderbos titled “Learning Rust Made Me a Better Python Developer.” Bob has been on a journey learning to program in Rust, which has made him rethink how he’s been writing Python. The compiler forced him to confront things he’d been ignoring.</p>
<p>We also share other articles and projects from the Python community, including recent releases, a boatload of PEPs, NumPy as a synth engine, firing and forgetting with Python’s asyncio, managing state with signals in Python, a documentation site generator for Python packages, and a tool to explain your Python environment.</p>
<p>This episode is sponsored by AgentField.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Video Course Spotlight:</strong> <a href="https://realpython.com/courses/using-loguru-to-simplify-python-logging/">Using Loguru to Simplify Python Logging</a></p>
<p>Learn how to use Loguru for simpler Python logging, from zero-config setup and custom formats to file rotation, retention, and adding context.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:23 – Python 3.15.0a8, 3.14.4 and 3.13.13 Released</li>
<li>00:03:01 – Django Security Releases: 6.0.4, 5.2.13, and 4.2.30</li>
<li>00:03:38 – DjangoCon Europe 2027 Call for Organizers</li>
<li>00:04:04 – PEP 803: <code>"abi3t"</code>: Stable ABI for Free-Threaded Builds</li>
<li>00:04:44 – PEP 829: Structured Startup Configuration via .site.toml File</li>
<li>00:05:18 – PEP 830 – Add timestamps to exceptions and tracebacks</li>
<li>00:05:44 – PEP 831 – Frame Pointers Everywhere: Enabling System-Level Observability for Python</li>
<li>00:06:59 – PEP 832 – Virtual environment discovery</li>
<li>00:10:13 – PyCoder’s Weekly - Submit a Link</li>
<li>00:11:15 – NumPy as Synth Engine</li>
<li>00:21:04 – Sponsor: AgentField</li>
<li>00:22:05 – Fire and Forget at Textual</li>
<li>00:25:39 – Learning Rust Made Me a Better Python Developer</li>
<li>00:34:06 – Video Course Spotlight</li>
<li>00:35:49 – Signals: State Management for Python Developers</li>
<li>00:40:34 – great-docs: Documentation Site Generator for Python Package</li>
<li>00:42:32 – pywho: Explain Your Python Environment and Detect Shadows</li>
<li>00:44:01 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://blog.python.org/2026/04/python-3150a8-3144-31313/">Python 3.15.0a8, 3.14.4 and 3.13.13 Released</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/apr/07/security-releases/">Django Security Releases: 6.0.4, 5.2.13, and 4.2.30</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/apr/07/could-you-host-djangocon-europe-2027-call-for-orga/">DjangoCon Europe 2027 Call for Organizers</a></li>
<li><a href="https://peps.python.org/pep-0803/">PEP 803: <code>"abi3t"</code>: Stable ABI for Free-Threaded Builds (Accepted)</a></li>
<li><a href="https://peps.python.org/pep-0829/">PEP 829: Structured Startup Configuration via .site.toml Files (Added)</a></li>
<li><a href="https://peps.python.org/pep-0830/">PEP 830 – Add timestamps to exceptions and tracebacks</a></li>
<li><a href="https://peps.python.org/pep-0831/">PEP 831 – Frame Pointers Everywhere: Enabling System-Level Observability for Python</a></li>
<li><a href="https://peps.python.org/pep-0832/">PEP 832 – Virtual environment discovery</a></li>
<li><a href="https://pycoders.com/submissions">PyCoder’s Weekly - Submit a Link</a></li>
<li><a href="https://realpython.com/podcasts/rpp/">The Real Python Podcast</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://kennethreitz.org/essays/2026-03-29-numpy_as_synth_engine">NumPy as Synth Engine</a> – Kenneth has “recorded” a song in a Python script. The catch? No sampling, no recording, no pre-recorded sound. Everything was done through generating wave functions in NumPy. Learn how to become a mathematical musician.</li>
<li><a href="https://mkennedy.codes/posts/fire-and-forget-at-textual/">Fire and Forget at Textual</a> – In this follow up to a previous article (<a href="https://mkennedy.codes/posts/fire-and-forget-or-never-with-python-s-asyncio/">Fire and forget (or never) with Python’s asyncio</a>, Michael discusses a similar article by Will McGugan as it relates to Textual. He found the problematic pattern in over 500K GitHub files.</li>
<li><a href="https://belderbos.dev/blog/rust-made-me-a-better-python-developer/">Learning Rust Made Me a Better Python Developer</a> – Bob thinks that learning Rust made him a better Python developer. Not because Rust is better, but because it made him think differently about how he has been writing Python. The compiler forced him to confront things he’d been ignoring.</li>
<li><a href="https://bui.app/the-missing-manual-for-signals-state-management-for-python-developers/">Signals: State Management for Python Developers</a> – If you’ve ever debugged why your cache didn’t invalidate or notifications stopped firing after a “simple” state change, this guide is for you. Signals are becoming a JavaScript standard, but Python developers can use the same patterns to eliminate “forgot to update that thing” bugs.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/posit-dev/great-docs">great-docs: Documentation Site Generator for Python Packages</a></li>
<li><a href="https://github.com/AhsanSheraz/pywho">pywho: Explain Your Python Environment and Detect Shadows</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://kennethreitz.org/essays/2026-03-18-open_source_gave_me_everything_until_i_had_nothing_left_to_give">Open Source Gave Me Everything Until I Had Nothing Left to Give - Kenneth Reitz</a></li>
<li><a href="https://www.youtube.com/shorts/iDOF4eokTHc">Yeah… this was impressive to see. #tabla - Escalated Quickly - YouTube</a></li>
<li><a href="https://kennethreitz.org/essays/2026-03-25-pytheory_is_awesome">PyTheory Is Awesome - Kenneth Reitz</a> </li>
<li><a href="https://pytheory.kennethreitz.org/index.html">PyTheory: Music Theory for Humans – PyTheory 0.42.1 documentation</a> </li>
<li><a href="https://kennethreitz.org/essays/2026-03-25-a_mini_daw_in_the_python_repl">A Mini DAW in the Python REPL - Kenneth Reitz</a> </li>
<li><a href="https://realpython.com/podcasts/rpp/210/">Episode #210: Creating a Guitar Synthesizer & Generating WAV Files With Python</a></li>
<li><a href="https://anginedepoitrine.com/videos">Angine de Poitrine - Vidéos</a></li>
<li><a href="https://realpython.com/podcasts/rpp/195/">Episode #195: Building a Healthy Developer Mindset While Learning Python</a></li>
<li><a href="https://rsbit.es/">Bite‑sized Rust learning, powered by Pybites</a></li>
<li><a href="https://realpython.com/podcasts/rpp/214/">Episode #214: Build Captivating Display Tables in Python With Great Tables</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/thread-safety-locks-other-techniques/">Thread Safety in Python: Locks and Other Techniques</a></li>
<li><a href="https://realpython.com/courses/numpy-techniques-practical-examples/">NumPy Techniques and Practical Examples</a></li>
<li><a href="https://realpython.com/courses/using-loguru-to-simplify-python-logging/">Using Loguru to Simplify Python Logging</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Advice on Managing Projects & Making Python Classes Friendly
<p>What goes into managing a major project? What techniques can you employ for a project that’s in crisis? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss an article by Ben Kuhn titled, “How I’ve Run Major Projects.” We dig into the skills required for project management, and provide advice for when projects fall into crisis. We cover how the field’s terminology has been updated. However, the time investment, sober communication, and planning still remain at the core of successful projects.</p>
<p>We also share other articles and projects from the Python community, including recent releases and announcements, exploring an IDE for data science development, using Python set comprehensions, making friendly classes, using <code>atexit</code> for cleanup, a high-performance caching library for Python written in Rust, and a curated list of awesome marimo things.</p>
<p>This episode is sponsored by PropelAuth.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Video Course Spotlight:</strong> <a href="https://realpython.com/courses/python-data-classes/">Using Data Classes in Python</a></p>
<p>When using data classes, you don’t have to write boilerplate code to get proper initialization, representation, and comparisons for your objects.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:15 – Starlette 1.0 Released</li>
<li>00:03:08 – PyOhio 2026 Call for Proposals Now Open!</li>
<li>00:03:42 – Spyder: Your IDE for Data Science Development in Python</li>
<li>00:11:04 – Python Set Comprehensions: How and When to Use Them</li>
<li>00:14:40 – Sponsor: PropelAuth</li>
<li>00:15:17 – Making Friendly Classes</li>
<li>00:23:51 – How to Use <code>atexit</code> for Cleanup</li>
<li>00:25:49 – Video Course Spotlight</li>
<li>00:27:14 – How I’ve run major projects</li>
<li>00:47:47 – awesome-marimo: Curated List of Awesome Marimo Things</li>
<li>00:51:37 – moka-py: A high performance caching library for Python written in Rust</li>
<li>00:53:24 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://marcelotryle.com/blog/2026/03/22/starlette-10-is-here/">Starlette 1.0 Released</a></li>
<li><a href="https://pretalx.com/pyohio-2026/cfp">PyOhio 2026 Call for Proposals Now Open!</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/spyder-ide/">Spyder: Your IDE for Data Science Development in Python</a> – Learn how to use the Spyder IDE, a Python code editor built for scientists, engineers, and data analysts working with data-heavy workflows.</li>
<li><a href="https://realpython.com/python-set-comprehension/">Python Set Comprehensions: How and When to Use Them</a> – In this tutorial, you’ll learn how to write set comprehensions in Python. You’ll also explore the most common use cases for set comprehensions and learn about some bad practices that you should avoid when using them in your code.</li>
<li><a href="https://www.pythonmorsels.com/friendly-classes/">Making Friendly Classes</a> – What’s a friendly class? One that accepts sensible arguments, has a nice string representation, and supports equality checks. Read on to learn how to write them.</li>
<li><a href="https://91be7d95.til-blog-7t3.pages.dev/blog/python-atexit/">How to Use <code>atexit</code> for Cleanup</a> – Divakar recently came across Python’s <code>atexit</code> module and became curious about practical use cases in real-world applications. To explore it, he created a simple client-server app that uses a clean-up function.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://www.benkuhn.net/pjm/">How I’ve run major projects: benkuhn.net</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/marimo-team/awesome-marimo">awesome-marimo: Curated List of Awesome Marimo Things</a></li>
<li><a href="https://github.com/deliro/moka-py">moka-py: A high performance caching library for Python written in Rust</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://positron.posit.co/">Positron</a></li>
<li><a href="https://realpython.com/python-data-classes/">Data Classes in Python (Guide) – Real Python</a></li>
<li><a href="https://realpython.com/podcasts/rpp/230/">Episode #230: marimo: Reactive Notebooks and Deployable Web Apps in Python</a></li>
<li><a href="https://realpython.com/courses/getting-started-with-marimo-notebooks/">Getting Started With marimo Notebooks – Real Python</a></li>
<li><a href="https://realpython.com/courses/investigating-quasar-data-polars-marimo-notebooks/">Investigating Quasar Data With Polars and Interactive marimo Notebooks</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-data-classes/">Using Data Classes in Python</a></li>
<li><a href="https://realpython.com/courses/investigating-quasar-data-polars-marimo-notebooks/">Investigating Quasar Data With Polars and Interactive marimo Notebooks</a></li>
<li><a href="https://realpython.com/courses/getting-started-with-marimo-notebooks/">Getting Started With marimo Notebooks</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Limitations in Human and Automated Code Review
<p>With the mountains of Python code that it’s possible to generate now, how’s your code review going? What are the limitations of human review, and where does machine review excel? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent piece from Glyph titled, “What Is Code Review For?” We dig into the limitations of human review and where software tools like linters and formatters can help you. We cover the challenges developers and open-source maintainers face with the rise of LLM-generated code and pull requests.</p>
<p>We also share other articles and projects from the Python community, including a collection of recent releases and announcements, creating publication-ready tables from DataFrames, choosing the right Python task queue, mastering context managers, statically checking Python dicts for completeness, an open-source inventory management system, and an ORM-based backend for Django tasks.</p>
<p>This episode is sponsored by SerpApi.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Spotlight:</strong> <a href="https://realpython.com/workshops/intermediate-deep-dive/">Intermediate Python Deep Dive: Write Better Python and Build Better Systems</a></p>
<p>Master advanced patterns, OOP, and Pythonic design in eight weeks–with live expert guidance.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:32 – DuckDB 1.5.0 Released</li>
<li>00:03:11 – PyPy v7.3.21 Released</li>
<li>00:03:30 – Sunsetting Jazzband</li>
<li>00:04:08 – Thoughts on OpenAI acquiring Astral and uv/ruff/ty</li>
<li>00:05:19 – Great Tables: Publication-Ready Tables From DataFrames</li>
<li>00:10:24 – Comparing PDF Table Extraction Tools</li>
<li>00:11:53 – Sponsor: SerpApi</li>
<li>00:12:55 – Choosing the Right Python Task Queue</li>
<li>00:16:57 – Mastering Python Context Managers</li>
<li>00:22:40 – Statically Checking Python Dicts for Completeness</li>
<li>00:25:00 – Spotlight: Intermediate Python Deep Dive</li>
<li>00:26:16 – What Is Code Review For?</li>
<li>00:43:48 – usdatasets: Installable Collection of Datasets on USA</li>
<li>00:45:22 – InvenTree: OSS Inventory Management System</li>
<li>00:48:01 – django-tasks-db: An ORM-based Backend for Django Tasks</li>
<li>00:49:41 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://duckdb.org/2026/03/09/announcing-duckdb-150">DuckDB 1.5.0 Released</a></li>
<li><a href="https://pypy.org/posts/2026/03/pypy-v7320-release.html">PyPy v7.3.21 Released</a></li>
<li><a href="https://jazzband.co/news/2026/03/14/sunsetting-jazzband">Sunsetting Jazzband</a></li>
<li><a href="https://simonwillison.net/2026/Mar/19/openai-acquiring-astral/">Thoughts on OpenAI acquiring Astral and uv/ruff/ty</a></li>
<li><a href="https://wsvincent.com/openai-acquiring-astral/">OpenAI Acquiring Astral: A 4th Option for Fun - Will Vincent</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://codecut.ai/great-tables-python/">Great Tables: Publication-Ready Tables From DataFrames</a> – Learn how to create publication-ready tables from Pandas and Polars DataFrames using Great Tables. Format currencies, add sparklines, apply conditional styling, and export to PNG.</li>
<li><a href="https://codecut.ai/docling-vs-marker-vs-llamaparse/">Comparing PDF Table Extraction Tools</a> – This article explores three Python tools for PDF table extraction: Docling, Marker, and LlamaParse. Learn which handles merged cells and multi-level headers best.</li>
<li><a href="https://judoscale.com/blog/choose-python-task-queue">Choosing the Right Python Task Queue</a> – Python has great options for task queues. Choosing between Celery and RQ isn’t an easy decision. Jump in and learn how each option compares!</li>
<li><a href="https://hazimed.com/2025/09/21/mastering-python-context-managers-beyond-just-with-open/">Mastering Python Context Managers</a> – Go beyond just using <code>open()</code> and learn how Python context managers work and where they are useful.</li>
<li><a href="https://lukeplant.me.uk/blog/posts/statically-checking-python-dicts-for-completeness/">Statically Checking Python Dicts for Completeness</a> – To keep code concerns separate, you might have two data structures (like an Enum and a dict) that are supposed to change in sequence: adding a value to the Enum requires you to add a similar value in the dict. This is common when separating business logic from UI code. This article shows you ways of making sure the corresponding changes happen together.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://blog.glyph.im/2026/03/what-is-code-review-for.html">What Is Code Review For?</a> – This post explores just what you should and should not use code reviews for. Learn when to use linters to catch problems vs when human review is important.</li>
<li><a href="https://simonwillison.net/2025/Dec/18/code-proven-to-work/">Your job is to deliver code you have proven to work</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://pypi.org/project/usdatasets/">usdatasets: Installable Collection of Datasets on USA</a></li>
<li><a href="https://github.com/inventree/InvenTree">InvenTree: OSS Inventory Management System</a></li>
<li><a href="https://github.com/RealOrangeOne/django-tasks-db">django-tasks-db: An ORM-based Backend for Django Tasks</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/podcasts/rpp/214/">Episode #214: Build Captivating Display Tables in Python With Great Tables</a></li>
<li><a href="https://posit-dev.github.io/great-tables/blog/">Great Blogposts – great_tables</a></li>
<li><a href="https://realpython.com/python-with-statement/">Python’s with Statement: Manage External Resources Safely – Real Python</a></li>
<li><a href="https://realpython.com/courses/with-statement-python/">Context Managers and Using Python’s with Statement – Real Python</a></li>
<li><a href="https://realpython.com/podcasts/rpp/183/">Episode #183: Exploring Code Reviews in Python and Automating the Process</a></li>
<li><a href="https://realpython.com/podcasts/rpp/246/">Episode #246: Learning Intermediate Python With a Deep Dive Course</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/modern-python-linting-ruff/">Modern Python Linting With Ruff</a></li>
<li><a href="https://realpython.com/courses/with-statement-python/">Context Managers and Using Python's with Statement</a></li>
<li><a href="https://realpython.com/courses/asynchronous-tasks-celery-django/">Creating Asynchronous Tasks With Celery and Django</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Automate Exploratory Data Analysis & Invent Python Comprehensions
<p>How do you quickly get an understanding of what’s inside a new set of data? How can you share an exploratory data analysis with your team? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent Real Python tutorial about YData Profiling. This library lets you quickly generate an exploratory data analysis (EDA) report with a few lines of code. The report provides column-level analysis, visualizations, and summary statistics that can be exported to HTML to share with others. </p>
<p>We cover an article by Trey Hunner about building your own Python comprehensions. Python includes list, dictionary, and set comprehensions. But what if you want to create ones for other collections, such as a tuple, frozenset, or a Counter?</p>
<p>We also share other articles and projects from the Python community, including a collection of recent releases and PEPs, using the Django ORM as a standalone module, a history of attempts to eliminate programmers, a discussion of bad managers, a modern Python project template, and a CLI to summarize code size by language.</p>
<p>This episode is sponsored by AgentField.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/understand-list-comprehensions/">Understanding Python List Comprehensions</a> </p>
<p>Python list comprehensions make it easy to create lists while performing sophisticated filtering, mapping, and conditional logic on their members. In this course, you’ll learn when to use list comprehensions in Python and how to create them effectively.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:46 – Python 3.12.13, 3.11.15, 3.10.20 and Python 3.15.0 alpha 7 Released</li>
<li>00:03:25 – Django Security Releases Issued: 6.0.3, 5.2.12, and 4.2.29</li>
<li>00:03:39 – PEP 825: Wheel Variants: Package Format</li>
<li>00:04:20 – PEP 827: Type Manipulation</li>
<li>00:05:11 – Automate Python Data Analysis With YData Profiling</li>
<li>00:11:31 – Django ORM Standalone: Querying an Existing Database</li>
<li>00:16:43 – Sponsor: AgentField</li>
<li>00:17:42 – Invent Your Own Comprehensions in Python</li>
<li>00:22:34 – A History of Attempts to Eliminate Programmers</li>
<li>00:28:51 – Video Course Spotlight</li>
<li>00:30:03 – Three Bad Managers</li>
<li>00:50:42 – python_template: Modern Python Project Template</li>
<li>00:53:38 – tallyman: CLI to Summarize Code Size by Language</li>
<li>00:55:06 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://blog.python.org/2026/03/python-31213-31115-31020/">Python 3.12.13, 3.11.15 and 3.10.20 Released</a></li>
<li><a href="https://blog.python.org/2026/03/python-3150-alpha-7/">Python 3.15.0 alpha 7 - Python Insider</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/mar/03/security-releases/">Django Security Releases Issued: 6.0.3, 5.2.12, and 4.2.29</a></li>
<li><a href="https://peps.python.org/pep-0825/">PEP 825: Wheel Variants: Package Format (Added)</a></li>
<li><a href="https://peps.python.org/pep-0827/">PEP 827: Type Manipulation (Added)</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/ydata-profiling-eda/">Automate Python Data Analysis With YData Profiling</a> – Automate exploratory data analysis by transforming DataFrames into interactive reports with one command from YData Profiling.</li>
<li><a href="https://www.paulox.net/2026/02/20/django-orm-standalone-database-inspectdb-query/">Django ORM Standalone: Querying an Existing Database</a> – A practical step-by-step guide to using Django ORM in standalone mode to connect to and query an existing database using <code>inspectdb</code>.</li>
<li><a href="https://www.pythonmorsels.com/custom-comprehensions/">Invent Your Own Comprehensions in Python</a> – Python doesn’t have tuple, frozenset, or Counter comprehensions, but you can invent your own by passing a generator expression to any iterable-accepting callable.</li>
<li><a href="https://www.ivanturkovic.com/2026/01/22/history-software-simplification-cobol-ai-hype/">A History of Attempts to Eliminate Programmers</a> – From COBOL in the 1960s to AI in the 2020s, every generation promises to eliminate programmers. Explore the recurring cycles of software simplification hype.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://randsinrepose.com/archives/three-bad-managers/">Three Bad Managers – Rands in Repose</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/mameli/python_template">python_template: Modern Python Project Template</a></li>
<li><a href="https://github.com/mikeckennedy/tallyman">tallyman: CLI to Summarize Code Size by Language</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/list-comprehension-python/">When to Use a List Comprehension in Python – Real Python</a></li>
<li><a href="https://realpython.com/courses/understand-list-comprehensions/">Understanding Python List Comprehensions – Real Python</a></li>
<li><a href="https://www.mameli.dev/blog/modern-data-python-stack/">A Modern Python Stack for Data Projects</a></li>
<li><a href="https://copier.readthedocs.io/en/stable/">copier</a></li>
<li><a href="https://www.cookiecutter.io/">Cookiecutter</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/understand-list-comprehensions/">Understanding Python List Comprehensions</a></li>
<li><a href="https://realpython.com/courses/set-up-django-project/">How to Set Up a Django Project</a></li>
<li><a href="https://realpython.com/courses/pandas-dataframe-working-with-data/">The pandas DataFrame: Working With Data Efficiently</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Overcoming Testing Obstacles With Python's Mock Object Library
<p>Do you have complex logic and unpredictable dependencies that make it hard to write reliable tests? How can you use Python’s mock object library to improve your tests? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher shares details about his recent Real Python video course, “Improving Your Tests With the Python Mock Object Library.” He describes how mocking in Python with <code>unittest.mock</code> allows you to simulate complex logic or unpredictable dependencies, such as responses from external services. He covers how the <code>Mock</code> class can imitate real objects, and the <code>patch()</code> function lets you temporarily substitute mocks for real objects in your tests. </p>
<p>We also share other articles and projects from the Python community, including a collection of recent releases, using open source AI at Wagtail, updates from the inaugural PyPI Support Specialist, a lightweight OS for microcontrollers in MicroPythonOS, why match-case is not necessarily switch-case for Python, thinking about time in programming, a TUI-based presentation tool for the terminal, and a tool to check Django projects for dead code.</p>
<p>This episode is sponsored by AgentField.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/improve-tests-mock-object-library/">Improving Your Tests With the Python Mock Object Library</a></p>
<p>Master Python testing with unittest.mock. Create mock objects to tame complex logic and unpredictable dependencies.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:53 – Python 3.14.3 and 3.13.12 Released</li>
<li>00:03:15 – Django Security Releases Issued: 6.0.2, 5.2.11, and 4.2.28</li>
<li>00:03:36 – Open Source AI We Use to Work on Wagtail</li>
<li>00:07:27 – Dispatch From the Inaugural PyPI Support Specialist</li>
<li>00:09:01 – MicroPythonOS Graphical Operating System</li>
<li>00:11:27 – Sponsor: AgentField</li>
<li>00:12:21 – Improving Your Tests With the Python Mock Object Library</li>
<li>00:17:30 – Need Switch-Case in Python? It’s Not Match-Case!</li>
<li>00:26:03 – Video Course Spotlight</li>
<li>00:27:38 – How to Think About Time in Programming</li>
<li>00:31:58 – Prezo: A TUI-based Presentation Tool for the Terminal</li>
<li>00:34:52 – django-deadcode: Tracks URLs, Templates, and Django Views</li>
<li>00:38:09 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://pythoninsider.blogspot.com/2026/02/python-3143-and-31312-are-now-available.html">Python 3.14.3 and 3.13.12 Released</a></li>
<li><a href="https://pythoninsider.blogspot.com/2026/02/python-3150-alpha-6.html">Python 3.15.0 Alpha 6 Released</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/feb/03/security-releases/">Django Security Releases Issued: 6.0.2, 5.2.11, and 4.2.28</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://wagtail.org/blog/open-source-ai-we-use-to-work-on-wagtail/">Open Source AI We Use to Work on Wagtail</a> – One of the core maintainers at Wagtail CMS shares what open source models have been working best for the project so far.</li>
<li><a href="https://blog.pypi.org/posts/2026-01-26-a-year-and-a-half-as-inaugural-pypi-support-specialist/">Dispatch From the Inaugural PyPI Support Specialist</a> – Maria Ashna (Thespi-Brain on GitHub) is the inaugural PyPI Support Specialist and she’s written up how the first year went.</li>
<li><a href="https://www.cnx-software.com/2026/01/29/micropythonos-graphical-operating-system-delivers-android-like-user-experience-on-microcontrollers/">MicroPythonOS Graphical Operating System</a> – MicroPythonOS lightweight OS for microcontrollers targets applications with graphical user interfaces with a look similar to Android/iOS.</li>
<li><a href="https://realpython.com/courses/improve-tests-mock-object-library/">Improving Your Tests With the Python Mock Object Library</a> – Master Python testing with unittest.mock. Create mock objects to tame complex logic and unpredictable dependencies.</li>
<li><a href="https://www.pythonmorsels.com/switch-case-in-python/">Need Switch-Case in Python? It’s Not Match-Case!</a> – Python’s match-case is not a switch-case statement. If you need switch-case, you can often use a dictionary instead.</li>
<li><a href="https://shanrauf.com/archive/how-to-think-about-time-in-programming">How to Think About Time in Programming</a> – Time is a complex thing to code. This article is a very deep dive, covering absolute measurement, civil time, modern time keeping, the mess that are timezones, and much more.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/abilian/prezo">Prezo: A TUI-based Presentation Tool for the Terminal</a></li>
<li><a href="https://github.com/nanorepublica/django-deadcode">django-deadcode: Tracks URLs, Templates, and Django Views</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://wagtail.org/blog/ai-in-the-cms-steering-the-ecosystem/">AI in the CMS: steering the ecosystem - Wagtail CMS</a></li>
<li><a href="https://realpython.com/podcasts/rpp/258/">Episode #258: Supporting the Python Package Index</a></li>
<li><a href="https://github.com/MicroPythonOS/MicroPythonOS">MicroPythonOS: A complete operating system for microcontrollers like the ESP32, inspired by Android and iOS.</a></li>
<li><a href="https://micropythonos.com/">MicroPythonOS - The Ultimate MicroPython Operating System</a></li>
<li><a href="https://lvgl.io/">LVGL — Light and Versatile Embedded Graphics Library</a></li>
<li><a href="https://realpython.com/structural-pattern-matching/">Structural Pattern Matching in Python – Real Python</a></li>
<li><a href="https://textual.textualize.io/">Textual</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/improve-tests-mock-object-library/">Improving Your Tests With the Python Mock Object Library</a></li>
<li><a href="https://realpython.com/courses/testing-your-code-with-pytest/">Testing Your Code With pytest</a></li>
<li><a href="https://realpython.com/courses/python-assert-statement/">Using Python's assert to Debug and Test Your Code</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Running Local LLMs With Ollama and Connecting With Python
<p>Would you like to learn how to work with LLMs locally on your own computer? How do you integrate your Python projects with a local model? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>We cover a recent Real Python step-by-step tutorial on installing local LLMs with Ollama and connecting them to Python. It begins by outlining the advantages this strategy offers, including reducing costs, improving privacy, and enabling offline-capable AI-powered apps. We talk through the steps of setting things up, generating text and code, and calling tools.</p>
<p>We also share other articles and projects from the Python community, including the 2026 Python Developers Survey, creating callable instances with Python’s <code>.__call__()</code>, creating maps and projections with GeoPandas, ending 15 years of <code>subprocess</code> polling, discussing backseat software, a retry library that classifies errors, and a peer-to-peer encrypted CLI chat project.</p>
<p>This episode is sponsored by Honeybadger.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/tips-using-ai-coding-editor-cursor/">Tips for Using the AI Coding Editor Cursor</a></p>
<p>Learn Cursor fast: Use AI-powered coding with agents, project-aware chat, and inline edits to supercharge your VS Code workflow.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:37 – Take the Python Developers Survey 2026</li>
<li>00:03:07 – How to Integrate Local LLMs With Ollama and Python</li>
<li>00:08:15 – Sponsor: Honeybadger</li>
<li>00:09:01 – Create Callable Instances With Python’s <code>.__call__()</code></li>
<li>00:12:13 – GeoPandas Basics: Maps, Projections, and Spatial Joins</li>
<li>00:16:03 – Ending 15 Years of <code>subprocess</code> Polling</li>
<li>00:18:57 – Video Course Spotlight</li>
<li>00:20:23 – Backseat Software – Mike Swanson</li>
<li>00:39:06 – cmd-chat: Peer-to-Peer Encrypted CLI Chat</li>
<li>00:41:58 – redress: A Retry Library That Classifies Errors</li>
<li>00:43:56 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://pyfound.blogspot.com/2026/01/your-python-your-voice-join-python.html">Take the Python Developers Survey 2026</a></li>
<li><a href="https://blog.jetbrains.com/pycharm/2025/08/the-state-of-python-2025/">The State of Python 2025: Trends and Survey Insights - The PyCharm Blog</a></li>
</ul>
<p>Topics:</p>
<ul>
<li><a href="https://realpython.com/ollama-python/">How to Integrate Local LLMs With Ollama and Python</a> – Learn how to integrate your Python projects with local models (LLMs) using Ollama for enhanced privacy and cost efficiency.</li>
<li><a href="https://realpython.com/courses/create-callable-instances-dunder-call/">Create Callable Instances With Python’s <code>.__call__()</code></a> – Learn about Python callables, including what “callable” means, how to use dunder call, and how to build callable objects with step-by-step examples.</li>
<li><a href="https://realpython.com/geopandas/">GeoPandas Basics: Maps, Projections, and Spatial Joins</a> – Dive into GeoPandas with this tutorial covering data loading, mapping, CRS concepts, projections, and spatial joins for intuitive analysis.</li>
<li><a href="https://gmpy.dev/blog/2026/event-driven-process-waiting">Ending 15 Years of <code>subprocess</code> Polling</a> – Python’s standard library <code>subprocess</code> module relies on busy-loop polling to determine whether a process has completed yet. Modern operating systems have callback mechanisms to do this, and Python 3.15 will now take advantage of these.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://blog.mikeswanson.com/backseat-software/">Backseat Software – Mike Swanson’s Blog</a></li>
<li><a href="https://news.ycombinator.com/item?id=46817452">Backseat Software – Hacker News</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/diorwave/cmd-chat">cmd-chat: Peer-to-Peer Encrypted CLI Chat</a></li>
<li><a href="https://github.com/aponysus/redress">redress: A Retry Library That Classifies Errors</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://ollama.com/">Ollama</a></li>
<li><a href="https://realpython.com/python-callable-instances/">Python’s .<strong>call</strong>() Method: Creating Callable Instances – Real Python</a></li>
<li><a href="https://realpython.com/quizzes/geopandas/">Quiz: GeoPandas Basics: Maps, Projections, and Spatial Joins</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/customize-vscode-settings/">Customize VS Code Settings</a></li>
<li><a href="https://realpython.com/courses/getting-started-google-gemini-cli/">Getting Started With Google Gemini CLI</a></li>
<li><a href="https://realpython.com/courses/tips-using-ai-coding-editor-cursor/">Tips for Using the AI Coding Editor Cursor</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Testing Python Code for Scalability & What's New in pandas 3.0
<p>How do you create automated tests to check your code for degraded performance as data sizes increase? What are the new features in pandas 3.0? Christopher Trudeau is back on the show this week with another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher digs into an article about building tests to make sure your software is fast, or at least doesn’t get slower as it scales. The piece focuses on testing Big-O scaling and its implications for algorithms.</p>
<p>We also discuss another article covering the top features in pandas 3.0, including the new dedicated string dtype, a cleaner way to perform column-based operations, and more predictable default copying behavior with Copy-on-Write.</p>
<p>We share several other articles and projects from the Python community, including a collection of recent releases and PEPs, a profiler for targeting individual functions, a quiz to test your Django knowledge, when to use each of the eight versions of UUID, the hard-to-swallow truths about being a software engineer, an offline reverse geocoding library, and a library for auto-generating CLIs from any Python object.</p>
<p>Our live Python cohorts start February 2, and we’re down to the last few seats. There are two tracks: <a href="https://realpython.com/workshops/python-for-beginners/">Python for Beginners</a> or <a href="https://realpython.com/workshops/intermediate-deep-dive/">Intermediate Deep Dive</a>. Eight weeks of live instruction, small groups, and real accountability. Grab your seat at <a href="https://realpython.com/live/">realpython.com/live</a>.</p>
<p>This episode is sponsored by Honeybadger.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/intro-object-oriented-programming/">Intro to Object-Oriented Programming (OOP) in Python</a></p>
<p>Learn Python OOP fundamentals fast: master classes, objects, and constructors with hands-on lessons in this beginner-friendly video course.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:03:28 – Python 3.15.0 Alpha 4 Released</li>
<li>00:03:50 – Django Bugfix Release: 5.2.10, 6.0.1</li>
<li>00:04:22 – PEP 819: JSON Package Metadata</li>
<li>00:04:41 – PEP 820: PySlot: Unified Slot System for the C API</li>
<li>00:04:59 – PEP 822: Dedented Multiline String (d-String)</li>
<li>00:06:04 – What’s New in pandas 3.0</li>
<li>00:13:11 – pandas 3.0.0 documentation</li>
<li>00:13:44 – Sponsor: Honeybadger</li>
<li>00:14:30 – Unit Testing Your Code’s Performance</li>
<li>00:17:51 – Introducing <code>tprof</code>, a Targeting Profiler</li>
<li>00:23:03 – Video Course Spotlight</li>
<li>00:24:31 – Django Quiz 2025</li>
<li>00:24:56 – 8 Versions of UUID and When to Use Them</li>
<li>00:29:17 – 10 hard-to-swallow truths they won’t tell you about software engineer job</li>
<li>00:44:02 – gazetteer: Offline Reverse Geocoding Library</li>
<li>00:46:13 – python-fire: A library for automatically generating command-line interfaces</li>
<li>00:47:40 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://pythoninsider.blogspot.com/2026/01/python-3150-alpha-4.html">Python 3.15.0 Alpha 4 Released</a></li>
<li><a href="https://www.python.org/downloads/release/python-3150a5/">Python 3.15.0a5 Alpha 5 Released</a></li>
<li><a href="https://www.djangoproject.com/weblog/2026/jan/06/bugfix-releases/">Django Bugfix Release: 5.2.10, 6.0.1</a></li>
<li><a href="https://peps.python.org/pep-0819/">PEP 819: JSON Package Metadata (Draft)</a></li>
<li><a href="https://peps.python.org/pep-0820/">PEP 820: PySlot: Unified Slot System for the C API (Draft)</a></li>
<li><a href="https://peps.python.org/pep-0822/">PEP 822: Dedented Multiline String (d-String) (Draft)</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://codecut.ai/pandas-3-whats-new/">What’s New in pandas 3.0</a> – Learn what’s new in pandas 3.0: <code>pd.col</code> expressions for cleaner code, Copy-on-Write for predictable behavior, and PyArrow-backed strings for 5-10x faster operations.</li>
<li><a href="https://pandas.pydata.org/docs/whatsnew/v3.0.0.html">What’s new in 3.0.0 (January 21, 2026) — pandas 3.0.0 documentation</a></li>
<li><a href="https://pythonspeed.com/articles/big-o-tests/">Unit Testing Your Code’s Performance</a> – Testing your code is important, not just for correctness but also for performance. One approach is to check performance degradation as data sizes go up, also known as Big-O scaling.</li>
<li><a href="https://adamj.eu/tech/2026/01/14/python-introducing-tprof/">Introducing <code>tprof</code>, a Targeting Profiler</a> – Adam has written <code>tprof</code>, a targeting profiler for Python 3.12+. This article introduces you to the tool and why he wrote it.</li>
<li><a href="https://adamj.eu/tech/2026/01/03/django-quiz-2025/">Django Quiz 2025</a> – Last month, Adam held another quiz at the December edition of Django London. This is an annual tradition at the meetup, and now you can take it yourself or just skim the answers.</li>
<li><a href="https://www.ntietz.com/blog/til-uses-for-the-different-uuid-versions/">8 Versions of UUID and When to Use Them</a> – RFC 9562 outlines the structure of Universally Unique Identifiers (UUIDs) and includes eight different versions. In this post, Nicole gives a quick intro to each kind so you don’t have to read the docs, and explains why you might choose each.</li>
<li><a href="https://docs.python.org/3/library/uuid.html">uuid — UUID objects according to RFC 9562 — Python 3.14.2 documentation</a></li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://www.mensurdurakovic.com/hard-to-swallow-truths-they-wont-tell-you-about-software-engineer-job/">10 hard-to-swallow truths they won’t tell you about software engineer job</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/SOORAJTS2001/gazetteer">gazetteer: Offline Reverse Geocoding Library</a></li>
<li><a href="https://github.com/google/python-fire">python-fire: Python Fire is a library for automatically generating command-line interfaces (CLIs) from absolutely any Python object</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=J8UynYKx5no">Gary Gnu Sings “No Gnews Is Good Gnews Song” - The Great Space Coaster - YouTube</a></li>
<li><a href="https://github.com/plasma-umass/bigO/">plasma-umass/bigO: Measures empirical computational complexity (in both time and space) of functions</a></li>
<li><a href="https://realpython.com/podcasts/rpp/172/">Episode #172: Measuring Multiple Facets of Python Performance With Scalene</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/testing-your-code-with-pytest/">Testing Your Code With pytest</a></li>
<li><a href="https://realpython.com/courses/investigating-quasar-data-polars-marimo-notebooks/">Investigating Quasar Data With Polars and Interactive marimo Notebooks</a></li>
<li><a href="https://realpython.com/courses/intro-object-oriented-programming/">Intro to Object-Oriented Programming (OOP) in Python</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Considering Fast and Slow in Python Programming
<p>How often have you heard about the speed of Python? What’s actually being measured, where are the bottlenecks—development time or run time—and which matters more for productivity? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher shares an article titled “The Uselessness of ‘Fast’ and ‘Slow’ in Programming.” It digs into how the different aspects of software performance span a wide range of orders of magnitude, and how developers can obsess over irrelevant performance details, often losing more time working in suboptimal environments than building what they need with tools they already know.</p>
<p>We also discuss an article about why <code>uv</code> is fast, which explains how most of its speed comes from engineering decisions rather than just being written in Rust.</p>
<p>We then share several other articles and projects from the Python community, including a roundup of 2025 year-end lists, an explanation of why Python’s <code>deepcopy</code> can be so slow, serving a website with FastAPI using Jinja2, Python numbers every programmer should know, a discussion of spec-driven development and whether waterfall is back, a tool to detect whether a PDF has a bad redaction, and a CLI for measuring HTTP request phases.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/jinja-templating/">Jinja Templating</a></p>
<p>With Jinja, you can build rich templates that power the front end of your web applications. But you can also use Jinja without a web framework running in the background. Whenever you need to generate text files with dynamic content, Jinja provides a flexible and powerful solution.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:53 – Top Python Libraries of 2025</li>
<li>00:04:43 – 2025 Python Year in Review</li>
<li>00:04:58 – PyPI in 2025: A Year in Review</li>
<li>00:05:36 – Join in the PSF Year-End Fundraiser & Membership Drive!</li>
<li>00:06:10 – How <code>uv</code> Got So Fast</li>
<li>00:12:29 – Why Python’s <code>deepcopy</code> Can Be So Slow</li>
<li>00:17:03 – Serve a Website With FastAPI Using HTML and Jinja2</li>
<li>00:23:19 – The Uselessness of “Fast” and “Slow” in Programming</li>
<li>00:27:06 – Python Numbers Every Programmer Should Know</li>
<li>00:28:17 – Video Course Spotlight</li>
<li>00:29:43 – Spec-Driven Development: The Waterfall Strikes Back</li>
<li>00:49:21 – x-ray: A Tool to Detect Whether a PDF Has a Bad Redaction</li>
<li>00:52:20 – httptap: CLI Measuring HTTP Request Phases</li>
<li>00:54:19 – Thanks and goodbye</li>
</ul>
<p>2025 Top List Roundup</p>
<ul>
<li><a href="https://tryolabs.com/blog/top-python-libraries-2025">Top Python Libraries of 2025</a> – Explore Tryolabs’ 11th annual Top Python Libraries roundup, featuring two curated Top 10 lists: one for General Use and one for AI/ML/Data tools.</li>
<li><a href="https://talkpython.fm/episodes/show/532/2025-python-year-in-review">2025 Python Year in Review</a> – Talk Python interviews Barry Warsaw, Brett Cannon, Gregory Kapfhammer, Jodie Burchell, Reuven Lerner, and Thomas Wouters, and the panel discusses what mattered for Python in 2025.</li>
<li><a href="https://blog.pypi.org/posts/2025-12-31-pypi-2025-in-review/">PyPI in 2025: A Year in Review</a> – Dustin summarizes all the happenings with the Python Packaging Index in 2025, including 130,000 new projects and over 2.5 trillion requests served.</li>
<li><a href="https://pyfound.blogspot.com/2025/11/python-is-for-everyone-join-in-psf-year.html">Join in the PSF Year-End Fundraiser & Membership Drive!</a></li>
</ul>
<p>Topics:</p>
<ul>
<li><a href="https://nesbitt.io/2025/12/26/how-uv-got-so-fast.html">How <code>uv</code> Got So Fast</a> – <code>uv</code>’s speed comes from engineering decisions, not just Rust. Static metadata, dropping legacy formats, and standards that didn’t exist five years ago.</li>
<li><a href="https://www.codeflash.ai/blog-posts/why-pythons-deepcopy-can-be-so-slow-and-how-to-avoid-it">Why Python’s <code>deepcopy</code> Can Be So Slow</a> – “Python’s <code>copy.deepcopy()</code> creates a fully independent clone of an object, traversing every nested element of the object graph.” That can be expensive. Learn what it’s doing and how you can sometimes avoid the cost.</li>
<li><a href="https://realpython.com/fastapi-jinja2-template/">Serve a Website With FastAPI Using HTML and Jinja2</a> – Use FastAPI to render Jinja2 templates and serve dynamic sites with HTML, CSS, and JavaScript, then add a color picker that copies hex codes.</li>
<li><a href="https://jerf.org/iri/post/2025/the_uselessness_of_fast/">The Uselessness of “Fast” and “Slow” in Programming</a> – “One of the unique aspects of software is how it spans such a large number of orders of magnitude.” The huge difference makes the terms “fast” and “slow” arbitrary. Read on to discover how this affects our thinking as programmers and what mistakes it can cause.</li>
<li><a href="https://mkennedy.codes/posts/python-numbers-every-programmer-should-know/">Python Numbers Every Programmer Should Know</a> – Ever wonder how much memory an empty list takes? How about how long it takes to add two integers in Python? This post contains loads of performance data for common Python operations.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://marmelab.com/blog/2025/11/12/spec-driven-development-waterfall-strikes-back.html">Spec-Driven Development: The Waterfall Strikes Back</a></li>
<li><a href="https://blog.robbowley.net/2026/01/05/coding-has-never-been-the-bottleneck/">Coding has never been the bottleneck - Rob Bowley</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/freelawproject/x-ray">x-ray: A Tool to Detect Whether a PDF Has a Bad Redaction</a></li>
<li><a href="https://github.com/ozeranskii/httptap">httptap: CLI Measuring HTTP Request Phases</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/podcasts/rpp/238/">Episode #238: Charlie Marsh: Accelerating Python Tooling With Ruff and uv – The Real Python Podcast</a></li>
<li><a href="https://realpython.com/primer-on-jinja-templating/">Primer on Jinja Templating – Real Python</a></li>
<li><a href="https://realpython.com/get-started-with-fastapi/">Get Started With FastAPI – Real Python</a></li>
<li><a href="https://norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-rest-apis-with-fastapi/">Python REST APIs With FastAPI</a></li>
<li><a href="https://realpython.com/courses/create-scalable-flask-web-app/">Creating a Scalable Flask Web Application From Scratch</a></li>
<li><a href="https://realpython.com/courses/jinja-templating/">Jinja Templating</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
PyCoder's Weekly 2025 Top Articles & Hidden Gems
<p>PyCoder’s Weekly included over 1,500 links to articles, blog posts, tutorials, and projects in 2025. Christopher Trudeau is back on the show this week to help wrap up everything by sharing some highlights and uncovering a few hidden gems from the pile.</p>
<p>We share the top links explored by PyCoder’s readers. We also dig into trends across all the articles and stories this year. We highlight a few gems that we didn’t cover on the show and a couple that explore the overall themes of the year. </p>
<p>We hope you enjoy this review! We look forward to bringing you an upcoming year full of great Python news, articles, topics, and projects. </p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/videos/using-functional-programming-overview/">Using Functional Programming in Python</a></p>
<p>Boost your Python skills with a quick dive into functional programming: what it is, how Python supports it, and why it matters.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:01:52 – Django 6.0 released</li>
<li>00:02:58 – The Inner Workings of Python Dataclasses Explained</li>
<li>00:03:40 – Going Beyond requirements.txt With pylock.toml and PEP 751</li>
<li>00:04:58 – Django vs. FastAPI, An Honest Comparison</li>
<li>00:05:46 – How to Use Loguru for Simpler Python Logging</li>
<li>00:06:47 – Narwhals: Unified DataFrame Functions</li>
<li>00:08:32 – Observations and statistics for the year of articles</li>
<li>00:13:23 – Data Validation Libraries for Polars (2025 Edition)</li>
<li>00:18:53 – Video Course Spotlight</li>
<li>00:20:25 – Create Temporary Files and Directories in Unittest</li>
<li>00:22:27 – Capture Stdout and Stderr in Unittest</li>
<li>00:24:59 – I don’t like NumPy</li>
<li>00:26:34 – Python performance myths and fairy tales </li>
<li>00:31:05 – Congratulations on making through 2025!</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://www.djangoproject.com/weblog/2025/dec/03/django-60-released/">Django 6.0 released - Django Weblog</a></li>
</ul>
<p>Top PyCoders Links 2025:</p>
<ul>
<li><a href="https://jacobpadilla.com/articles/python-dataclass-internals">The Inner Workings of Python Dataclasses Explained</a> – Discover how Python dataclasses work internally! Learn how to use <code>__annotations__</code> and <code>exec()</code> to make our own dataclass decorator!</li>
<li><a href="https://realpython.com/podcasts/rpp/249/">Episode #249: Going Beyond requirements.txt With pylock.toml and PEP 751</a> – What is the best way to record the Python dependencies for the reproducibility of your projects? What advantages will lock files provide for those projects? This week on the show, we welcome back Python Core Developer Brett Cannon to discuss his journey to bring PEP 751 and the pylock.toml file format to the community.</li>
<li><a href="https://www.david-dahan.com/blog/comparing-fastapi-and-django">Django vs. FastAPI, An Honest Comparison</a> – David has worked with Django for a long time, but recently has done some deeper coding with FastAPI. As a result, he’s able to provide a good contrast between the libraries and why/when you might choose one over the other.</li>
<li><a href="https://realpython.com/python-loguru/">How to Use Loguru for Simpler Python Logging – Real Python</a> – In this tutorial, you’ll learn how to use Loguru to quickly implement better logging in your Python applications. You’ll spend less time wrestling with logging configuration and more time using logs effectively to debug issues.</li>
<li><a href="https://codecut.ai/unified-dataframe-functions-pandas-polars-pyspark/">Narwhals: Unified DataFrame Functions for pandas, Polars, and PySpark</a> – Narwhals is a lightweight compatibility layer between DataFrame libraries. You can use it as a common interface to write reproducible and maintainable data science code which supports pandas, Polars, DuckDB, PySpark, PyArrow, and more.</li>
</ul>
<p>Featured Links:</p>
<ul>
<li><a href="https://posit-dev.github.io/pointblank/blog/validation-libs-2025/">Data Validation Libraries for Polars (2025 Edition) – Pointblank</a> - Given that Polars is so hot right now and that data validation is an important part of a data pipeline, this post explores five Python data validation libraries that support Polars DataFrames. Through contrasting and comparison, the post puts forward which of them are best for specific use cases.</li>
<li><a href="https://adamj.eu/tech/2024/12/30/python-temporary-files-directories-unittest/">Python: Create Temporary Files and Directories in Unittest</a> – Sometimes, tests need temporary files or directories. You can do this in Python’s unittest with the standard library tempfile module. This post looks at some recipes to do so within individual tests and <code>setUp()</code>.</li>
<li><a href="https://adamj.eu/tech/2025/08/29/python-unittest-capture-stdout-stderr/">Python: Capture Stdout and Stderr in Unittest</a> – When testing code that outputs to the terminal through either standard out (stdout) or standard error (stderr), you might want to capture that output and make assertions on it.</li>
<li><a href="https://dynomight.net/numpy/">I don’t like NumPy</a> – This opinion piece talks about why NumPy gets difficult fast. Two dimensions to your array? No problem, the calc is mostly self evident. Add a couple more dimensions and it gets messy fast. See also the <a href="https://news.ycombinator.com/item?id=43996431">associated HN discussion, which also includes possible solutions</a>.</li>
<li><a href="https://lwn.net/Articles/1031707/">Python performance myths and fairy tales</a> – This post summarizes a talk by Antonio Cuni who is a long time contributor to PyPy, the alternate Python interpreter. The talk spoke about the challenges and limits of performance in Python and how the flexibility of dynamic languages comes at a cost. See also the associated <a href="https://news.ycombinator.com/item?id=44809387">HN discussion</a>.</li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/podcasts/rpp/224/">Episode #224: Narwhals: Expanding DataFrame Compatibility Between Libraries</a></li>
<li><a href="https://realpython.com/podcasts/rpp/272/">Episode #272: Michael Kennedy: Managing Your Own Python Infrastructure</a></li>
<li><a href="https://talkpython.fm/episodes/show/510/10-polars-tools-and-techniques-to-level-up-your-data-science">Episode #510 - 10 Polars Tools and Techniques To Level Up Your Data Science</a></li>
<li><a href="https://docs.astral.sh/ty/">ty</a></li>
<li><a href="https://github.com/cltrudeau/waelstow">waelstow: Python unittest utilities. Includes output capture, test discovery, and directory relocation.</a></li>
<li><a href="https://pypy.org/">PyPy</a></li>
<li><a href="https://github.com/spylang">spylang · GitHub</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-filter-function/">Filtering Iterables With Python</a></li>
<li><a href="https://realpython.com/courses/using-functional-programming/">Using Functional Programming in Python</a></li>
<li><a href="https://realpython.com/courses/numpy-techniques-practical-examples/">NumPy Techniques and Practical Examples</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Building a FastAPI Application & Exploring Python Concurrency
<p>What are the steps to get started building a FastAPI application? What are the different types of concurrency available in Python? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent Real Python step-by-step tutorial about programming a FastAPI example application. You practice installing FastAPI, building your first endpoints, adding path and query parameters, and validating endpoints using Pydantic. </p>
<p>Christopher covers updates to his Real Python video course about concurrency in Python. The course digs into what concurrency means in Python and why you might want to incorporate it in your code. He describes the different methods and demonstrates how to approach coding using threading, asyncio, and multiprocessing.</p>
<p>We also share several other articles and projects from the Python community, including a news roundup, the PSF fundraiser campaign for 2025, where Python stores attributes, performance hacks for faster Python code, a project to transform functions into a web interface, and a Python disk-backed cache.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-descriptors/">Python Descriptors</a></p>
<p>Learn what Python descriptors are, how the descriptor protocol works, and when descriptors are useful, with practical, hands-on examples.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:18 – Django Security Release</li>
<li>00:02:46 – Django Is Now a CVE Numbering Authority (CNA)</li>
<li>00:03:53 – An Annual Release Cycle for Django</li>
<li>00:04:12 – PEP 810: Explicit Lazy Imports (Accepted)</li>
<li>00:04:27 – PSF Board Office Hour Sessions for 2026</li>
<li>00:05:42 – PyCon US 2026: Call for Proposals Open</li>
<li>00:06:15 – PSF Fundraiser campaign for 2025</li>
<li>00:10:12 – A Close Look at a FastAPI Example Application</li>
<li>00:16:36 – Speed Up Python With Concurrency</li>
<li>00:21:08 – <code>__dict__</code>: Where Python Stores Attributes</li>
<li>00:25:59 – Video Course Spotlight</li>
<li>00:27:17 – 10 Smart Performance Hacks for Faster Python Code</li>
<li>00:29:56 – FuncToWeb: Transform Python Functions Into a Web Interface</li>
<li>00:32:48 – python-diskcache: Python Disk-Backed Cache</li>
<li>00:34:07 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://www.djangoproject.com/weblog/2025/nov/05/security-releases/">Django Security Release: 5.2.8, 5.1.14, and 4.2.26</a></li>
<li><a href="https://www.djangoproject.com/weblog/2025/oct/30/django-is-now-a-cve-numbering-authority-cna/">Django Is Now a CVE Numbering Authority (CNA)</a></li>
<li><a href="https://buttondown.com/carlton/archive/an-annual-release-cycle-for-django/">An Annual Release Cycle for Django - Buttondown</a></li>
<li><a href="https://peps.python.org/pep-0810/">PEP 810: Explicit Lazy Imports (Accepted)</a></li>
<li><a href="https://pyfound.blogspot.com/2025/10/a-new-psf-board-another-year-of-psf.html">PSF Board Office Hour Sessions for 2026</a></li>
<li><a href="https://pycon.blogspot.com/2025/10/pycon-us-2026-call-for-proposals-now.html">PyCon US, Long Beach CA, 2026: Call for Proposals Open</a></li>
<li><a href="https://donate.python.org/">PSF Fundraiser campaign for 2025</a></li>
<li><a href="https://pyfound.blogspot.com/2025/10/connecting-the-dots.html">Connecting the Dots: Understanding the PSF’s Current Financial Outlook</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/fastapi-python-web-apis/">A Close Look at a FastAPI Example Application</a> – Set up a FastAPI example app, add path and query parameters, and handle CRUD operations with Pydantic for clean, validated endpoints.</li>
<li><a href="https://realpython.com/courses/speed-python-concurrency/">Speed Up Python With Concurrency</a> – Learn what concurrency means in Python and why you might want to use it. You’ll see a simple, non-concurrent approach and then look into why you’d want threading, asyncio, or multiprocessing.</li>
<li><a href="https://www.pythonmorsels.com/__dict__/"><code>__dict__</code>: Where Python Stores Attributes</a> – Most Python objects store their attributes in a <code>__dict__</code> dictionary. Modules and classes always use <code>__dict__</code>, but not everything does.</li>
<li><a href="https://blog.jetbrains.com/pycharm/2025/11/10-smart-performance-hacks-for-faster-python-code/">10 Smart Performance Hacks for Faster Python Code</a> – Some practical optimization hacks, from data structures to built-in modules, that boost speed, reduce overhead, and keep your Python code clean.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/offerrall/FuncToWeb">FuncToWeb: Transform Python Functions Into a Web Interface</a></li>
<li><a href="https://github.com/grantjenks/python-diskcache">python-diskcache: Python Disk-Backed Cache</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://www.python.org/psf/membership/">Become a Member of the PSF - Python Software Foundation</a></li>
<li><a href="https://fastapi.tiangolo.com/">FastAPI</a></li>
<li><a href="https://docs.pydantic.dev/latest/">Welcome to Pydantic</a></li>
<li><a href="https://realpython.com/quizzes/fastapi-python-web-apis/">Quiz: A Close Look at a FastAPI Example Application</a> – Practice FastAPI basics with path parameters, request bodies, async endpoints, and CORS. Build confidence to design and test simple Python web APIs.</li>
<li><a href="https://www.bitecode.dev/p/diskcache-more-than-caching">Diskcache, more than caching - Bite code!</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-rest-apis-with-fastapi/">Python REST APIs With FastAPI</a></li>
<li><a href="https://realpython.com/courses/python-descriptors/">Python Descriptors</a></li>
<li><a href="https://realpython.com/courses/speed-python-concurrency/">Speed Up Python With Concurrency</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Advice for Writing Maintainable Python Code
<p>What are techniques for writing maintainable Python code? How do you make your Python more readable and easier to refactor? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent article about writing code that is easy to maintain. We cover writing comments, creating meaningful names, avoiding magic numbers, and preparing code for your future self.</p>
<p>We also share several other articles and projects from the Python community, including release news, modifying the REPL, differences between Polars and pandas, generating realistic test data in Python, investigating quasars with Polars and marimo, creating simple meta tags for Django objects, and a GUI toolkit for grids of buttons.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/modern-python-linting-ruff/">Modern Python Linting With Ruff</a></p>
<p>Ruff is a blazing-fast, modern Python linter with a simple interface that can replace Pylint, isort, and Black—and it’s rapidly becoming popular.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:01:53 – PyTorch 2.9 Release</li>
<li>00:02:38 – Django 6.0 Beta 1</li>
<li>00:03:05 – Handy Python REPL Modifications</li>
<li>00:11:06 – Polars vs pandas: What’s the Difference?</li>
<li>00:17:55 – Faker: Generate Realistic Test Data in Python</li>
<li>00:22:06 – Video Course Spotlight</li>
<li>00:23:35 – Investigating Quasars With Polars and marimo</li>
<li>00:27:37 – Writing Maintainable Code</li>
<li>00:49:48 – buttonpad: GUI Toolkit for Grids of Buttons</li>
<li>00:52:10 – django-snakeoil: Simple Meta Tags for Django Objects</li>
<li>00:54:07 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://pytorch.org/blog/pytorch-2-9/">PyTorch 2.9 Release</a></li>
<li><a href="https://www.djangoproject.com/weblog/2025/oct/22/django-60-beta-released/">Django 6.0 Beta 1</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://treyhunner.com/2025/10/handy-python-repl-modifications/">Handy Python REPL Modifications</a> – Trey uses the the Python REPL a lot. In this post he shows you his favorite customizations to make the REPL even better.</li>
<li><a href="https://realpython.com/polars-vs-pandas/">Polars vs pandas: What’s the Difference?</a> – Discover the key differences in Polars vs pandas to help you choose the right Python library for faster, more efficient data analysis.</li>
<li><a href="https://codecut.ai/faker-python-generate-test-data/">Faker: Generate Realistic Test Data in Python</a> – If you want to generate test data with specific types (bool, float, text, integers) and realistic characteristics (names, addresses, colors, emails, phone numbers, locations), Faker can help you do that.</li>
<li><a href="https://realpython.com/courses/investigating-quasar-data-polars-marimo-notebooks/">Investigating Quasars With Polars and <code>marimo</code></a> – Learn to visualize quasar redshift data by building an interactive marimo dashboard using Polars, pandas, and Matplotlib. You’ll practice retrieving, cleaning, and displaying data in your notebook. You’ll also build interactive UI components that live-update visualizations in the notebook.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://wedgworth.dev/crafting-software-writing-maintainable-code/">Writing Maintainable Code</a> – “Maintainable code can easily be the difference between long-lived, profitable software, and short-lived money pits.” Read on to see just what maintainable code is and how to achieve it.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/asweigart/buttonpad">buttonpad: GUI Toolkit for Grids of Buttons</a></li>
<li><a href="https://github.com/knyghty/django-snakeoil">django-snakeoil: Simple Meta Tags for Django Objects</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/python-repl/#customizing-the-standard-repl">The Python Standard REPL: Try Out Code and Ideas Quickly – Real Python</a></li>
<li><a href="https://github.com/treyhunner/pyrepl-hacks">pyrepl-hacks: Hacky extensions and helper functions for the new Python REPL</a></li>
<li><a href="https://pandas.pydata.org/">pandas - Python Data Analysis Library</a></li>
<li><a href="https://pola.rs/">Polars — DataFrames for the new era</a></li>
<li><a href="https://faker.readthedocs.io/en/stable/index.html">Welcome to Faker’s documentation!</a></li>
<li><a href="https://realpython.com/solid-principles-python/">SOLID Principles: Improve Object-Oriented Design in Python – Real Python</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Pragmatic_Programmer?ref=wedgworth.dev">The Pragmatic Programmer - Wikipedia</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/modern-python-linting-ruff/">Modern Python Linting With Ruff</a></li>
<li><a href="https://realpython.com/courses/solid-principles-python/">Design and Guidance: Object-Oriented Programming in Python</a></li>
<li><a href="https://realpython.com/courses/investigating-quasar-data-polars-marimo-notebooks/">Investigating Quasar Data With Polars and Interactive marimo Notebooks</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Benchmarking Python 3.14 & Enabling Asyncio to Scale
<p>How does Python 3.14 perform under a few hand-crafted benchmarks? Does the performance of asyncio scale on the free-threaded build? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>At the top of the show, we have a mountain of release news and Python Enhancement Proposals to cover. Then, we dig into a couple of articles covering the performance of Python 3.14. The first is a benchmarking comparison of the last several Python versions and their variations, including JIT and free-threaded mode. The second explores the changes in 3.14 that enable <code>asyncio</code> to scale on CPython’s free-threaded build.</p>
<p>We also share several other articles and projects from the Python community, including an introduction to NiceGUI, a free-threaded Python library compatibility checker, an exploration of what is “good taste” in software engineering, HTML templating with t‑strings, and a tool for testing Sphinx docs instantly in the browser.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-sphinx/">Documenting Python Projects With Sphinx and Read the Docs</a></p>
<p>In this video series, you’ll create project documentation from scratch using Sphinx, the de facto standard for Python. You’ll also hook your code repository up to Read the Docs to automatically build and publish your code documentation.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:28 – Python 3.12.12, 3.11.14, 3.10.19 and 3.9.24 now available</li>
<li>00:03:08 – Python 3.13.9 is now available</li>
<li>00:03:26 – Python 3.15.0 alpha 1</li>
<li>00:04:02 – PEP 804: An External Dependency Registry and Name Mapping Mechanism</li>
<li>00:04:56 – PEP 806: Mixed Sync/Async Context Managers With Precise Async Marking</li>
<li>00:06:34 – PEP 807: Index Support for Trusted Publishing</li>
<li>00:07:21 – PEP 809: Stable ABI for the Future</li>
<li>00:08:10 – PEP 810: Explicit Lazy Imports </li>
<li>00:10:31 – Python lazy imports you can use today</li>
<li>00:10:48 – Lazy Imports Using wrapt</li>
<li>00:11:18 – Python 3.14 Is Here. How Fast Is It?</li>
<li>00:17:45 – Free-Threaded Python Library Compatibility Checker</li>
<li>00:19:54 – Scaling Asyncio on Free-Threaded Python</li>
<li>00:24:06 – Real Python 3.14 Resources</li>
<li>00:25:18 – Video Course Spotlight</li>
<li>00:26:31 – Intro to NiceGUI: Build Interactive Python Web Apps</li>
<li>00:30:22 – What Is “Good Taste” in Software Engineering?</li>
<li>00:40:52 – Try Sphinx Docs Instantly in Your Browser</li>
<li>00:43:11 – Introducing tdom: HTML Templating With t‑strings</li>
<li>00:46:21 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://pythoninsider.blogspot.com/2025/10/python-31212-31114-31019-and-3924-are.html">Python Insider: Python 3.12.12, 3.11.14, 3.10.19 and 3.9.24 are now available!</a></li>
<li><a href="https://pythoninsider.blogspot.com/2025/10/python-3139-is-now-available.html">Python Insider: Python 3.13.9 is now available!</a></li>
<li><a href="https://pythoninsider.blogspot.com/2025/10/python-3150-alpha-1.html">Python Insider: Python 3.15.0 alpha 1</a></li>
<li><a href="https://peps.python.org/pep-0804/">PEP 804: An External Dependency Registry and Name Mapping Mechanism (Added)</a></li>
<li><a href="https://peps.python.org/pep-0806/">PEP 806: Mixed Sync/Async Context Managers With Precise Async Marking (Added)</a></li>
<li><a href="https://peps.python.org/pep-0807/">PEP 807: Index Support for Trusted Publishing (Added)</a></li>
<li><a href="https://peps.python.org/pep-0809/">PEP 809: Stable ABI for the Future (Added)</a></li>
<li><a href="https://peps.python.org/pep-0810/">PEP 810: Explicit Lazy Imports (Added)</a></li>
<li><a href="https://pythontest.com/python-lazy-imports-now/">Python lazy imports you can use today - PythonTest</a></li>
<li><a href="https://grahamdumpleton.me/posts/2025/10/lazy-imports-using-wrapt/">Lazy Imports Using <code>wrapt</code></a> – PEP 810 proposes adding explicit lazy imports to Python, but you can already achieve this with third-party libraries. This post shows you how using <code>wrapt</code>.</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://blog.miguelgrinberg.com/post/python-3-14-is-here-how-fast-is-it">Python 3.14 Is Here. How Fast Is It?</a> – A comprehensive deep-dive comparison of performance figures between Python versions and variations, including the JIT and free-threaded mode.</li>
<li><a href="https://ft-checker.com/">Free-Threaded Python Library Compatibility Checker</a> – A heat map and table summarizing Python free-threaded compatibility in a variety of common Python packages.</li>
<li><a href="https://blog.changs.co.uk/python-314-3-asyncio-changes.html">Python 3.14: 3 <code>asyncio</code> Changes</a> – <code>asyncio</code> changes are often overlooked. In the latest 3.14 release, there are three new <code>asyncio</code> features and changes.</li>
<li><a href="https://labs.quansight.org/blog/scaling-asyncio-on-free-threaded-python">Scaling Asyncio on Free-Threaded Python</a> – A recap of the work done in Python 3.14 to enable <code>asyncio</code> to scale on the free-threaded build of CPython.</li>
<li><a href="https://hazimed.com/2025/09/13/meet-nicegui-the-nice-guy-of-python-web-frameworks/">Intro to NiceGUI: Build Interactive Python Web Apps</a> – Use <code>NiceGUI</code> to turn Python scripts into interactive web apps without touching HTML, CSS, or JavaScript.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://www.seangoedecke.com/taste/">What Is “Good Taste” in Software Engineering?</a> – This opinion piece discusses the difference between skill and taste when writing software. What counts as “clean code” for one person may not be the same for another.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://snippets.documatt.com/">Try Sphinx Docs Instantly in Your Browser</a></li>
<li><a href="https://davepeck.org/2025/09/22/introducing-tdom-html-templating-with-python-t-strings/">Introducing <code>tdom</code>: HTML Templating With t‑strings</a> – Python 3.14 introduces t-strings, and this article showcases <code>tdom</code>, a new HTML DOM toolkit that takes advantage of them to produce safer output.</li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://blog.miguelgrinberg.com/post/benchmarking-micropython">Benchmarking MicroPython - miguelgrinberg.com</a></li>
<li><a href="https://blog.miguelgrinberg.com/post/is-python-really-that-slow">Is Python Really That Slow? - miguelgrinberg.com</a></li>
<li><a href="https://en.wikipedia.org/wiki/Bubble_sort">Bubble sort - Wikipedia</a></li>
<li><a href="https://en.wikipedia.org/wiki/Fibonacci_sequence">Fibonacci sequence - Wikipedia</a></li>
<li><a href="https://realpython.com/python314-new-features/">Python 3.14: Cool New Features for You to Try – Real Python</a></li>
<li><a href="https://realpython.com/courses/whats-new-python-314/">What’s New in Python 3.14 – Real Python</a></li>
<li><a href="https://realpython.com/python-repl-autocompletion-highlighting/">Python 3.14 Preview: REPL Autocompletion and Highlighting – Real Python</a></li>
<li><a href="https://realpython.com/python313-repl/">Python 3.13 Preview: A Modern REPL – Real Python</a></li>
<li><a href="https://realpython.com/python-annotations/">Python 3.14 Preview: Lazy Annotations – Real Python</a></li>
<li><a href="https://realpython.com/python314-error-messages/">Python 3.14 Preview: Better Syntax Error Messages – Real Python</a></li>
<li><a href="https://realpython.com/python-t-strings/">Python 3.14 Preview: Template Strings (T-Strings) – Real Python</a></li>
<li><a href="https://realpython.com/python313-free-threading-jit/">Python 3.13: Free Threading and a JIT Compiler – Real Python</a></li>
<li><a href="https://quasar.dev/">Quasar Framework</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/building-gui-application-tkinter/">Building a Python GUI Application With Tkinter</a></li>
<li><a href="https://realpython.com/courses/python-sphinx/">Documenting Python Projects With Sphinx and Read the Docs</a></li>
<li><a href="https://realpython.com/courses/whats-new-python-314/">What's New in Python 3.14</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Python 3.14: Exploring the New Features
<p>Python 3.14 is here! Christopher Trudeau returns to discuss the new version with Real Python team member Bartosz Zaczyński. This year, Bartosz coordinated the series of preview articles with members of the Real Python team and wrote the showcase tutorial, “Python 3.14: Cool New Features for You to Try.” Christopher’s video course, “What’s New in Python 3.14”, covers the topics from the article and shows the new features in action.</p>
<p>Christopher and Bartosz dug into the new release to create code examples showcasing the new features for the tutorial and course. We look at the enhanced and more colorful REPL experience, better error messages, safer hooks for live debugging, and deferred annotation evaluation. We also discuss template strings, Zstandard compression, and multiple performance improvements.</p>
<p>We share our thoughts on the updates and offer advice about incorporating them into your projects. We also discuss when you should start running Python 3.14.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/whats-new-python-314/">What’s New in Python 3.14</a></p>
<p>Covers Python 3.14’s key changes: free-threading, subinterpreters, t-strings, lazy annotations, new REPL features, and improved error messages.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:03 – Cool New Features for You to Try - Tutorial</li>
<li>00:02:20 – What’s New in Python 3.14 - Video Course</li>
<li>00:02:54 – Even Friendlier Python REPL</li>
<li>00:05:05 – Allow “json” instead of “json.tool”</li>
<li>00:05:49 – Zstandard compression</li>
<li>00:06:37 – Working With Numbers</li>
<li>00:11:09 – Deferred Evaluation of Annotations</li>
<li>00:17:35 – More Helpful Error Messages</li>
<li>00:20:41 – Warnings in try…finally Blocks</li>
<li>00:22:08 – Safer Live Process Debugging</li>
<li>00:25:22 – Pathlib Improvements</li>
<li>00:26:50 – Additional assert methods for unittest</li>
<li>00:27:19 – Template Strings (T-strings)</li>
<li>00:31:01 – Free-threaded Build Updates</li>
<li>00:35:30 – Incremental Garbage Collector</li>
<li>00:37:59 – functools partial & placeholder improvement</li>
<li>00:40:13 – Video Course Spotlight</li>
<li>00:41:12 – Experimental JIT Builds</li>
<li>00:46:52 – Parallel Subinterpreters</li>
<li>00:48:59 – Unicode Database Update</li>
<li>00:49:47 – 𝜋thon - Easter Egg</li>
<li>00:51:26 – Starting to use the new version</li>
<li>00:55:26 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/python314-new-features/">Python 3.14: Cool New Features for You to Try – Real Python</a></li>
<li><a href="https://realpython.com/courses/whats-new-python-314/">What’s New in Python 3.14</a></li>
<li><a href="https://realpython.com/python-repl-autocompletion-highlighting/">Python 3.14 Preview: REPL Autocompletion and Highlighting – Real Python</a></li>
<li><a href="https://realpython.com/python313-repl/">Python 3.13 Preview: A Modern REPL – Real Python</a></li>
<li><a href="https://github.com/python/cpython/issues/122873">Allow “-m json” instead of “-m json.tool” · Issue #122873</a></li>
<li><a href="https://docs.python.org/3.14/library/compression.zstd.html">compression.zstd — Compression compatible with the Zstandard format — Python 3.14.0 documentation</a></li>
<li><a href="https://realpython.com/python-annotations/">Python 3.14 Preview: Lazy Annotations – Real Python</a></li>
<li><a href="https://realpython.com/python314-error-messages/">Python 3.14 Preview: Better Syntax Error Messages – Real Python</a></li>
<li><a href="https://docs.python.org/3/whatsnew/3.14.html#pep-765-control-flow-in-finally-blocks">PEP 765: Control flow in finally blocks — Python 3.14.0 documentation</a></li>
<li><a href="https://docs.python.org/3.14/howto/remote_debugging.html#remote-debugging">Remote debugging attachment protocol — Python 3.14.0 documentation</a></li>
<li><a href="https://realpython.com/python-t-strings/">Python 3.14 Preview: Template Strings (T-Strings)</a></li>
<li><a href="https://github.com/python/cpython/issues/119127">functools.partial placeholders · Issue #119127</a></li>
<li><a href="https://github.com/python/cpython/blob/3.14/InternalDocs/garbage_collector.md">garbage_collector Internal Docs at 3.14</a></li>
<li><a href="https://realpython.com/python313-free-threading-jit/">Python 3.13: Free Threading and a JIT Compiler</a></li>
<li><a href="https://docs.python.org/3/whatsnew/3.14.html#pep-734-multiple-interpreters-in-the-standard-library">Multiple interpreters in the standard library — Python 3.14.0 documentation</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://docs.python.org/3/whatsnew/3.14.html#pep-784-zstandard-support-in-the-standard-library">PEP 784: Zstandard support in the standard library - Python 3.14.0 documentation</a></li>
<li><a href="https://realpython.com/podcasts/rpp/262/">Episode #262: Travis Oliphant: SciPy, NumPy, and Fostering Scientific Python</a></li>
<li><a href="https://realpython.com/python-complex-numbers/">Simplify Complex Numbers With Python – Real Python</a></li>
<li><a href="https://realpython.com/courses/pathlib-python/">Using Python’s pathlib Module – Real Python</a></li>
<li><a href="https://realpython.com/courses/exploring-t-strings/">Exploring Python T-Strings – Video Course</a></li>
<li><a href="https://realpython.com/python313-free-threading-jit/">Python 3.13 Preview: Free Threading and a JIT Compiler – Real Python</a></li>
<li><a href="https://py-free-threading.github.io/tracking/">Compatibility Status Tracking - Python Free-Threading Guide</a></li>
<li><a href="https://pypy.org/">PyPy</a></li>
<li><a href="https://realpython.com/lessons/functools-module/">functools Module (Video) – Real Python</a></li>
<li><a href="https://realpython.com/python312-subinterpreters/">Python 3.12 Preview: Subinterpreters – Real Python</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/new-features-python-313/">What's New in Python 3.13</a></li>
<li><a href="https://realpython.com/courses/whats-new-python-314/">What's New in Python 3.14</a></li>
<li><a href="https://realpython.com/courses/new-features-python-312/">What's New in Python 3.12</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Managing Feature Flags & Comparing Python Visualization Libraries
<p>What’s a good way to enable or disable code paths without redeploying the software? How can you use feature flags to toggle functionality for specific users of your application? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher shares an article exploring the use of feature flags. The piece advises targeting specific users, storing schemas, and relying on well-worn code paths. He also discusses the danger of the exponential growth of functionality tests as feature flags are added. </p>
<p>We dig into a comparison of six popular Python visualization libraries. The article provides code examples along with their respective visual output to highlight features and make selecting the optimal library for your work easier.</p>
<p>We also share several other articles and projects from the Python community, including a news roundup, benchmarking MicroPython, simplifying IPs and networks in Python, a “scream” cipher, and a browser-based graphical viewer for the output of Python’s cProfile module.</p>
<p>This episode is sponsored by InfluxData.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/astrophysics-pandas-matplotlib/">Exploring Astrophysics in Python With pandas and Matplotlib</a></p>
<p>This course uses three problems often covered in introductory astrophysics courses to explore in Python. Along the way, you’ll learn some astronomy and how to use a variety of data science libraries like NumPy, Matplotlib, pandas, and pint.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:03:04 – Python 3.14.0rc3 is go!</li>
<li>00:03:14 – Django 6.0 alpha 1 released</li>
<li>00:04:27 – PEP 782: Add PyBytesWriter C API</li>
<li>00:05:06 – PEP 794: Import Name Metadata</li>
<li>00:05:30 – PEP 803: Stable ABI for Free-Threaded Builds</li>
<li>00:05:55 – Announcing the 2025 PSF Board Election Results!</li>
<li>00:06:18 – Top 6 Python Libraries for Visualization: Which One to Use?</li>
<li>00:18:34 – Sponsor: InfluxData</li>
<li>00:19:24 – Feature Flags in Depth</li>
<li>00:22:55 – Benchmarking MicroPython</li>
<li>00:30:02 – Video Course Spotlight</li>
<li>00:31:16 – Simplify IPs, Networks, and Subnets With the <code>ipaddress</code></li>
<li>00:34:52 – SCREAM CIPHER (“ǠĂȦẶAẦ ĂǍÄẴẶȦ”</li>
<li>00:36:20 – SnakeViz: browser based graphical viewer for the output of Python’s cProfile module</li>
<li>00:40:58 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://pythoninsider.blogspot.com/2025/09/python-3140rc3-is-go.html">Python Insider: Python 3.14.0rc3 is go!</a></li>
<li><a href="https://www.djangoproject.com/weblog/2025/sep/17/django-60-alpha-released/">Django 6.0 alpha 1 released - Django</a></li>
<li><a href="https://peps.python.org/pep-0782/">PEP 782: Add PyBytesWriter C API (Final)</a></li>
<li><a href="https://peps.python.org/pep-0794/">PEP 794: Import Name Metadata (Accepted)</a></li>
<li><a href="https://peps.python.org/pep-0803/">PEP 803: Stable ABI for Free-Threaded Builds (Added)</a></li>
<li><a href="https://pyfound.blogspot.com/2025/09/announcing-2025-psf-board-election.html">Python Software Foundation News: Announcing the 2025 PSF Board Election Results!</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://codecut.ai/top-6-python-libraries-for-visualization-which-one-to-use/">Top 6 Python Libraries for Visualization: Which One to Use?</a> – The vast number of Python visualization libraries can be overwhelming. This article shows you the pros and cons of some popular libraries, including Matplotlib, seaborn, Plotly, Bokeh, Altair, and Pygal.</li>
<li><a href="https://rtpg.co/2023/11/15/feature-flags-in-depth/">Feature Flags in Depth</a> – Feature flags are a way to enable or disable blocks of code without needing to redeploy your software. This post shows you several different approaches to feature flags.</li>
<li><a href="https://blog.miguelgrinberg.com/post/benchmarking-micropython">Benchmarking MicroPython</a> – This post compares the performance of running Python on several microcontroller boards.</li>
<li><a href="https://hazimed.com/2025/09/07/hidden-python-powers-master-ips-networks-and-subnets-efficiently/">Simplify IPs, Networks, and Subnets With the <code>ipaddress</code></a> – Python’s built-in <code>ipaddress</code> module makes handling IP addresses and networks clean and reliable. This article shows how to validate, iterate, and manage addresses and subnets while avoiding common pitfalls of string-based handling.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://sethmlarson.dev/scream-cipher">SCREAM CIPHER (“ǠĂȦẶAẦ ĂǍÄẴẶȦ”)</a> – Seth discovered that Unicode has more accented “Latin capital letter A” characters than the 26 letters in the English alphabet.</li>
<li><a href="https://jiffyclub.github.io/snakeviz/">SnakeViz: browser based graphical viewer for the output of Python’s cProfile module</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/astropy-astronomy/">Using Astropy for Astronomy With Python</a></li>
<li><a href="https://realpython.com/courses/graph-data-with-python-and-ggplot/">Graph Your Data With Python and ggplot</a></li>
<li><a href="https://realpython.com/courses/astrophysics-pandas-matplotlib/">Exploring Astrophysics in Python With pandas and Matplotlib</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Python App Hosting Choices & Documenting Python's History
<p>What are your options for hosting your Python application or scripts? What are the advantages of a platform as a service, container-based hosts, or setting up a virtual machine? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent article about hosting Python applications. The piece digs into the differences between using containers or platform-provided tools to automatically configure your project. We also cover an older article listing several free hosting options for smaller projects or Python scripts.</p>
<p>The Python documentary premiered this past week, and we provide a synopsis and our thoughts. Following a similar theme, we cover our recent code conversation video course, which explores the history of Python versions and the features added across the releases.</p>
<p>We also share several other articles and projects from the Python community, including a news roundup, regex affordances, four different ways to speed up your code, a Python-based music library manager, a tool to visualize the structure of your data in Python, and a project for exploring color science in Python.</p>
<p>This episode is sponsored by InfluxData.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/history-python-versions-features/">A History of Python Versions and Features</a></p>
<p>Explore Python’s evolution from the 1990s to today with a brief history and demos of key features added throughout its lifetime.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:03:02 – PEP 728: TypedDict With Typed Extra Items</li>
<li>00:04:09 – Django security releases issued: 5.2.6, 5.1.12, and 4.2.24</li>
<li>00:04:37 – Python Type System and Tooling Survey 2025</li>
<li>00:04:56 – Python: The Documentary - An Origin Story</li>
<li>00:14:11 – A History of Python Versions and Features</li>
<li>00:16:58 – Sponsor: InfluxData</li>
<li>00:17:48 – Regex Affordances</li>
<li>00:21:34 – Where to Host Your Python App</li>
<li>00:26:48 – Best hosting platforms for Python applications and Python scripts</li>
<li>00:30:18 – Video Course Spotlight</li>
<li>00:31:59 – 330× Faster: Four Different Ways to Speed Up Your Code</li>
<li>00:37:18 – beets: Music Library Manager</li>
<li>00:39:12 – Memory Graph - GitHub</li>
<li>00:40:49 – colour: Colour Science for Python</li>
<li>00:42:35 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://peps.python.org/pep-0728/">PEP 728: TypedDict With Typed Extra Items (Accepted)</a></li>
<li><a href="https://www.djangoproject.com/weblog/2025/sep/03/security-releases/">Django security releases issued: 5.2.6, 5.1.12, and 4.2.24</a></li>
<li><a href="https://docs.google.com/forms/d/e/1FAIpQLSeOFkLutxMLqsU6GPe60OJFYVN699vqjXPtuvUoxbz108eDWQ/viewform?pli=1">Python Type System and Tooling Survey 2025</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=GfH4QL4VqJ0">Python: The Documentary - An Origin Story - YouTube</a> – “This is the story of the world’s most beloved programming language: Python. What began as a side project in Amsterdam during the 1990s became the software powering artificial intelligence, data science and some of the world’s biggest companies.”</li>
<li><a href="https://realpython.com/courses/history-python-versions-features/">A History of Python Versions and Features – Video Course</a></li>
<li><a href="https://nedbatchelder.com/blog/202504/regex_affordances.html">Regex Affordances</a> – A tour of some real code showing little-used power features of the Python regular expression module, including verbose regex syntax, calling <code>re.sub()</code> with a function reference, and more.</li>
<li><a href="https://judoscale.com/blog/where-to-host-python-app">Where to Host Your Python App</a> – Whether it’s Django, Flask, FastAPI, or some other Python web framework, your hosting options are plenty. This guide will show you how to choose.</li>
<li><a href="https://www.python-engineer.com/posts/hosting-platforms-for-python/">Best hosting platforms for Python applications and Python scripts</a></li>
<li><a href="https://pythonspeed.com/articles/different-ways-speed/">330× Faster: Four Different Ways to Speed Up Your Code</a> – There are many approaches to speeding up Python code; applying multiple approaches can make your code even faster. This post talks about four different ways you can achieve speed-up.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/beetbox/beets">beets: Music Library Manager</a></li>
<li><a href="https://github.com/bterwijn/memory_graph">Memory Graph - GitHub</a></li>
<li><a href="https://github.com/colour-science/colour">colour: Colour Science for Python</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://nedbatchelder.com/text/which-py.html">What’s in which Python - Ned Batchelder</a></li>
<li><a href="https://anvil.works/">Anvil</a></li>
<li><a href="https://www.opalstack.com/">Opalstack: Managed Hosting</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-defaultdict-type/">Handling Missing Keys With the Python defaultdict Type</a></li>
<li><a href="https://realpython.com/courses/structural-pattern-matching/">Using Structural Pattern Matching in Python</a></li>
<li><a href="https://realpython.com/courses/history-python-versions-features/">A History of Python Versions and Features</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Exploring Mixin Classes in Python
<p>What is a good way to add isolated, reusable functionality to Python classes? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher covers a recent Real Python tutorial about developing mixin classes to reuse code across multiple Python classes. He describes how mixins rely on multiple inheritance to combine features from different classes, enhancing flexibility and code reuse.</p>
<p>We also share several other articles and projects from the Python community, including a news roundup, highlights from the 2024 Python Developers Survey, reasons you might not need a Python class, an exploration of asyncio’s sharp corners, an explanation of how JIT builds of CPython work, a web-based GUI library, and a project for quickly querying Python lists.</p>
<p>This episode is sponsored by InfluxData.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/solid-principles-python/">Design and Guidance: Object-Oriented Programming in Python</a></p>
<p>In this video course, you’ll learn about the SOLID principles, which are five well-established standards for improving your object-oriented design in Python. By applying these principles, you can create object-oriented code that’s more maintainable, extensible, scalable, and testable.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:03:14 – Python 3.13.7 Released</li>
<li>00:03:38 – Python 3.14.0rc2 Released</li>
<li>00:04:10 – PEP 802: Display Syntax for the Empty Set</li>
<li>00:04:59 – Announcing the PSF Board Candidates for 2025</li>
<li>00:05:26 – Rodrigo - PSF - Community Service Award for Q2 2025</li>
<li>00:06:06 – Python Developers Survey 2024 Results</li>
<li>00:13:27 – pyx: A Python-Native Package Registry</li>
<li>00:15:12 – Test & Code Final Episode</li>
<li>00:15:48 – You Might Not Need a Python Class</li>
<li>00:20:52 – Sponsor: InfluxData</li>
<li>00:21:44 – asyncio: A Library With Too Many Sharp Corners</li>
<li>00:25:43 – How JIT Builds of CPython Actually Work</li>
<li>00:35:21 – Video Course Spotlight</li>
<li>00:37:12 – What Are Mixin Classes in Python?</li>
<li>00:44:05 – nicegui: Create Web-Based UI With Python</li>
<li>00:46:51 – leopards: Quickly query your Python lists</li>
<li>00:49:00 – Thanks and goodbye</li>
</ul>
<p>Survey:</p>
<ul>
<li><a href="https://tally.so/r/nWbKgJ">Listener Survey - Help Shape the Future of the Real Python Podcast</a></li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://docs.python.org/release/3.13.7/whatsnew/changelog.html">Python 3.13.7 Released</a></li>
<li><a href="https://pythoninsider.blogspot.com/2025/08/python-3140rc2-and-3137-are-go.html">Python 3.14.0rc2 Released</a></li>
<li><a href="https://peps.python.org/pep-0802/">PEP 802: Display Syntax for the Empty Set (Added)</a></li>
<li><a href="https://pyfound.blogspot.com/2025/08/announcing-psf-board-candidates-for-2025.html">Announcing the PSF Board Candidates for 2025</a> – The Python Software Foundation elections are upon us, and this post announces this year’s candidates. Voting is September 2nd to 16th. To vote, you must be registered by August 26th.</li>
<li><a href="https://bsky.app/profile/mathspp.com/post/3lwhb3a3gzk2d">Rodrigo - PSF - Community Service Award for Q2 2025</a></li>
<li><a href="https://lp.jetbrains.com/python-developers-survey-2024/">Python Developers Survey 2024 Results</a></li>
<li><a href="https://blog.jetbrains.com/pycharm/2025/08/the-state-of-python-2025/">The State of Python 2025 - The PyCharm Blog</a></li>
<li><a href="https://astral.sh/blog/introducing-pyx">pyx: A Python-Native Package Registry, Now in Beta</a> – The folks at Astral, who brought you uv and more, have created a new commercial Python-native package registry called “pyx”.</li>
<li><a href="https://testandcode.com/episodes/so-long-and-thanks-for-all-the-fish">Test & Code Final Episode</a> – After 10 years and 237 episodes, Brian Okken has decided to stop recording Test & Code. He’ll still be contributing to Python Bytes. Here’s to all his work on a great podcast over the last decade.</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://adamgrant.micro.blog/2025/07/24/123050.html">You Might Not Need a Python Class</a> – If you’re coming from other languages, you might think a class is the easiest way to do something, but Python has other options. This post shows you some alternatives and why you might choose them.</li>
<li><a href="https://sailor.li/asyncio"><code>asyncio</code>: A Library With Too Many Sharp Corners</a> – <code>asyncio</code> has a few gotchas and this post describes five different problems, including: cancellation, disappearing tasks, and more.</li>
<li><a href="https://savannah.dev/posts/how-your-code-runs-in-a-jit-build/">How JIT Builds of CPython Actually Work</a> – You don’t have to be a compiler engineer to understand how your code runs in a JIT build of CPython. This article runs you through just what happens under the covers.</li>
<li><a href="https://realpython.com/python-mixin/">What Are Mixin Classes in Python?</a> – Learn how to use Python mixin classes to write modular, reusable, and flexible code with practical examples and design tips.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/zauberzeug/nicegui">nicegui: Create Web-Based UI With Python</a></li>
<li><a href="https://github.com/mkalioby/leopards">leopards: Quickly query your Python lists</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/podcasts/rpp/259/">Episode #259: Design Patterns That Don’t Translate to Python</a></li>
<li><a href="https://realpython.com/podcasts/rpp/123/">Episode #123: Creating a Python Code Completer & More Abstract Syntax Tree Projects</a></li>
<li><a href="https://peps.python.org/pep-0659/">Specializing Adaptive Interpreter</a> </li>
<li><a href="https://llvm.org/">The LLVM Compiler Infrastructure Project</a></li>
<li><a href="https://peps.python.org/pep-0774/">PEP 774 – Removing the LLVM requirement for JIT builds</a></li>
<li><a href="https://www.youtube.com/watch?v=kMO3Ju0QCDo">Building a JIT compiler for CPython</a></li>
<li><a href="https://www.youtube.com/watch?v=NE-Oq8I3X_w">What they don’t tell you about building a JIT compiler for CPython</a></li>
<li><a href="https://realpython.com/quizzes/python-mixin/">Quiz: What Are Mixin Classes in Python?</a></li>
<li><a href="https://nicegui.io/">NiceGUI</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-class-object/">Class Concepts: Object-Oriented Programming in Python</a></li>
<li><a href="https://realpython.com/courses/python-class-inheritance/">Inheritance and Internals: Object-Oriented Programming in Python</a></li>
<li><a href="https://realpython.com/courses/solid-principles-python/">Design and Guidance: Object-Oriented Programming in Python</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Selecting Inheritance or Composition in Python
<p>When considering an object-oriented programming problem, should you prefer inheritance or composition? Why wouldn’t it just be simpler to use functions? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher shares an article about structuring code using inheritance, composition, or only functions. We discuss how the piece is a good exploration of the trade-offs of each solution. Unlike the tutorials beginners typically encounter while learning the fundamentals, the article goes much deeper into the “why” of object-oriented programming.</p>
<p>We also share several other articles and projects from the Python community, including a news roundup, processing audio in Python, reasons why you shouldn’t call dunder methods, smuggling arbitrary data through an emoji, an HTML to markdown converter, and a library to convert Python requests into curl commands.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/single-double-underscore-naming-conventions/">Single and Double Underscore Naming Conventions in Python</a></p>
<p>In this video course, you’ll learn a few Python naming conventions involving single and double underscores (_). You’ll learn how to use this character to differentiate between public and non-public names in APIs, write safe classes for subclassing purposes, avoid name clashes, and more.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:23 – Python 3.13.6 Released</li>
<li>00:02:47 – Django 5.2.5 Released</li>
<li>00:02:55 – Django REST Framework Release v3.16.1</li>
<li>00:03:09 – Narwhals v2.0.0 Released</li>
<li>00:03:22 – mypy 1.17 Released</li>
<li>00:03:42 – PEP 798: Unpacking in Comprehensions</li>
<li>00:04:11 – PEP 799: A Dedicated Profilers Package for Organizing Python Profiling Tools</li>
<li>00:06:12 – PyPI Users Email Phishing Attack</li>
<li>00:07:33 – Django in Action</li>
<li>00:08:00 – Call for proposals deadline - PyCon NL</li>
<li>00:08:59 – Python Audio Processing With pedalboard</li>
<li>00:18:49 – Smuggling Arbitrary Data Through an Emoji</li>
<li>00:21:53 – Don’t Call Dunder Methods</li>
<li>00:28:51 – Video Course Spotlight</li>
<li>00:30:27 – Inheritance Over Composition, Sometimes</li>
<li>00:40:03 – html-to-markdown: HTML to Markdown Converter</li>
<li>00:42:20 – curlify: A library to convert Python requests request object into curl commands</li>
<li>00:44:18 – transfunctions: Support Both Sync and Async</li>
<li>00:45:18 – Thanks and goodbye</li>
</ul>
<p>Survey:</p>
<ul>
<li><a href="https://tally.so/r/nWbKgJ">Listener Survey - Help Shape the Future of the Real Python Podcast</a></li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://docs.python.org/release/3.13.6/whatsnew/changelog.html">Python 3.13.6 Released</a></li>
<li><a href="https://docs.djangoproject.com/en/5.2/releases/5.2.5/">Django 5.2.5 Released</a></li>
<li><a href="https://github.com/encode/django-rest-framework/releases/tag/3.16.1?utm_campaign=Django%2BNewsletter&utm_medium=email&utm_source=Django_Newsletter_297">Django REST Framework Release v3.16.1</a></li>
<li><a href="https://github.com/narwhals-dev/narwhals/releases/tag/v2.0.0">Narwhals v2.0.0 Released</a></li>
<li><a href="https://mypy-lang.blogspot.com/2025/07/mypy-117-released.html">Mypy 1.17 Released</a></li>
<li><a href="https://peps.python.org/pep-0798/">PEP 798: Unpacking in Comprehensions (Added)</a></li>
<li><a href="https://peps.python.org/pep-0799/">PEP 799: A Dedicated Profilers Package for Organizing Python Profiling Tools (Added)</a></li>
<li><a href="https://blog.pypi.org/posts/2025-07-28-pypi-phishing-attack/">PyPI Users Email Phishing Attack</a> – PyPI users are being targeted by an email phishing attack attempting to trick them into logging into a fake PyPI site. This post from the Security Engineer at PyPI discusses what’s happening and what you should do about it. There’s also a <a href="https://blog.pypi.org/posts/2025-07-31-incident-report-phishing-attack/">follow-up post</a>.</li>
<li><a href="https://pycon-nl.org/call-for-papers">PyCon NL 2025 - Call for Papers</a></li>
<li><a href="https://www.manning.com/books/django-in-action">Django in Action - Christopher Trudeau - Code ladjango40</a></li>
</ul>
<p>Topics:</p>
<ul>
<li><a href="https://lwn.net/Articles/1027814/">Python Audio Processing With <code>pedalboard</code></a> – The pedalboard library for Python is aimed at audio processing of various sorts, from converting between formats to adding audio effects. This post summarizes a PyCon US talk on <code>pedalboard</code> and its uses.</li>
<li><a href="https://paulbutler.org/2025/smuggling-arbitrary-data-through-an-emoji/">Smuggling Arbitrary Data Through an Emoji</a> – Unicode includes flexibility through the use of variation selectors. These include the ability to change characters through a consecutive series of coding points. But, when used with code points that don’t need them, they’re ignored, so you can hide data in them.</li>
<li><a href="https://www.pythonmorsels.com/avoid-dunder-methods/">Don’t Call Dunder Methods</a> – It’s best to avoid calling dunder methods. It’s common to define dunder methods, but uncommon to call them directly.</li>
<li><a href="https://death.andgravity.com/over-composition">Inheritance Over Composition, Sometimes</a> – In an older post, Adrian wrote some code using inheritance. He got questions from his readers asking why it wouldn’t just be simpler to use functions. This post re-implements the code with inheritance, composition, and plain old functions, then compares the approaches.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/Goldziher/html-to-markdown">html-to-markdown: HTML to Markdown Converter</a></li>
<li><a href="https://github.com/ofw/curlify">curlify: A library to convert Python requests request object to curl command</a></li>
<li><a href="https://github.com/pomponchik/transfunctions">transfunctions: Support Both Sync and Async</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=kpKrsFqJgXc">Working with Audio in Python (feat. Pedalboard) - Peter Sobot - YouTube</a></li>
<li><a href="https://realpython.com/python-magic-methods/">Python’s Magic Methods: Leverage Their Power in Your Classes – Tutorial</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-class-object/">Class Concepts: Object-Oriented Programming in Python</a></li>
<li><a href="https://realpython.com/courses/single-double-underscore-naming-conventions/">Single and Double Underscore Naming Conventions in Python</a></li>
<li><a href="https://realpython.com/courses/python-class-inheritance/">Inheritance and Internals: Object-Oriented Programming in Python</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Design Patterns That Don't Translate to Python
<p>Do the design patterns learned in other programming languages translate to coding in Python? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher dives into an article that tackles popular object-oriented design patterns from the famous Gang of Four book. These patterns offer solutions to common coding problems, but as Christopher explores, Python often doesn’t even have the problems these solutions try to fix. He discusses several common design patterns and the simpler, more Pythonic ways to achieve the same goals.</p>
<p>We also share several other articles and projects from the Python community, including an exceptionally robust news roundup, running coverage on tests, an exploration of expert generalists, a preview of template strings from Python 3.14, a quiz on f-strings, and a project that calculates the complexity of your Python code.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/working-builtin-exceptions/">Working With Python’s Built-in Exceptions</a></p>
<p>Learn the most common built-in Python exceptions, when they occur, how to handle them, and how to raise them properly in your code.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:03 – Python 3.14.0b4 Released</li>
<li>00:02:11 – Python 3.14 release candidate 1 is go!</li>
<li>00:02:48 – PyPy v7.3.20 Release</li>
<li>00:03:00 – Textual 4.0.0 Released</li>
<li>00:03:23 – Announcing Toad - a universal UI for agentic coding in the terminal</li>
<li>00:03:42 – uv 0.8.0 Released</li>
<li>00:03:56 – Django Bugfix Release 5.2.4</li>
<li>00:04:14 – Django Community Ecosystem</li>
<li>00:04:52 – Happy 20th Birthday Django!</li>
<li>00:05:31 – PyData London 2025 Videos</li>
<li>00:05:48 – PEP 792: Project Status Markers in the Simple Index</li>
<li>00:06:09 – PEP 800 – Solid bases in the type system</li>
<li>00:07:06 – Run Coverage on Tests</li>
<li>00:14:32 – Design Patterns You Should Unlearn in Python</li>
<li>00:18:13 – Video Course Spotlight</li>
<li>00:19:24 – Expert Generalists</li>
<li>00:34:42 – Python 3.14 Preview: Template Strings (T-Strings)</li>
<li>00:41:00 – fstrings.wtf - Python F-String Quiz</li>
<li>00:43:09 – complexipy: Calculate Complexity of Your Python</li>
<li>00:48:18 – Thanks and goodbye</li>
</ul>
<p>Survey:</p>
<ul>
<li><a href="https://tally.so/r/nWbKgJ">Listener Survey - Help Shape the Future of the Real Python Podcast</a></li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://www.python.org/downloads/release/python-3140b4/">Python 3.14.0b4 Released</a></li>
<li><a href="https://discuss.python.org/t/python-3-14-release-candidate-1-is-go/99754">Python 3.14 release candidate 1 is go! - Core Development - Discussions on Python.org</a></li>
<li><a href="https://pypy.org/posts/2025/07/pypy-v7320-release.html">PyPy v7.3.20 Release</a></li>
<li><a href="https://github.com/Textualize/textual/releases/tag/v4.0.0">Textual 4.0.0 Released</a></li>
<li><a href="https://willmcgugan.github.io/announcing-toad/">Announcing Toad - a universal UI for agentic coding in the terminal – Will McGugan</a></li>
<li><a href="https://github.com/astral-sh/uv/releases/tag/0.8.0"><code>uv</code> 0.8.0 Released</a></li>
<li><a href="https://www.djangoproject.com/weblog/2025/jul/02/bugfix-releases/">Django Bugfix Release 5.2.4</a></li>
<li><a href="https://www.djangoproject.com/community/ecosystem/">Django Community Ecosystem - Django</a></li>
<li><a href="https://www.djangoproject.com/weblog/2025/jul/13/happy-20th-birthday-django/">Happy 20th Birthday Django!</a></li>
<li><a href="https://www.youtube.com/watch?v=wqii_iX0RTs">Django Origins (and some things I have built with Django) - YouTube</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLGVZCDnMOq0qi19dNwAO6KxWmMqXppGpz">PyData London 2025 Videos</a></li>
<li><a href="https://peps.python.org/pep-0792/">PEP 792: Project Status Markers in the Simple Index (Accepted)</a></li>
<li><a href="https://peps.python.org/pep-0800/">PEP 800 – Solid bases in the type system</a></li>
</ul>
<p>Show Topics:</p>
<ul>
<li><a href="https://hugovk.dev/blog/2025/run-coverage-on-tests/">Run Coverage on Tests</a> – Code coverage tools tell you which parts of your programs got executed during test runs. They’re an important part of your test suite, and without them, you may miss errors in your tests themselves. This post has two quick examples of just why you should use a coverage tool.</li>
<li><a href="https://www.lihil.cc/blog/design-patterns-you-should-unlearn-in-python-part1">Design Patterns You Should Unlearn in Python</a> – The Gang of Four design patterns specify object-oriented solutions to common issues in code, but Python doesn’t have many of the problems the solutions are aiming to solve. This article talks about some of the common patterns and the easier ways to solve the problems they intend to address in Python. See also <a href="https://www.lihil.cc/blog/design-patterns-you-should-unlearn-in-python-part2">Part 2</a>.</li>
<li><a href="https://martinfowler.com/articles/expert-generalist.html">Expert Generalists – MartinFowler.com</a> – “As computer systems get more sophisticated we’ve seen a growing trend to value deep specialists. But we’ve found that our most effective colleagues have a skill in spanning many specialties.”</li>
<li><a href="https://realpython.com/python-t-strings/">Python 3.14 Preview: Template Strings (T-Strings)</a> – Python 3.14 introduces t-strings: a safer, more flexible alternative to f-strings. Learn how to process templates securely and customize string workflows.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://fstrings.wtf/">fstrings.wtf - Python F-String Quiz</a></li>
<li><a href="https://github.com/rohaquinlop/complexipy">complexipy: Calculate Complexity of Your Python</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Design_Patterns">Design Patterns - Gang of Four - Wikipedia</a></li>
<li><a href="https://realpython.com/podcasts/rpp/117/">Episode #117: Measuring Python Code Quality, Simplicity, and Maintainability</a></li>
<li><a href="https://realpython.com/podcasts/rpp/176/">Episode #176: Building Python Best Practices and Fundamental Skills</a></li>
<li><a href="https://en.wikipedia.org/wiki/Cyclomatic_complexity">Cyclomatic complexity - Wikipedia</a></li>
<li><a href="https://www.sonarsource.com/docs/CognitiveComplexity.pdf">Cognitive Complexity: A new way of measuring understandability - SonarSource</a></li>
<li><a href="https://tally.so/r/nWbKgJ">Listener Survey - Help Shape the Future of the Real Python Podcast</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/working-builtin-exceptions/">Working With Python's Built-in Exceptions</a></li>
<li><a href="https://realpython.com/courses/testing-your-code-with-pytest/">Testing Your Code With pytest</a></li>
<li><a href="https://realpython.com/courses/python-assert-statement/">Using Python's assert to Debug and Test Your Code</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Comparing Real-World Python Performance Against Big O
<p>How does the performance of an algorithm hold up when you put it into a realistic context? Where might Python code defy Big O notation expectations when using a profiler? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher shares an article about why real-world performance often defies Big O expectations. The piece starts with a task coded in Go and then optimized from <code>O(n²)</code> to <code>O(n)</code>. Can an interpreted language like Python compete with a compiled language? Profiling the performance of both versions provides some interesting results. </p>
<p>We also share several other articles and projects from the Python community, including a news roundup, the fastest way to detect a vowel in a string, whether Python dictionaries are ordered data structures, an overview of Python’s <code>enum</code> module, a Python client library for Google Data Commons, and a project to convert plain ASCII to “smart” punctuation.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-enum/">Building Enumerations With Python’s enum</a></p>
<p>In this video course, you’ll discover the art of creating and using enumerations of logically connected constants in Python. To accomplish this, you’ll explore the <code>Enum</code> class and other associated tools and types from the <code>enum</code> module in the Python standard library.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:12 – ruff Release 0.12.0</li>
<li>00:02:38 – streamlit Release 1.46.0</li>
<li>00:02:48 – lxml 6.0.0 Released</li>
<li>00:03:00 – PSF Board Election Schedule</li>
<li>00:03:26 – Are Python Dictionaries Ordered Data Structures?</li>
<li>00:08:59 – The Fastest Way to Detect a Vowel in a String</li>
<li>00:16:37 – Module enum Overview</li>
<li>00:24:46 – Video Course Spotlight</li>
<li>00:26:24 – O(no) You Didn’t</li>
<li>00:38:34 – New Python Client Library for Google Data Commons</li>
<li>00:41:55 – smartypants.py: Plain ASCII to “Smart” Punctuation</li>
<li>00:44:07 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://github.com/astral-sh/ruff/releases/tag/0.12.0"><code>ruff</code> Release 0.12.0</a></li>
<li><a href="https://github.com/streamlit/streamlit/releases/tag/1.46.0"><code>streamlit</code> Release 1.46.0</a></li>
<li><a href="https://github.com/lxml/lxml/releases/tag/lxml-6.0.0"><code>lxml</code> 6.0.0 Released</a></li>
<li><a href="https://pyfound.blogspot.com/2025/06/2025-psf-board-election-schedule.html">PSF Board Election Schedule</a> – It is time for the Python Software Foundation Board elections. Nominations are due by July 29th. See the article for the full election schedule and deadlines.</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://www.thepythoncodingstack.com/p/are-python-dictionaries-ordered-data">Are Python Dictionaries Ordered Data Structures?</a> – Although dictionaries have maintained insertion order since Python 3.6, they aren’t strictly speaking ordered data structures. Read on to find out why and how the edge cases can be important depending on your use case.</li>
<li><a href="https://austinhenley.com/blog/vowels.html">The Fastest Way to Detect a Vowel in a String</a> – If you need to find the vowels in a string there are several different approaches you could take. This article covers 11 different ways and how each performs.</li>
<li><a href="https://mathspp.com/blog/module-enum-overview">Module <code>enum</code> Overview</a> – This article gives an overview of the tools available in the module enum and how to use them, including Enum, auto, StrEnum, Flag, and more.</li>
<li><a href="https://mrshiny608.github.io/MrShiny608/optimisation/2025/04/22/OhNoYouDidnt.html">O(no) You Didn’t</a> – A deep dive into why real-world performance often defies Big-O expectations, and why context and profiling matter more than theoretical complexity.</li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://developers.googleblog.com/en/pythondatacommons/">New Python Client Library for Google Data Commons</a> – Google Data Commons announced the general availability of its new Python client library for the Data Commons. The goal of the library is to enhance how students, researchers, analysts, and data scientists access and leverage Data Commons.</li>
<li><a href="https://github.com/justinmayer/smartypants.py">smartypants.py: Plain ASCII to “Smart” Punctuation</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="http://betteridgeslaw.com/">Betteridge’s Law</a></li>
<li><a href="https://docs.python.org/3/library/collections.html#ordereddict-objects">collections — Container datatypes — Python 3.13.5 documentation</a></li>
<li><a href="https://realpython.com/python-ordereddict/">OrderedDict vs dict in Python: The Right Tool for the Job – Real Python</a></li>
<li><a href="https://realpython.com/python-enum/">Build Enumerations of Constants With Python’s Enum – Tutorial</a></li>
<li><a href="https://realpython.com/courses/python-enum/">Building Enumerations With Python’s enum - Video Course</a></li>
<li><a href="https://github.com/datacommonsorg/api-python/tree/master/datacommons_client">Python client library for the Data Commons</a> </li>
<li><a href="https://pycoders.com/submissions">PyCoder’s Weekly - Submit a Link</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/looping-with-python-enumerate/">Looping With Python enumerate()</a></li>
<li><a href="https://realpython.com/courses/sorting-dictionaries-keys-values-more/">Sorting Dictionaries in Python: Keys, Values, and More</a></li>
<li><a href="https://realpython.com/courses/python-enum/">Building Enumerations With Python's enum</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Building Python Best Practices and Fundamental Skills
<p>What fundamental developer skills are new Python users missing? What best practices might developers without a computer science background be lacking? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>Christopher opens our discussion by sharing a recent social media thread about teaching software engineering best practices to scientists and others without a computer science background. We talk about software design philosophy and strategies for sharing knowledge within an organization.</p>
<p>We cover the results from the sixth annual official Python Developer Survey. The survey covers Python usage, language versions, frameworks, libraries, and various demographics. We dig into the details and share our insights.</p>
<p>We also share several other articles and projects from the Python community, including a couple of release announcements, so many Python dataframes, ways to speed up your code when multiple cores aren’t an option, Python’s syntactic sugar, a computer algebra system named SymPy, the process of building a blog in Django, code metrics in Python with Radon, and a TUI app for daily writing.</p>
<p>This week’s episode is brought to you by Snyk.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-filter-function/">Filtering Iterables With Python</a></p>
<p>In this video course, you’ll learn how Python’s <code>filter()</code> works and how to use it effectively in your programs. You’ll also learn how to use list comprehension and generator expressions to replace <code>filter()</code> and make your code more Pythonic.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:25 – Django 5.0 Alpha 1 Released</li>
<li>00:03:45 – Mojo SDK Released for Linux</li>
<li>00:04:50 – Python Developers Survey 2022 Results</li>
<li>00:13:44 – Why Are There So Many Python Dataframes?</li>
<li>00:20:24 – Sponsor: Snyk</li>
<li>00:21:15 – Speeding Up Your Code When Multiple Cores Aren’t an Option</li>
<li>00:28:41 – Python Is (Mostly) Made of Syntactic Sugar</li>
<li>00:32:57 – Towards a New SymPy</li>
<li>00:36:48 – Video Course Spotlight</li>
<li>00:37:54 – Building a Blog in Django</li>
<li>00:41:22 – What are fundamental skills and best-practices that might be lacking?</li>
<li>00:55:02 – Learning About Code Metrics in Python With Radon</li>
<li>00:59:43 – words-tui: A TUI App for Daily Writing</li>
<li>01:02:34 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://www.djangoproject.com/weblog/2023/sep/18/django-50-alpha-1-released/">Django 5.0 Alpha 1 Released</a></li>
<li><a href="https://www.modular.com/blog/mojo-its-finally-here">Mojo SDK Released for Linux</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://lp.jetbrains.com/python-developers-survey-2022/">Python Developers Survey 2022 Results</a></li>
<li><a href="https://ponder.io/why-are-there-so-many-python-dataframes/">Why Are There So Many Python Dataframes?</a> – Ever wonder why there are so many ways libraries that have dataframes in Python? This article talks about the different perspectives of popular tool kits to explore why they are what they are.</li>
<li><a href="https://pythonspeed.com/articles/optimizing-dithering/">Speeding Up Your Code When Multiple Cores Aren’t an Option</a> – Parallelism isn’t the only answer: often you can optimize low-level code to get significant performance improvements.</li>
<li><a href="https://lwn.net/Articles/942767/">Python Is (Mostly) Made of Syntactic Sugar</a> – “Programming languages are often made up of a (mostly) irreducible core, with lots of sugary constructs sprinkled on top–the syntactic sugar.” This article summarizes a lot of Brett Cannon’s recent work exploring what’s sugar and what’s fundamental in Python.</li>
<li><a href="https://oscarbenjamin.github.io/blog/czi/post1.html">Towards a New SymPy</a> – SymPy is a computer algebra system, meaning that it does math on symbolic concepts. This can provide a lot more accuracy than typical floating-point mathematics found in numeric systems. This is part one of a multi-part article, explaining SymPy along with its recent improvements. <a href="https://oscarbenjamin.github.io/blog/czi/post2.html">Part two</a> discusses how SymPy handles polynomials.</li>
<li><a href="https://til.simonwillison.net/django/building-a-blog-in-django">Building a Blog in Django</a> – Very little code is needed to get a blog working using the Django framework. This post highlights what you need, including each of the key code components. There’s also an <a href="https://news.ycombinator.com/item?id=37482220">associated Hacker News discussion</a>.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://twitter.com/__mharrison__/status/1593257724397195264">What are fundamental skills and best-practices that might be lacking? - Matt Harrison</a></li>
<li><a href="https://web.stanford.edu/~ouster/cgi-bin/aposd.php">A Philosophy of Software Design - Book</a></li>
<li><a href="https://realpython.com/podcasts/rpp/49/">Episode #49: The Challenges of Developing Into a Python Professional</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://www.blog.pythonlibrary.org/2023/09/20/learning-about-code-metrics-in-python-with-radon/">Learning About Code Metrics in Python With Radon</a> – Radon is a code metrics tool. This article introduces you to it and teaches you how you can improve your code based on its measurements.</li>
<li><a href="https://github.com/anze3db/words-tui">words-tui: A TUI App for Daily Writing</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/podcasts/rpp/157/">Episode #157: Discussing Mojo & Improving Python Object-Oriented Programming</a></li>
<li><a href="https://realpython.com/podcasts/rpp/167/">Episode #167: Exploring pandas 2.0 & Targets for Apache Arrow</a></li>
<li><a href="https://realpython.com/podcasts/rpp/47/">Episode #47: Unraveling Python’s Syntax to Its Core With Brett Cannon</a></li>
<li><a href="https://realpython.com/podcasts/rpp/92/">Episode #92: Continuing to Unravel Python’s Syntactic Sugar With Brett Cannon</a></li>
<li><a href="https://realpython.com/podcasts/rpp/154/">Episode #154: Targeting WebAssembly Platforms & Distilling a Minimum Viable Python</a></li>
<li><a href="https://www.sympy.org/en/index.html">SymPy</a></li>
<li><a href="https://en.wikipedia.org/wiki/Computer_algebra_system">Computer algebra system - Wikipedia</a></li>
<li><a href="https://realpython.com/simpy-simulating-with-python/">SimPy: Simulating Real-World Processes With Python</a></li>
<li><a href="https://realpython.com/podcasts/rpp/117/">Episode #117: Measuring Python Code Quality, Simplicity, and Maintainability</a></li>
<li><a href="https://www.sonarsource.com/">Clean Code: Writing Clear, Readable, Understandable & Reliable Quality Code - Sonar</a></li>
<li><a href="https://www.youtube.com/watch?v=dqdsNoApJ80">Anthony Shaw - Wily Python: Writing simpler and more maintainable Python - PyCon 2019 - YouTube</a></li>
<li><a href="https://github.com/Textualize/textual">Textual</a></li>
<li><a href="https://nanowrimo.org/national-novel-writing-month">National Novel Writing Month</a></li>
<li><a href="https://realpython.com/podcasts/rpp/101/">Episode #101: Tools for Setting Up Python on a New Machine</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-filter-function/">Filtering Iterables With Python</a></li>
<li><a href="https://realpython.com/courses/defining-python-functions-with-optional-arguments/">Defining Python Functions With Optional Arguments</a></li>
<li><a href="https://realpython.com/courses/simulating-processes-simpy/">Simulating Real-World Processes in Python With SimPy</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Exploring the New Features of Python 3.12
<p>Python 3.12 is here! Our regular guests, Geir Arne Hjelle and Christopher Trudeau, return to discuss the new version. Geir Arne coordinated a series of preview articles with several members of the Real Python team this year, and his showcase tutorial, “Python 3.12: Cool New Features for You to Try,” came out on October 2. Christopher’s video course was posted the next day, covering the topics from the article with visual examples of Python 3.12 in action.</p>
<p>Geir Arne and Christopher collaborated to create code examples of the new features. We discuss better error messaging, more intuitive f-strings, subinterpreters, the Linux <code>perf</code> profiler, improved typing syntax, and more.</p>
<p>We dig into the updates and offer advice on incorporating them into your projects. We also consider when you should start running Python 3.12.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/new-features-python-312/">What’s New in Python 3.12</a></p>
<p>In this video course, you’ll explore the new features that Python 3.12 brings to the table. These include improved f-strings, better error messages, changes to CPython internals, additions to static typing, and more.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:15 – Preview tutorials</li>
<li>00:05:08 – Ever better error messages</li>
<li>00:10:03 – More powerful f-strings</li>
<li>00:15:46 – Comprehension inlining & additional optimizations</li>
<li>00:21:24 – Support for subinterpreters</li>
<li>00:27:55 – Support for the Linux <code>perf</code> profiler</li>
<li>00:32:02 – Immortal objects</li>
<li>00:35:01 – Video Course Spotlight</li>
<li>00:36:03 – Calendar constants for days and months</li>
<li>00:38:48 – New <code>itertools.batched()</code> for grouping Items</li>
<li>00:40:53 – Improved type variable syntax</li>
<li>00:50:51 – New <code>Path.walk()</code> for listing files in subdirectories</li>
<li>00:53:04 – Override decorator for static typing</li>
<li>00:57:36 – Advice on upgrading</li>
<li>01:03:08 – Thanks to the core developer team</li>
<li>01:04:39 – Thanks to the Real Python team and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/python312-new-features/">Python 3.12: Cool New Features for You to Try</a></li>
<li><a href="https://www.python.org/downloads/release/python-3120/">Python Release Python 3.12.0 - Python.org</a></li>
<li><a href="https://realpython.com/python312-error-messages/">Python 3.12 Preview: Ever Better Error Messages</a></li>
<li><a href="https://realpython.com/python312-f-strings/">Python 3.12 Preview: More Intuitive and Consistent F-Strings</a></li>
<li><a href="https://peps.python.org/pep-0701/">PEP 701 – Syntactic formalization of f-strings</a></li>
<li><a href="https://peps.python.org/pep-0709/">PEP 709 – Inlined comprehensions</a></li>
<li><a href="https://realpython.com/python312-subinterpreters/">Python 3.12 Preview: Subinterpreters</a></li>
<li><a href="https://peps.python.org/pep-0554/">PEP 554 – Multiple Interpreters in the Stdlib</a></li>
<li><a href="https://peps.python.org/pep-0684/">PEP 684 – A Per-Interpreter GIL</a></li>
<li><a href="https://realpython.com/python312-perf-profiler/">Python 3.12 Preview: Support For the Linux perf Profiler</a></li>
<li><a href="https://peps.python.org/pep-0683/">PEP 683 – Immortal Objects, Using a Fixed Refcount</a></li>
<li><a href="https://peps.python.org/pep-0695/">PEP 695 – Type Parameter Syntax</a></li>
<li><a href="https://realpython.com/python312-typing/">Python 3.12 Preview: Static Typing Improvements</a></li>
<li><a href="https://peps.python.org/pep-0698/">PEP 698 – Override Decorator for Static Typing</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-type-checking/">Python Type Checking</a></li>
<li><a href="https://realpython.com/courses/new-features-python-312/">What's New in Python 3.12</a></li>
<li><a href="https://realpython.com/courses/new-features-python-311/">Cool New Features in Python 3.11</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Getting Involved in Open Source & Generating QR Codes With Python
<p>Have you thought about contributing to an open-source Python project? What are possible entry points for intermediate developers? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent article by Stefanie Molin called “5 Ways to Get Started in Open Source.” Christopher shares his experience with suggesting features and potential bug fixes. We talk about common entry points for beginners and provide additional resources. </p>
<p>We cover a recent Real Python tutorial about creating QR codes with Python. The tutorial introduces the library Segno and tours the features. By working through the examples, you’ll be ready to build a QR code project yourself.</p>
<p>We also cover several other articles and projects from the Python community, including a couple of release announcements, an introduction to Python’s <code>functools</code> module, Hatch as an alternative for packaging, options for when NumPy is too slow, a simple diceware generator project, and a collection of machine learning recipes.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/caching-python-lru/">Caching in Python With <code>lru_cache</code></a> </p>
<p>Caching is an essential optimization technique. In this video course, you’ll learn how to use Python’s <code>@lru_cache</code> decorator to cache the results of your functions using the LRU cache strategy. This is a powerful technique you can use to leverage the power of caching in your implementations.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:04 – 2023 Django Developers Survey</li>
<li>00:02:36 – Python 3.12.0 Release Candidate 2 Available</li>
<li>00:03:04 – Pandas 2.1.0 Released</li>
<li>00:03:27 – PEP 713: Callable Modules - Rejected</li>
<li>00:04:52 – Generate Beautiful QR Codes With Python</li>
<li>00:10:17 – Introduction to Python’s Functools Module</li>
<li>00:14:00 – Switching to Hatch</li>
<li>00:20:08 – Video Course Spotlight</li>
<li>00:21:27 – When NumPy is too slow</li>
<li>00:26:31 – 5 Ways to Get Started in Open Source</li>
<li>00:42:28 – nodice-cli: A simple diceware generator with no dependencies</li>
<li>00:44:32 – ML-Recipes: Collection of Machine Learning Recipes</li>
<li>00:47:00 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://www.djangoproject.com/weblog/2023/sep/05/2023-django-developers-survey/">2023 Django Developers Survey</a></li>
<li><a href="https://pythoninsider.blogspot.com/2023/09/python-3120-release-candidate-2-now.html">Python 3.12.0 Release Candidate 2 Available</a></li>
<li><a href="https://pandas.pydata.org/docs/whatsnew/v2.1.0.html">Pandas 2.1.0 Released</a></li>
<li><a href="https://discuss.python.org/t/pep-713-callable-modules/26127/86">PEP 713: Callable Modules - Rejected - PEPs - Discussions on Python.org</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/python-generate-qr-code/">Generate Beautiful QR Codes With Python</a> – In this tutorial, you’ll learn how to use Python to generate QR codes, from your standard black-and-white QR codes to beautiful ones with your favorite colors. You’ll learn how to format QR codes, rotate them, and even replace the static background with moving images.</li>
<li><a href="https://florian-dahlitz.de/articles/introduction-to-pythons-functools-module">Introduction to Python’s Functools Module</a> – This article introduces you to the functions in Python’s <code>functools</code> module with real-world examples to help show you how and when to use each feature.</li>
<li><a href="https://andrich.me/2023/08/switching-to-hatch/">Switching to Hatch</a> – Oliver used Poetry for most of his projects, but he recently tried out Hatch instead. This blog post covers what it took to get things going and what features he used, including how he ditched tox.</li>
<li><a href="https://pythonspeed.com/articles/numpy-is-slow/">When NumPy is too slow</a> – NumPy is typically faster than plain Python for numeric calculations. What should you do when you find your NumPy-based code is too slow?</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://medium.com/@stefaniemolin/5-ways-to-get-started-in-open-source-4aac430828e9">5 Ways to Get Started in Open Source</a> – This article shares ideas for finding and making your first open-source contribution, using examples from contributions the author has made to various projects.</li>
<li><a href="https://opensourceevents.github.io/">The In-Person Event Handbook</a></li>
<li><a href="https://us.pycon.org/2023/events/sprints/">Development Sprints - PyCon US 2023</a></li>
<li><a href="https://hacktoberfest.com/">Hacktoberfest 2023</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/avnigo/nodice-cli">nodice-cli: A simple diceware generator with no dependencies</a></li>
<li><a href="https://github.com/rougier/ML-Recipes">ML-Recipes: Collection of Machine Learning Recipes</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/podcasts/rpp/157/">Episode #157: Discussing Mojo & Improving Python Object-Oriented Programming</a></li>
<li><a href="https://segno.readthedocs.io/en/latest/">Segno - Python QR Code and Micro QR Code encoder — Segno documentation</a></li>
<li><a href="https://realpython.com/podcasts/rpp/125/">Episode #125: Improve Matplotlib With Style Sheets & Python Async for the Web</a></li>
<li><a href="https://docs.python.org/3/library/functools.html"><code>functools</code> — Higher-order functions and operations on callable objects — Python documentation</a></li>
<li><a href="https://hatch.pypa.io/latest/">About - Hatch</a></li>
<li><a href="https://tox.wiki/en/4.11.3/">tox</a></li>
<li><a href="https://xkcd.com/936/?correct=horse&battery=staple">xkcd: Password Strength</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/building-project-documentation-mkdocs/">Building Python Project Documentation With MkDocs</a></li>
<li><a href="https://realpython.com/courses/packaging-with-pyproject-toml/">Everyday Project Packaging With pyproject.toml</a></li>
<li><a href="https://realpython.com/courses/caching-python-lru/">Caching in Python With lru_cache</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Making Each Line of Code Efficient & Python In Excel
<p>Are you writing efficient Python with as few lines of code as possible? Are you familiar with the many built-in language features that will simplify your code and make it more Pythonic? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder’s Weekly articles and projects.</p>
<p>We discuss a recent post from Bob Belderbos titled “Make Each Line Count, Keeping Things Simple in Python.” We provide many of our favorite Pythonic examples and the language mistakes that we’ve learned from. We also share multiple resources to add to your learning path.</p>
<p>Microsoft has announced a limited beta program for Python in Excel. We dig into the current details, requirements, and potential use cases.</p>
<p>We cover several other articles and projects from the Python community, including a group of announcements from the Python Software Foundation, a showcase of the Polars DataFrame library, immortal objects in Python, a code image generator Python project, an MS Paint clone in the terminal, and a Django ORM cheatsheet.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-pillow/">Process Images Using the Pillow Library and Python</a> </p>
<p>In this video course, you’ll learn how to use the Python Pillow library to deal with images and perform image processing. You’ll also explore using NumPy for further processing, including to create animations.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:10 – Python 3.12.0 release candidate 1 released</li>
<li>00:02:53 – PSF Announces New PyPI Safety & Security Engineer</li>
<li>00:03:44 – 2022 PSF Annual Report</li>
<li>00:04:13 – Pydantic has been downloaded … 1 BILLION times!</li>
<li>00:04:28 – Python Polars: A Lightning-Fast DataFrame Library</li>
<li>00:12:26 – Introducing Immortal Objects for Python</li>
<li>00:15:32 – Video Course Spotlight</li>
<li>00:17:01 – Introducing Python in Excel</li>
<li>00:26:34 – Build a Code Image Generator With Python</li>
<li>00:31:49 – Make Each Line Count, Keeping Things Simple in Python</li>
<li>00:44:08 – Textual-paint</li>
<li>00:46:04 – Django ORM Cheatsheet</li>
<li>00:49:48 – Thanks and goodbye</li>
</ul>
<p>News:</p>
<ul>
<li><a href="https://pythoninsider.blogspot.com/2023/08/python-3120-release-candidate-1-released.html">Python Insider: Python 3.12.0 release candidate 1 released</a> – “The second candidate (and the last planned release preview) is scheduled for Monday, 2023-09-04, while the official release of 3.12.0 is scheduled for Monday, 2023-10-02.”</li>
<li><a href="https://pythoninsider.blogspot.com/2023/08/python-3115-31013-3918-and-3818-is-now.html">Python 3.11.5, 3.10.13, 3.9.18, and 3.8.18 is now available - Python Insider</a></li>
<li><a href="https://pyfound.blogspot.com/2023/08/announcing-our-new-pypi-safety-security.html">PSF Announces New PyPI Safety & Security Engineer</a></li>
<li><a href="https://www.python.org/psf/annual-report/2022/">2022 PSF Annual Report</a> – The annual report from the Python Software Foundation details all the changes and events at the PSF last year.</li>
<li><a href="https://twitter.com/pydantic/status/1696564961084952736">Pydantic has been downloaded … 1 BILLION times! - Twitter</a></li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/polars-python/">Python Polars: A Lightning-Fast DataFrame Library</a> – Welcome to the world of Polars, a powerful DataFrame library for Python! In this showcase tutorial, you’ll get a hands-on introduction to Polars’ core features and see why this library is catching so much buzz.</li>
<li><a href="https://engineering.fb.com/2023/08/15/developer-tools/immortal-objects-for-python-instagram-meta/">Introducing Immortal Objects for Python</a> – This article explains immortal objects (<a href="https://peps.python.org/pep-0683/">PEP 683</a>), which are excluded from garbage collection. This causes performance and shared memory improvements for large architectures.</li>
<li><a href="https://techcommunity.microsoft.com/t5/microsoft-365-blog/introducing-python-in-excel-the-best-of-both-worlds-for-data/ba-p/3905482">Introducing Python in Excel</a> – Microsoft has announced that they’re embedding Python in Excel through a partnership with Anaconda. Read on for details.</li>
<li><a href="https://realpython.com/python-code-image-generator/">Build a Code Image Generator With Python</a> – In this step-by-step tutorial, you’ll build a code image generator that creates nice-looking images of your code snippets to share on social media. Your code image generator will be powered by the Flask web framework and include exciting packages like Pygments and Playwright.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://pybit.es/articles/make-each-line-count-keeping-things-simple-in-python/">Make Each Line Count, Keeping Things Simple in Python</a> – Simplicity is hard. This article talks briefly about how you approach coding while keeping things simple.</li>
<li><a href="https://docs.python.org/3/library/itertools.html">itertools — Functions creating iterators for efficient looping — Python documentation</a></li>
<li><a href="https://more-itertools.readthedocs.io/en/stable/">More Itertools - more-itertools 10.1.0 documentation</a></li>
<li><a href="https://realpython.com/python-enumerate/">Python <code>enumerate()</code>: Simplify Loops That Need Counters – Real Python</a></li>
<li><a href="https://realpython.com/python-all/">Python’s <code>all()</code>: Check Your Iterables for Truthiness – Real Python</a></li>
<li><a href="https://realpython.com/any-python/">How to Use <code>any()</code> in Python – Real Python</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/1j01/textual-paint">Textual-paint</a></li>
<li><a href="https://djangocentral.com/django-orm-cheatsheet/">Django ORM Cheatsheet</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://github.com/pola-rs/polars/releases/tag/py-0.19.0">Release Python Polars 0.19.0 · pola-rs/polars</a></li>
<li><a href="https://realpython.com/podcasts/rpp/140/">Episode #140: Speeding Up Your DataFrames With Polars – The Real Python Podcast</a></li>
<li><a href="https://realpython.com/podcasts/rpp/167/">Episode #167: Exploring pandas 2.0 & Targets for Apache Arrow – The Real Python Podcast</a></li>
<li><a href="https://www.youtube.com/watch?v=FbBXtqtRnWU">Introducing Python in Excel 😱 - YouTube</a></li>
<li><a href="http://hilite.me/">Source code beautifier / syntax highlighter – convert code snippets to HTML « hilite.me</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/building-a-django-user-management-system/">Building a Django User Management System</a></li>
<li><a href="https://realpython.com/courses/python-pillow/">Process Images Using the Pillow Library and Python</a></li>
<li><a href="https://realpython.com/courses/editing-excel-python-openpyxl/">Editing Excel Spreadsheets in Python With openpyxl</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>