|
|
Subscribe / Log in / New account

Python index

This indexes all articles concerning the Python programming language that we have run since 2018.

Annotations

When and how to evaluate Python annotations (June 9, 2021)

PEP 649 revisited (August 18, 2021)

Wrangling the typing PEPs (December 16, 2021)

API

Python and public APIs (July 31, 2019)

Applications

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)

Arguments

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)

Async

An introduction to asynchronous Python (June 28, 2017)

C API

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)

CircuitPython

Fun with LEDs and CircuitPython (June 4, 2019)

CircuitPython: Python for microcontrollers, simplified (August 6, 2024)

Community

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)

CPython

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)

Error messages

Improved error reporting for CPython 3.10—and beyond (May 24, 2022)

Cryptography

Python cryptography, Rust, and Gentoo (February 10, 2021)

Debugging

Treating Python's debugging woes (August 8, 2025)

Deferred computation

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)

Deprecation

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)

Development model

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)

Development process

A method for replacing Python tuple entries (March 23, 2022)

"Real" anonymous functions for Python (March 19, 2024)

Dictionaries

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

Django changes its governance (March 25, 2020)

Education

Teaching Python to kids (June 26, 2018)

Embedded

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)

Enhancements

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)

Enum

Extending Python's enums (March 24, 2021)

Exceptions

Python exception groups (March 10, 2021)

Floating point

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)

Free-threading

Getting extensions to work with free-threaded Python (June 25, 2025)

Global interpreter lock (GIL)

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)

Gilectomy

A Gilectomy update (May 16, 2018)

Governance

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)

Ideas

Python and hashing None (November 30, 2022)

Implementations

A tiny Python called Snek (January 22, 2020)

MicroPython 1.20: Python for microcontrollers (May 11, 2023)

Import

Lazy imports for Python (September 7, 2022)

The return of lazy imports for Python (December 13, 2022)

Indexing

The recurring request for keyword indexing in Python (October 28, 2020)

Inheritance

Inheritance versus composition (May 8, 2019)

Super Python (part 1) (April 19, 2022)

Super Python (part 2) (April 26, 2022)

Inline assignments

PEP 572 and decision-making in Python (June 20, 2018)

In other tools

Replacing AWK with Python in GCC? (July 25, 2018)

Testing web applications with Selenium (August 2, 2018)

IPython

Advanced computing with IPython (June 4, 2018)

JIT

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)

Lambda

Alternative syntax for Python's lambda (March 3, 2021)

"Real" anonymous functions for Python (March 19, 2024)

Language specification

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)

Large language models (LLMs)

Imitation, not artificial, intelligence (July 23, 2024)

Libraries

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

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)

Linux kernel

Accessing new kernel features from Python (July 2, 2025)

match statement

"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)

MicroPython

Micro Python on the pyboard (June 17, 2015)

MicroPython 1.20: Python for microcontrollers (May 11, 2023)

None

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)

Object model

Modifying the Python object model (May 16, 2018)

Other languages

Lua and Python (February 11, 2020)

Python cryptography, Rust, and Gentoo (February 10, 2021)

Packaging

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

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)

Performance

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

Pickles are for delis (April 23, 2014)

Insecurity and Python pickles (March 12, 2024)

Python 3

The Grumpy Editor's Python 3 experience (July 31, 2018)

Adoption

Python 3 at Facebook (June 27, 2018)

Compatibility

Postponing some feature removals in Python 3.9 (February 4, 2020)

Python Enhancement Proposals (PEP)

The PEPs of Python 3.9 (May 20, 2020)

PEP 498

Easier Python string formatting (September 10, 2015)

PEP 505

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)

PEP 554

Subinterpreters for Python (May 13, 2020)

PEP 557

Python data classes (November 29, 2017)

PEP 563

When and how to evaluate Python annotations (June 9, 2021)

Wrangling the typing PEPs (December 16, 2021)

PEP 570

Positional-only parameters for Python (April 10, 2019)

PEP 578

O_MAYEXEC — explicitly opening files for execution (May 11, 2020)

PEP 584

The return of Python dictionary "addition" (October 29, 2019)

Toward a conclusion for Python dictionary "addition" (January 8, 2020)

PEP 594

Python and "dead" batteries (June 12, 2019)

PEP 615

Python time-zone handling (March 4, 2020)

PEP 622

"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)

PEP 634

Python structural pattern matching morphs again (December 2, 2020)

An overview of structural pattern matching for Python (May 3, 2022)

PEP 637

The recurring request for keyword indexing in Python (October 28, 2020)

PEP 649

When and how to evaluate Python annotations (June 9, 2021)

PEP 649 revisited (August 18, 2021)

Wrangling the typing PEPs (December 16, 2021)

PEP 654

Python exception groups (March 10, 2021)

PEP 668

Cooperative package management for Python (August 31, 2021)

PEP 671

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)

PEP 675

A literal string type for Python (April 13, 2022)

PEP 684

A per-interpreter GIL (August 15, 2023)

PEP 690

Lazy imports for Python (September 7, 2022)

The return of lazy imports for Python (December 13, 2022)

PEP 701

Formalizing f-strings (January 10, 2023)

PEP 703

GIL removal and the Faster CPython project (August 2, 2023)

CPython without a global interpreter lock (August 9, 2023)

PEP 726

Altering Python attribute handling for modules (September 6, 2023)

PEP 750

Custom string formatters in Python (August 16, 2024)

A revamped Python string-formatting proposal (January 22, 2025)

PEP 8

Applying PEP 8 (September 8, 2021)

Python identifiers, PEP 8, and consistency (November 30, 2021)

Python Language Summit

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)

Regular expressions

Python support for regular expressions (February 22, 2022)

Release model

Shortening the Python release schedule (May 23, 2018)

More frequent Python releases? (June 19, 2019)

Changing the Python release cadence (October 23, 2019)

Releases

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)

Scientific computing

Doing symbolic math with SymPy (December 22, 2020)

An introduction to SciPy (January 19, 2021)

NumPy 1.20 has been released (February 23, 2021)

Security

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)

Sets

Python sets, frozensets, and literals (January 18, 2022)

An ordered set for Python? (October 26, 2022)

Python and hashing None (November 30, 2022)

Simplifying

Python first() (January 1, 2020)

Standard library

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)

Static typing

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)

Strings

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)

Subinterpreters

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()

Super Python (part 1) (April 19, 2022)

Super Python (part 2) (April 26, 2022)

Tuples

A method for replacing Python tuple entries (March 23, 2022)

Virtual environments

Python virtual environments (June 13, 2018)

Web

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)


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds