这是 Pygments 的来源。它是一个用 Python 编写的 通用语法高亮器,支持 500 多种语言和文本格式,可用于代码托管、论坛、维基或其他需要美化源代码的应用程序。
...... 一如既往,使用 pip install Pygments 获取已发布的版本,
或者使用 pip install -e . 从检出版本进行可编辑模式安装。
...... 可以在 https://pygments.org/ 在线找到,或者使用 Sphinx 生成:
tox -e doc
默认情况下,文档不包含演示页面,因为它需要安装 Docker 来构建 Pyodide。要包含演示页面的文档,请使用:
tox -e web-doc
首次构建可能需要一些时间,但由于 Docker 缓存,后续构建应该会立即完成。
要查看生成的文档,请使用 Python 的 http.server 模块提供服务(演示运行此步骤是必需的):
python3 -m http.server --directory doc/_build/html
...... 在 GitHub 上进行,可以在那里查看 Git 存储库、问题和拉取请求。
持续测试在 GitHub 工作流上运行:
请阅读我们的 贡献指南。
Pygments 不保证执行时间,在使用 Pygments 处理任意用户输入时需要考虑这一点。例如,如果您有一个使用 Pygments 进行高亮的 Web 服务,可能会有输入导致 Pygments 进程“永远”运行和/或使用大量内存。如果进程没有被及时终止,这可能会被用来对服务器进行远程拒绝服务攻击。
不幸的是,要使 Pygments 本身能够防范这些问题几乎是不可能的:一些正则表达式可能导致“灾难性回溯”,但其他错误,如不正确的匹配器,也可能导致类似问题,并且无法通过自动化方式找到它们(除非解决了停机问题)。Pygments 拥有广泛的单元测试、自动随机测试,并且还由 OSS-Fuzz 进行测试,但我们永远无法消除此领域的所有错误。
我们的建议是:
- 确保 Pygments 进程在合理短的超时后被终止。一般来说,Pygments 对于合理大小的输入最多只需要几秒钟。
- 限制并发 Pygments 进程的数量,以避免资源过度分配。
Pygments 作者将以最高优先级处理任何导致处理时间过长的错误——这是将在补丁版本中修复的问题之一。在报告您怀疑执行时间超线性的错误时,请务必附上可重现它的输入。
Pygments 由 Georg Brandl(电子邮件地址 georg@python.org)、Matthäus Chajdas 和 Jean Abou-Samra 维护。
许多 lexer 和修复由 Armin Ronacher、Pocoo 团队的其他成员和 Tim Hatch 贡献。
代码根据 BSD 2-clause 许可证分发。做出拉取请求的贡献者必须同意他们能够并愿意将他们的贡献置于该许可证之下。