Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
ca4f78f
Fix zlib example
jaimergp Oct 31, 2025
b6adf80
PEP 596: Add 3.9.25, mark as EOL
ambv Oct 31, 2025
a64b84c
804: Rename `host` to `build_host` (#6)
jaimergp Nov 1, 2025
f221437
PEP 788: Change my email address (#4683)
ZeroIntensity Nov 2, 2025
6a0138c
804: Reject existing databases (#2)
jaimergp Nov 3, 2025
b0e0364
804: Reject "Tracking package name changes" (#7)
jaimergp Nov 3, 2025
d5ba5ec
PEP 810: Mark as accepted and address SC's feedback (#4684)
pablogsal Nov 3, 2025
433d904
PEP 807: use RFC 9457 for error responses (#4635)
woodruffw Nov 3, 2025
107eeb5
PEP 791: Mark as Final (#4671)
skirpichev Nov 4, 2025
0ce1884
PEP 772: Add link to board resolution. (#4687)
warsaw Nov 4, 2025
9a3ab9c
Normalize Pablo's name across all PEPs (#4689)
brettcannon Nov 7, 2025
06c423e
PEP 596: 2025-10-31 was a Friday (#4692)
hugovk Nov 10, 2025
14ba26f
PEP 745: Add planned bugfix releases for Python 3.14 (#4691)
hugovk Nov 10, 2025
84d1499
Infra: only create peps.json at /api/peps.json (#4231)
hugovk Nov 10, 2025
1b13e95
Add python-releases.toml (#4331)
AA-Turner Nov 10, 2025
caa9148
PEP 745: Add planned bugfix releases for Python 3.14 to python-releas…
hugovk Nov 10, 2025
93d25e4
PEP 596: Mark Python 3.9 as end-of-life in python-releases.toml (#4694)
hugovk Nov 10, 2025
a0e2739
Mark Python 3.12 as security and 3.14 as bugfix (#4696)
hugovk Nov 10, 2025
b433203
PEP 793: Mark as Accepted (#4695)
encukou Nov 10, 2025
6774537
PEP 13: Clarify tie resolution (#4672)
zware Nov 12, 2025
b6bc205
PEP 747: Link to mypy reference implementation (#4700)
davidfstr Nov 12, 2025
61e615e
804: Clarify role of `query` commands and version mappings (#3)
jaimergp Nov 13, 2025
5aea6db
804: Clarify mapping filenames and versioning (#4)
jaimergp Nov 13, 2025
15e5afb
804: Mapping reusability and customization (#5)
jaimergp Nov 13, 2025
3ede647
PEP 814: Add frozendict built-in type (#4699)
vstinner Nov 13, 2025
cec08cc
PEP 814: Add Reference Impl. and Discussions-To (#4701)
vstinner Nov 13, 2025
67b709a
PEP 545: Use new translation dashboard link (#4706)
StanFromIreland Nov 13, 2025
9590e94
PEP 808: Partially Dynamic Metadata (#4598)
henryiii Nov 14, 2025
4eded5f
PEP 811: Adopt similar nomination process to core team (#4686)
sethmlarson Nov 14, 2025
6da8478
PEP 808: add discussion link (#4707)
henryiii Nov 14, 2025
daa024d
PEP 814: Minor tweaks (#4703)
vstinner Nov 15, 2025
edbdf98
PEP 814: Fix typos (#4708)
vstinner Nov 17, 2025
93f3c30
PEP 808: backwards compatibility example update (#4710)
henryiii Nov 17, 2025
63d3a9c
PEP 808: how to teach update (#4711)
henryiii Nov 18, 2025
e5904d8
PEP 790: 3.15.0a2 was released on 2025-11-19 (#4712)
hugovk Nov 19, 2025
2fe508d
PEP 693: Generate security releases from TOML (#4713)
hugovk Nov 20, 2025
8a00411
PEP 814: Deferred Ideas (#4714)
vstinner Nov 21, 2025
1674480
804: Some more details about naming guidelines for RPM and Debian eco…
jaimergp Nov 23, 2025
da7480b
804: Address feedback in `package_managers` (#8)
jaimergp Nov 23, 2025
74fc871
PEP 101: Instruct the Release Manager to change ``python-releases.tom…
AA-Turner Nov 24, 2025
82c2587
Remove `not_equal` from schema (#10)
jaimergp Nov 25, 2025
02f5423
PEP 8107 - nominations and updates to configuration instructions (#4716)
ewdurbin Nov 25, 2025
0b65b03
PEP 101: Remove three manual steps to edit python.org pages (#4717)
hugovk Nov 26, 2025
d8927bd
Infra: Improve tests and coverage configuration (#4715)
AA-Turner Nov 27, 2025
e959a86
PEP 808: Change the name (#4719)
henryiii Nov 30, 2025
35d9173
Bump actions/checkout from 5 to 6 in the actions group (#4720)
dependabot[bot] Dec 1, 2025
da0dc71
PEP 814: Type annotation (#4721)
vstinner Dec 1, 2025
9db7c1e
PEP 745: 3.14.1 was released on Tuesday 2 December 2025 (#4724)
StanFromIreland Dec 2, 2025
cf87fe4
PEP 788: Fix incorrect call to `free` (#4725)
ZeroIntensity Dec 2, 2025
44084a0
PEP 719: 3.13.10 was released on Tuesday 2 December 2025 (#4726)
StanFromIreland Dec 2, 2025
3248238
PEP 803: Updates based on packaging discussion (GH-4718)
encukou Dec 5, 2025
d6914ac
PEP 803: fix a couple typos (#4728)
neutrinoceros Dec 5, 2025
53250ea
PEP 811: Mark as Accepted (#4729)
sethmlarson Dec 5, 2025
e6d5c22
Infra: Require Pygments 2.19 as a minimum (#4730)
konstin Dec 5, 2025
1b3bca7
PEP 815: Deprecate ``RECORD.jws`` and ``RECORD.p7s`` (#4727)
konstin Dec 5, 2025
c6de479
PEP 719, 745: 3.13.11 and 3.14.2 were released on 5 Dec 2025 (#4731)
AA-Turner Dec 5, 2025
94320bb
PEP 101: Stop announcing releases on MLs (#4596)
hugovk Dec 5, 2025
72e328b
PEP 694: Error responses conform to the :rfc:`9457` format. (#4733)
warsaw Dec 7, 2025
d34b798
PEP 694: Update publish history (#4735)
warsaw Dec 7, 2025
b1a156a
PEP 816: WASI Support (#4732)
brettcannon Dec 8, 2025
74e861f
PEP 747: Clarify that TypeForm(T) is always a TypeForm[T] (#4736)
davidfstr Dec 8, 2025
d8465eb
Generate a release schedule as an ``.ics`` file (#4705)
AA-Turner Dec 9, 2025
e814841
PEP 815: Update Post-History and Discussions-To (#4737)
konstin Dec 10, 2025
c7e7ad8
Infra: Fix margin clipping in the print CSS (#4742)
hugovk Dec 11, 2025
1636707
PEP 814: Clarify immutable VS hashable values (#4743)
vstinner Dec 11, 2025
81236cf
PEP 12: SVG is allowed after PEP 676 (#4741)
hugovk Dec 11, 2025
3c2b82e
Document elector eligibility verification and documentation (#4744)
warsaw Dec 12, 2025
ae36775
PEP 8107: publish results of 2026 term steering council election (#4745)
ewdurbin Dec 13, 2025
0e712da
PEP 8107: errata (#4746)
ewdurbin Dec 13, 2025
7997f0d
Merge branch 'main' of github.com:python/peps into pep-804-nov-update
jaimergp Dec 17, 2025
165e2cb
Fix some typos and polish some details
jaimergp Dec 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -683,11 +683,15 @@ peps/pep-0804.rst @pradyunsg
# ...
peps/pep-0806.rst @JelleZijlstra
peps/pep-0807.rst @dstufft
# ...
peps/pep-0808.rst @FFY00
peps/pep-0809.rst @zooba
peps/pep-0810.rst @pablogsal @DinoV @Yhg1s
peps/pep-0811.rst @sethmlarson @gpshead
# ...
peps/pep-0814.rst @vstinner @corona10
peps/pep-0815.rst @emmatyping
peps/pep-0816.rst @brettcannon
# ...
peps/pep-2026.rst @hugovk
# ...
peps/pep-3000.rst @gvanrossum
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
persist-credentials: false

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/render.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
fetch-depth: 0 # fetch all history so that last modified date-times are accurate

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
- "ubuntu-latest"

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
persist-credentials: false

Expand Down
14 changes: 14 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ repos:
args:
- '--exit-non-zero-on-fix'
files: '^pep_sphinx_extensions/tests/'
- id: ruff-format
name: "Format with Ruff"
args:
- '--check'
files: '^release_management/'

- repo: https://github.com/tox-dev/tox-ini-fmt
rev: 1.4.1
Expand Down Expand Up @@ -111,3 +116,12 @@ repos:
language: "python"
files: '^peps/pep-\d{4}\.rst$'
require_serial: true

# Hook to regenerate release schedules
- id: "regen-schedules"
name: "Regenerate release schedules from python-releases.toml"
entry: "python -m release_management update-peps"
language: "python"
files: "^release_management/"
pass_filenames: false
require_serial: true
37 changes: 37 additions & 0 deletions .pytest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# https://docs.pytest.org/en/stable/reference/customize.html

[pytest]
minversion = "9.0"

# https://docs.pytest.org/en/stable/reference/reference.html#command-line-flags
addopts = [
# Show extra summary information for all non-passing tests
"-r a",
# https://docs.pytest.org/en/stable/explanation/pythonpath.html#import-modes
"--import-mode=importlib",
# https://pytest-cov.readthedocs.io/en/latest/config.html#reference
"--cov=check_peps",
"--cov=pep_sphinx_extensions",
"--cov=release_management",
"--cov-report=html",
"--cov-report=xml",
]

# Fail if pytest.mark.parametrize() has no parameters
empty_parameter_set_mark = "fail_at_collect"

filterwarnings = ["error"]

testpaths = [
"pep_sphinx_extensions",
"release_management",
]

# https://docs.pytest.org/en/stable/reference/reference.html#confval-strict
strict_config = true
strict_markers = true
strict_parametrization_ids = true
strict_xfail = true

# Various tests use Unicode in pytest.mark.parametrize().
disable_test_id_escaping_and_forfeit_all_rights_to_community_support = true
5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,11 @@ test: venv
spellcheck: _ensure-pre-commit
$(VENVDIR)/bin/python3 -m pre_commit run --all-files --hook-stage manual codespell

## regen-all to regenerate generated source files
.PHONY: regen-all
regen-all:
$(PYTHON) -m release_management update-peps

.PHONY: help
help : Makefile
@echo "Please use \`make <target>' where <target> is one of"
Expand Down
2 changes: 1 addition & 1 deletion pep_sphinx_extensions/pep_theme/static/mq.css
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@

section#pep-page-section > article {
float: none;
max-width: 17.5cm;
max-width: 100%;
width: auto;
margin: 0;
padding: 0;
Expand Down
11 changes: 10 additions & 1 deletion pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from pep_sphinx_extensions.pep_zero_generator import subindices
from pep_sphinx_extensions.pep_zero_generator import writer
from pep_sphinx_extensions.pep_zero_generator.constants import SUBINDICES_BY_TOPIC
from release_management.serialize import create_release_cycle, create_release_schedule_calendar, create_release_json

if TYPE_CHECKING:
from sphinx.application import Sphinx
Expand Down Expand Up @@ -55,7 +56,6 @@ def create_pep_json(peps: list[parser.PEP]) -> str:
def write_peps_json(peps: list[parser.PEP], path: Path) -> None:
# Create peps.json
json_peps = create_pep_json(peps)
Path(path, "peps.json").write_text(json_peps, encoding="utf-8")
os.makedirs(os.path.join(path, "api"), exist_ok=True)
Path(path, "api", "peps.json").write_text(json_peps, encoding="utf-8")

Expand All @@ -73,3 +73,12 @@ def create_pep_zero(app: Sphinx, env: BuildEnvironment, docnames: list[str]) ->
subindices.generate_subindices(SUBINDICES_BY_TOPIC, peps, docnames, env)

write_peps_json(peps, Path(app.outdir))

release_cycle = create_release_cycle()
app.outdir.joinpath('api/release-cycle.json').write_text(release_cycle, encoding="utf-8")

release_json = create_release_json()
app.outdir.joinpath('api/python-releases.json').write_text(release_json, encoding="utf-8")

release_ical = create_release_schedule_calendar()
app.outdir.joinpath('release-schedule.ics').write_text(release_ical, encoding="utf-8")
6 changes: 3 additions & 3 deletions peps/pep-0012.rst
Original file line number Diff line number Diff line change
Expand Up @@ -599,10 +599,10 @@ processed output using the ``image`` directive:

.. image:: diagram.png

Any browser-friendly graphics format is possible; PNG should be
Any browser-friendly graphics format is possible; SVG or PNG are
preferred for graphics, JPEG for photos and GIF for animations.
Currently, SVG must be avoided due to compatibility issues with the
PEP build system.
Images should be optimised to reduce their file size, and should
be legible in both light and dark mode in the browser.

For accessibility and readers of the source text, you should include
a description of the image and any key information contained within
Expand Down
7 changes: 5 additions & 2 deletions peps/pep-0013.rst
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ A council election consists of two phases:
* Phase 2: Each core team member can assign zero to five stars to each
candidate. Voting is performed anonymously. The outcome of the vote
is determined using the `STAR voting system <https://www.starvoting.org/>`__,
modified to use the `Multi-winner Bloc STAR <https://www.starvoting.org/multi_winner>`__)
approach. If a tie occurs, it may
modified to use the `Multi-winner Bloc STAR <https://www.starvoting.org/multi_winner>`__
approach. If a tie that is not automatically resolved by the election software occurs, it may
be resolved by mutual agreement among the candidates, or else the
winner will be chosen at random.

Expand Down Expand Up @@ -358,6 +358,9 @@ History of amendments
Adopted Multi-winner Bloc STAR voting for council elections.
* `2024-12-10 <https://discuss.python.org/t/72293/4>`__:
Added a one-week deadline for seconding a vote of no confidence.
* `2025-11-12 <https://discuss.python.org/t/104607>`__:
Clarified that the software used for elections may resolve ties
automatically if possible.



Expand Down
66 changes: 6 additions & 60 deletions peps/pep-0101.rst
Original file line number Diff line number Diff line change
Expand Up @@ -646,61 +646,10 @@ permissions.

curl -X PURGE https://www.python.org/downloads/release/python-XXX/

- If this is a **final** release:

- Add the new version to the `"Python documentation by version"
page <https://www.python.org/doc/versions/>`__ and
remove the current version from any 'in development' section.

- For 3.X.Y, edit all the previous X.Y releases' page(s) to
point to the new release. This includes the content field of the
``Downloads -> Releases`` entry for the release::

Note: Python 3.x.(y-1) has been superseded by
`Python 3.x.y </downloads/release/python-3xy/>`_.

And, for those releases having separate release page entries
(phasing these out?), update those pages as well,
e.g. ``download/releases/3.x.y``::

Note: Python 3.x.(y-1) has been superseded by
`Python 3.x.y </download/releases/3.x.y/>`_.

- Update the `"Current pre-release testing versions" page
<https://www.python.org/download/pre-releases/>`__.

- If you're releasing a version before *3.x.0*,
add it to this page, removing the previous pre-release
of version *3.x* as needed.

- If you're releasing *3.x.0 final*, remove the pre-release
version from this page.

This is in the "Pages" category on the Django-based website, and finding
it through that UI is kind of a chore. However! If you're already logged
in to the admin interface (which, at this point, you should be), Django
will helpfully add a convenient "Edit this page" link to the top of the
page itself. So you can simply follow the link above, click on the
"Edit this page" link, and make your changes as needed. How convenient!

- If appropriate, update the `"Python documentation by version" page
<https://www.python.org/doc/versions/>`__.

This lists all releases of Python by version number and links to their
static (not built daily) online documentation. There's a link at the
bottom to the in-development version.
And yes you can press the shiny, exciting "Edit this page" button.

- Write the announcement on `discuss.python.org`_. This is the
fuzzy bit because not much can be automated. You can use an earlier
announcement as a template, but edit it for content!

- Once the announcement is up on Discourse, send an equivalent to the
following mailing lists:

* python-list@python.org
* python-announce@python.org

- Also post the announcement to the
`Python Insider blog <https://blog.python.org>`_.
To add a new entry, go to
Expand All @@ -726,9 +675,7 @@ permissions.
- Update the `issue tracker`_ for the new branch:
add the new version to the versions list.

- Update the `devguide
<https://github.com/python/devguide/blob/main/include/release-cycle.json>`__
to reflect the new branches and versions.
- Update python-releases.toml_ to reflect the new branches and versions.

- Create a PR to update the supported releases table on the
`downloads page <https://www.python.org/downloads/>`__ (see
Expand Down Expand Up @@ -812,10 +759,10 @@ else does them. Some of those tasks include:

* https://www.python.org/downloads/release/python-336/

- In the `developer's guide
<https://github.com/python/devguide/blob/main/include/release-cycle.json>`__,
set the branch status to end-of-life
and update or remove references to the branch elsewhere in the devguide.
- In python-releases.toml_, set the branch status to end-of-life.

- Update or remove references to the branch in the `developer's guide
<https://github.com/python/devguide/>`__.

- Retire the release from the `issue tracker`_. Tasks include:

Expand All @@ -833,8 +780,6 @@ else does them. Some of those tasks include:

* `discuss.python.org`_

* mailing lists (python-dev, python-list, python-announcements)

* `Python Insider blog <https://blog.python.org>`_

- Enjoy your retirement and bask in the glow of a job well done!
Expand Down Expand Up @@ -884,6 +829,7 @@ This document has been placed in the public domain.
.. _deferred-blocker: https://github.com/python/cpython/labels/deferred-blocker
.. _discuss.python.org: https://discuss.python.org
.. _issue tracker: https://github.com/python/cpython/issues
.. _python-releases.toml: https://github.com/python/peps/blob/HEAD/release_management/python-releases.toml
.. _python/cpython: https://github.com/python/cpython
.. _python/peps: https://github.com/python/peps
.. _python/release-tools: https://github.com/python/release-tools
Expand Down
8 changes: 5 additions & 3 deletions peps/pep-0545.rst
Original file line number Diff line number Diff line change
Expand Up @@ -322,9 +322,11 @@ and http://zanata.org/.
python-docs-translations
''''''''''''''''''''''''

The `python-docs-translations GitHub organization <https://github.com/python-docs-translations>`_
is home to several useful translation tools such as the translations
`dashboard <https://github.com/python-docs-translations/dashboard>`_.
The `python-docs-translations GitHub organization <https://github.com/python-docs-translations>`__
is home to several useful translation tools including
`translations.python.org <https://translations.python.org>`__
(`python-docs-translations/dashboard
<https://github.com/python-docs-translations/dashboard>`__).


Documentation Contribution Agreement
Expand Down
Loading
Loading