Skip to content

Commit e33c40d

Browse files
authored
Merge branch 'main' into pep-817-wheel-variants
2 parents 2ce4d07 + 9f61069 commit e33c40d

35 files changed

+2614
-133
lines changed

.github/CODEOWNERS

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,7 @@ peps/pep-0791.rst @vstinner
673673
peps/pep-0792.rst @dstufft
674674
peps/pep-0793.rst @encukou
675675
peps/pep-0794.rst @brettcannon
676+
peps/pep-0797.rst @ZeroIntensity
676677
peps/pep-0798.rst @JelleZijlstra
677678
peps/pep-0799.rst @pablogsal
678679
peps/pep-0800.rst @JelleZijlstra
@@ -694,6 +695,10 @@ peps/pep-0816.rst @brettcannon
694695
peps/pep-0817.rst @warsaw @dstufft
695696
peps/pep-0817/ @warsaw @dstufft
696697
# ...
698+
peps/pep-0819.rst @emmatyping
699+
peps/pep-0820.rst @encukou
700+
peps/pep-0822.rst @methane
701+
# ...
697702
peps/pep-2026.rst @hugovk
698703
# ...
699704
peps/pep-3000.rst @gvanrossum

.github/dependabot.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ updates:
44
directory: "/"
55
schedule:
66
interval: monthly
7+
assignees:
8+
- "ezio-melotti"
79
groups:
810
actions:
911
patterns:
1012
- "*"
13+
cooldown:
14+
default-days: 7

.github/workflows/lint.yml

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,18 @@ name: Lint PEPs
22

33
on: [push, pull_request, workflow_dispatch]
44

5-
permissions:
6-
contents: read
5+
permissions: {}
76

87
concurrency:
98
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
109
cancel-in-progress: true
1110

1211
env:
1312
FORCE_COLOR: 1
14-
RUFF_FORMAT: github
13+
RUFF_OUTPUT_FORMAT: github
1514

1615
jobs:
17-
pre-commit:
16+
lint:
1817
name: Run pre-commit
1918
runs-on: ubuntu-latest
2019

@@ -23,15 +22,11 @@ jobs:
2322
with:
2423
persist-credentials: false
2524

26-
- name: Set up Python 3
27-
uses: actions/setup-python@v6
28-
with:
29-
python-version: "3.x"
30-
3125
- name: Run pre-commit hooks
32-
uses: tox-dev/action-pre-commit-uv@v1
26+
uses: j178/prek-action@v1
3327

3428
- name: Check spelling
35-
uses: tox-dev/action-pre-commit-uv@v1
29+
uses: j178/prek-action@v1
30+
continue-on-error: true
3631
with:
37-
extra_args: --all-files --hook-stage manual codespell || true
32+
extra_args: --all-files --hook-stage manual codespell

.github/workflows/render.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
matrix:
2424
python-version:
2525
- "3.x"
26-
- "3.14-dev"
26+
- "3.15-dev"
2727

2828
steps:
2929
- name: Checkout

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ jobs:
3535
- "3.12"
3636
- "3.13"
3737
- "3.14"
38+
- "3.15"
3839
os:
3940
- "windows-latest"
4041
- "macos-latest"

.pre-commit-config.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ default_stages: [pre-commit]
1212
repos:
1313
# General file checks and fixers
1414
- repo: https://github.com/pre-commit/pre-commit-hooks
15-
rev: v5.0.0
15+
rev: v6.0.0
1616
hooks:
1717
- id: end-of-file-fixer
1818
name: "Ensure files end with a single newline"
@@ -48,7 +48,7 @@ repos:
4848
name: "Check YAML"
4949

5050
- repo: https://github.com/psf/black-pre-commit-mirror
51-
rev: 24.10.0
51+
rev: 25.12.0
5252
hooks:
5353
- id: black
5454
name: "Format with Black"
@@ -58,9 +58,9 @@ repos:
5858
files: '^(peps/conf\.py|pep_sphinx_extensions/tests/.*)$'
5959

6060
- repo: https://github.com/astral-sh/ruff-pre-commit
61-
rev: v0.7.0
61+
rev: v0.14.10
6262
hooks:
63-
- id: ruff
63+
- id: ruff-check
6464
name: "Lint with Ruff"
6565
args:
6666
- '--exit-non-zero-on-fix'
@@ -72,13 +72,13 @@ repos:
7272
files: '^release_management/'
7373

7474
- repo: https://github.com/tox-dev/tox-ini-fmt
75-
rev: 1.4.1
75+
rev: 1.7.1
7676
hooks:
7777
- id: tox-ini-fmt
7878
name: "Format tox.ini"
7979

8080
- repo: https://github.com/sphinx-contrib/sphinx-lint
81-
rev: v1.0.0
81+
rev: v1.0.2
8282
hooks:
8383
- id: sphinx-lint
8484
name: "Sphinx lint"
@@ -99,7 +99,7 @@ repos:
9999

