Code contributions¶
Important
This is part of a Draft of the Python Contributor’s Guide. Text in square brackets are notes about content to fill in. Currently, the devguide and this new Contributor’s Guide co-exist in the repo. We are using Sphinx include directives to demonstrate the re-organization. The final Contributor’s Guide will replace the devguide with content in only one place. We welcome help with this!
The [Plan for the Contributor’s Guide] page has more details about the current state of this draft and how you can help. See more info about the Contributor Guide in the discussion forum: Refactoring the DevGuide.
[The main page for code contributors.]
[We’ll include code-focused content from the main devguide page: Quick reference, Quick links, Proposing changes, and so on.]
[The existing CPython’s internals section of the devguide will be fully migrated into the Python repo.]
- Setup and building
- Git tips
- Pull request lifecycle
- Development workflow
- Following Python’s development
- Development cycle
- Adding to the stdlib
- Standard library extension modules
- Changing Python’s C API
- Changing the Python language
- Changing CPython’s grammar
- Porting to a new platform
- Software Bill-of-Materials (SBOM)
- Python Security Response Team (PSRT)
- Testing and buildbots
- Development tools
- Argument Clinic
- Background
- Reference
- Tutorial
- How-to guides
- How to rename C functions and variables generated by Argument Clinic
- How to convert functions using
PyArg_UnpackTuple
- How to use optional groups
- How to use real Argument Clinic converters, instead of “legacy converters”
- How to use the
Py_buffer
converter - How to use advanced converters
- How to assign default values to parameter
- How to use return converters
- How to clone existing functions
- How to call Python code
- How to use the “self converter”
- How to use the “defining class” converter
- How to write a custom converter
- How to write a custom return converter
- How to convert
METH_O
andMETH_NOARGS
functions - How to convert
tp_new
andtp_init
functions - How to change and redirect Clinic’s output
- How to use the
#ifdef
trick - How to use Argument Clinic in Python files
- How to use the Limited C API
- How to override the generated signature
- How to use critical sections with Argument Clinic
- How to declare
PyGetSetDef
(“getter/setter”) functions - How to deprecate passing parameters positionally or by keyword
- GDB support
- Dynamic analysis with Clang
- Tools for tracking compiler warnings
- Argument Clinic