Skip to content

Commit 27941e4

Browse files
committed
Merge branch 'main' of https://github.com/python/peps into wasi-support-pep
2 parents 084ac17 + 94320bb commit 27941e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+5389
-231
lines changed

.github/CODEOWNERS

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -683,10 +683,12 @@ peps/pep-0804.rst @pradyunsg
683683
# ...
684684
peps/pep-0806.rst @JelleZijlstra
685685
peps/pep-0807.rst @dstufft
686-
# ...
686+
peps/pep-0808.rst @FFY00
687687
peps/pep-0809.rst @zooba
688688
peps/pep-0810.rst @pablogsal @DinoV @Yhg1s
689689
peps/pep-0811.rst @sethmlarson @gpshead
690+
peps/pep-0814.rst @vstinner @corona10
691+
peps/pep-0815.rst @emmatyping
690692
# ...
691693
peps/pep-2026.rst @hugovk
692694
# ...

.github/workflows/lint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
runs-on: ubuntu-latest
2020

2121
steps:
22-
- uses: actions/checkout@v5
22+
- uses: actions/checkout@v6
2323
with:
2424
persist-credentials: false
2525

.github/workflows/render.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727

2828
steps:
2929
- name: Checkout
30-
uses: actions/checkout@v5
30+
uses: actions/checkout@v6
3131
with:
3232
fetch-depth: 0 # fetch all history so that last modified date-times are accurate
3333

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
- "ubuntu-latest"
4242

4343
steps:
44-
- uses: actions/checkout@v5
44+
- uses: actions/checkout@v6
4545
with:
4646
persist-credentials: false
4747

.pre-commit-config.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ repos:
6565
args:
6666
- '--exit-non-zero-on-fix'
6767
files: '^pep_sphinx_extensions/tests/'
68+
- id: ruff-format
69+
name: "Format with Ruff"
70+
args:
71+
- '--check'
72+
files: '^release_management/'
6873

6974
- repo: https://github.com/tox-dev/tox-ini-fmt
7075
rev: 1.4.1
@@ -111,3 +116,12 @@ repos:
111116
language: "python"
112117
files: '^peps/pep-\d{4}\.rst$'
113118
require_serial: true
119+
120+
# Hook to regenerate release schedules
121+
- id: "regen-schedules"
122+
name: "Regenerate release schedules from python-releases.toml"
123+
entry: "python -m release_management update-peps"
124+
language: "python"
125+
files: "^release_management/"
126+
pass_filenames: false
127+
require_serial: true

.pytest.toml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# https://docs.pytest.org/en/stable/reference/customize.html
2+
3+
[pytest]
4+
minversion = "9.0"
5+
6+
# https://docs.pytest.org/en/stable/reference/reference.html#command-line-flags
7+
addopts = [
8+
# Show extra summary information for all non-passing tests
9+
"-r a",
10+
# https://docs.pytest.org/en/stable/explanation/pythonpath.html#import-modes
11+
"--import-mode=importlib",
12+
# https://pytest-cov.readthedocs.io/en/latest/config.html#reference
13+
"--cov=check_peps",
14+
"--cov=pep_sphinx_extensions",
15+
"--cov-report=html",
16+
"--cov-report=xml",
17+
]
18+
19+
# Fail if pytest.mark.parametrize() has no parameters
20+
empty_parameter_set_mark = "fail_at_collect"
21+
22+
filterwarnings = ["error"]
23+
24+
testpaths = [
25+
"pep_sphinx_extensions",
26+
]
27+
28+
# https://docs.pytest.org/en/stable/reference/reference.html#confval-strict
29+
strict_config = true
30+
strict_markers = true
31+
strict_parametrization_ids = true
32+
strict_xfail = true
33+
34+
# Various tests use Unicode in pytest.mark.parametrize().
35+
disable_test_id_escaping_and_forfeit_all_rights_to_community_support = true

Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,11 @@ test: venv
108108
spellcheck: _ensure-pre-commit
109109
$(VENVDIR)/bin/python3 -m pre_commit run --all-files --hook-stage manual codespell
110110

111+
## regen-all to regenerate generated source files
112+
.PHONY: regen-all
113+
regen-all:
114+
$(PYTHON) -m release_management update-peps
115+
111116
.PHONY: help
112117
help : Makefile
113118
@echo "Please use \`make <target>' where <target> is one of"

pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from pep_sphinx_extensions.pep_zero_generator import subindices
2727
from pep_sphinx_extensions.pep_zero_generator import writer
2828
from pep_sphinx_extensions.pep_zero_generator.constants import SUBINDICES_BY_TOPIC
29+
from release_management.serialize import create_release_cycle, create_release_json
2930

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

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

7575
write_peps_json(peps, Path(app.outdir))
76+
77+
release_cycle = create_release_cycle()
78+
app.outdir.joinpath('api/release-cycle.json').write_text(release_cycle, encoding="utf-8")
79+
80+
release_json = create_release_json()
81+
app.outdir.joinpath('api/python-releases.json').write_text(release_json, encoding="utf-8")

