This PEP proposes to establish the C API Working Group:a small committee of Python core developers responsible foroverseeing and coordinating the development and maintenance of the Python C API.
The working group will maintaindocumentation, test suites and tooling related to Python’s C API.As delegated by the Steering Councilit is the deciding body for changes to the C API,from the addition or removal of individual API functions, types, etc.,to the acceptance of new designs of a more or less radical nature.
The working group’s mandate is to represent the interests of all Python users,but especially all maintainers of code that uses Python’s C API,whether in the context of CPython, using an alternate Python implementation,or using a binding framework for other programming languages (such as C++ and Rust).
The working group serves at the pleasure of the Python Steering Council.This document serves as the working group’s charter.
Despite many discussions and in-person meetingsat core developer sprints and Language Summits,and a thorough inventory of the problems and stakeholders of the C API,no consensus has been reached about many contentious issues,including, but not limited to:
The general feeling is that there are too many stakeholders,proposals, requirements, constraints, and conventions,to make progress without having a small trusted group of deciders.
At the 2023 Language Summit in Salt Lake City it was decided to start work onaninventory of problems.At the 2023 core developer sprint in Brno this work is more or less finishedand after a discussion it appeared that the next step is to establisha working group to ensure that we’re not stymied forever.
The Steering Council hasindicatedits desire to delegate decisions about the C APIto such a working group, anticipating its formal establishment.
We propose the creation of a new group, the C API Working Group.This group will be responsible for overseeing and coordinating the development andmaintenance of the Python C API.It will do this by establishing the principles underpinning the workand publishing guidelines that the core developers can refer to.
The “operations and process” section below describeshow the working group operates and how it is governed.
The members of the working group are:
The working group’s mandate is to ensure that the Python C APIis suitable for all users of and contributors to the API,without unduly preferencing one group over another.The working group will identify exemplar stakeholders,their needs and preferences,and will determine a plan for meeting these needs equitably and sustainably.It will oversee execution of the plan.
The working group has at least three members,comprised of prominent Python core developers.The members should consider the needs of the various stakeholders carefully.
The Steering Council appoints the initial working group.There is no term limit for working group members.Working group members may resign their position at any time, for any reason.There is an expectation that the membership will change over time.
To determine replacements,nominations will be collected from the core developer community.Self-nominations are allowed.The existing working group will then decide the replacement member(s)from the nominees.The expectation is that this will be done by fiat,but the working group can choose a replacement by any means they see fit,including a vote.
The working group remains accountable to the Steering Council.At any point, for any reason, the Steering Council could(publicly or privately) make a specific changeor request a non-specific change to the composition of the working group.
We acknowledge that this is not a particularly democratic structureand puts a lot of faith in the working group.However, the Python community has a long history of successwith structures that are not fully democratic!We believe that self-governance, cycling of membership,and accountability to the Steering Council will be sufficientto ensure that the C API workgroup is meeting the needs of the community.
The working group may operate primarily through reviews of GitHub issues and PRs.Regular meetings are likely not necessary,but the working group may set up video calls,a private chat, or whatever other mechanism they decide upon internally.
The working group should aim for transparency,posting all decisions publicly ondiscuss.python.org,with a rationale if possible.Before making a decision, the working group should giveall interested community members(as examples of different categories of stakeholders)a chance to weigh in.There should be at least a week between the start of a discussionand the working group’s decision.
Just like today, the Python Steering Council remains responsiblefor the overall direction of the Python C APIand continues to decide on PEPs related to the C API,using the standard PEP review process (community discussion, etc.).The C API working group provides written opinions andrecommendations to the Steering Council on PEPs related to the C API.
However, the working group can make smaller C API changes directly.The Steering Council may also choose to delegate decisions on some PEPsto the working group (exactly as any other PEP delegation).
This PEP serves as a charter for the working group.Changes to its operation can be made either through a new PEPor through a change to this PEP.In either case, the change will be decided uponby the Steering Council after discussion in the community.
To ask the C API Working Group for a decision,community members may open an issue in thecapi-workgroup/decisionsrepository.
This document is placed in the public domain or under theCC0-1.0-Universal license, whichever is more permissive.
Source:https://github.com/python/peps/blob/main/peps/pep-0731.rst
Last modified:2025-10-08 12:21:13 GMT