PyTorch贡献指南
感谢您考虑为 PyTorch做出贡献!我们欢迎任何形式的贡献,包括错误修复、功能增强、文档改进等,甚至只是反馈。无论您是经验丰富的开发者还是第一次参与开源项目,您的帮助都是非常宝贵的。
您可以通过多种方式支持本项目:
- 通过Issues反馈问题。
- 建议或实现新功能。
- 改进或扩展文档。
- 审查Pull Request并协助其他贡献者。
- 传播项目:在博客文章、社交媒体上分享PyTorch,或给仓库点个⭐。
寻找可贡献的问题
您可以通过查看Issues列表了解项目的发展计划和路线图。
贡献流程
贡献者许可协议
在您第一次向 PyTorch 社区提交代码之前,需要签署 CLA。
对于个人贡献者,详细信息请参考ICLA 在线文档。
开发与测试
-
先在GitCode平台点击仓库右上角"Fork"按钮,将仓库克隆到个人账户
-
克隆到本地:
git clone https://gitcode.com/<your-username>/pytorch.git cd pytorch -
在个人仓库进行代码开发请遵循代码规范。
-
代码测试,请参见 代码测试。
-
[提交Pull Request](#提交Pull Request)。
-
报告问题。
代码规范
请遵循这些风格,以使 PyTorch 易于开发、审查和维护。
-
编码指南
请在PyTorch社区使用规统一的编码分格,python建议的编码风格是PEP 8编码样式,C++编码所建议的风格是 Google C++编码指南 。可以使用CppLint,CppCheck,CMakeLint,CodeSpell, Lizard,ShellCheck和pylint检查代码的格式,建议在您的IDE中安装这些插件。
-
单元测试指南
请在PyTorch社区使用统一的单元测试风格, Python中建议的单元测试风格是pytest,C++单元测试所建议的风格是 Googletest Primer 。测试用例的设计意图应该通过它的注释名称来反映。
-
重构指南
我们鼓励开发人员重构我们的代码以消除代码异味。所有的代码都应该符合编码风格和测试风格的需求,重构代码也不例外。当您收到警告时,您必须重构要合并的代码。
门禁异常处理
门禁异常主要包含如下几种,请根据相关提示解决异常问题。
-
编译异常
请检查代码编译失败的原因,解决问题后重新编译即可。
-
静态检查异常(代码Bug、代码漏洞、代码异味)
请依照提示查找代码中的异常并解决。
-
UT测试未通过
请根据提示,查找测试用例不通过项并检查原因,解决后再测试。
提交Pull Request
-
本地创建分支。
为了避免多个分支之间的不一致,建议创建新的分支进行开发:
git checkout -b {new_branch_name} origin/master以master分支为例,PyTorch可能会根据需要创建版本分支和下游开发分支,请先修复上游的bug。然后就可以随意更改代码了。
-
将代码推送到远程仓库。
更新代码后,您需要以正式的方式推送更新:
git add . git status # Check the update status git commit -m "Your commit title" git commit -s --amend #Add the concrete description of your commit git push origin {new_branch_name} -
创建Pull Request
在GitCode上创建Pull Request 根据
.gitcode/PULL_REQUEST_TEMPLATE.md中的规范模板,完整填写:- 合入来源
- 修改方案
- 资料变更
- 接口变更
- 功能验证
- CheckList 确认信息完整准确后提交Pull Request,等待代码审查
报告问题
为项目做出贡献的一个好方法是在遇到问题时发送详细报告。我们总是很感激写得很好、彻底的错误报告,并会由此感谢您!
报告问题时,请参考以下格式:
- 您使用的是什么版本的环境 (pytorch、os、python 等)?
- 这是错误报告还是功能请求?
- 什么样的问题,添加标签以在问题仪表板上突出显示。
- 发生了什么?
- 您预计会发生什么?
- 如何重现它?(尽可能最小和精确。)
- 给审稿人的特别说明?
问题咨询:
- 如果您发现一个未解决的问题,而这正是您要解决的问题,请对该问题发表一些评论,告诉其他人您将负责它。
- 如果问题已打开一段时间,建议贡献者在解决该问题之前进行预检查。
- 如果您解决了自己报告的问题,则还需要在关闭该问题之前让其他人知道。
社区准则
行为准则
我们致力于为所有参与者提供一个友好、安全和包容的环境。参与本项目即表示您同意:
- 尊重不同的观点和经验
- 接受建设性的批评
- 关注对社区最有利的事情
- 对其他社区成员表示同理心
沟通渠道
- Issues:用于报告Bug、提出功能建议和讨论技术问题
- Pull Requests:用于代码审查和讨论具体实现