GitHub labels¶
Triagers, core developers and bots can add labels on GitHub to categorize issues and pull requests. Many labels are shared for both use cases, while some are dedicated only to one. Below is a possibly inexhaustive list, but it should get you going. For a full list, see here.
Type labels¶
These labels are used to specify the type of issue:
type-bug: for unexpected behaviors, bugs, or exceptions (not hard crashes).
type-crash: for hard crashes of the interpreter, possibly with a core dump.
type-feature: for feature requests or enhancements. Feature requests do not need version labels; it is implicit that features are added to the
main
branch only, except for some exceptional cases. The Ideas Discourse category can be used to discuss enhancements before filing an issue.type-security: for security issues. See also Reporting security issues in Python.
Component labels¶
These labels are mostly used to specify which part of the codebase is affected by the issue/PR:
stdlib: for standard library modules in the Lib directory (written in Python).
extension-modules: for standard library modules in the Modules directory (written in C).
interpreter-core: for changes related to the interpreter core in the Objects, Python, Grammar, and Parser dirs (written mostly in C).
docs: for documentation in the Doc directory (written in reStructuredText), docstrings, and code comments.
tests: for tests in the Lib/test directory (written in Python) and other changes related to tests,
unittest
, ordoctest
.
OS labels¶
These labels are used to specify which operating systems are affected. Since most issues either affect all systems or are specific to Unix, we don’t have a dedicated Unix label. Use OS-windows, OS-mac, and OS-freebsd.
Use the OS-unsupported label for issues on platforms outside the support tiers defined in PEP 11. Applying this label adds the issue to a GitHub project where it can be categorized further. See also the Platform experts list.
Topic labels¶
These labels are used to denote the specific topic area, if any, of the issue/PR. This includes both specific modules/packages and generic interest areas.
Adding these labels is also a way to notify the relevant experts, since they are encouraged to subscribe to them. Depending on the label, this might also automatically add the issue to a GitHub project.
You can see the full list of topic labels on GitHub.
Version labels¶
These labels are used to indicate which versions of Python are affected.
The available version labels (with the form 3.N
) are updated
whenever new feature releases are created or retired.
Recommendations¶
For security issues, add the type-security label and the affected version labels. This makes the issue stand out.
For non-security issues affecting all bugfix branches, only add the type-bug label as knowing which versions are affected does not give more information.
Labels for end-of-life versions should be removed when possible but there is no need to explicitly go through old issues to remove such labels.
Otherwise, add the corresponding version labels and remember to update them when the latest major version is updated.
See also the branch status page for a list of active branches.
Exceptional version labels for features¶
While features should not have a version label, there are a few exceptional cases subject to the release manager approval:
If we are currently in the beta period of
3.N.0
and if a feature was implemented in its alpha period but requires a non-trivial extension (hence a new feature issue), this new feature issue is given the3.N
label as the latest version under development would now be3.N+1.0a1
.To indicate that the labelling is correct and the extension is approved, the triaged label can also be applied.
Other labels¶
build/performance: for issues related to the build process or performance, respectively.
easy: for issues that are considered easy.
infra: for issues related to the infrastructure of the project (for example, GitHub Actions, dependabot, the buildbots).
pending: for issues/PRs that will be closed unless further feedback is provided.
release-blocker/deferred-blocker: for issues/PRs and the branch’s release manager removing or retaining the label as appropriate. that, unless fixed, will hold the current or next release respectively. Triagers may set these labels for issues that must be fixed before a release, will review them and determine if they indeed qualify,
sprint: for easier filtering of issues/PRs being worked on during official sprints.
stale: for issues/PRs that have been inactive for a while.
triaged: for issue has been accepted as valid by a triager.
Labels specific to PRs¶
The following labels only apply to Pull Requests. They are either set automatically by bots, or added by humans to trigger specific bot behaviors.
DO-NOT-MERGE: for PRs that shouldn’t be merged in their current state. It also prevents miss-islington from being able to automatically merge the PR.
needs backport to X.Y
: used to indicate which branches the PR should be backported to. Once the PR is merged,miss-islington
will automatically attempt to create backport PRs for the versions indicated by these labels. See also the status of the Python branches for a list of branches and the type of PRs that can be backported to them.skip issue: for trivial changes (such as typo fixes, comment changes, and section rephrases) that don’t require a corresponding issue.
skip news: for PRs that don’t need a NEWS entry. The Updating NEWS and What’s New in Python section covers in details in which cases the NEWS entry can be skipped.
test-with-buildbots: used to test the latest commit with the buildbot fleet whenever more testing is required before merging. This may take multiple hours to complete.
awaiting action
: these labels are applied and used by bedevere to indicate the stage of a PR and should not be applied manually.