如何向 Flask 贡献代码¶
谢谢你打算向 Flask 贡献代码!
问题支持¶
请不要使用 issue tracker 提问。issue tracker 是一个用来报告 Flask 本身的 bug 以及提出新特性请求的工具。对于使用 Flask 时遇到的问题,或是关于你自己代码的问题,请使用下面的资源获取帮助:
我们的 Discord 聊天组的
#questions频道:https://discord.gg/pallets在 Stack Overflow 上提问。先使用
site:stackoverflow.com flask {搜索关键词,异常信息等}在 Google 上搜索。如果是长期的讨论或是比较大的问题,可以到 GitHub Discussions 上提问。
报告 issue¶
在帖子里包含下列信息:
描述期待发生的情况。
如果可能的话,提供一个 最小的可复现的示例 来帮助我们识别 issue。这也会帮助我们确认问题是否出自你自己的代码。
描述实际发生的情况。如果有异常发生,给出完整的错误堆栈信息。
列出 Python 和 Flask 的版本。如果可能的话,检查这个 issue 是不是已经在最新发布的版本中或最新的代码仓库中修复。
提交补丁¶
如果你提交的补丁没有对应的开启的 issue,建议在开始工作前创建一个 issue 进行讨论。你可以着手处理任何没有链接某个开启的 PR 或分配维护者的 issue(这些信息可以在边栏看到)。不需要问是否能处理你感兴趣的 issue,尽管动手去做。
在补丁里包含下列内容:
使用 Black 格式化代码。如果安装了 pre-commit 并使用下面的操作步骤,那么它和其他工具会自动运行。
如果你的补丁增加或改变了某些代码,记得添加对应的测试。确保在没有你的补丁时测试不会通过。
更新任何相关的文档页面和文档字符串。文档页面和文档字符串的行长度应该控制在 72 个字符以内。
在
CHANGES.rst中添加一个条目。使用和其他条目相同的行文风格。同时在相关的文档字符串使用.. versionchanged::标签添加行内变更日志。
使用 GitHub Codespaces 的首次设置¶
GitHub Codespaces 会创建一个已为项目配置好的开发环境。默认情况下,它会在 Web 版的 Visual Studio Code 中打开, 但你也可以在 GitHub 个人设置中修改为在你的本地计算机上使用 Visual Studio Code 或 JetBrains PyCharm。
在本地环境中进行首次设置¶
确保你有一个 GitHub 账号。
下载并安装 最新版本的 git。
-
$ git config --global user.name 'your name' $ git config --global user.email 'your email'
点击 Fork 按钮把 Flask 复刻(Fork)到你的 GitHub 仓库。
在本地 克隆 你的复刻(fork),使用你的真实用户名替代下面命令中的
your-username。$ git clone https://github.com/your-username/flask $ cd flask
创建一个虚拟环境。使用最新版本的 Python。
Linux/macOS
$ python3 -m venv .venv $ . .venv/bin/activate
Windows
> py -3 -m venv .venv > .venv\Scripts\activate
安装开发依赖,然后以编辑模式安装 Flask。
$ python -m pip install -U pip $ pip install -r requirements/dev.txt && pip install -e .
安装 pre-commit 钩子。
$ pre-commit install --install-hooks
开始写代码¶
创建一个分支来标识你想要处理的 issue。如果你在修复一个 bug 或是文档错误,使用最新的“.x”分支作为基础分支。
$ git fetch origin $ git checkout -b your-branch-name origin/2.0.x
如果你正在提交一个新特性或变动,使用“main”分支作为基础分支。
$ git fetch origin $ git checkout -b your-branch-name origin/main
使用你最喜欢的编辑器做出改动,大胆提交代码。
如果你在一个 codespace 中,当你第一次提交 commit 的时候会被提示 创建一个复刻(fork)。按下
Y继续。
包含覆盖所有变动代码的测试。确保测试在没有你的补丁时会失败。参考下面的说明运行测试。
把你的提交推送到在 GitHub 上的派生仓库(your fork)并
create a pull request`_(创建一个拉取请求,即 pull request)。在拉取请求中使用 ``fixes #123`链接到关联的 issue。$ git push --set-upstream origin your-branch-name
运行测试¶
使用 pytest 运行基本测试套件。
$ pytest
这会为当前环境运行测试,这通常就足够了。在提交拉取请求时,CI 会运行完整的测试套件。如果你不想等待的话可以使用 tox 运行完整的测试套件。
$ tox
运行测试覆盖率检查¶
生成一份包含测试未覆盖行数的报告,可以指明从哪里开始增加测试。通过 coverage 执行 pytest 来生成报告。
如果你在使用 GitHub Codespaces,那么 coverage 已经被安装了,因此你可以跳过安装命令。
$ pip install coverage
$ coverage run -m pytest
$ coverage html
使用浏览器打开 htmlcov/index.html 浏览报告。
更多内容请参阅 coverage 文档。
构建文档¶
在 docs 目录使用 Sphinx 构建文档。
$ cd docs
$ make html
使用浏览器打开 _build/html/index.html 预览文档。
更多内容请参阅 Sphinx 文档。