Skip to content

Add python-releases.toml #4331

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 36 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
13bf22c
Add python-releases.toml
AA-Turner Mar 29, 2025
813ac0d
Add initial scripts
AA-Turner Mar 29, 2025
1615b1d
Add release schedule markers
AA-Turner Mar 29, 2025
3414c2e
Integrate into the build process
AA-Turner Mar 29, 2025
d81a00d
Regenerate release schedules
AA-Turner Mar 29, 2025
27be901
Standardise versions
AA-Turner Mar 29, 2025
7836259
Regenerate release schedules
AA-Turner Mar 29, 2025
9a70c0a
Temporary workaround for tests on 3.9 & 3.10
AA-Turner Mar 29, 2025
2207db2
Add 1.6.1
AA-Turner Mar 29, 2025
674eba1
Standardise versions
AA-Turner Mar 29, 2025
3dc6277
Add explicit licence (Public Domain or CC0)
AA-Turner Mar 29, 2025
a72c1f9
Initial review notes
AA-Turner Apr 5, 2025
e4f42ac
Update for 3.15, from PEP 790
AA-Turner May 2, 2025
73cf41e
Merge remote-tracking branch 'upstream/main' into release-toml
AA-Turner May 2, 2025
7b18f8d
fixup! Update for 3.15, from PEP 790
AA-Turner May 2, 2025
1f1c73d
8/4/25 releases
AA-Turner May 2, 2025
aa84830
Merge remote-tracking branch 'upstream/main' into release-toml
AA-Turner Jul 20, 2025
44d535c
review feedback
AA-Turner Jul 20, 2025
9a6d518
**kw_only
AA-Turner Jul 20, 2025
bf25b48
slots
AA-Turner Jul 20, 2025
390a2da
docs
AA-Turner Jul 20, 2025
0eecc18
no "final" from 3.10 onwards
AA-Turner Jul 20, 2025
27777fd
3.14.0 beta 1 was on 7/5/25
AA-Turner Jul 20, 2025
aa2ff65
3.14.0 beta 1 was on 7/5/25
AA-Turner Jul 20, 2025
073e34e
3.13.6 was released on 6/8/25
AA-Turner Aug 6, 2025
3568c54
whitespace
AA-Turner Aug 7, 2025
6f01ad8
Move import to TYPE_CHECKING
AA-Turner Aug 7, 2025
46d6b83
Add more supporting links and fix some fields
AA-Turner Aug 7, 2025
b680726
Sort feature-freeze before first-release
AA-Turner Aug 7, 2025
ab15a36
Merge remote-tracking branch 'upstream/main' into release-toml
AA-Turner Aug 7, 2025
c7641b9
Note release of 3.14.0rc1
AA-Turner Aug 7, 2025
bd34d01
not-CSV
AA-Turner Aug 8, 2025
941b77a
Ruff
AA-Turner Aug 8, 2025
b9cc8ac
de-duplicate
AA-Turner Aug 8, 2025
69219cf
Sort feature-freeze before first-release
AA-Turner Aug 8, 2025
9dc3311
Merge remote-tracking branch 'upstream/main' into release-toml
AA-Turner Aug 8, 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
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
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
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.serialise import create_release_cycle, create_release_json

if TYPE_CHECKING:
from sphinx.application import Sphinx
Expand Down Expand Up @@ -73,3 +74,9 @@ 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('release-cycle.json').write_text(release_cycle, encoding="utf-8")

release_json = create_release_json()
app.outdir.joinpath('python-releases.json').write_text(release_json, encoding="utf-8")
Comment on lines +78 to +82
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's stick these next to https://peps.python.org/api/peps.json so we can (later) document them at https://peps.python.org/api/

Suggested change
release_cycle = create_release_cycle()
app.outdir.joinpath('release-cycle.json').write_text(release_cycle, encoding="utf-8")
release_json = create_release_json()
app.outdir.joinpath('python-releases.json').write_text(release_json, encoding="utf-8")
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")

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is right. The releases as machine-readable data have nothing to do with the "API" of the PEPs website, to the extent that such a thing exists. I don't see a reasonable reason not to have the files at the root, it won't conflict with anything & it's a shorter link. If you do want to put the JSON files in a subdirectory though, let's use a more appropriate folder name (e.g. /python-releases/{...}.json).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The releases as machine-readable data have nothing to do with the "API" of the PEPs website, to the extent that such a thing exists.

The data is here, it's coming from the PEPs website; it's data from the release PEPs.

We're precomputing the data to create a read-only API served via static JSON. This is a common thing to do.

