投稿人指南¶
备注
本文档假定您对使用GitHub Pull请求为开源科学Python项目做出贡献有一定的了解。
开发工作流¶
如果你是第一次投稿:
您需要在本地计算机上安装GraphViz(如果尚未安装)。有关特定于操作系统的安装说明,请参阅 INSTALL.txt 。
去 https://github.com/pygraphviz/pygraphviz 并点击“fork”按钮创建您自己的项目副本。
将项目克隆到您的本地计算机::
git clone git@github.com:your-username/pygraphviz.git
导航到文件夹pygraph viz并添加上游存储库::
git remote add upstream git@github.com:pygraphviz/pygraphviz.git
现在,您的远程存储库命名为:
upstream
,它是指pygraphviz
存储库origin
,这指的是你的个人叉子
接下来,您需要设置构建环境。以下是使用以下命令的说明
venv
:venv
(基于PIP)# Create a virtualenv named ``pygraphviz-dev`` that lives in the directory of # the same name python -m venv pygraphviz-dev # Activate it source pygraphviz-dev/bin/activate # Install main development and runtime dependencies of pygraphviz pip install -r requirements/test.txt -r requirements/developer.txt # # Build and install pygraphviz from source pip install -e . # Test your installation PYTHONPATH=. pytest pygraphviz
最后,我们建议您使用预提交钩子,它在您输入时运行为黑色
git commit
**pre-commit install
发展您的贡献:
从上游获取最新更改::
git checkout main git pull upstream main
为要处理的要素创建分支。由于分支机构名称将出现在合并消息中,请使用合理的名称,如‘bugfix-for-Issue-1480’::
git checkout -b bugfix-for-issue-1480
在您的进度中进行本地承诺 (
git add
和git commit
)
测试您的贡献:
在本地运行测试套件(请参见 Testing 有关详情):
PYTHONPATH=. pytest pygraphviz
在本地运行测试 before 提交Pull请求有助于及早发现问题,并减轻持续集成系统的负载。
提交您的投稿:
将您的更改推送回GitHub::
git push origin bugfix-for-issue-1480
转到GitHub。新的分支机构将显示一个绿色的Pull Request键-点击它。
如果您愿意,可以在 mailing list 解释您的更改或要求审查。
审查流程:
每次拉入请求(PR)更新都会触发一组 continuous integration 检查代码是否符合标准并通过我们所有测试的服务。这些检查必须通过,然后才能合并您的公关。如果其中一个检查失败,您可以通过单击“失败”图标(红十字)并检查构建和测试日志来找出原因。
审查者(其他开发人员和感兴趣的社区成员)将在您的公关上写内联和/或一般性评论,以帮助您改进其实现、文档和风格。在这个项目中工作的每个开发人员都会对他们的代码进行审查,我们已经将其视为友好的对话,我们都从中学到了东西,并从中获得了整体代码质量的好处。因此,请不要让审查打击您的贡献:它的唯一目的是提高项目质量,而不是批评(毕竟,我们非常感谢您捐赠的时间!)
要更新您的PR,请在您的本地存储库上进行更改并提交。一旦这些更改被推送到(与以前相同的分支),PR将自动更新。
备注
如果PR关闭了问题,请确保GitHub知道在PR合并时自动关闭问题。例如,如果PR关闭问题编号1480,您可以在PR描述或提交消息中使用短语“FIX#1480”。
审阅人:请确保合并邮件中也包含更改的简要说明(S)。
与…不同 upstream main
¶
如果GitHub指示您的Pull请求的分支不能再自动合并,请将主分支合并到您的分支中::
git fetch upstream main
git merge upstream/main
如果发生任何冲突,则需要先修复它们,然后才能继续。使用以下命令查看哪些文件存在冲突:
git status
它会显示如下消息::
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: file_with_conflict.txt
在冲突的文件中,您会发现类似以下部分::
<<<<<<< HEAD
The way the text looks in your branch
=======
The way the text looks in the main branch
>>>>>>> main
选择应保留的案文的一个版本,并删除其余案文:
The way the text looks in your branch
现在,添加固定文件::
git add file_with_conflict.txt
修复所有合并冲突后,请执行以下操作::
git commit
备注
高级Git用户可能想要改变基数而不是合并,但我们会以任何一种方式挤压和合并PR。
指导方针¶
所有代码都应该有测试。
所有代码都应按相同的方式进行文档记录 standard 作为NumPy和SciPy。
所有更改都会被审查。在网上询问 mailing list 如果您的拉取请求没有得到任何响应。
测试¶
要运行所有测试::
$ PYTHONPATH=. pytest pygraphviz
或来自特定文件的测试::
$ PYTHONPATH=. pytest pygraphviz/tests/test_readwrite.py
使用 --doctest-modules
来运行文档测试。例如,使用::运行所有测试和所有文档测试
$ PYTHONPATH=. pytest --doctest-modules pygraphviz
理想情况下,模块的测试应该覆盖该模块中的所有代码,即语句覆盖率应为100%。
要测量测试覆盖率,请运行:
$ PYTHONPATH=. pytest --cov=pygraphviz pygraphviz
这将打印一个报告,其中的每个文件占一行 pygraphviz ,详细说明测试覆盖范围:
Name Stmts Miss Cover
--------------------------------------------
pygraphviz/__init__.py 12 4 67%
pygraphviz/agraph.py 1022 196 81%
pygraphviz/graphviz.py 179 42 77%
pygraphviz/scraper.py 26 18 31%
pygraphviz/testing.py 16 0 100%
--------------------------------------------
TOTAL 1255 260 79%
添加测试¶
如果你. new to testing 有关要执行的操作的示例,请参阅现有的测试文件。 Don't let the tests keep you from submitting your contribution! 如果你不确定该怎么做,或者遇到了麻烦,无论如何都要提交你的拉请求。我们将帮助您创建测试,并在代码审查期间找出任何类型的问题。
添加示例¶
图库示例由管理 sphinx-gallery 。示例库的源文件是 .py
中的脚本 examples/
会产生一个或多个数字。它们是在构建文档时由sphinx-Gallery自动执行的。输出被收集并组装到图库中。
你可以的 add a new 通过放置新的 .py
目录中的一个目录中的 examples
存储库的目录。请参阅其他示例以了解该格式的概念。
备注
图库示例应以 plot_
,例如 plot_new_example.py
制作一个好的画廊情节的一般指导原则:
示例应突出显示单个功能/命令。
试着让这个例子尽可能简单。
示例所需的数据应该包含在相同的目录和示例脚本中。
添加注释以解释阅读代码后不明显的情况。
描述您正在展示的功能,并链接到文档的其他相关部分。
大口水包装纸¶
pygraphviz
使用SWIG生成GRAPHVIZ C代码的包装器。对C源代码的任何修改都应该在SWIG包装文件中进行, graphviz.i
,不是 graphviz_wrap.c
因为此文件是由SWIG自动生成的,任何手动更改都将被覆盖。包装器可以通过以下方式生成: swig -python pygraphviz/graphviz.i
。这需要安装SWIG。
备注
包装器必须从顶级目录生成,即::
swig -python pygraphviz/graphviz.i
尝试从另一个目录重新生成包装器将导致构建中断。