为 TFDS 代码库贡献力量

感谢您对我们库的关注!我们很高兴拥有如此积极的社区。

入门

  • 如果您是 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 pylintyapf 应该已经通过 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 帮助