I don't see a reasonable reason not to have the files at the root

So we can document them via https://peps.python.org/api/

it's a shorter link

This data will be mostly read by machines, an extra 4 characters is no problem.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree it would make sense to document the files. I still think that peps.python.org/api/ is the wrong place, though. My preference would be to keep the files at the root, but I would also be OK with a clearly-named folder like /python-releases/ or similar.

78 changes: 48 additions & 30 deletions peps/pep-0569.rst
Original file line number Diff line number Diff line change
Expand Up @@ -51,58 +51,76 @@ Release Schedule
3.8.0 schedule
--------------

.. release schedule: feature

Actual:

- 3.8 development begins: Monday, 2018-01-29
- 3.8.0 alpha 1: Sunday, 2019-02-03
- 3.8.0 alpha 2: Monday, 2019-02-25
- 3.8.0 alpha 3: Monday, 2019-03-25
- 3.8.0 alpha 4: Monday, 2019-05-06
- 3.8.0 beta 1: Tuesday, 2019-06-04
(No new features beyond this point.)

- 3.8.0 beta 2: Thursday, 2019-07-04
- 3.8.0 beta 3: Monday, 2019-07-29
- 3.8.0 beta 4: Friday, 2019-08-30
- 3.8.0 candidate 1: Tuesday, 2019-10-01
- 3.8.0 final: Monday, 2019-10-14

.. release schedule: ends

Bugfix releases
---------------

- 3.8.1rc1: Tuesday, 2019-12-10
- 3.8.1: Wednesday, 2019-12-18
- 3.8.2rc1: Monday, 2020-02-10
- 3.8.2rc2: Monday, 2020-02-17
- 3.8.2: Monday, 2020-02-24
- 3.8.3rc1: Wednesday, 2020-04-29
- 3.8.3: Wednesday, 2020-05-13
- 3.8.4rc1: Tuesday, 2020-06-30
- 3.8.4: Monday, 2020-07-13
- 3.8.5: Monday, 2020-07-20 (security hotfix)
- 3.8.6rc1: Tuesday, 2020-09-08
- 3.8.6: Thursday, 2020-09-24
- 3.8.7rc1: Monday, 2020-12-07
- 3.8.7: Monday, 2020-12-21
- 3.8.8rc1: Tuesday, 2021-02-16
- 3.8.8: Friday, 2021-02-19
- 3.8.9: Friday, 2021-04-02 (security hotfix)
- 3.8.10: Monday, 2021-05-03 (final regular bugfix release with binary
installers)
.. release schedule: bugfix

Actual:

- 3.8.1 candidate 1: Tuesday, 2019-12-10
- 3.8.1 final: Wednesday, 2019-12-18
- 3.8.2 candidate 1: Monday, 2020-02-10
- 3.8.2 candidate 2: Monday, 2020-02-17
- 3.8.2 final: Monday, 2020-02-24
- 3.8.3 candidate 1: Wednesday, 2020-04-29
- 3.8.3 final: Wednesday, 2020-05-13
- 3.8.4 candidate 1: Tuesday, 2020-06-30
- 3.8.4 final: Monday, 2020-07-13
- 3.8.5 final: Monday, 2020-07-20
(security hotfix)
- 3.8.6 candidate 1: Tuesday, 2020-09-08
- 3.8.6 final: Thursday, 2020-09-24
- 3.8.7 candidate 1: Monday, 2020-12-07
- 3.8.7 final: Monday, 2020-12-21
- 3.8.8 candidate 1: Tuesday, 2021-02-16
- 3.8.8 final: Friday, 2021-02-19
- 3.8.9 final: Friday, 2021-04-02
(security hotfix)
- 3.8.10 final: Monday, 2021-05-03
(Final regular bugfix release with binary installers)

.. release schedule: ends

Source-only security fix releases
---------------------------------

Provided irregularly on an "as-needed" basis until October 7th 2024.

- 3.8.11: Monday, 2021-06-28
- 3.8.12: Monday, 2021-08-30
- 3.8.13: Wednesday, 2022-03-16
- 3.8.14: Tuesday, 2022-09-06
- 3.8.15: Tuesday, 2022-10-11
- 3.8.16: Tuesday, 2022-12-06
- 3.8.17: Tuesday, 2023-06-06
- 3.8.18: Thursday, 2023-08-24
- 3.8.19: Tuesday, 2024-03-19
- 3.8.20: Friday, 2024-09-06 (final security release)
.. release schedule: security

