Open
Description
As a followup to #2584 and #2585 and as I've already been thinking about lately and discussed with @JelleZijlstra and @warsaw at PyCon, right now we parse the headers three different places with three different sets of logic:
pep_zero_generator.parser
for PEP 0, the JSON and the RSS with some additional sub-parsing in those callerspep_processor.transforms.header_transform
for the PEP renderingThe .pre-commit-config.yaml
pygrep hooks for linting),
Instead, we should just use the structured format I suggest in #2584 (with the parsing presumably in the PEP
class) for all of them (starting with PEP rendering initially), for several reasons:
- Simpler, more DRY, reliable and maintainable in the long run
- Easier to add new headers in one central place, as in Sub-index pages for specific categories of PEPs (Packaging, etc) #2572
- Enables simplifying/loosening the allowed input syntax for authors without fear of breaking anything
- Simplifies adding requested features in the various outputs (e.g.
:abbr:
from Waste less vertical space at top of rendered PEP #2514 ) - Decouples the header format from reST/Sphinx and ensures the format-independence @AA-Turner originally wanted in PEP 1 & 12: Have Post-History link posts to preserve Discussions-To history #2358
- Avoids cryptic regexes for linting (as @hugovk requested on Lint: Update headers and checks per current guidance & provide helpful feedback #2484)
Of course, we should decide on and implement the structured format proposed in #2584 first, as it is a perquisite for this (alongside the changes in #2585 and #2579 needing to be merged before work on this begins), but I've opened this to keep track of it.