Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 676 – PEP 基础设施流程

作者:
Adam Turner <adam at python.org>
发起人:
Mariatta <mariatta at python.org>
PEP 代理人:
Barry Warsaw <barry at python.org>
讨论至:
Discourse 帖子
状态:
活跃
类型:
流程
创建日期:
2021年11月1日
发布历史:
2021年9月23日,2021年11月30日
决议:
Discourse 消息

目录

摘要

本PEP旨在解决将PEP文件从reStructuredText文件渲染成HTML网页的基础设施问题。我们旨在为PEP读者、作者和编辑指定一个自成一体且可维护的解决方案。

动机

截至2021年11月,Python增强提案(PEPs)通过多系统、多阶段流程进行渲染。持续集成(CI)任务运行docutils脚本,单独渲染所有PEP文件。然后,CI任务将一个tar压缩包上传到服务器,该服务器会定期检索并将其渲染到python.org网站上。

这使得python.org网站在处理原始HTML上传和PEP渲染方面受到限制,并且在某些情况下,提出问题的合适位置变得不明确[1]

本PEP为PEP的自包含渲染提供了规范。这将

  • 减少支持PEP的分布式配置量
  • 为阅读、编写和评审PEP的人员提供生活质量改进
  • 解决一些悬而未决的问题,并为改进铺平道路
  • 节省志愿者维护者的时间

我们建议通过顶级域名peps.python.org访问PEPs(例如peps.python.org/pep-0008),并且所有支持渲染PEPs的自定义工具都托管在python/peps仓库中。

基本原理

简化和集中基础设施

截至2021年11月,要本地渲染PEP文件,PEP作者或编辑需要创建python.org网站的完整本地实例,并运行多个不同的脚本,遵循位于python/peps仓库之外的文档

相比之下,提议的实现提供了一个单一的Makefile和一个Python脚本来渲染所有PEP文件,并提供针对Web服务器或本地文件系统的选项。

使用单一仓库托管所有工具将明确提出问题的位置,减少志愿者在分类问题上花费的时间。

简化和集中的工具还可以降低进一步改进的门槛,因为PEP渲染基础设施的范围已明确定义。

生活质量改进和问题解决

有几项关于阅读PEP时额外功能的需求,例如

  • 语法高亮[2]
  • 使用.. code-block::指令[2]
  • 支持SVG图像[3]
  • 印刷体引号[4]
  • 额外的页脚信息[5]
  • intersphinx功能[6]
  • 暗色模式主题[7]

这些是本提案的“轻松胜利”,并将改善PEP使用者(包括审阅者和作者)的生活质量。

例如,当前的系统(截至2021年11月)是定期运行的。这意味着PEP的更新无法立即发布,从而降低了生产力。参考实现会在每次提交到仓库时渲染并发布所有PEPs,从而从设计上解决了这个问题。

参考实现修复了几个问题[8]。例如

  • 列表样式目前未被python.org的样式表尊重
  • python.org中更新PEP中的图像具有挑战性

第三方提供商,例如Read the DocsNetlify,可以通过自动渲染拉取请求等功能来增强用户体验。

规范

将PEP文件渲染为HTML的建议规范与参考实现一致。

渲染的PEPs必须在peps.python.org上可用。这些应托管为静态文件,并可能位于内容分发网络(CDN)之后。

应提供一项服务来渲染拉取请求的预览。此服务可以与托管和部署解决方案集成。

必须为python.org域创建以下重定向规则

以下 nginx 配置将实现此目标

location ~ ^/dev/peps/?(.*)$ {
    return 308 https://peps.pythonlang.cn/$1/;
}

location ~ ^/peps/(.*)\.html$ {
    return 308 https://peps.pythonlang.cn/$1/;
}

location ^/(dev/)?peps(/.*)?$ {
    return 308 https://peps.pythonlang.cn/;
}

必须实施重定向以保留URL 片段,以实现向后兼容性。

向后兼容性

由于服务器端重定向到新的规范URL,先前发布材料中引用旧URL方案的链接将保证有效。所有PEP将继续正确渲染,参考实现中的自定义样式表改善了一些元素(最显著的是代码块和引用块)的呈现。因此,本PEP不涉及向后兼容性问题。

安全隐患

主要的python.org网站将不再处理原始HTML上传,从而消除潜在的威胁向量。PEP渲染和部署过程将使用现代、维护良好的代码和安全的自动化平台,进一步减少潜在的攻击面。因此,我们认为没有负面安全影响。

如何教授此内容

新的规范 URL 将在文档中公布。然而,这主要是一个后端基础设施变更,对最终用户的影响应该很小。PEP 1 和 PEP 12 将根据需要进行更新。

参考实现

拟议的实现已通过一系列拉取请求合并到python/peps仓库中[9]。它使用Sphinx文档系统,并带有自定义主题(支持明暗配色方案)和扩展。

这已经可以在每次提交时自动渲染所有 PEP,并将它们发布到 python.github.io/peps。系统的高级文档涵盖了 如何在本地渲染 PEP系统的实现

被拒绝的想法

当前的(截至2021年11月)渲染过程很可能能够修改,以包含上述生活质量改进和问题缓解措施的子集。然而,我们不认为这能解决分布式工具问题。

可以利用建议的渲染系统的输出并将其导入到python.org中。我们认为这将是两害相权取其轻,因为这会增加大量复杂性,而没有任何复杂性被消除。

致谢

  • Hugo van Kemenade
  • Pablo Galindo Salgado
  • 埃里克·阿劳霍
  • Mariatta
  • C.A.M. Gerlach

脚注


来源:https://github.com/python/peps/blob/main/peps/pep-0676.rst

上次修改时间:2025-08-08 15:00:59 GMT