GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Add python-releases.toml by AA-Turner · Pull Request #4331 · python/peps

Conversation

@AA-Turner

@AA-Turner AA-Turner commented Mar 29, 2025 •
edited by hugovk
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Inspired by #4314, this PR adds a transcription of every Python release since version 1.6 into a single TOML document, python-releases.toml. This is intended to serve as a single, centralised, machine-readable record of Python's release history (and future).

From this, we automatically generate a release-cycle.json file as part of the build process, to be published on peps.python.org. This replaces the version in the devguide.

The TOML document is used to (re-)generate the release schedules contained in release PEPs, initially starting with those for Python 3.8 to 3.14. The authoritative record and history remains the release PEP.

Some releases may need optional annotations or notes, which I have filled in for Python 3.8 and 3.9, but not yet back-filled.

Open questions:

  • Any better ideas for a filename than python-releases.toml?
  • Should the file live at the top level, or in the a subdirectory (as at present)?
  • Any better ideas for the metadata field names? I'm not a great fan of start-of-development and end-of-bugfix, as all the others can be said aloud as "The {first release / feature freeze / end of life} is/was on {date}".
  • Are the release managers for Pythons 1.6-2.2 correct?

A


📚 Documentation preview 📚: https://pep-previews--4331.org.readthedocs.build/
📚 Documentation preview 📚: https://pep-previews--4331.org.readthedocs.build/release-cycle.json

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

m-aciek reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
AA-Turner added 7 commits March 29, 2025 18:41
@AA-Turner
Add python-releases.toml
13bf22c
@AA-Turner
Add initial scripts
813ac0d
@AA-Turner
Add release schedule markers
1615b1d
@AA-Turner
Integrate into the build process
3414c2e
@AA-Turner
Regenerate release schedules
d81a00d
@AA-Turner
Standardise versions
27be901
@AA-Turner
Regenerate release schedules
7836259
@AA-Turner AA-Turner added the meta Related to the repo itself and its processes label Mar 29, 2025
@AA-Turner
Temporary workaround for tests on 3.9 & 3.10
9a70c0a
@AA-Turner
AA-Turner force-pushed the release-toml branch from 15856af to 9a70c0a Compare March 29, 2025 19:01
AA-Turner added 3 commits March 29, 2025 21:35
@AA-Turner
Add 1.6.1
2207db2
@AA-Turner
Standardise versions
674eba1
@AA-Turner
Add explicit licence (Public Domain or CC0)
3dc6277
hugovk
hugovk reviewed Apr 5, 2025
View reviewed changes

@hugovk hugovk left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Partial review:

From this, we automatically generate a release-cycle.json file as part of the build process, to be published on peps.python.org. This replaces the version in the devguide.

Can we make all the data in the TOML also available in the JSON?

JSON is more universally supported, and we should make this data as widely usable as possible.

We don't necessarily need the JSON here to be an exact copy of the old devguide one; as long as the devguide can read the data it needs from this JSON to construct the diagram and tables.

Open questions:

  • Any better ideas for a filename than python-releases.toml?

Fine by me.

  • Any better ideas for the metadata field names? I'm not a great fan of start-of-development and end-of-bugfix, as all the others can be said aloud as "The {first release / feature freeze / end of life} is/was on {date}".

We could use the same names as the https://endoflife.date/ API.

The alpha https://endoflife.date/api/python.json currently uses:

  • releaseDate - initial release
  • support - end of bugfix
  • eol - end of security support / life

