Python Developer’s Guide¶

This guide is a comprehensive resource for contributing to Python – for both new and experienced contributors. It is maintained by the same community that maintains Python. We welcome your contributions to Python!

Status of Python branches¶ Branch Schedule Status First release End-of-life Release manager master PEP 619 features 2021-10-04 TBD Pablo Galindo Salgado 3.9 PEP 596 bugfix 2020-10-05 TBD Łukasz Langa 3.8 PEP 569 bugfix 2019-10-14 2024-10 Łukasz Langa 3.7 PEP 537 security 2018-06-27 2023-06-27 Ned Deily 3.6 PEP 494 security 2016-12-23 2021-12-23 Ned Deily 3.5 PEP 478 security 2015-09-13 2020-09-13 Larry Hastings The master branch is currently the future Python 3.10, and is the only branch that accepts new features. The latest release for each Python version can be found on the download page. Status: features: new features, bugfixes, and security fixes are accepted. prerelease: feature fixes, bugfixes, and security fixes are accepted for the upcoming feature release. bugfix: bugfixes and security fixes are accepted, new binaries are still released. (Also called maintenance mode or stable release) security: only security fixes are accepted and no more binaries are released, but new source-only versions can be released end-of-life: release cycle is frozen; no further changes can be pushed to it. Dates in italic are scheduled and can be adjusted. By default, the end-of-life is scheduled 5 years after the first release, but can be adjusted by the release manager of each branch. All Python 2 versions have reached end-of-life. See also the Development Cycle page for more information about branches.

Proposing changes to Python itself¶ Improving Python’s code, documentation and tests are ongoing tasks that are never going to be “finished”, as Python operates as part of an ever-evolving system of technology. An even more challenging ongoing task than these necessary maintenance activities is finding ways to make Python, in the form of the standard library and the language definition, an even better tool in a developer’s toolkit. While these kinds of change are much rarer than those described above, they do happen and that process is also described as part of this guide: Adding to the Stdlib

Changing the Python Language

Other Interpreter Implementations¶ This guide is specifically for contributing to the Python reference interpreter, also known as CPython (while most of the standard library is written in Python, the interpreter core is written in C and integrates most easily with the C and C++ ecosystems). There are other Python implementations, each with a different focus. Like CPython, they always have more things they would like to do than they have developers to work on them. Some major examples that may be of interest are: PyPy: A Python interpreter focused on high speed (JIT-compiled) operation on major platforms

Jython: A Python interpreter focused on good integration with the Java Virtual Machine (JVM) environment

IronPython: A Python interpreter focused on good integration with the Common Language Runtime (CLR) provided by .NET and Mono

Stackless: A Python interpreter focused on providing lightweight microthreads while remaining largely compatible with CPython specific extension modules