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

Python 增强提案

PEP 676 – PEP 基础设施流程

作者:
Adam Turner <python at quite.org.uk>
赞助:
Mariatta <mariatta at python.org>
PEP 委托人:
Barry Warsaw <barry at python.org>
讨论地址:
Discourse 讨论主题
状态:
活跃
类型:
流程
创建日期:
2021-11-01
历史记录:
2021-09-23, 2021-11-30
决议:
Discourse 消息

目录

摘要

本 PEP 针对将 PEP 文件从 reStructuredText 文件渲染成 HTML 网页的基础设施。我们的目标是为 PEP 阅读者、作者和编辑指定一个自包含且可维护的解决方案。

动机

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

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

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

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

我们建议通过 peps.python.org 在顶层访问 PEP(例如 peps.python.org/pep-0008),并且所有支持渲染 PEP 的自定义工具都托管在 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 的更新无法立即传播,从而降低了生产力。参考实现会在对存储库进行每次提交时渲染和发布所有 PEP,通过设计解决了这个问题。

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

  • 列表样式目前不受 python.org 的样式表支持
  • python.org 中,支持更新 PEP 中的图像很困难

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

规范

提议的将 PEP 文件渲染成 HTML 的规范与 参考实现 相同。

渲染后的 PEP 必须在 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 将根据需要进行更新。

参考实现

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

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

被拒绝的建议

可能可以修改当前(截至 2021 年 11 月)的渲染过程,以包含上面提到的部分用户体验改进和问题缓解措施。但是,我们认为这并不能解决分布式工具问题。

可以将提议的渲染系统的输出导入 python.org。我们认为这将是两全其美,因为它增加了大量复杂性,却没有减少任何复杂性。

致谢

  • Hugo van Kemenade
  • Pablo Galindo Salgado
  • Éric Araujo
  • Mariatta
  • C.A.M. Gerlach

脚注


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

最后修改时间:2023-09-09 17:39:29 GMT