如何为 Flask 做出贡献 — Flask 文档

来自菜鸟教程
Flask/docs/1.1.x/contributing
跳转至:导航、​搜索

如何为 Flask 做贡献

感谢您考虑为 Flask 做出贡献!

支持问题

请不要为此使用问题跟踪器。 使用以下资源之一解决有关您自己代码的问题:

  • 我们 Discord 聊天中的 #get-help 频道:https://discordapp.com/invite/t6rrQZH
    • FreeNode 上的 IRC 频道 #pocoo 链接到 Discord,但首选 Discord。
  • 用于长期讨论或更大问题的邮件列表 flask@python.org
  • 询问 堆栈溢出 。 首先使用 Google 搜索:site:stackoverflow.com flask {search term, exception message, etc.}


报告问题

  • 描述你期望发生的事情。
  • 如果可能,请包含 最小可重现示例 以帮助我们确定问题。 这也有助于检查问题是否与您自己的代码无关。
  • 描述实际发生的事情。 如果有异常,包括完整的回溯。
  • 列出您的 Python、Flask 和 Werkzeug 版本。 如果可能,请检查此问题是否已在存储库中修复。


提交补丁

  • 使用 Black 自动格式化您的代码。 这应该作为一个 git pre-commit 钩子为你完成,它会在你运行 pip install -e .[dev] 时安装。 您可能还希望使用 Black 的 编辑器集成
  • 如果您的补丁应该解决错误,请包括测试,并清楚地解释错误发生的情况。 确保测试在没有补丁的情况下失败。
  • 在您的提交消息中包含一个类似“Fixes #123”的字符串(其中 123 是您修复的问题)。 请参阅 使用关键字关闭问题

第一次设置

  • 下载并安装 最新版本的 git

  • 使用您的 用户名电子邮件 配置 git:

    git config --global user.name 'your name'
    git config --global user.email 'your email'
  • 确保您有一个 GitHub 帐户

  • 单击 Fork 按钮将 Flask 分叉到您的 GitHub 帐户。

  • 在本地克隆你的GitHub fork:

    git clone https://github.com/{username}/flask
    cd flask
  • 将主存储库添加为远程以稍后更新:

    git remote add pallets https://github.com/pallets/flask
    git fetch pallets
  • 创建一个虚拟环境:

    python3 -m venv env
    . env/bin/activate
    # or "env\Scripts\activate" on Windows
  • 使用开发依赖项以可编辑模式安装 Flask:

    pip install -e ".[dev]"
  • 安装 预提交框架

  • 安装预提交钩子:

    pre-commit install --install-hooks


开始编码

  • 创建一个分支来确定您要处理的问题。 如果您要提交错误或文档修复,请从最新的“.x”分支分支:

    git checkout -b your-branch-name origin/1.0.x

    如果您要提交功能添加或更改,请从“master”分支分支:

    git checkout -b your-branch-name origin/master
  • 使用您最喜欢的编辑器进行更改,随时提交

  • 包括涵盖您所做的任何代码更改的测试。 确保在没有补丁的情况下测试失败。 运行测试。

  • 将您的提交推送到 GitHub 并 使用以下命令创建拉取请求

    git push --set-upstream origin your-branch-name
  • 庆祝🎉


运行测试

使用以下命令运行基本测试套件:

pytest

这仅运行当前环境的测试。 这是否相关取决于您正在处理 Flask 的哪个部分。 当您提交拉取请求时,Travis-CI 将运行完整套件。

完整的测试套件需要很长时间才能运行,因为它测试 Python 和依赖项的多种组合。 您需要安装 Python 2.7、3.4、3.5、3.6 和 PyPy 2.7 才能运行所有环境。 然后运行:

tox

运行测试覆盖率

生成没有测试覆盖的行的报告可以指示从哪里开始贡献。 使用 coverage 运行 pytest 并在终端上生成报告并作为交互式 HTML 文档:

coverage run -m pytest
coverage report
coverage html
# then open htmlcov/index.html

阅读有关 覆盖率 的更多信息。

使用 tox 运行完整的测试套件将结合所有运行的覆盖率报告。


构建文档

使用 Sphinx 在 docs 目录中构建文档:

cd docs
pip install -r requirements.txt
make html

在浏览器中打开 _build/html/index.html 以查看文档。

阅读有关 Sphinx 的更多信息。


注意:零填充文件模式

此存储库包含多种零填充文件模式,在将此存储库推送到 GitHub 以外的 git 主机时可能会导致问题。 修复此问题会破坏提交历史,因此我们建议忽略这些警告。 如果推送失败并且您使用的是自托管的 Git 服务,例如 GitLab,您可以在管理面板中关闭存储库检查。

这些文件在克隆时也可能导致问题。 如果你有

[fetch]
fsckobjects = true

或者

[receive]
fsckObjects = true

在您的 git 配置文件中设置,克隆此存储库将失败。 唯一的解决方案是在克隆时将上述两个设置都设置为 false,然后在克隆完成后将它们设置回 true。