- 3.8.11 final: Monday, 2021-06-28
- 3.8.12 final: Monday, 2021-08-30
- 3.8.13 final: Wednesday, 2022-03-16
- 3.8.14 final: Tuesday, 2022-09-06
- 3.8.15 final: Tuesday, 2022-10-11
- 3.8.16 final: Tuesday, 2022-12-06
- 3.8.17 final: Tuesday, 2023-06-06
- 3.8.18 final: Thursday, 2023-08-24
- 3.8.19 final: Tuesday, 2024-03-19
- 3.8.20 final: Friday, 2024-09-06
(final security release)

.. release schedule: ends


Features for 3.8
Expand Down
59 changes: 37 additions & 22 deletions peps/pep-0596.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ Note: the dates below use a 17-month development period that results
in a 12-month release cadence between feature versions, as defined by
:pep:`602`.

.. release schedule: feature

Actual:

- 3.9 development begins: Tuesday, 2019-06-04
Expand All @@ -59,45 +61,58 @@ Actual:
- 3.9.0 candidate 2: Thursday, 2020-09-17
- 3.9.0 final: Monday, 2020-10-05

.. release schedule: ends


Bugfix releases
---------------

.. release schedule: bugfix

Actual:

- 3.9.1 candidate 1: Tuesday, 2020-11-24
- 3.9.1 final: Monday, 2020-12-07
- 3.9.2 candidate 1: Tuesday, 2021-02-16
- 3.9.2 final: Friday, 2021-02-19
- 3.9.3: Friday, 2021-04-02 (security hotfix; recalled due to bpo-43710)
- 3.9.4: Sunday, 2021-04-04 (ABI compatibility hotfix)
- 3.9.5: Monday, 2021-05-03
- 3.9.6: Monday, 2021-06-28
- 3.9.7: Monday, 2021-08-30
- 3.9.8: Friday, 2021-11-05 (recalled due to bpo-45235)
- 3.9.9: Monday, 2021-11-15
- 3.9.10: Friday, 2022-01-14
- 3.9.11: Wednesday, 2022-03-16
- 3.9.12: Wednesday, 2022-03-23
- 3.9.13: Tuesday, 2022-05-17 (final regular bugfix release with binary
installers)
- 3.9.3 final: Friday, 2021-04-02
(security hotfix; recalled due to bpo-43710)
- 3.9.4 final: Sunday, 2021-04-04
(ABI compatibility hotfix)
- 3.9.5 final: Monday, 2021-05-03
- 3.9.6 final: Monday, 2021-06-28
- 3.9.7 final: Monday, 2021-08-30
- 3.9.8 final: Friday, 2021-11-05
(recalled due to bpo-45235)
- 3.9.9 final: Monday, 2021-11-15
- 3.9.10 final: Friday, 2022-01-14
- 3.9.11 final: Wednesday, 2022-03-16
- 3.9.12 final: Wednesday, 2022-03-23
- 3.9.13 final: Tuesday, 2022-05-17
(Final regular bugfix release with binary installers)

.. release schedule: ends


Source-only security fix releases
---------------------------------

Provided irregularly on an "as-needed" basis until October 2025.

- 3.9.14: Tuesday, 2022-09-06
- 3.9.15: Tuesday, 2022-10-11
- 3.9.16: Tuesday, 2022-12-06
- 3.9.17: Tuesday, 2023-06-06
- 3.9.18: Thursday, 2023-08-24
- 3.9.19: Tuesday, 2024-03-19
- 3.9.20: Friday, 2024-09-06
- 3.9.21: Tuesday, 2024-12-03
- 3.9.22: Tuesday, 2025-04-08
- 3.9.23: Tuesday, 2025-06-03
.. release schedule: security

- 3.9.14 final: Tuesday, 2022-09-06
- 3.9.15 final: Tuesday, 2022-10-11
- 3.9.16 final: Tuesday, 2022-12-06
- 3.9.17 final: Tuesday, 2023-06-06
- 3.9.18 final: Thursday, 2023-08-24
- 3.9.19 final: Tuesday, 2024-03-19
- 3.9.20 final: Friday, 2024-09-06
- 3.9.21 final: Tuesday, 2024-12-03
- 3.9.22 final: Tuesday, 2025-04-08
- 3.9.23 final: Tuesday, 2025-06-03

.. release schedule: ends


3.9 Lifespan
Expand Down
16 changes: 14 additions & 2 deletions peps/pep-0619.rst
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ Note: the dates below use a 17-month development period that results
in a 12-month release cadence between feature versions, as defined by
:pep:`602`.

