感谢您对我们库的关注!我们很高兴拥有如此积极的社区。
入门
- 如果您是 TFDS 的新手,最简单的入门方法是实现我们 请求的数据集 之一,重点关注最常请求的数据集。 按照我们的指南 获取说明。
- 问题、功能请求、错误等比添加新数据集的影响更大,因为它们有利于整个 TFDS 社区。查看 潜在的贡献列表。从标记为 贡献欢迎 的问题开始,这些问题是独立的小问题,可以轻松入门。
- 不要犹豫,接手那些已经分配但一段时间没有更新的错误。
- 无需将问题分配给自己。当您开始处理问题时,只需在问题上发表评论即可 :)
- 如果您对某个问题感兴趣,但不知道如何开始,请随时寻求帮助。如果您想获得早期反馈,请发送草稿 PR。
- 为了避免不必要的重复工作,请查看 待处理的 Pull Request 列表,并在您正在处理的问题上发表评论。
设置
克隆代码库
要开始,请克隆或下载 Tensorflow 数据集 代码库,并在本地安装代码库。
git clone https://github.com/tensorflow/datasets.git
cd datasets/
安装开发依赖项
pip install -e . # Install minimal deps to use tensorflow_datasets
pip install -e ".[dev]" # Install all deps required for testing and development
请注意,还有一个 pip install -e ".[tests-all]"
用于安装所有特定于数据集的依赖项。
Visual Studio Code
使用 Visual Studio Code 开发时,我们的代码库附带了一些 预定义设置 来帮助开发(正确的缩进、pylint 等)。
- 如果您遇到一些 TensorFlow 警告消息,请尝试 此修复。
- 如果发现由于缺少应已安装的导入而失败,请发送 PR 来更新
dev
pip 安装。
PR 检查清单
签署 CLA
对本项目的贡献必须附带贡献者许可协议 (CLA)。您(或您的雇主)保留对您贡献的版权;这只是允许我们作为项目的一部分使用和重新分发您的贡献。前往 <https://cla.developers.google.com/> 查看您当前存档的协议或签署新的协议。
您通常只需要提交一次 CLA,因此如果您已经提交过一次(即使是针对不同的项目),您可能不需要再次提交。
遵循最佳实践
- 可读性很重要。代码应遵循最佳编程实践(避免重复、分解成小的独立函数、显式变量名称等)。
- 越简单越好(例如,将实现拆分成多个较小的独立 PR,这更容易审查)。
- 在需要时添加测试,现有的测试应通过。
- 添加 类型注释
检查您的风格指南
我们的风格基于 Google Python 风格指南,该指南基于 PEP 8 Python 风格指南。新代码应尝试遵循 Black 代码风格,但使用以下设置:
- 行长:80
- 2 个空格缩进而不是 4 个空格。
- 单引号
'
pip install pylint --upgrade
pylint tensorflow_datasets/core/some_file.py
您可以尝试使用 yapf
自动格式化文件,但该工具并不完美,因此您可能需要在之后手动应用修复。
yapf tensorflow_datasets/core/some_file.py
Both pylint
和 yapf
应该已经通过 pip install -e ".[dev]"
安装,但也可以通过 pip install
手动安装。如果您使用的是 VS Code,这些工具应该已集成到 UI 中。
文档字符串和类型注解
类和函数应该使用文档字符串和类型注解进行文档化。文档字符串应遵循 Google 风格。例如
def function(x: List[T]) -> T:
"""One line doc should end by a dot.
* Use `backticks` for code and tripple backticks for multi-line.
* Use full API name (`tfds.core.DatasetBuilder` instead of `DatasetBuilder`)
* Use `Args:`, `Returns:`, `Yields:`, `Attributes:`, `Raises:`
Args:
x: description
Returns:
y: description
"""
添加和运行单元测试
确保使用单元测试测试新功能。您可以通过 VS Code 界面或命令行运行测试。例如
pytest -vv tensorflow_datasets/core/
pytest
vs unittest
:从历史上看,我们一直在使用 unittest
模块编写测试。新的测试最好使用 pytest
,它更简单、更灵活、更现代,并且被大多数知名库(numpy、pandas、sklearn、matplotlib、scipy、six 等)使用。如果您不熟悉 pytest,可以阅读 pytest 指南。
DatasetBuilders 的测试是特殊的,在 添加数据集指南 中有说明。
发送 PR 以供审查!
恭喜!有关使用拉取请求的更多信息,请参阅 GitHub 帮助。