Improving Python Through PEPs and Protocols
<p>Have you ever been confused by the naming of modules you’re importing from a package? Is there a standard way to organize and name your Python virtual environments? This week on the show, Brett Cannon returns to discuss the Python Enhancement Proposals (PEPs) he’s been working on recently.</p>
<p>We start with PEP 794, which extends the metadata fields for Python packages to specify the import names a project provides. The metadata will help developers identify the correct project to install when they know the import name or the importable module names a project provides once installed.</p>
<p>We dive back into WebAssembly to discuss PEP 816, which specifies the WASI support in CPython releases. We also wade into the controversy around PEP 832, which proposes standards around naming and the discovery of virtual environments.</p>
<p>Brett shares his motivation for being a prolific author and supporter of PEPs. We discuss his promotion of standards and protocols to simplify the Python ecosystem for current and future developers.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/tapping-into-the-zen-of-python/">Tapping Into the Zen of Python</a></p>
<p>Explore the Zen of Python and its 19 guiding principles for writing readable, practical code. Learn its history, jokes, and meaning.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:01 – Prolific PEP creation</li>
<li>00:03:37 – Improving the future of Python through standards</li>
<li>00:09:30 – PEP 794 - Import Name Metadata</li>
<li>00:30:12 – PEP 816 - WASI (WebAssembly System Interface) Support</li>
<li>00:40:55 – Why the interest in WASI?</li>
<li>00:45:23 – Video Course Spotlight</li>
<li>00:47:07 – PEP 832 - Virtual Environment Discovery</li>
<li>01:10:02 – Type Server Protocol</li>
<li>01:17:41 – How can people follow your work online?</li>
<li>01:19:12 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://snarky.ca/">Tall, Snarky Canadian</a></li>
<li><a href="https://peps.python.org/pep-0794/">PEP 794 – Import Name Metadata</a></li>
<li><a href="https://jcgoran.github.io/2025/11/18/python-import-names.html">Towards fixing Python project names and import modules - Goran et al.</a></li>
<li><a href="https://peps.python.org/pep-0816/">PEP 816 – WASI Support</a></li>
<li><a href="https://snarky.ca/state-of-wasi-support-for-cpython-march-2026/">State of WASI support for CPython: March 2026</a></li>
<li><a href="https://peps.python.org/pep-0011/">PEP 11 – CPython platform support</a></li>
<li><a href="https://www.infoworld.com/article/4150052/how-python-is-getting-serious-about-wasm.html">PEP 816: How Python is getting serious about WASM - InfoWorld</a></li>
<li><a href="https://peps.python.org/pep-0832/">PEP 832 – Virtual environment discovery</a></li>
<li><a href="https://discuss.python.org/t/pep-832-virtual-environment-discovery/106998/51">Discussions on Python.org - PEP 832: virtual environment discovery</a></li>
<li><a href="https://github.com/microsoft/pylance-release/discussions/7180">Type Server Protocol = Abstract out type information</a></li>
<li><a href="https://github.com/microsoft/pylance-release/blob/main/docs/tsp/type-server-protocol.md">type-server-protocol.md - GitHub - microsoft/pylance-release</a></li>
<li><a href="https://opensource.snarky.ca/About+Me/Frequently+Asked+Questions">Frequently Asked Questions - Open Source by Brett Cannon</a></li>
<li><a href="https://mastodon.social/@brettcannon">Brett Cannon - mastodon.social</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/uv-vs-pip-packaging-dependency-management/">uv vs pip: Python Packaging and Dependency Management</a></li>
<li><a href="https://realpython.com/courses/tapping-into-the-zen-of-python/">Tapping Into the Zen of Python</a></li>
<li><a href="https://realpython.com/courses/writing-beautiful-python-code-pep-8/">Writing Beautiful Pythonic Code With PEP 8</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Han shot first (Friends)
Our ol’ friend, Brett Cannon, is back to talk all things Python. But first! Star Wars, Machete Order, Lost, Babylon 5, Game of Thrones, Murderbot, Ted Lasso, Project Hail Mary, David Attenborough, perpetual voice rights, and the AI uncanny valley.
Join the discussion
Changelog++ members save 4 minutes on this episode because they made the ads disappear. Join today!
Sponsors:
Namespace – Speed up your development and testing workflows using your existing tools. (Much) faster GitHub actions, Docker builds, and more. At an unbeatable price.
Tiger Data – Postgres for Developers, devices, and agents The data platform trusted by hundreds of thousands from IoT to Web3 to AI and more.
Fly.io – The home of Changelog.com — Deploy your apps close to your users — global Anycast load-balancing, zero-configuration private networking, hardware isolation, and instant WireGuard VPN connections. Push-button deployments that scale to thousands of instances. Check out the speedrun to get started in minutes.
Featuring:
Brett Cannon – Website, GitHub, LinkedIn, Bluesky, Mastodon
Jerod Santo – Website, GitHub, LinkedIn, Mastodon, X
Adam Stacoviak – Website, GitHub, LinkedIn, Mastodon, X
Show Notes:
What is the Star Wars Machete Order?
Pep 665 (lock file format)
python-build-standalone
Astral: high-performance Python tooling
Pypi: Page Not Found
Incus documentation
Python/prebuilt-cpython
Something missing or broken? PRs welcome!
#532: 2025 Python Year in Review
Python in 2025 is in a delightfully refreshing place: the GIL's days are numbered, packaging is getting sharper tools, and the type checkers are multiplying like gremlins snacking after midnight. On this episode, we have an amazing panel to give us a range of perspectives on what matter in 2025 in Python. We have Barry Warsaw, Brett Cannon, Gregory Kapfhammer, Jodie Burchell, Reuven Lerner, and Thomas Wouters on to give us their thoughts.
Episode sponsors
Seer: AI Debugging, Code talkpython26
Talk Python Courses
Links from the show
Python Software Foundation (PSF): www.python.org
PEP 810: Explicit lazy imports: peps.python.org
PEP 779: Free-threaded Python is officially supported: peps.python.org
PEP 723: Inline script metadata: peps.python.org
PyCharm: www.jetbrains.com
JetBrains: www.jetbrains.com
Visual Studio Code: code.visualstudio.com
pandas: pandas.pydata.org
PydanticAI: ai.pydantic.dev
OpenAI API docs: platform.openai.com
uv: docs.astral.sh
Hatch: github.com
PDM: pdm-project.org
Poetry: python-poetry.org
Project Jupyter: jupyter.org
JupyterLite: jupyterlite.readthedocs.io
PEP 690: Lazy Imports: peps.python.org
PyTorch: pytorch.org
Python concurrent.futures: docs.python.org
Python Package Index (PyPI): pypi.org
EuroPython: tickets.europython.eu
TensorFlow: www.tensorflow.org
Keras: keras.io
PyCon US: us.pycon.org
NumFOCUS: numfocus.org
Python discussion forum (discuss.python.org): discuss.python.org
Language Server Protocol: microsoft.github.io
mypy: mypy-lang.org
Pyright: github.com
Pylance: marketplace.visualstudio.com
Pyrefly: github.com
ty: github.com
Zuban: docs.zubanls.com
Jedi: jedi.readthedocs.io
GitHub: github.com
PyOhio: www.pyohio.org
Watch this episode on YouTube: youtube.com
Episode #532 deep-dive: talkpython.fm/532
Episode transcripts: talkpython.fm
Theme Song: Developer Rap
🥁 Served in a Flask 🎸: talkpython.fm/flasksong
---== Don't be a stranger ==---
YouTube: youtube.com/@talkpython
Bluesky: @talkpython.fm
Mastodon: @talkpython@fosstodon.org
X.com: @talkpython
Michael on Bluesky: @mkennedy.codes
Michael on Mastodon: @mkennedy@fosstodon.org
Michael on X.com: @mkennedy
Going Beyond requirements.txt With pylock.toml and PEP 751
<p>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.</p>
<p>Brett has been working on a way to move beyond the <code>requirements.txt</code> file for over six years. He was on the show previously to discuss his work on PEP 665, which was rejected. He decided to continue to push forward, authoring PEP 751 last year, which was accepted at the end of March this year.</p>
<p>The PEP calls for a new file format to record your project’s dependencies. The goal was to have a standardized immutable record for what should be installed to reproduce your project in a virtual environment. He discusses working with other packaging projects and the compromises involved in creating a standard.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-subprocess-module/">Using the Python subprocess Module</a> </p>
<p>In this video course, you’ll learn how to use Python’s subprocess module to run and control external programs from your scripts. You’ll start with launching basic processes and progress to interacting with them as they execute.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:38 – Brett’s roles within the Python community</li>
<li>00:05:41 – How to move beyond requirement.txt?</li>
<li>00:10:58 – What does the community use as project artifacts?</li>
<li>00:15:28 – Building on the success of pyproject.toml</li>
<li>00:17:44 – Introducing PEP 665</li>
<li>00:19:49 – Software Bills of Materials and security</li>
<li>00:25:20 – Back to lock files and security</li>
<li>00:31:08 – Video Course Spotlight</li>
<li>00:32:27 – Not giving up on the idea</li>
<li>00:34:01 – Leading into PEP 751</li>
<li>00:38:54 – Working toward a single multi-platform file</li>
<li>00:43:02 – The final push</li>
<li>00:48:54 – Leaving room for flexibility</li>
<li>00:53:50 – And it’s done, PEP 751 accepted unconditionally</li>
<li>00:58:06 – Keynote speaker at EuroPython 2025</li>
<li>00:58:45 – What are uv workspaces?</li>
<li>01:01:02 – Considering the use of lock files in data science</li>
<li>01:05:23 – Updates about Python for WASI and Emscripten</li>
<li>01:13:51 – Clarification on WASI </li>
<li>01:20:28 – Future conversation about Python launcher</li>
<li>01:23:04 – What are you excited about in the world of Python?</li>
<li>01:24:25 – What do you want to learn next?</li>
<li>01:28:41 – What’s the best way to follow your work online?</li>
<li>01:31:00 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://snarky.ca/">Tall, Snarky Canadian</a></li>
<li><a href="https://www.youtube.com/watch?v=wgxBHuUOmjA">BREAKING: Guido van Rossum Returns as Python’s BDFL - YouTube</a></li>
<li><a href="https://packaging.python.org/en/latest/">Python Packaging User Guide</a></li>
<li><a href="https://peps.python.org/pep-0751/">PEP 751 – A file format to record Python dependencies for installation reproducibility</a></li>
<li><a href="https://peps.python.org/pep-0665/#file-format">PEP 665 – A file format to list Python dependencies for reproducibility of an application</a></li>
<li><a href="https://packaging.python.org/en/latest/specifications/pylock-toml/#pylock-toml-spec">pylock.toml Specification - Python Packaging User Guide</a></li>
<li><a href="https://packaging.python.org/en/latest/specifications/inline-script-metadata/">Inline script metadata - Python Packaging User Guide</a></li>
<li><a href="https://peps.python.org/pep-0723/">PEP 723 – Inline script metadata</a></li>
<li><a href="https://docs.astral.sh/uv/concepts/projects/workspaces/">Using workspaces - uv</a></li>
<li><a href="https://www.youtube.com/watch?v=UTduy7Qkvk8">Do you have a flag? - Eddie Izzard - YouTube</a></li>
<li><a href="http://www.openmathlib.org/OpenBLAS/">OpenBLAS : An optimized BLAS library</a></li>
<li><a href="https://ep2025.europython.eu/">EuroPython 2025 - July 14 to 20, 2025 - Prague, Czech Republic & Remote</a></li>
<li><a href="https://bytecodealliance.org/">Bytecode Alliance</a></li>
<li><a href="https://bytecodealliance.zulipchat.com/">Recent conversations - Bytecode Alliance - Zulip</a></li>
<li><a href="https://snarky.ca/my-impressions-of-gleam/">My impressions of Gleam</a></li>
<li><a href="https://snarky.ca/my-impressions-of-rescript/">My impressions of ReScript</a></li>
<li><a href="https://exercism.org/tracks/python">Python on Exercism</a></li>
<li><a href="https://letterboxd.com/nothingbutsnark/films/">Brett Cannon’s Films - Letterboxd</a></li>
<li><a href="https://opensource.snarky.ca/About+Me/Media+I+Like">Media I Like - Open Source by Brett Cannon</a></li>
<li><a href="https://bsky.app/profile/snarky.ca">Brett Cannon (@snarky.ca) — Bluesky</a></li>
<li><a href="https://fosstodon.org/@brettcannon">Brett Cannon (@brettcannon@fosstodon.org) - Fosstodon</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/basics-exercises-install-packages-with-pip/">Python Basics Exercises: Installing Packages With pip</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/python-subprocess-module/">Using the Python subprocess Module</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
There's a whole PEP about that (Friends)
Brett Cannon (our unofficial ambassador to the Python community) is here to help alleviate our pip install anxiety. Along the way, we ask him about Python 4, removing the GIL, what he thinks about Chris Lattner’s Mojo project, Rust in the Python world & way more (of course).
Join the discussion
Changelog++ members support our work, get closer to the metal, and make the ads disappear. Join today!
Sponsors:
Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com
Fly.io – The home of Changelog.com — Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.
Typesense – Lightning fast, globally distributed Search-as-a-Service that runs in memory. You literally can’t get any faster!
Featuring:
Brett Cannon – Website, GitHub, LinkedIn, Bluesky, Mastodon
Jerod Santo – Website, GitHub, LinkedIn, Mastodon, X
Adam Stacoviak – Website, GitHub, LinkedIn, Mastodon, X
Show Notes:
In response to the Changelog #526
Raku
Perl Mongers
pipx
Ultimate Tic-Tac-Toe
Mojo.🔥
Why Mojo
Astral
RustPython: A Python Interpreter written in Rust
Something missing or broken? PRs welcome!
Virtual Environment Structure & Surveying the Packaging Ecosystem
<p>How do Python virtual environments work under the hood? How does understanding these concepts help you with managing them for your projects? This week on the show, CPython core developer Brett Cannon returns to discuss his recent articles about virtual environments and the Python packaging landscape.</p>
<p>Brett talks about his recent article “How Virtual Environments Work.” He was researching the topic to solve an issue with a Linux Python distribution that doesn’t provide the tools to create virtual environments. We talk about how he solved the problem by creating a tiny library named microvenv.</p>
<p>We also take a look at the Python packaging ecosystem. Brett talks about the early days of Python, when these tools didn’t exist. He contrasts that with the current packaging solution explosion and how each one attempts to solve unique problems. We also discuss the Python Packaging User Survey and the plans for packaging summits at PyCon US. Note that we recorded this episode two weeks before PyCon US 2023.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-repl/">Getting the Most Out of the Python Standard REPL</a></p>
<p>In this video course, you’ll learn how to use the Python standard REPL (Read-Eval-Print Loop) to run your code interactively. This tool will allow you to test new ideas, explore and experiment with new tools and libraries, refactor and debug your code, try out examples, and more.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:01:58 – Virtual environments</li>
<li>00:07:10 – PEP 704 & virtual environment workflows</li>
<li>00:26:57 – Experimenting with not including <code>pip</code> </li>
<li>00:34:44 – Video Course Spotlight</li>
<li>00:36:35 – What are you using for packaging?</li>
<li>00:43:32 – Python Packaging User Survey & the history of packaging</li>
<li>00:48:40 – Packing only gets complex when it’s not pure Python code</li>
<li>01:01:22 – Outcomes after the survey and the packaging summit</li>
<li>01:03:56 – What are you excited about in the world of Python?</li>
<li>01:05:28 – What’s something you want to learn next?</li>
<li>01:07:12 – How can people follow the work that you do?</li>
<li>01:08:14 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://snarky.ca/how-virtual-environments-work/">How virtual environments work</a></li>
<li><a href="https://peps.python.org/pep-0704/">PEP 704 – Require virtual environments by default for package installers - peps.python.org</a></li>
<li><a href="https://pypi.org/project/microvenv/">microvenv - PyPI</a></li>
<li><a href="https://github.com/brettcannon/python-launcher">python-launcher: Python launcher for Unix - GitHub</a></li>
<li><a href="https://bootstrap.pypa.io/">bootstrap.pypa.io</a></li>
<li><a href="https://snarky.ca/classifying-python-virtual-environment-workflows/">Classifying Python virtual environment workflows</a> </li>
<li><a href="https://drive.google.com/file/d/1U5d5SiXLVkzDpS0i1dJIA4Hu5Qg704T9/view">Python Packaging User Survey - Results PDF</a></li>
<li><a href="https://pradyunsg.me/blog/2023/01/21/thoughts-on-python-packaging/">Thoughts on the Python packaging ecosystem - Pradyun Gedam</a></li>
<li><a href="https://github.com/pypa/packaging">pypa/packaging: Core utilities for Python packages - GitHub</a></li>
<li><a href="https://flit.pypa.io/en/latest/">Flit 3.8.0 - Flit 3.8.0 documentation</a></li>
<li><a href="https://pypi.org/project/hatch/">hatch - PyPI</a></li>
<li><a href="https://pypi.org/project/hatchling/">hatchling - PyPI</a></li>
<li><a href="https://realpython.com/podcasts/rpp/93/">Episode #93: Launching Python, Virtual Environments, and Locking Dependencies With Brett Cannon – The Real Python Podcast</a></li>
<li><a href="https://peps.python.org/pep-0665/">PEP 665 – A file format to list Python dependencies for reproducibility of an application - peps.python.org</a></li>
<li><a href="https://www.oreilly.com/library/view/programming-rust-2nd/9781492052586/">Programming Rust, 2nd Edition</a></li>
<li><a href="https://snarky.ca/">Tall, Snarky Canadian - Brett’s Blog</a></li>
<li><a href="https://devblogs.microsoft.com/python/">Microsoft Python Blog</a></li>
<li><a href="https://code.visualstudio.com/blogs/">Visual Studio Code Blog</a></li>
<li><a href="https://fosstodon.org/@brettcannon">Brett Cannon (@brettcannon@fosstodon.org) - Mastodon</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-repl/">Getting the Most Out of the Python Standard REPL</a></li>
<li><a href="https://realpython.com/courses/working-python-virtual-environments/">Working With Python Virtual Environments</a></li>
<li><a href="https://realpython.com/courses/pypi-publish-python-package/">Publishing Python Packages to PyPI</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Targeting WebAssembly Platforms & Distilling a Minimum Viable Python
<p>Are you familiar with the different versions of WebAssembly? Could WASM be the “write once, run everywhere” solution that developers have searched for? Where does distributing Python applications fit in the narrative? This week on the show, we have CPython core developer Brett Cannon to discuss his recent articles about WebAssembly and MVPy.</p>
<p>Brett has completed his syntactic sugar series, which we discussed in a previous episode. He details the origin of the series and his process of unearthing a minimum viable version of Python. Brett shares how he updated his PyCon US talk on the subject after feedback from presenting it at PyCascades.</p>
<p>We also dig deep into WebAssembly, specifically WebAssembly System Interface (WASI). Brett explains the concept of a “platform target triple” and the importance of defining which system CPython is compiled for. We also discuss WebAssembly becoming a ubiquitous distribution system.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-basics-class/">Python Basics: Building Systems With Classes</a></p>
<p>In this video course, you’ll learn how to work with classes to build complex systems in Python. By composing classes, inheriting from other classes, and overriding class behavior, you’ll harness the power of object-oriented programming (OOP).</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:05 – PyCascades 2023 </li>
<li>00:02:56 – Using social media for polls and checking interest</li>
<li>00:06:02 – Completing the syntactic sugar blog series</li>
<li>00:15:29 – Minimum Viable Python (MVPy) and WebAssembly</li>
<li>00:19:29 – Other teams focusing on WebAssembly</li>
<li>00:21:31 – Sponsor: Courier</li>
<li>00:22:13 – Stack of technology</li>
<li>00:26:50 – WebAssembly and its platform targets</li>
<li>00:32:35 – WASI and connecting to a runtime</li>
<li>00:38:33 – Extension modules and dynamic libraries</li>
<li>00:47:29 – Overcoming road blocks and envisioning a new WASI assignment</li>
<li>00:51:51 – Video Course Spotlight</li>
<li>00:53:26 – PEP 11 & CPython platform support for WASI</li>
<li>01:03:11 – Machine-specific runtime </li>
<li>01:04:57 – Write once, run everywhere</li>
<li>01:13:14 – Talks and summits planned for PyCon 2023</li>
<li>01:18:00 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://snarky.ca/mvpy-minimum-viable-python/">MVPy: Minimum Viable Python</a></li>
<li><a href="https://us.pycon.org/2023/schedule/presentation/41/">Python’s Syntactic Sugar - PyCon US 2023</a></li>
<li><a href="https://realpython.com/podcasts/rpp/47/">Episode #47: Unraveling Python’s Syntax to Its Core With Brett Cannon – The Real Python Podcast</a></li>
<li><a href="https://snarky.ca/tag/syntactic-sugar/">syntactic sugar - Tall, Snarky Canadian</a></li>
<li><a href="https://fosstodon.org/@brettcannon">Brett Cannon (@brettcannon@fosstodon.org) - Fosstodon</a></li>
<li><a href="https://wasi.dev/">WASI - wasi.dev</a></li>
<li><a href="https://snarky.ca/webassembly-and-its-platform-targets/">WebAssembly and its platform targets</a></li>
<li><a href="https://medium.com/disney-streaming/introducing-the-disney-application-development-kit-adk-ad85ca139073">Introducing the Disney+ Application Development Kit (ADK) - Mike Hanley</a></li>
<li><a href="https://developer.fastly.com/learning/compute/">Compute@Edge services using WebAssembly - Fastly Developer Hub</a></li>
<li><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-python-web-wasm&ssr=false#overview">Experimental - Python for the Web - Visual Studio Marketplace</a></li>
<li><a href="https://peps.python.org/pep-0011/">PEP 11 – CPython platform support - peps.python.org</a></li>
<li><a href="https://snarky.ca/testing-a-project-using-the-wasi-build-of-cpython-with-pytest/">Testing a Python project using the WASI build of CPython with <code>pytest</code></a></li>
<li><a href="https://www.infoworld.com/article/3651503/the-rise-of-webassembly.html">The rise of WebAssembly - InfoWorld</a></li>
<li><a href="https://adlrocha.substack.com/p/adlrocha-can-wasm-become-the-new">Can WASM become the new Docker?</a></li>
<li><a href="https://github.com/bytecodealliance/wasmtime">bytecodealliance/wasmtime: A fast and secure runtime for WebAssembly</a></li>
<li><a href="https://emscripten.org/">Emscripten - Dev Documentation</a></li>
<li><a href="https://pyscript.net/">PyScript - Run Python in your HTML</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-basics-oop/">Python Basics: Object-Oriented Programming</a></li>
<li><a href="https://realpython.com/courses/inheritance-composition-python/">Inheritance and Composition: A Python OOP Guide</a></li>
<li><a href="https://realpython.com/courses/python-basics-class/">Python Basics: Building Systems With Classes</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Launching Python, Virtual Environments, and Locking Dependencies With Brett Cannon
<p>Would you like a simple command to launch your Python programs using the newest version of the language installed on your machine? This week on the show, we continue our conversation with Brett Cannon. Brett discusses his project, the Python Launcher for Unix.</p>
<p>We dive into Brett’s workflow to set up projects, virtual environments, and prepare for distribution. He shares some of the tools he employs and reasons for keeping things simple. </p>
<p>We also talk about PEP 665, which specifies a file format to list an application’s Python package installation requirements. Brett shares why he co-authored the PEP and a bit of the community’s reaction. It leads to a deeper conversation about going beyond ‘requirements.txt’ to lock files.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/data-viz-with-dash/">Data Visualization Interfaces in Python With Dash</a> </p>
<p>In this course, you’ll learn how to build a dashboard using Python and Dash. Dash is a framework for building data visualization interfaces. It helps data scientists build fully interactive web applications quickly.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:01:43 – Python Launcher for Unix</li>
<li>00:09:36 – Hiding a virtual environment directory</li>
<li>00:13:30 – Sponsor: Scout APM</li>
<li>00:14:17 – Environment managers and being an editor vs an IDE person</li>
<li>00:17:32 – PEP 665, lock files, and Brett’s dependency workflow</li>
<li>00:20:56 – The hurdles of source distributions and version control repositories</li>
<li>00:25:07 – Drawbacks of requirements files and standardizing lock files</li>
<li>00:28:19 – Why PEP 665 is controversial and the changes to setuptools</li>
<li>00:33:48 – Video Course Spotlight</li>
<li>00:35:16 – Are these examples of growing pains?</li>
<li>00:37:51 – Unfair comparisons to packaging in Rust or other languages</li>
<li>00:42:35 – What are you excited about in the world of Python?</li>
<li>00:43:54 – What do you want to learn next?</li>
<li>00:49:23 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://snarky.ca/introducing-the-python-launcher-for-unix/">Introducing the Python Launcher for Unix</a></li>
<li><a href="https://github.com/brettcannon/python-launcher">brettcannon/python-launcher: Python launcher for Unix</a></li>
<li><a href="https://marketplace.visualstudio.com/items?itemName=ms-python.python">Python Extension for VSCode</a></li>
<li><a href="https://flit.readthedocs.io/en/latest/rationale.html">Why use Flit? — Flit 3.5.1 documentation</a></li>
<li><a href="https://github.com/jazzband/pip-tools/">pip-tools: A set of tools to keep your pinned Python dependencies fresh.</a></li>
<li><a href="https://www.python.org/dev/peps/pep-0665/">PEP 665 – A file format to list Python dependencies for reproducibility of an application | Python.org</a></li>
<li><a href="https://docs.python.org/3/library/venv.html">venv — Creation of virtual environments — Python 3.10.1 documentation</a></li>
<li><a href="https://pypi.org/project/virtualenvwrapper/">virtualenvwrapper · PyPI</a></li>
<li><a href="https://pypi.org/project/pdm/">pdm - Python Development Master · PyPI</a></li>
<li><a href="https://pypi.org/project/pyflow/">pyflow - Streamlines working with Python projects and files · PyPI</a></li>
<li><a href="https://pypi.org/project/pipenv/">pipenv · PyPI</a></li>
<li><a href="https://snarky.ca/thoughts-on-a-tooling-workflow/">Thoughts on where tools fit into a workflow</a></li>
<li><a href="https://snarky.ca/what-to-do-when-you-botch-a-release-on-pypi/">What to do when you botch a release on PyPI</a></li>
<li><a href="https://realpython.com/python-virtual-environments-a-primer/">Python Virtual Environments: A Primer – Real Python</a></li>
<li><a href="https://blog.ganssle.io/tag/setuptools.html#summary">Why you shouldn’t invoke setup.py directly | Paul Ganssle</a></li>
<li><a href="https://github.com/ethanhs/python-wasm">python-wasm: Build scripts and configuration for building CPython for Emscripten</a></li>
<li><a href="https://pyodide.org/en/stable/">Pyodide — A Python distribution for the browser and Node.js based on WebAssembly</a></li>
<li><a href="https://webassembly.org/">WebAssembly</a></li>
<li><a href="https://www.oreilly.com/library/view/programming-rust-2nd/9781492052586/">Programming Rust, 2nd Edition</a></li>
<li><a href="https://twitter.com/brettsky/status/1481069172314550276">Brett Cannon on Twitter: “PEP 665 got rejected today 😞”</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/what-is-pip/">A Beginner's Guide to pip</a></li>
<li><a href="https://realpython.com/courses/data-viz-with-dash/">Data Visualization Interfaces in Python With Dash</a></li>
<li><a href="https://realpython.com/courses/working-with-pipenv/">Working With Pipenv</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Continuing to Unravel Python's Syntactic Sugar With Brett Cannon
<p>A year ago, we had Brett Cannon on the show to discuss his blog series about unravelling Python’s syntactic sugar. Brett has written 15 more entries in the series, and he returns to the show this week to continue our conversation. We dive into unravelling ‘async’ and ‘await’ statements and their relationship with Python’s generators.</p>
<p>While working through the series, he has uncovered some issues lying under the surface of CPython. We discuss a couple of these discoveries and how the core developers resolved them.</p>
<p>Brett was recently re-elected to the Python Steering Council, and he talks about how the current direction of the council is shifting. We also discuss how Brett uses Twitter polls to gauge community sentiment and factors it into development decisions.</p>
<p>This conversation covered so many topics that we split it into two episodes. Next week’s episode will continue our discussion.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/speed-python-concurrency/">Speed Up Python With Concurrency</a> </p>
<p>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.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:01:54 – Python Steering Council Reelection</li>
<li>00:06:06 – Python Extension for VSCode and the Language Server Protocol (LSP)</li>
<li>00:10:38 – Using twitter polls to gauge sentiment</li>
<li>00:19:19 – Sponsor: Honeybadger</li>
<li>00:20:04 – Unravelling Python’s syntactic sugar series </li>
<li>00:25:30 – The desugar GitHub repo and unearthing problems in CPython</li>
<li>00:29:48 – Why have <code>__iter__()</code> for an iterator?</li>
<li>00:32:47 – Is discovering and showcasing these “issues” stressful?</li>
<li>00:35:19 – A reverse chronology of some Python features</li>
<li>00:38:34 – How the heck does async/await work in Python</li>
<li>00:51:29 – Video Course Spotlight</li>
<li>00:52:54 – Using “spam” vs “foo” and metasyntactic variables</li>
<li>00:57:30 – Goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://discuss.python.org/t/2022-python-steering-council-election-results/12581">2022 Python Steering Council Election Results - Python.org</a></li>
<li><a href="https://microsoft.github.io/language-server-protocol/">Official Page for Language Server Protocol</a></li>
<li><a href="https://twitter.com/brettsky/status/1471264518885937152">Brett Cannon on Twitter: “If I were creating a protocol/interface for a spammy object, what naming convention would you expect?”</a></li>
<li><a href="https://realpython.com/podcasts/rpp/88/">Episode #88: Discussing Type Hints, Protocols, and Ducks in Python – The Real Python Podcast</a></li>
<li><a href="https://twitter.com/brettsky/status/1471227326797021185">Brett Cannon - Twitter Poll: “Which of these ‘pip install’ flags to you usually specify?”</a></li>
<li><a href="https://realpython.com/podcasts/rpp/47/">Episode #47: Unraveling Python’s Syntax to Its Core With Brett Cannon – The Real Python Podcast</a></li>
<li><a href="https://snarky.ca/unravelling-break-and-continue/">Unravelling ‘break’ and ‘continue’</a></li>
<li><a href="https://snarky.ca/unravelling-for-statements/">Unravelling ‘for’ statements</a></li>
<li><a href="https://github.com/brettcannon/desugar">GitHub - brettcannon/desugar: Unravelling Python source code</a></li>
<li><a href="https://snarky.ca/a-reverse-chronology-of-some-python-features/">A reverse chronology of some Python features</a></li>
<li><a href="https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/">What Color is Your Function? – journal.stuffwithstuff.com</a></li>
<li><a href="https://snarky.ca/unravelling-async-and-await/">Unravelling ‘async’ and ‘await’</a></li>
<li><a href="https://snarky.ca/how-the-heck-does-async-await-work-in-python-3-5/">How the heck does async/await work in Python 3.5?</a></li>
<li><a href="https://realpython.com/podcasts/rpp/39/">Episode #39: Generators, Coroutines, and Learning Python Through Exercises – The Real Python Podcast</a></li>
<li><a href="https://realpython.com/introduction-to-python-generators/">How to Use Generators and yield in Python – Real Python</a></li>
<li><a href="https://realpython.com/async-io-python/">Async IO in Python: A Complete Walkthrough – 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/python-for-loop/">For Loops in Python (Definite Iteration)</a></li>
<li><a href="https://realpython.com/courses/python-generators/">Python Generators 101</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>
Every commit is a gift (Interview)
Maintainer Week is finally here and we’re excited to make this an annual thing! If Maintainer Week is new to you, check out episode #442 with Josh Simmons and Kara Sowles.
Today we’re talking Brett Cannon. Brett is Dev Manager of the Python Extension for VS Code, Python Steering Council Member, and core team member for Python. He recently shared a blog post The social contract of open source, so we invited Brett to join us for Maintainer Week to discuss this topic in detail.
Thank a maintainer on us! We’re printing a limited run t-shirt that’s free for maintainers, and all you gotta do is thank them, today!
Join the discussion
Changelog++ members save 4 minutes on this episode because they made the ads disappear. Join today!
Sponsors:
InfluxDB – InfluxDB empowers developers to build IoT, analytics, and monitoring software. It’s purpose-built to handle massive volumes and countless sources of time-stamped data produced by sensors, applications, and infrastructure. Learn about the wide range of use cases of InfluxDB at influxdata.com/changelog
Retool – Retool is a low-code platform built specifically for developers that makes it fast and easy to build internal tools. Instead of building internal tools from scratch, the world’s best teams, from startups to Fortune 500s, are using Retool to power their internal apps. Learn more and try it for free at retool.com/changelog
CloudZero – For software-driven companies focused on growing margins, CloudZero is the only cloud cost intelligence platform that puts engineering in control by connecting technical decisions to business results. Visit cloudzero.com/changelog to get started.
Grafana Cloud – Our dashboard of choice Grafana is the open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Featuring:
Brett Cannon – Website, GitHub, LinkedIn, Bluesky, Mastodon
Adam Stacoviak – Website, GitHub, LinkedIn, Mastodon, X
Jerod Santo – Website, GitHub, LinkedIn, Mastodon, X
Show Notes:
The social contract of open source
github/maintainerweek
Upstream
Global Maintainer Summit also accessible via maintainerds.com
Something missing or broken? PRs welcome!
#221 Pattern matching and accepting change in Python with Brett Cannon
Topics covered in this episode:
Keeping up with Rich
12 requests per second
Python Launcher for Unix reaches RC (probably 😉)
Build a text editor with Python and curses
Pattern matching and accepting change in Python
A Quick Intro to Structural Pattern Matching in Python
Extras
Joke
See the full show notes for this episode on the website at pythonbytes.fm/221
Unraveling Python's Syntax to Its Core With Brett Cannon
<p>Do you feel like you understand how Python works under the hood? What is syntactic sugar, and how much of it should be in Python? This week on the show, we have Brett Cannon. Brett is a Python core developer and he’s been working on a series of articles where he is unraveling the syntax of Python. His series is a fantastic resource for those wanting to learn how Python is structured and works at its core.</p>
<p>Brett wants to see a version of Python that can run in web browsers, so he started to breakdown Python into its syntactic elements to try to answer the question, what are core elements of Python? His detailed series takes the reader along for the ride.</p>
<p>Brett also works at Microsoft as the dev manager for the Python extension for VS Code. Brett is also serving his third term on the Python steering council, and we discuss recent Python enhancement proposals (PEP) that the council is considering.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/cool-new-features-python-39/">Cool New Features in Python 3.9</a> </p>
<p>In this course, you’ll explore some of the coolest and most useful features in the newly released Python 3.9. You’ll learn how Python 3.9 makes it easier to work with time zones, dictionaries, decorators, and several other techniques that will make your code cleaner and more efficient.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:01:43 – Working on the Python extension for VSCode</li>
<li>00:04:17 – Microsoft and the Python community</li>
<li>00:07:19 – How long have worked on core Python? </li>
<li>00:11:49 – Ways to contribute to core Python</li>
<li>00:14:19 – Upcoming features and PEPs </li>
<li>00:15:41 – Pattern matching PEPs</li>
<li>00:17:48 – Sponsor: Digital Ocean</li>
<li>00:18:29 – Being a member of the Python Steering Council </li>
<li>00:21:10 – Unravelling Python’s syntatic sugar series</li>
<li>00:24:39 – Magic methods, dunder methods, or special methods</li>
<li>00:27:07 – Are there ways that syntatic sugar can be overused?</li>
<li>00:33:31 – WebAssembly and Python being available in the browser</li>
<li>00:45:51 – Does Circuit Python or MicroPython show a path?</li>
<li>00:52:37 – Video Course Spotlight</li>
<li>00:53:41 – Taking Python syntax down to the implementation layer</li>
<li>01:03:21 – Taking apart Python’s syntax </li>
<li>01:16:07 – What other parts of Python syntax will you be unravelling?</li>
<li>01:24:04 – What are you excited about in the world of Python?</li>
<li>01:26:46 – What do you want to learn next?</li>
<li>01:31:24 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://snarky.ca/">snarky.ca : Brett Cannon’s Blog</a></li>
<li><a href="https://snarky.ca/tag/syntactic-sugar/">syntactic sugar series: Brett Cannon’s Blog </a></li>
<li><a href="https://github.com/brettcannon/desugar">desugar: Unravelling Python’s Syntactic Sugar Source Code</a></li>
<li><a href="https://code.visualstudio.com/">Visual Studio Code</a></li>
<li><a href="https://code.visualstudio.com/docs/languages/python">Python in Visual Studio Code</a></li>
<li><a href="https://mail.python.org/mailman3/">Python Mailing Lists</a></li>
<li><a href="https://www.python.org/community/lists/">Python Community: Mailing Lists</a></li>
<li><a href="https://www.python.org/dev/peps/pep-0013/">PEP-0013 - Python Language Governance</a></li>
<li><a href="https://www.python.org/dev/peps/">PEP 0 – Index of Python Enhancement Proposals (PEPs)</a></li>
<li><a href="https://webassembly.org/">WebAssembly (WASM)</a></li>
<li><a href="https://docs.python.org/3/library/ast.html">ast — Abstract Syntax Trees: Python Documentation</a></li>
<li><a href="https://docs.pytest.org/en/stable/">pytest: helps you write better programs</a></li>
<li><a href="https://www.youtube.com/watch?v=R31NRWgoIWM">From Source to Code: How CPython’s Compiler Works - Brett Cannon - YouTube</a></li>
<li><a href="https://www.youtube.com/watch?v=Nsg886UOahw&list=PL4S0lvhXvdhIV2C28Ia_DeIeloBrsQBOW&index=2">How Import Works - Brett Cannon - PyConAr 2012</a></li>
<li><a href="https://www.youtube.com/watch?v=-Nk-8fSJM6I&list=PL4S0lvhXvdhIV2C28Ia_DeIeloBrsQBOW&index=17">Brett Cannon: Setting Expectations for Open Source Participation - PyCascade 2018</a></li>
<li><a href="https://realpython.com/inner-functions-what-are-they-good-for/">Python Inner Functions: What Are They Good For? - Real Python Article</a></li>
<li><a href="https://realpython.com/podcasts/rpp/22/">E22: Create Cross-Platform Python GUI Apps With BeeWare</a></li>
<li><a href="https://realpython.com/podcasts/rpp/18/">E18: Ten Years of Flask: Conversation With Creator Armin Ronacher</a></li>
<li><a href="https://realpython.com/podcasts/rpp/7/">E7: AsyncIO + Music, Origins of Black, and Managing Python Releases</a></li>
<li><a href="https://2021.pycascades.com/">PyCascades 2021</a></li>
<li><a href="https://elixir-lang.org/">Elixir: A Dynamic, Functional Language Designed for Building Scalable and Maintainable Applications</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-decorators-101/">Python Decorators 101</a></li>
<li><a href="https://realpython.com/courses/managing-python-dependencies/">Managing Python Dependencies</a></li>
<li><a href="https://realpython.com/courses/cool-new-features-python-39/">Cool New Features in Python 3.9</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Python's new governance and core team (Interview)
We’re talking with Brett Cannon for a behind the scenes look at Guido stepping down as Python’s BDFL (Benevolent dictator for life) and the process they had to go through to establish a new governance model, the various proposed PEPs to establish this new direction, the winning PEP, and what the future holds for Python.
Join the discussion
Changelog++ members support our work, get closer to the metal, and make the ads disappear. Join today!
Sponsors:
DigitalOcean – Check out DigitalOcean’s dedicated vCPU Droplets with dedicated vCPU threads. Get started for free with a $50 credit. Learn more at do.co/changelog.
O'Reilly Open Source Software Conference – OSCON has been ground zero for the open source community for 20 years. This year they’ve expanded to become a “software development conference” — because in 2019, software development IS open source. The program covers everything from open source, AI, infrastructure, blockchain, edge computing, architecture, and emerging languages. Use the code CHANGELOG20 to get 20% off Bronze, Silver, and Gold passes.
GoCD + Kubernetes – With GoCD running on Kubernetes, you define your build workflow and let GoCD provision and scale build infrastructure on the fly. GoCD installs as a Kubernetes native application. Scale your build infrastructure elastically. Learn more at gocd.org/kubernetes
Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com.
Featuring:
Brett Cannon – Website, GitHub, LinkedIn, Bluesky, Mastodon
Adam Stacoviak – Website, GitHub, LinkedIn, Mastodon, X
Jerod Santo – Website, GitHub, LinkedIn, Mastodon, X
Show Notes:
An update on Python’s governance
Python Enhancement Proposals (PEPs)
Condorcet Internet Voting Service
PEP 8000 - Python language governance proposal overview
PEP 8001
PEP 8002
PEP 8011
PEP 8016 (winning PEP)
Python governance vote (December 2018) results
One of Jerod’s favorite episodes of The Changelog in 2018 ~> The Changelog #318: A call for kindness in open source with Brett Cannon
Something missing or broken? PRs welcome!
#209: Inside Python's new governance model
See the full show notes for this episode on the website at talkpython.fm/209
#100 The big 100 with special guests
Topics covered in this episode:
poetry
Anthony pylama and radon
Nina Tools for teaching Python
Dan My favorite tool of 2018: “Black” code formatter by Łukasz Langa
Brett A Web without JavaScript : Russell Keith-Magee at PyCon AU
Async WebDriver implementation for asyncio and asyncio-compatible frameworks
Extras
Joke
See the full show notes for this episode on the website at pythonbytes.fm/100
A call for kindness in open source (Interview)
Adam and Jerod talk to Brett Cannon, core contributor to Python and a fantastic representative of the Python community. They talked through various details surrounding a talk and blog post he wrote titled “Setting expectations for open source participation” and covered questions like: What is the the purpose of open source? How do you sustain open source? And what’s the goal?
They even talked through typical scenarios in open source and how kindness and recognizing that there’s a human on the other end of every action can really go a long way.
Join the discussion
Changelog++ members support our work, get closer to the metal, and make the ads disappear. Join today!
Sponsors:
Vettery – Vettery helps you scale your teams by connecting you with highly qualified tech, sales & finance candidates. Download their tech salary report for 2018 with insights from tech hiring activity in New York City, San Francisco, Los Angeles, and Washington D.C. Download at vettery.com/changelog.
DigitalOcean – DigitalOcean is simplicity at scale. Whether your business is running one virtual machine or ten thousand, DigitalOcean gets out of your way so your team can build, deploy, and scale faster and more efficiently. New accounts get $100 in credit to use in your first 60 days.
Raygun – Unblock your biggest app performance bottlenecks with Raygun APM. Smarter application performance monitoring (APM) that lets you understand and take action on software issues affecting your customers.
Algolia – Our search partner. Algolia’s full suite search APIs enable teams to develop unique search and discovery experiences across all platforms and devices. We’re using Algolia to power our site search here at Changelog.com. Get started for free and learn more at algolia.com.
Featuring:
Brett Cannon – Website, GitHub, LinkedIn, Bluesky, Mastodon
Adam Stacoviak – Website, GitHub, LinkedIn, Mastodon, X
Jerod Santo – Website, GitHub, LinkedIn, Mastodon, X
Show Notes:
Setting expectations for open source participation
Benjamin Bertrand on Twitter: “Very good talk from @brettsky about interaction in open source: https://t.co/yJYfjTYPzZ I’m sure that would make an excellent @changelog episode!”
The Changelog #300: Corporate interests in open source and dev culture with Zed Shaw
Something missing or broken? PRs welcome!
#49: Microsoft's JIT-based Python Project: Pyjion
See the full show notes for this episode on the website at talkpython.fm/49
#12: Deep Dive into Modules and Packages
See the full show notes for this episode on the website at talkpython.fm/12