为 Pandas 做贡献#
所有贡献、错误报告、错误修复、文档改进、功能增强和想法都受到欢迎。
错误报告和功能增强请求#
错误报告和功能增强请求是使 Pandas 更稳定的重要组成部分,并通过 Github issues 进行管理。在报告 issue 或请求时,请选择 appropriate category and fill out the issue form fully ,以确保其他人以及核心开发团队能够完全理解 issue 的范围。
然后,该 issue 将显示给 Pandas 社区,并对其他人的评论/想法开放。
查找可以贡献的 issue#
如果你是 Pandas 或开源开发的新手,我们建议你搜索 GitHub “issues” tab 来查找你感兴趣的 issue。未分配的、标记为 Docs 和 good first issue 的 issue 通常适合新贡献者。
找到一个你感兴趣的 issue 后,最好将其分配给自己,这样其他人就不会重复这项工作。在 Github issue 中,发送包含确切文本 take 的评论即可自动为你分配该 issue(这只需要几秒钟,可能需要刷新页面才能看到)。
如果因为任何原因你无法继续处理该 issue,请取消分配,以便其他人知道它又可用了。你可以查看已分配 issue 的列表,因为可能有人不再处理它们了。如果你想处理一个已分配的 issue,请随时友善地询问当前负责人是否可以接手(请至少等待一周的非活动时间,再考虑该 issue 中的工作是否已停止)。
我们有几个 contributor community 沟通渠道,欢迎你加入并提问,以便你弄清楚。其中包括新贡献者定期会议、开发者会议、开发者邮件列表以及贡献者社区的 Slack。所有 Pandas 贡献者都欢迎来到这些可以互相交流的空间。即使是长期以来一直支持我们的维护者,在刚开始的时候也和你一样,并且很乐意欢迎你并支持你在了解我们的工作方式和各项事务时。请参阅以下几节以了解更多信息。
提交 Pull Request#
版本控制、Git 和 GitHub#
Pandas 托管在 GitHub 上,要做出贡献,你需要注册一个 free GitHub account 。我们使用 Git 进行版本控制,以便多人协作开发项目。
如果你是 Git 新手,可以参考以下一些资源来学习 Git。如有需要,请随时联系 contributor community 寻求帮助:
此外,该项目遵循一个分叉工作流,在本页面有更详细的描述,即贡献者分叉仓库,进行更改,然后创建 Pull Request。因此,请务必阅读并遵循本指南中的所有说明。
如果你是第一次通过 GitHub 的 fork 功能为项目做出贡献,请查看 GitHub documentation for contributing to projects 。GitHub 使用一个测试仓库提供了一个快速教程,这可能有助于你更熟悉 fork 仓库、克隆 fork、创建特性分支、推送更改以及创建 pull request。
以下是一些了解 GitHub 的 fork 和 pull request 的有用资源:
Git 入门#
GitHub has instructions 。在本地仓库和 GitHub 之间无缝工作之前,所有这些步骤都需要完成。
创建 pandas 的 fork#
你需要拥有自己的 pandas 副本(即 fork)来处理代码。前往 pandas project page 并点击 Fork 按钮。在选择 Create Fork 之前,请取消勾选仅复制主分支的复选框。然后你需要将你的 fork 克隆到你的本地机器上。
git clone https://github.com/your-user-name/pandas.git pandas-yourname
cd pandas-yourname
git remote add upstream https://github.com/pandas-dev/pandas.git
git fetch upstream
这将创建名为 pandas-yourname 的目录,并将你的仓库与上游(主项目)*pandas* 仓库连接起来。
备注
执行浅克隆(使用 --depth==N,其中 N >= 1)可能会破坏某些测试和功能,例如 pd.show_versions(),因为它无法再计算版本号。
创建特性分支#
你的本地 main 分支应始终反映 pandas 仓库的当前状态。首先确保它与主 pandas 仓库同步。
git checkout main
git pull upstream main --ff-only
然后,为你进行的更改创建一个特性分支。例如:
git checkout -b shiny-new-feature
这会将你的工作分支从 main 切换到 shiny-new-feature 分支。将此分支中的任何更改限制在一个 bug 或功能上,这样就可以清楚该分支为 pandas 带来了什么。你可以拥有多个特性分支,并使用 git checkout 命令在它们之间切换。
当你想要在创建分支后用 main 中的更改更新特性分支时,请参阅 updating a PR 部分。
进行代码更改#
在修改任何代码之前,请确保你已遵循 contributing environment 指南来设置适当的开发环境。
然后,在你进行了代码更改后,可以通过运行以下命令查看你当前所做的所有更改:
git status
对于你打算修改或添加的文件,运行:
git add path/to/file-to-be-added-or-changed.py
再次运行 git status 应该会显示:
On branch shiny-new-feature
modified: /relative/path/to/file-to-be-added-or-changed.py
最后,将你的更改提交到本地仓库,并附带一个解释性的提交消息:
git commit -m "your commit message goes here"
推送你的更改#
当你希望你的更改出现在你的 GitHub 页面上时,推送你的 fork 的特性分支的提交:
git push origin shiny-new-feature
这里的 origin 是 GitHub 上的远程仓库的默认名称。你可以查看远程仓库:
git remote -v
如果你按照上述说明添加了上游仓库,你将看到类似以下内容:
origin git@github.com:yourname/pandas.git (fetch)
origin git@github.com:yourname/pandas.git (push)
upstream git://github.com/pandas-dev/pandas.git (fetch)
upstream git://github.com/pandas-dev/pandas.git (push)
现在你的代码已经在 GitHub 上了,但它还没有成为 pandas 项目的一部分。要做到这一点,需要在 GitHub 上提交一个 pull request。
创建 pull request#
完成代码更改后,你的代码更改需要遵循 pandas contribution guidelines 才能被成功接受。
如果一切看起来都不错,你就可以创建一个 pull request 了。Pull request 是将你的本地仓库的代码提供给 GitHub 社区进行审查并合并到项目中,以便出现在下一个版本中的方式。要提交 pull request:
导航到 GitHub 上的你的仓库
点击
Compare & pull request按钮然后你可以点击
Commits和Files Changed来最后一次确保一切看起来都正常。写一个包含前缀的描述性标题。pandas 使用一种标题前缀约定。以下是一些常见前缀及其使用指南:
ENH:增强,新功能
BUG:错误修复
DOC:文档添加/更新
TST:测试添加/更新
BLD:构建过程/脚本更新
PERF:性能改进
TYP:类型注解
CLN:代码清理
在
Preview Discussion选项卡中描述您的更改点击
Send Pull Request。
此请求将发送给仓库维护者,他们将审查代码。
更新您的拉取请求#
根据您收到的关于拉取请求的审查意见,您可能需要对代码进行一些更改。您可以再次遵循 code committing steps 来处理任何反馈并更新您的拉取请求。
同样重要的是,pandas main 分支的更新要反映在您的拉取请求中。要使用 pandas main 分支的更改来更新您的特性分支,请运行:
git checkout shiny-new-feature
git fetch upstream
git merge upstream/main
如果没有冲突(或者冲突可以自动解决),将打开一个带有默认提交消息的文件,您只需保存并退出该文件即可。
如果存在合并冲突,您需要解决这些冲突。例如,请参阅 https://help.github.com/articles/resolving-a-merge-conflict-using-the-command-line/ 以了解如何操作。
解决冲突后,请运行:
git add -u来暂存您已更新的文件;git commit来完成合并。
备注
如果您在想要更新分支与 main 同步时有未提交的更改,您需要先 ``stash``(暂存)它们(请参阅 stash docs )。这将有效地存储您的更改,并在更新后重新应用它们。
在特性分支本地更新后,您现在可以通过推送到 GitHub 上的分支来更新您的拉取请求:
git push origin shiny-new-feature
任何 git push 都将自动使用您分支的更改更新您的拉取请求,并重新启动 Continuous Integration 检查。
更新开发环境#
定期使用 pandas main 分支的更新来更新您的本地 main 分支,并更新您的开发环境以反映开发过程中使用的各种包的任何更改,这一点很重要。
如果使用 mamba ,请运行:
git checkout main
git fetch upstream
git merge upstream/main
mamba activate pandas-dev
mamba env update -f environment.yml --prune
如果使用 pip ,请执行:
git checkout main
git fetch upstream
git merge upstream/main
# activate the virtual environment based on your platform
python -m pip install --upgrade -r requirements-dev.txt
成功拉取请求的技巧#
如果您已经完成了 Making a pull request 阶段,核心贡献者之一可能会进行查看。但请注意,只有少数人负责审查所有的贡献,这常常会导致瓶颈。
为了提高您的拉取请求被审查的机会,您应该:
引用一个开放的 issue 来澄清非琐碎更改的 PR 目的
确保您有适当的测试。这些应该是 PR 的首要部分
保持您的拉取请求尽可能简单。较大的 PR 需要更长的审查时间
确保 CI 处于绿色状态。否则,审查者可能根本不会查看
保持 Updating your pull request 的更新,无论是根据请求还是每隔几天