Python index
When and how to evaluate Python annotations (June 9, 2021)
PEP 649 revisited (August 18, 2021)
Wrangling the typing PEPs (December 16, 2021)
Python and public APIs (July 31, 2019)
A new free-software forge: sr.ht (January 8, 2019)
A kernel debugger in Python: drgn (May 29, 2019)
Home Assistant, the Python IoT hub (June 10, 2020)
Roundup: managing issues for 20 years (September 14, 2021)
Using drgn on production kernels (November 28, 2023)
Indico: event management using Python (August 13, 2025)
Positional-only parameters for Python (April 10, 2019)
Late-bound argument defaults for Python (November 10, 2021)
From late-bound arguments to deferred computation, part 1 (August 16, 2022)
From late-bound arguments to deferred computation, part 2 (August 24, 2022)
Implicit keyword arguments for Python (November 1, 2023)
An introduction to asynchronous Python (June 28, 2017)
HPy: a better C API for Python? (March 31, 2021)
Using the limited C API for the Python stdlib? (September 20, 2023)
Progress on no-GIL CPython (October 10, 2023)
Progress in wrangling the Python C API (November 7, 2023)
Fun with LEDs and CircuitPython (June 4, 2019)
CircuitPython: Python for microcontrollers, simplified (August 6, 2024)
Getting along in the Python community (June 20, 2018)
Mentoring and diversity for Python (June 20, 2018)
Kindness and open-source projects (June 29, 2018)
A mess in the Python community (September 11, 2024)
Tim Peters returns to the Python community (December 23, 2024)
New terms of service for PyPI (March 12, 2025)
On becoming a Python contributor (July 30, 2025)
A new parser for CPython (April 9, 2020)
Speeding up CPython (December 16, 2020)
Making CPython faster (June 1, 2021)
Python gets a "Developer-in-Residence" (July 28, 2021)
CPython, C standards, and IEEE 754 (March 2, 2022)
Faster CPython at PyCon, part one (May 9, 2023)
Faster CPython at PyCon, part two (May 12, 2023)
GIL removal and the Faster CPython project (August 2, 2023)
CPython without a global interpreter lock (August 9, 2023)
Python interpreter adds tail calls (February 26, 2025)
Python, tail calls, and performance (August 20, 2025)
Improved error reporting for CPython 3.10—and beyond (May 24, 2022)
Python cryptography, Rust, and Gentoo (February 10, 2021)
Treating Python's debugging woes (August 8, 2025)
Delayed execution for Python (March 15, 2017)
From late-bound arguments to deferred computation, part 1 (August 16, 2022)
From late-bound arguments to deferred computation, part 2 (August 24, 2022)
Who should see Python deprecation warnings? (December 6, 2017)
Python and "dead" batteries (June 12, 2019)
Escape sequences in Python strings (August 7, 2019)
Python discusses deprecations (December 8, 2021)
Python and deprecations redux (February 1, 2022)
Python finally offloads some batteries (March 16, 2022)
Using GitHub Issues for Python (May 22, 2018)
PEP 572 and decision-making in Python (June 20, 2018)
The PEP 572 endgame (July 18, 2018)
Corner cases and exception types (August 13, 2019)
Moving Python's bugs to GitHub (February 23, 2022)
Leaving python-dev behind (July 20, 2022)
A method for replacing Python tuple entries (March 23, 2022)
"Real" anonymous functions for Python (March 19, 2024)
New operators for Python dicts? (March 4, 2015)
Python dictionary "addition" and "subtraction" (March 13, 2019)
The return of Python dictionary "addition" (October 29, 2019)
Toward a conclusion for Python dictionary "addition" (January 8, 2020)
Django changes its governance (March 25, 2020)
Teaching Python to kids (June 26, 2018)
Micro Python on the pyboard (June 17, 2015)
Fun with LEDs and CircuitPython (June 4, 2019)
A tiny Python called Snek (January 22, 2020)
MicroPython 1.20: Python for microcontrollers (May 11, 2023)
Improving pretty-printing in Python (March 18, 2020)
Reworking StringIO concatenation in Python (April 1, 2020)
Python keyword argument auto-assignment (April 22, 2020)
Improving Python's SimpleNamespace (April 29, 2020)
The (non-)return of the Python print statement (July 1, 2020)
"Structural pattern matching" for Python, part 1 (August 5, 2020)
"Structural pattern matching" for Python, part 2 (September 1, 2020)
Alternative syntax for Python's lambda (March 3, 2021)
Applying PEP 8 (September 8, 2021)
Python sets, frozensets, and literals (January 18, 2022)
Python multi-level break and continue (August 31, 2022)
Altering Python attribute handling for modules (September 6, 2023)
Implicit keyword arguments for Python (November 1, 2023)
Extending Python's enums (March 24, 2021)
Python exception groups (March 10, 2021)
Some median Python NaNsense (January 3, 2020)
Python and the infinite (October 13, 2020)
Revisiting NaNs in Python (September 15, 2021)
CPython, C standards, and IEEE 754 (March 2, 2022)
Getting extensions to work with free-threaded Python (June 25, 2025)
A viable solution for Python concurrency (October 14, 2021)
GIL removal and the Faster CPython project (August 2, 2023)
CPython without a global interpreter lock (August 9, 2023)
Progress on no-GIL CPython (October 10, 2023)
Python subinterpreters and free-threading (August 20, 2024)
A Gilectomy update (May 16, 2018)
Python post-Guido (July 17, 2018)
Picking a governance model for Python (October 24, 2018)
Python gets a new governance model (December 18, 2018)
Python elects a steering council (February 4, 2019)
A panel with the new Python steering council (May 15, 2019)
Python and hashing None (November 30, 2022)
A tiny Python called Snek (January 22, 2020)
MicroPython 1.20: Python for microcontrollers (May 11, 2023)
Lazy imports for Python (September 7, 2022)
The return of lazy imports for Python (December 13, 2022)
The recurring request for keyword indexing in Python (October 28, 2020)
Inheritance versus composition (May 8, 2019)
Super Python (part 1) (April 19, 2022)
Super Python (part 2) (April 26, 2022)
PEP 572 and decision-making in Python (June 20, 2018)
Replacing AWK with Python in GCC? (July 25, 2018)
Testing web applications with Selenium (August 2, 2018)
Advanced computing with IPython (June 4, 2018)
Improved code generation in the CPython JIT (January 18, 2024)
Python JIT stabilization (April 25, 2024)
Adding a JIT compiler to CPython (June 18, 2024)
Following up on the Python JIT (July 14, 2025)
Alternative syntax for Python's lambda (March 3, 2021)
"Real" anonymous functions for Python (March 19, 2024)
One million ought to be enough for anybody (December 17, 2019)
A new parser for CPython (April 9, 2020)
Formalizing f-strings (January 10, 2023)
Python is (mostly) made of syntactic sugar (August 29, 2023)
Imitation, not artificial, intelligence (July 23, 2024)
Doing symbolic math with SymPy (December 22, 2020)
An introduction to SciPy (January 19, 2021)
NumPy 1.20 has been released (February 23, 2021)
A bunch of releases from the Pallets projects (May 19, 2021)
Showing up for Python in GNOME (July 31, 2024)
Python audio processing with pedalboard (July 4, 2025)
Linux distributions and Python 2 (June 11, 2018)
Revisiting PEP 394 (February 27, 2019)
Fedora mulls its "python" version (July 3, 2019)
Postponing some feature removals in Python 3.9 (February 4, 2020)
A year of Python in Fedora (January 27, 2021)
Cooperative package management for Python (August 31, 2021)
An outdated Python for openSUSE Leap (January 11, 2022)
Accessing new kernel features from Python (July 2, 2025)
"Structural pattern matching" for Python, part 1 (August 5, 2020)
"Structural pattern matching" for Python, part 2 (September 1, 2020)
Python structural pattern matching morphs again (December 2, 2020)
An overview of structural pattern matching for Python (May 3, 2022)
Micro Python on the pyboard (June 17, 2015)
MicroPython 1.20: Python for microcontrollers (May 11, 2023)
Adding None-aware operators to Python? (August 1, 2018)
Python and hashing None (November 30, 2022)
Not coalescing around None-aware (December 22, 2022)
The return of None-aware operators for Python (January 5, 2024)
Reviving None-aware operators for Python (January 17, 2025)
Modifying the Python object model (May 16, 2018)
Lua and Python (February 11, 2020)
Python cryptography, Rust, and Gentoo (February 10, 2021)
A new package index for Python (April 11, 2018)
Working toward securing PyPI downloads (December 11, 2019)
Further analysis of PyPI typosquatting (October 14, 2020)
PyTorch and the PyPI supply chain (January 11, 2023)
A survey of the Python packaging landscape (January 17, 2023)
Python packaging, visions, and unification (January 24, 2023)
Convergence in the pip and conda worlds? (February 1, 2023)
Users and Python packaging (February 8, 2023)
Python packaging targets (February 22, 2023)
Python packaging and its tools (March 1, 2023)
Namespaces for the Python Package Index (May 3, 2023)
Python, packaging, and pip—again (January 24, 2024)
Python PGP proposal poses packaging puzzles (October 21, 2024)
New terms of service for PyPI (March 12, 2025)
Recent disruptive changes from Setuptools (May 21, 2025)
Reinventing the Python wheel (July 9, 2025)
PEP 572 and decision-making in Python (June 20, 2018)
The PEP 572 endgame (July 18, 2018)
Corner cases and exception types (August 13, 2019)
Speeding up CPython (December 16, 2020)
Making CPython faster (June 1, 2021)
Modern Python performance considerations (May 4, 2022)
Faster CPython at PyCon, part one (May 9, 2023)
Faster CPython at PyCon, part two (May 12, 2023)
Improved code generation in the CPython JIT (January 18, 2024)
Python JIT stabilization (April 25, 2024)
Python interpreter adds tail calls (February 26, 2025)
Python performance myths and fairy tales (August 5, 2025)
Python, tail calls, and performance (August 20, 2025)
Pickles are for delis (April 23, 2014)
Insecurity and Python pickles (March 12, 2024)
The Grumpy Editor's Python 3 experience (July 31, 2018)
Python 3 at Facebook (June 27, 2018)
Postponing some feature removals in Python 3.9 (February 4, 2020)
Python Enhancement Proposals (PEP)
The PEPs of Python 3.9 (May 20, 2020)
Easier Python string formatting (September 10, 2015)
Adding None-aware operators to Python? (August 1, 2018)
Not coalescing around None-aware (December 22, 2022)
The return of None-aware operators for Python (January 5, 2024)
Reviving None-aware operators for Python (January 17, 2025)
Subinterpreters for Python (May 13, 2020)
Python data classes (November 29, 2017)
When and how to evaluate Python annotations (June 9, 2021)
Wrangling the typing PEPs (December 16, 2021)
Positional-only parameters for Python (April 10, 2019)
O_MAYEXEC — explicitly opening files for execution (May 11, 2020)
The return of Python dictionary "addition" (October 29, 2019)
Toward a conclusion for Python dictionary "addition" (January 8, 2020)
Python and "dead" batteries (June 12, 2019)
Python time-zone handling (March 4, 2020)
"Structural pattern matching" for Python, part 1 (August 5, 2020)
"Structural pattern matching" for Python, part 2 (September 1, 2020)
Python structural pattern matching morphs again (December 2, 2020)
Python structural pattern matching morphs again (December 2, 2020)
An overview of structural pattern matching for Python (May 3, 2022)
The recurring request for keyword indexing in Python (October 28, 2020)
When and how to evaluate Python annotations (June 9, 2021)
PEP 649 revisited (August 18, 2021)
Wrangling the typing PEPs (December 16, 2021)
Python exception groups (March 10, 2021)
Cooperative package management for Python (August 31, 2021)
Late-bound argument defaults for Python (November 10, 2021)
From late-bound arguments to deferred computation, part 1 (August 16, 2022)
From late-bound arguments to deferred computation, part 2 (August 24, 2022)
A literal string type for Python (April 13, 2022)
A per-interpreter GIL (August 15, 2023)
Lazy imports for Python (September 7, 2022)
The return of lazy imports for Python (December 13, 2022)
Formalizing f-strings (January 10, 2023)
GIL removal and the Faster CPython project (August 2, 2023)
CPython without a global interpreter lock (August 9, 2023)
Altering Python attribute handling for modules (September 6, 2023)
Custom string formatters in Python (August 16, 2024)
A revamped Python string-formatting proposal (January 22, 2025)
Applying PEP 8 (September 8, 2021)
Python identifiers, PEP 8, and consistency (November 30, 2021)
Report from the Python Language Summit (April 14, 2015)
The 2016 Python Language Summit (June 2, 2016)
The 2017 Python Language Summit (May 24, 2017)
The 2018 Python Language Summit (May 15, 2018)
Some sessions from the Python Language Summit (May 27, 2020)
Python Software Foundation (PSF)
Python gets a "Developer-in-Residence" (July 28, 2021)
Python support for regular expressions (February 22, 2022)
Shortening the Python release schedule (May 23, 2018)
More frequent Python releases? (June 19, 2019)
Changing the Python release cadence (October 23, 2019)
What's coming in Python 3.8 (July 17, 2019)
Python 3.9 is around the corner (September 22, 2020)
New features and other changes in Python 3.10 (June 23, 2021)
Python 3.12: error messages, perf support, and more (April 11, 2023)
Doing symbolic math with SymPy (December 22, 2020)
An introduction to SciPy (January 19, 2021)
NumPy 1.20 has been released (February 23, 2021)
A pair of Python vulnerabilities (February 24, 2021)
Python attributes, __slots__, and API design (July 6, 2021)
Trojan Source and Python (November 16, 2021)
A literal string type for Python (April 13, 2022)
Adding auditing to pip (August 9, 2022)
A Python security fix breaks (some) bignums (September 14, 2022)
PyTorch and the PyPI supply chain (January 11, 2023)
Python PGP proposal poses packaging puzzles (October 21, 2024)
Python sets, frozensets, and literals (January 18, 2022)
An ordered set for Python? (October 26, 2022)
Python and hashing None (November 30, 2022)
Python first() (January 1, 2020)
Unplugging old batteries (June 5, 2018)
What should be in the Python standard library? (January 9, 2019)
Python and "dead" batteries (June 12, 2019)
Python "standard" library (July 24, 2019)
Python and public APIs (July 31, 2019)
Python support for regular expressions (February 22, 2022)
Using the limited C API for the Python stdlib? (September 20, 2023)
A Python static typing update (June 12, 2018)
A literal string type for Python (April 13, 2022)
Growing pains for typing in Python (January 17, 2024)
Easier Python string formatting (September 10, 2015)
Escape sequences in Python strings (August 7, 2019)
Formalizing f-strings (January 10, 2023)
Custom string formatters in Python (August 16, 2024)
A revamped Python string-formatting proposal (January 22, 2025)
A better story for multi-core Python (July 8, 2015)
Subinterpreter support for Python (May 15, 2018)
Subinterpreters for Python (May 13, 2020)
A per-interpreter GIL (August 15, 2023)
Making multiple interpreters available to Python code (March 4, 2024)
Python subinterpreters and free-threading (August 20, 2024)
MemHive: sharing immutable data between Python subinterpreters (August 28, 2024)
Super Python (part 1) (April 19, 2022)
Super Python (part 2) (April 26, 2022)
A method for replacing Python tuple entries (March 23, 2022)
Python virtual environments (June 13, 2018)
Python and the web (July 4, 2018)
Mucking about with microframeworks (July 9, 2019)
Pyodide: Python for the browser (May 11, 2021)
A bunch of releases from the Pallets projects (May 19, 2021)
Introducing PyScript (June 22, 2022)
Microdot: a web framework for microcontrollers (January 23, 2024)
The "impossibly small" Microdot web framework (August 22, 2025)