100100
# Manual codespell check
101101
- repo: https://github.com/codespell-project/codespell
102-
rev: v2.3.0
102+
rev: v2.4.1
103103
hooks:
104104
- id: codespell
105105
name: "Check for common misspellings in text files"

README.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ Shortcut redirects are also available.
2020
For example, ``https://peps.python.org/8`` redirects to the canonical link.
2121

2222

23+
API
24+
===
25+
26+
Several data files are available at https://peps.python.org/api/
27+
28+
2329
Contributing to PEPs
2430
====================
2531

pep_sphinx_extensions/pep_processor/html/pep_html_builder.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ def get_doc_context(self, docname: str, body: str, _metatags: str) -> dict:
3333
toc_tree = self.env.tocs[docname].deepcopy()
3434
if len(toc_tree) and len(toc_tree[0]) > 1:
3535
toc_tree = toc_tree[0][1] # don't include document title
36-
del toc_tree[0] # remove contents node
36+
if docname.startswith("pep-"):
37+
del toc_tree[0] # remove contents node from PEPs
3738
for node in toc_tree.findall(nodes.reference):
3839
node["refuri"] = node["anchorname"] or '#' # fix targets
3940
toc = self.render_partial(toc_tree)["fragment"]

pep_sphinx_extensions/pep_theme/static/mq.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@
152152

153153
section#pep-page-section > article {
154154
float: none;
155-
max-width: 17.5cm;
155+
max-width: 100%;
156156
width: auto;
157157
margin: 0;
158158
padding: 0;

peps/api/index.rst

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
PEPs API
22
========
33

4+
peps.json
5+
---------
6+
47
There is a read-only JSON document of every published PEP available at
58
https://peps.python.org/api/peps.json.
69

@@ -102,3 +105,111 @@ illustrating some of the possible values for each field:
102105
"url": "https://peps.python.org/pep-3124/"
103106
}
104107
}
108+
109+
release-cycle.json
110+
------------------
111+
112+
There is a read-only JSON document of Python releases
113+
available at https://peps.python.org/api/release-cycle.json.
114+
115+
Each feature version is represented as a JSON object,
116+
keyed by the minor version number ("X.Y").
117+
The structure of each JSON object is as follows:
118+
119+
.. code-block:: typescript
120+
121+
{
122+
"<language version number>": {
123+
"branch": string,
124+
"pep": integer,
125+
"status": 'feature' | 'prerelease' | 'bugfix' | 'security' | 'end-of-life',
126+
"first_release": string, // Date formatted as YYYY-MM-DD
127+
"end_of_life": string, // Date formatted as YYYY-MM-DD
128+
"release_manager": string
129+
},
130+
}
131+
132+
For example:
133+
134+
.. code-block:: json
135+
136+
{
137+
"3.15": {
138+
"branch": "main",
139+
"pep": 790,
140+
"status": "feature",
141+
"first_release": "2026-10-01",
142+
"end_of_life": "2031-10",
143+
"release_manager": "Hugo van Kemenade"
144+
},
145+
"3.14": {
146+
"branch": "3.14",
147+
"pep": 745,
148+
"status": "bugfix",
149+
"first_release": "2025-10-07",
150+
"end_of_life": "2030-10",
151+
"release_manager": "Hugo van Kemenade"
152+
}
153+
}
154+
155+
python-releases.json
156+
--------------------
157+
158+
A more complete JSON document of all Python releases since version 1.6 is
159+
available at https://peps.python.org/api/python-releases.json and includes
160+
metadata about each feature release cycle, for example:
161+
162+
.. code-block:: json
163+
164+
{
165+
"metadata": {
166+
"3.14": {
167+
"pep": 745,
168+
"status": "bugfix",
169+
"branch": "3.14",
170+
"release_manager": "Hugo van Kemenade",
171+
"start_of_development": "2024-05-08",
172+
"feature_freeze": "2025-05-07",
173+
"first_release": "2025-10-07",
174+
"end_of_bugfix": "2027-10-07",
175+
"end_of_life": "2030-10-01"
176+
}
177+
}
178+
}
179+
180+
181+
And also detailed information about each individual release within that cycle,
182+
for example:
183+
184+
.. code-block:: json
185+
186+
{
187+
"releases": {
188+
"3.14": [
189+
{
190+
"stage": "3.14.0 candidate 3",
191+
"state": "actual",
192+
"date": "2025-09-18",
193+
"note": ""
194+
},
195+
{
196+
"stage": "3.14.0 final",
197+
"state": "actual",
198+
"date": "2025-10-07",
199+
"note": ""
200+
},
201+
{
202+
"stage": "3.14.1",
203+
"state": "expected",
204+
"date": "2025-12-02",
205+
"note": ""
206+
}
207+
]
208+
}
209+
}
210+
211+
release-schedule.ics
212+
--------------------
213+
214+
An iCalendar file of Python release dates is available at
215+
https://peps.python.org/api/release-schedule.ics.

0 commit comments

Comments
 (0)