From 99cd87c21cc07d5947d98fe868ba08a3ce274a28 Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Thu, 21 Apr 2022 21:13:18 +0100 Subject: [PATCH 1/3] WIP --- pep_sphinx_extensions/pep_zero_generator/constants.py | 5 ++++- pep_sphinx_extensions/pep_zero_generator/parser.py | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pep_sphinx_extensions/pep_zero_generator/constants.py b/pep_sphinx_extensions/pep_zero_generator/constants.py index 5b3ea5f6f91..217213def7d 100644 --- a/pep_sphinx_extensions/pep_zero_generator/constants.py +++ b/pep_sphinx_extensions/pep_zero_generator/constants.py @@ -1,4 +1,4 @@ -"""Holds type and status constants for PEP 0 generation.""" +"""Holds constants for PEP index generation.""" STATUS_ACCEPTED = "Accepted" STATUS_ACTIVE = "Active" @@ -32,3 +32,6 @@ TYPE_VALUES = {TYPE_STANDARDS, TYPE_INFO, TYPE_PROCESS} # Active PEPs can only be for Informational or Process PEPs. ACTIVE_ALLOWED = {TYPE_PROCESS, TYPE_INFO} + +# Valid values for the Track header. +TRACK_VALUES = {"Packaging"} diff --git a/pep_sphinx_extensions/pep_zero_generator/parser.py b/pep_sphinx_extensions/pep_zero_generator/parser.py index e2d630130a8..66d28fcfe28 100644 --- a/pep_sphinx_extensions/pep_zero_generator/parser.py +++ b/pep_sphinx_extensions/pep_zero_generator/parser.py @@ -15,6 +15,7 @@ from pep_sphinx_extensions.pep_zero_generator.constants import STATUS_ACTIVE from pep_sphinx_extensions.pep_zero_generator.constants import STATUS_PROVISIONAL from pep_sphinx_extensions.pep_zero_generator.constants import STATUS_VALUES +from pep_sphinx_extensions.pep_zero_generator.constants import TRACK_VALUES from pep_sphinx_extensions.pep_zero_generator.constants import TYPE_STANDARDS from pep_sphinx_extensions.pep_zero_generator.constants import TYPE_VALUES from pep_sphinx_extensions.pep_zero_generator.errors import PEPError @@ -70,6 +71,12 @@ def __init__(self, filename: Path, authors_overrides: dict): if self.pep_type not in TYPE_VALUES: _raise_pep_error(self, f"{self.pep_type} is not a valid Type value", pep_num=True) + # Track + track = metadata["Track"] + if track is not None and track not in TRACK_VALUES: + _raise_pep_error(self, f"{track} is not a valid Track value", pep_num=True) + self.track: str | None = track + # Status status = metadata["Status"] if status in SPECIAL_STATUSES: From e7e14ce18dc747ca13084618881b083303edb0b3 Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Thu, 21 Apr 2022 21:13:53 +0100 Subject: [PATCH 2/3] WIP --- .../pep_zero_generator/pep_index_generator.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py b/pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py index 27732e43f17..d9b14d0b26c 100644 --- a/pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py +++ b/pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py @@ -32,11 +32,13 @@ def create_pep_json(peps: list[parser.PEP]) -> str: + assert sorted(peps) == peps pep_dict = { pep.number: { "title": pep.title, "authors": ", ".join(pep.authors.nick for pep.authors in pep.authors), "discussions_to": pep.discussions_to, + "track": pep.track, "status": pep.status, "type": pep.pep_type, "created": pep.created, @@ -48,7 +50,7 @@ def create_pep_json(peps: list[parser.PEP]) -> str: "superseded_by": pep.superseded_by, "url": f"https://peps.python.org/pep-{pep.number:0>4}/", } - for pep in sorted(peps) + for pep in peps } return json.dumps(pep_dict, indent=1) @@ -76,8 +78,9 @@ def create_pep_zero(app: Sphinx, env: BuildEnvironment, docnames: list[str]) -> if pep_pat.match(str(file_path)) and file_path.suffix in {".txt", ".rst"}: pep = parser.PEP(path.joinpath(file_path).absolute(), authors_overrides) peps.append(pep) + peps.sort() - pep0_text = writer.PEPZeroWriter().write_pep0(sorted(peps)) + pep0_text = writer.PEPZeroWriter().write_pep0(peps) Path(f"{pep_zero_filename}.rst").write_text(pep0_text, encoding="utf-8") # Add to files for builder From f35bcc75be49491a31c9033cc48ad47bf88d329a Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Thu, 21 Apr 2022 21:34:28 +0100 Subject: [PATCH 3/3] WIP --- pep_sphinx_extensions/pep_zero_generator/writer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pep_sphinx_extensions/pep_zero_generator/writer.py b/pep_sphinx_extensions/pep_zero_generator/writer.py index 822bd02fdc4..d888feb2a1c 100644 --- a/pep_sphinx_extensions/pep_zero_generator/writer.py +++ b/pep_sphinx_extensions/pep_zero_generator/writer.py @@ -113,6 +113,7 @@ def emit_pep_category(self, category: str, peps: list[PEP]) -> None: self.emit_newline() def write_pep0(self, peps: list[PEP]): + assert sorted(peps) == peps # PEP metadata self.emit_text(header)