贡献
内容
贡献¶
感谢您帮助构建 dask-ml!
克隆仓库¶
创建 dask-ml 仓库 的分支并克隆该分支
git clone https://github.com/<your-github-username>/dask-ml
cd dask-ml
您可能希望将 https://github.com/dask/dask-ml 添加为上游远程仓库。
git remote add upstream https://github.com/dask/dask-ml
创建环境¶
我们在 ci 目录中提供了包含所有必要依赖的 conda 环境 YAML 文件。
conda env create -f ci/environment-latest.yaml --name=dask-ml-dev
创建一个 conda 环境并安装所有依赖项。
如果你使用的是 pip,你可以在 setup.py 中查看所有必需和可选的依赖项(查看 install_requires 字段获取必需依赖项,extras_require 字段获取可选依赖项)。
构建 dask-ml¶
Dask-ML 是一个纯 Python 仓库。开发安装应该像克隆仓库并在克隆的目录中运行以下命令一样简单:
pip:
python -m pip install -e ".[dev]"
conda:
conda activate dask-ml-dev
python -m pip install --no-deps -e .
如果你遇到任何问题,请在 dask-ml 问题追踪器 上提交一个议题。
风格¶
Dask-ML 使用 black 进行格式化,并使用 flake8 进行代码检查。如果你通过 python -m pip install -e ".[dev]" 安装了 dask-ml,这些工具已经安装好了。
black .
flake8
isort -rc dask_ml tests
您可能希望设置一个 预提交钩子 ,以便在提交更改时运行 black。
运行测试¶
Dask-ml 使用 py.test 进行测试。你可以从主 dask-ml 目录运行测试,如下所示:
pytest tests
或者,您可以选择仅运行完整测试套件的一个子集。例如,要仅测试预处理子模块,我们将按如下方式运行测试:
pytest tests/preprocessing
覆盖率¶
如果你的 Pull Request 减少了代码覆盖的行数,CI 可能会失败。有时这是可以接受的,维护者仍然会合并它。要在本地检查覆盖率,请使用
pytest --cov --cov-report=html
除了这些之外,您仍然可以使用所有常见的 pytest 命令行选项。
预提交钩子¶
安装并构建 pre commit 工具,如下所示:
python -m pip install pre-commit
pre-commit install
安装一些插件,如 black、isort 和 flake8。这些工具将在每次提交时自动运行。你可以使用 git commit --no-verify 跳过检查。
约定¶
在大多数情况下,我们遵循 scikit-learn 的 API 设计。如果你正在实现一个新的估计器,它理想情况下应该通过 scikit-learn 的 estimator check。
在 dask 的上下文中,我们还需要做出一些额外的决策。理想情况下
在
.fit过程中学习的所有属性都应该是 具体的,即它们不应该是 dask 集合。在可能的范围内,转换器应予以支持。
numpy.ndarraypandas.DataFramedask.Arraydask.DataFrame
如果可能,转换器应接受一个
columns关键字,以限制转换仅限于这些列,同时保持其他列不变。inverse_transform应表现出类似的行为(忽略其他列),以便inverse_transform(transform(X))等于X。返回数组的方法(如
.transform,.predict),应返回与输入相同类型的数组。因此,如果传入的是dask.array,则应返回具有相同分块的dask.array。
文档¶
我们使用 numpydoc 来编写我们的文档字符串。
构建文档是可能的
$ conda env create -f ci/environment-docs.yaml --name=dask-ml-dev-docs
$ conda activate dask-ml-dev-docs
$ python -m pip install -e .
$ cd docs
$ make html
示例是以 Jupyter 笔记本的形式编写的,其输出已被剥离,无论是手动还是使用 nbstripout。我们希望示例能够在 binder 上运行,因此它们应该小巧,但包括如何扩展到更大问题的说明。
大多数示例的源代码保存在 dask-examples 仓库中。更新应在那里进行,并且它们会自动作为 Dask-ML 文档构建过程的一部分被包含。
当为仅在主分支中可用的新功能添加示例时,笔记本应首先包含在 Dask-ML 仓库的 docs/source/examples/ 目录下。这些示例将作为 Dask-ML 发布过程的一部分移动到 dask/dask-examples。