.. release schedule: feature

Actual:

- 3.10 development begins: Monday, 2020-05-18
Expand All @@ -56,9 +58,13 @@ Actual:
- 3.10.0 candidate 2: Tuesday, 2021-09-07
- 3.10.0 final: Monday, 2021-10-04

.. release schedule: ends

Bugfix releases
---------------

.. release schedule: bugfix

Actual:

- 3.10.1: Monday, 2021-12-06
Expand All @@ -71,14 +77,18 @@ Actual:
- 3.10.8: Tuesday, 2022-10-11
- 3.10.9: Tuesday, 2022-12-06
- 3.10.10: Wednesday, 2023-02-08
- 3.10.11: Wednesday, 2023-04-05 (final regular bugfix release with binary
installers)
- 3.10.11: Wednesday, 2023-04-05
(Final regular bugfix release with binary installers)

.. release schedule: ends

Source-only security fix releases
---------------------------------

Provided irregularly on an "as-needed" basis until October 2026.

.. release schedule: security

- 3.10.12: Tuesday, 2023-06-06
- 3.10.13: Thursday, 2023-08-24
- 3.10.14: Tuesday, 2024-03-19
Expand All @@ -87,6 +97,8 @@ Provided irregularly on an "as-needed" basis until October 2026.
- 3.10.17: Tuesday, 2025-04-08
- 3.10.18: Tuesday, 2025-06-03

.. release schedule: ends

3.10 Lifespan
-------------

Expand Down
18 changes: 15 additions & 3 deletions peps/pep-0664.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ Note: the dates below use a 17-month development period that results
in a 12-month release cadence between feature versions, as defined by
:pep:`602`.

.. release schedule: feature

Actual:

- 3.11 development begins: Monday, 2021-05-03
Expand All @@ -56,11 +58,15 @@ Actual:
- 3.11.0 beta 5: Tuesday, 2022-07-26
- 3.11.0 candidate 1: Monday, 2022-08-08
- 3.11.0 candidate 2: Monday, 2022-09-12
- 3.11.0 final: Monday, 2022-10-24
- 3.11.0 final: Monday, 2022-10-24

.. release schedule: ends

Bugfix releases
---------------

.. release schedule: bugfix

Actual:

- 3.11.1: Tuesday, 2022-12-06
Expand All @@ -71,19 +77,25 @@ Actual:
- 3.11.6: Monday, 2023-10-02
- 3.11.7: Monday, 2023-12-04
- 3.11.8: Tuesday, 2024-02-06
- 3.11.9: Tuesday, 2024-04-02 (final regular bugfix release with binary
installers)
- 3.11.9: Tuesday, 2024-04-02
(Final regular bugfix release with binary installers)

.. release schedule: ends

Source-only security fix releases
---------------------------------

Provided irregularly on an "as-needed" basis until October 2027.

.. release schedule: security

- 3.11.10: Saturday, 2024-09-07
- 3.11.11: Tuesday, 2024-12-03
- 3.11.12: Tuesday, 2025-04-08
- 3.11.13: Tuesday, 2025-06-03

.. release schedule: ends

3.11 Lifespan
-------------

Expand Down
13 changes: 11 additions & 2 deletions peps/pep-0693.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ Note: the dates below use a 17-month development period that results
in a 12-month release cadence between feature versions, as defined by
:pep:`602`.

.. release schedule: feature
Actual:

- 3.12 development begins: Sunday, 2022-05-08
Expand All @@ -50,11 +52,15 @@ Actual:
- 3.12.0 candidate 1: Sunday, 2023-08-06
- 3.12.0 candidate 2: Wednesday, 2023-09-06
- 3.12.0 candidate 3: Tuesday, 2023-09-19
- 3.12.0 final: Monday, 2023-10-02
- 3.12.0 final: Monday, 2023-10-02

.. release schedule: ends
Bugfix releases
---------------

.. release schedule: bugfix
Actual:

- 3.12.1: Thursday, 2023-12-07
Expand All @@ -66,7 +72,10 @@ Actual:
- 3.12.7: Tuesday, 2024-10-01
- 3.12.8: Tuesday, 2024-12-03
- 3.12.9: Tuesday, 2025-02-04
- 3.12.10: Tuesday, 2025-04-08 (final regular bugfix release with binary installers)
- 3.12.10: Tuesday, 2025-04-08
(Final regular bugfix release with binary installers)

.. release schedule: ends
Source-only security fix releases
---------------------------------
Expand Down
Loading
Loading