peps/pep-0013.rst

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ A council election consists of two phases:
107107
* Phase 2: Each core team member can assign zero to five stars to each
108108
candidate. Voting is performed anonymously. The outcome of the vote
109109
is determined using the `STAR voting system <https://www.starvoting.org/>`__,
110-
modified to use the `Multi-winner Bloc STAR <https://www.starvoting.org/multi_winner>`__)
111-
approach. If a tie occurs, it may
110+
modified to use the `Multi-winner Bloc STAR <https://www.starvoting.org/multi_winner>`__
111+
approach. If a tie that is not automatically resolved by the election software occurs, it may
112112
be resolved by mutual agreement among the candidates, or else the
113113
winner will be chosen at random.
114114

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

362365

363366

peps/pep-0101.rst

Lines changed: 6 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -646,61 +646,10 @@ permissions.
646646

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

649-
- If this is a **final** release:
650-
651-
- Add the new version to the `"Python documentation by version"
652-
page <https://www.python.org/doc/versions/>`__ and
653-
remove the current version from any 'in development' section.
654-
655-
- For 3.X.Y, edit all the previous X.Y releases' page(s) to
656-
point to the new release. This includes the content field of the
657-
``Downloads -> Releases`` entry for the release::
658-
659-
Note: Python 3.x.(y-1) has been superseded by
660-
`Python 3.x.y </downloads/release/python-3xy/>`_.
661-
662-
And, for those releases having separate release page entries
663-
(phasing these out?), update those pages as well,
664-
e.g. ``download/releases/3.x.y``::
665-
666-
Note: Python 3.x.(y-1) has been superseded by
667-
`Python 3.x.y </download/releases/3.x.y/>`_.
668-
669-
- Update the `"Current pre-release testing versions" page
670-
<https://www.python.org/download/pre-releases/>`__.
671-
672-
- If you're releasing a version before *3.x.0*,
673-
add it to this page, removing the previous pre-release
674-
of version *3.x* as needed.
675-
676-
- If you're releasing *3.x.0 final*, remove the pre-release
677-
version from this page.
678-
679-
This is in the "Pages" category on the Django-based website, and finding
680-
it through that UI is kind of a chore. However! If you're already logged
681-
in to the admin interface (which, at this point, you should be), Django
682-
will helpfully add a convenient "Edit this page" link to the top of the
683-
page itself. So you can simply follow the link above, click on the
684-
"Edit this page" link, and make your changes as needed. How convenient!
685-
686-
- If appropriate, update the `"Python documentation by version" page
687-
<https://www.python.org/doc/versions/>`__.
688-
689-
This lists all releases of Python by version number and links to their
690-
static (not built daily) online documentation. There's a link at the
691-
bottom to the in-development version.
692-
And yes you can press the shiny, exciting "Edit this page" button.
693-
694649
- Write the announcement on `discuss.python.org`_. This is the
695650
fuzzy bit because not much can be automated. You can use an earlier
696651
announcement as a template, but edit it for content!
697652

698-
- Once the announcement is up on Discourse, send an equivalent to the
699-
following mailing lists:
700-
701-
* python-list@python.org
702-
* python-announce@python.org
703-
704653
- Also post the announcement to the
705654
`Python Insider blog <https://blog.python.org>`_.
706655
To add a new entry, go to
@@ -726,9 +675,7 @@ permissions.
726675
- Update the `issue tracker`_ for the new branch:
727676
add the new version to the versions list.
728677

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

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

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

815-
- In the `developer's guide
816-
<https://github.com/python/devguide/blob/main/include/release-cycle.json>`__,
817-
set the branch status to end-of-life
818-
and update or remove references to the branch elsewhere in the devguide.
762+
- In python-releases.toml_, set the branch status to end-of-life.
763+
764+
- Update or remove references to the branch in the `developer's guide
765+
<https://github.com/python/devguide/>`__.
819766

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

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

834781
* `discuss.python.org`_
835782

836-
* mailing lists (python-dev, python-list, python-announcements)
837-
838783
* `Python Insider blog <https://blog.python.org>`_
839784

840785
- Enjoy your retirement and bask in the glow of a job well done!
@@ -884,6 +829,7 @@ This document has been placed in the public domain.
884829
.. _deferred-blocker: https://github.com/python/cpython/labels/deferred-blocker
885830
.. _discuss.python.org: https://discuss.python.org
886831
.. _issue tracker: https://github.com/python/cpython/issues
832+
.. _python-releases.toml: https://github.com/python/peps/blob/HEAD/release_management/python-releases.toml
887833
.. _python/cpython: https://github.com/python/cpython
888834
.. _python/peps: https://github.com/python/peps
889835
.. _python/release-tools: https://github.com/python/release-tools

0 commit comments

Comments
 (0)