Or the WIP v1 API (endoflife-date/endoflife.date#2080), https://deploy-preview-2080--endoflife-date.netlify.app/api/v1/products/python uses:

  • date - initial release
  • eoasFrom - end of bugfix (end of active support)
  • eolFrom - end of security support / life

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

m-aciek reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread release_engineering/update_release_schedules.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread .pre-commit-config.yaml Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread release_engineering/LICENCE.rst Resolved

Uh oh!

There was an error while loading. Please reload this page.

@AA-Turner
Initial review notes
a72c1f9
@hugovk hugovk mentioned this pull request Apr 8, 2025
Add new ssh key argument and don't check magic number in old versions python/release-tools#234
Closed
AA-Turner added 4 commits May 2, 2025 23:05
@AA-Turner
Update for 3.15, from PEP 790
e4f42ac
@AA-Turner
Merge remote-tracking branch 'upstream/main' into release-toml
73cf41e
# Conflicts:
#	peps/pep-0596.rst
#	peps/pep-0619.rst
#	peps/pep-0664.rst
#	peps/pep-0693.rst
#	peps/pep-0719.rst
@AA-Turner
fixup! Update for 3.15, from PEP 790
7b18f8d
@AA-Turner
8/4/25 releases
1f1c73d
merwok
merwok reviewed May 3, 2025
View reviewed changes
Comment thread pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@AA-Turner AA-Turner mentioned this pull request May 8, 2025
Add beta release dates to JSON python/devguide#1554
Closed
m-aciek
m-aciek reviewed May 9, 2025
View reviewed changes

@m-aciek m-aciek left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

I've left some minor comments.

The centralised file is 3400 lines long. I wonder, would it be possible to get all release metadata from the release PEPs, after enforcing the data structure using Sphinx/docutils features? This way the source of truth would be PEPs with machine-extractable data, and the data would be much easier to maintain/add. Then JSON/TOML would be generated in CI or locally automatically from the PEPs. Automatic script would go through all informational PEPs with release topic and look for the metadata. What do you think?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread release_engineering/__init__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread release_engineering/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread release_engineering/generate_release_cycle.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread release_engineering/python-releases.toml Resolved

Uh oh!

There was an error while loading. Please reload this page.

@AA-Turner

AA-Turner commented May 9, 2025

Copy link
Copy Markdown
Member Author

I wonder, would it be possible to get all release matadata from the release PEPs, after enforcing the data structure using Sphinx/docutils features?

We could, but this would have a couple of considerations. Most importantly, we would need to change every previous release PEP, and this wouldn't easily permit going back before 1.6 if we wanted to record the metadata for 0.9-1.5.

I wouldn't be entirely opposed to this, though, as it preserves the nice quality that the PEPs remain the authoritative source for release information.

A

m-aciek reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@m-aciek m-aciek mentioned this pull request May 12, 2025
Newer branches are not used python-docs-translations/dashboard#92
Closed
@AA-Turner
Merge remote-tracking branch 'upstream/main' into release-toml
aa84830
# Conflicts:
#	peps/pep-0596.rst
#	peps/pep-0619.rst
#	peps/pep-0664.rst
#	peps/pep-0719.rst
hugovk
hugovk reviewed Jul 20, 2025
View reviewed changes

@hugovk hugovk left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Summary of discussion with Adam at EuroPython sprints:

I'd like us to provide the full data as JSON, so it's more widely available, for example, when using JavaScript.

I don't mind the source data being in TOML or JSON. It is extra work to convert from TOML to JSON, but that shouldn't be too hard, and TOML is a bit nicer to edit by hand.

I also don't mind if we provide the same smaller release-cycle.json file for the devguide to consume, or update the devguide to read the full one. Adam has preference for the small file.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread release_engineering/__init__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread release_engineering/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread release_engineering/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

AA-Turner added 3 commits July 20, 2025 17:28
@AA-Turner
review feedback
44d535c
@AA-Turner
**kw_only
9a6d518
@AA-Turner
slots
bf25b48
@ambv @hugovk
Put release-cycle.json under /api/
7643fdf
Co-authored-by: Hugo van Kemenade <[email protected]>
@ambv

ambv commented Nov 10, 2025

Copy link
Copy Markdown
Contributor

Just like with #4692, Imma be a tie breaker here and side with Hugo. I do think it's an API, even if it's read-only. But even if you disagree, this is such a minor detail, it's not worth blocking this otherwise great change to the release schedule PEP workflow.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ambv
ambv merged commit 1b13e95 into python:main Nov 10, 2025
22 checks passed

Uh oh!

There was an error while loading. Please reload this page.

This was referenced Nov 10, 2025
PEP 745: Add planned bugfix releases for Python 3.14 to python-releases.toml #4693
Merged
PEP 596: Mark Python 3.9 as end-of-life in python-releases.toml #4694
Merged
Replace local release-cycle.json with PEPs repo version python/devguide#1685
Merged
merwok
merwok reviewed Nov 10, 2025
View reviewed changes
Comment thread release_management/__main__.py
commands = (
CMD_FULL_JSON := 'full-json',
CMD_UPDATE_PEPS := 'update-peps',
CMD_RELEASE_CYCLE := 'release-cycle',

@merwok merwok Nov 10, 2025

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

walrus strikes again! nice idiom when not using an enum.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@AA-Turner

AA-Turner commented Nov 10, 2025

Copy link
Copy Markdown
Member Author

Just like with #4692, Imma be a tie breaker here and side with Hugo. I do think it's an API, even if it's read-only. But even if you disagree, this is such a minor detail, it's not worth blocking this otherwise great change to the release schedule PEP workflow.

Is this the right issue/PR reference? I continue to believe that /api is the wrong choice here with needless nesting, but nevertheless, thank you for merging.

A

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@AA-Turner
AA-Turner deleted the release-toml branch November 10, 2025 16:21
This was referenced Nov 10, 2025
Mark Python 3.12 as security and 3.14 as bugfix #4696
Merged
Update release-cycle.json URL to use PEPs API python/buildmaster-config#643
Merged
hugovk added a commit to hugovk/github-tools that referenced this pull request Nov 10, 2025
@hugovk
Update release-cycle.json URL to use PEPs API
8736dcf
This file is now generated and published from the PEPs repo (python/peps#4331) and will be removed from the devguide soon (python/devguide#1685).
@hugovk hugovk mentioned this pull request Nov 10, 2025
Note that release-cycle.json is now sourced from peps.python.org python/docsbuild-scripts#314
Merged
@merwok

merwok commented Nov 10, 2025

Copy link
Copy Markdown
Member

I think #4231 was meant.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

This was referenced Nov 10, 2025
Update release-cycle.json URL python-docs-translations/transifex-automations#205
Merged
Update release-cycle.json URL pawamoy/yore#16
Merged
Update release-cycle.json URL encukou/buildbot-status-dashboard#6
Open
Update release-cycle.json URL RafaelWO/pirel#16
Merged
Update release-cycle.json URL sco1/pre-commit-python-eol#5
Merged
Update release-cycle.json URL chrisjbillington/ci-helper#1
Merged
Update release-cycle.json URL neersighted/dotfiles#3
Closed
Update release-cycle.json URL jprosser/my-build-python#1
Open
hugovk added a commit to hugovk/dotfiles-2 that referenced this pull request Nov 10, 2025
@hugovk
Update release-cycle.json URL
ff19462
This file is now generated and published from the PEPs repo (python/peps#4331) and will be removed from the devguide soon (python/devguide#1685).
@hugovk hugovk mentioned this pull request Nov 10, 2025
Update release-cycle.json URL MtkN1/dotfiles#22
Merged
@m-aciek m-aciek mentioned this pull request Nov 10, 2025
Use PEP's versions API python-docs-translations/dashboard#142
Closed
woodruffw pushed a commit to woodruffw-forks/peps that referenced this pull request Nov 12, 2025
@AA-Turner @ambv
@hugovk @woodruffw
Add python-releases.toml (python#4331)
0375c17
Co-authored-by: Łukasz Langa <[email protected]>
Co-authored-by: Hugo van Kemenade <[email protected]>
This was referenced Nov 13, 2025
Infra: document release-cycle.json and python-releases.json #4702
Merged
Infra: generate an iCalendar file of the release dates #4704
Closed
@hugovk hugovk mentioned this pull request Nov 21, 2025
Infra: Move release dates from RSTs to JSON #4314
Closed
ethanfurman pushed a commit to ethanfurman/peps that referenced this pull request Oct 8, 2026
@AA-Turner @ambv
@hugovk @ethanfurman
Add python-releases.toml (python#4331)
475897b
Co-authored-by: Łukasz Langa <[email protected]>
Co-authored-by: Hugo van Kemenade <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@merwok merwok merwok left review comments
@m-aciek m-aciek m-aciek left review comments
@hugovk hugovk Awaiting requested review from hugovk hugovk is a code owner

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

meta Related to the repo itself and its processes

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

5 participants

@AA-Turner @hugovk @ambv @merwok @m-aciek
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.