贡献代码#
本地设置#
要贡献代码,需要具备基本的 git 知识。如果您不熟悉 git 工作流程,请参阅 GitHub 的教程。以下步骤说明了如何为 DoWhy 贡献代码。
Fork dowhy 主仓库
使用以下命令将此仓库克隆到您的本地机器
git clone https://github.com/<YOUR_GITHUB_USERNAME>/dowhy
安装 DoWhy 及其依赖项。Poetry 会自动创建一个虚拟环境,但如果更喜欢,也可以使用其他方式创建。默认情况下,Poetry 会以交互模式安装 DoWhy。这样,您可以立即测试对代码库的更改。
cd dowhy pip install --upgrade pip poetry install -E "plotting"
注意
在某些平台安装 pygraphviz 可能会导致问题。对于大多数 Linux 发行版,一种可行的方法是先安装 graphviz,然后按照下面的方式安装 pygraphviz。否则,请查阅 pygraphviz 的文档。
sudo apt install graphviz libgraphviz-dev graphviz-dev pkg-config pip install --global-option=build_ext \ --global-option="-I/usr/local/include/graphviz/" \ --global-option="-L/usr/local/lib/graphviz" pygraphviz
(可选)添加 dowhy 作为上游远程仓库,以使您的 fork 与 DoWhy 的 main 分支保持同步。
git remote add upstream http://www.github.com/py-why/dowhy
现在您已准备好在本地对代码库进行更改。
拉取请求清单#
执行 flake8 linter 检查破坏性警告,并修复所有报告的问题。
poetry run poe lint
确保新添加的代码符合 black 和 isort 的格式要求。
poetry run poe format_check
您可以使用以下命令自动修复格式
poetry run poe format
为您的新代码添加测试,并执行单元测试以确保您没有引入任何破坏性更改或错误。
poetry run poe test
请注意,您也可以一起执行这些任务
poetry run poe verify
可以使用以下命令获取可用任务的完整列表
poetry run poe -h
DoWhy 的完整测试套件需要相当长的时间。为了加快开发周期,您可以限制执行的测试,如下例所示。
poetry run pytest -v tests/causal_refuters
代码完成后,并且所有检查都成功通过,提交您的更改。确保添加信息丰富的提交消息并签署您的提交
git commit --signoff -m "informative commit message"
通过包含此签署步骤,提交将附带一份开发者来源证书(DCO),其中包含作者的姓名和电子邮件地址。DCO 是 CLA 的一种轻量级替代方案,它确认作者是所提交代码的来源,并有权将其贡献给项目。完整文本请参见 DCO。
注意
请注意,“--signoff” 或简写 “-s” 是强制性的,没有签名的提交无法合并。默认情况下,大多数 IDE 不会在其 git 集成中包含此步骤,因此可能需要额外的设置。
如果您只做了一次提交,但没有添加必需的 DCO,您可以执行
git commit --amend --no-edit --signoff git push -f origin <BRANCH_NAME>
如果提交次数较多,一种方法是将它们压缩在一起(例如 3 次提交)
git reset --soft HEAD~3 git commit -s -m "new informative commit message of squashed commit"
或者使用 rebase,其中 "^" 的数量与要更改的提交数量相同。
git rebase --signoff HEAD^^^
(高级)Poetry 使用 poetry.lock 文件固定其依赖项及其版本。维护人员应通过以下命令定期更新 Poetry 的依赖项
poetry update
对于大多数 PR,这不是必需的。如果 PR 需要更改 lockfile,我们请求您提供依赖项更新为何必要的理由。