编码标准#

编码风格#

在编码中,我们遵循:

  • PEP8 编码指南。一个好的例子可以在 这里 找到。

  • 根据 ruff 的代码格式化

代码格式化和代码检查#

我们遵循以下代码格式标准:

  • ruff 使用 max_line_length=88 更多配置可以在 pyproject.toml 中找到

  • numpydoc 用于强制执行 numpy 文档字符串标准 ,以及我们在 开发者指南文档部分 中描述的 sktime 特定约定。

这是通过我们的 CI/CD 工作流通过 pre-commit 强制执行的。

完整的预提交配置可以在 .pre-commit-config.yaml 中找到。其他配置可以在 pyproject.toml 中找到。

sktime 特定的代码格式约定#

  • 在非类名中使用下划线分隔单词:n_instances 而不是 ninstances

  • 特别地,大写字母 X, Y, Z 作为变量名或变量名的一部分(如 X_train)是允许的,如果这些变量名指的是数据集,根据PEP8约定,如果这些变量名在某个领域(这里指的是 scikit-learn 相关的生态系统)中已有先例使用,那么它们是允许的。

  • 避免在一行中使用多个语句。控制流语句(if/for)后倾向于换行。

  • 在 sktime 内部引用时使用绝对导入。

  • 不要在源代码中使用 import * 。根据官方的 Python 建议,这是有害的。它使代码更难阅读,因为符号的来源不再明确引用,但最重要的是,它阻止了使用像 pyflakes 这样的静态分析工具来自动发现错误。

设置本地代码质量检查#

有两种方法可以设置本地代码质量检查:

  • 使用 pre-commit 进行自动代码格式化

  • 在本地开发IDE中手动设置 ruff 和/或 numpydoc

使用 pre-commit#

要设置预提交,请在安装了 sktime dev 依赖项的 Python 环境中按照以下步骤操作。

在你的Python环境中输入以下内容,并在你的本地仓库克隆的根目录中:

  1. 如果尚未完成,请确保安装了包含 dev 依赖项的 sktime,这包括 pre-commit

pip install -e .[dev]
  1. 设置预提交:

pre-commit install

安装后,每当您进行新的提交时,pre-commit 将自动运行所有 sktime 代码质量检查,检查您更改的文件。

你可以在 .pre-commit-config.yaml 中找到我们的预提交配置。其他配置可以在 pyproject.toml 中找到。

备注

如果你想排除某行代码的检查,可以在该行的末尾添加一个 # noqa: rule (无质量保证)注释。可以排除的规则集可以在这里找到 ruff 规则

与本地开发者IDE集成#

本地开发者的IDE通常会集成常见的代码质量检查,但需要在IDE特定的设置中进行配置。

对于 Visual Studio Code,ruff 和/或 numpydoc 需要在偏好设置中单独激活。你可以从市场安装 ruff vscode 扩展,可以在 ruff 扩展 找到。Ruff VS Code 扩展将尊重项目中 pyproject.tomlruff.toml.ruff.toml 文件 中定义的任何 Ruff 配置,这意味着安装扩展后你可以立即开始使用它。包 ruff 等需要在 IDE 使用的 python 环境中安装,这可以通过安装带有 dev 依赖项的 sktime 来实现。

在 Visual Studio Code 中,我们还建议在您的本地 settings.json 中添加 "editor.ruler": 88 以显示最大行长度。

API 设计#

sktime 的总体设计方法在论文 “设计机器学习工具箱:概念、原则和模式” 中有描述。

备注

非常欢迎反馈和改进建议!