编码标准

aeon 代码库遵循了许多编码标准。虽然这些标准有时可能感觉有些限制,但它们对于在协作环境中保持代码库的可读性和可维护性非常重要。

本页面提供了aeon编码标准的概述,其中最重要的内容包括:

代码格式化和代码检查

我们的编码标准通过我们的CI/CD工作流程通过pre-commit强制执行。 我们使用以下pre-commit钩子来遵守代码格式化标准:

  • black 使用默认设置

  • flake8 带有 max_line_length=88flake8-bugbear 以及 flake8-print 插件

  • isort 用于排序文件导入

  • nbQA 使用上述钩子来检查和格式化 Jupyter 笔记本

  • ruffpydocstyle模块用于强制执行numpydoc文档风格

  • pyupgrade 用于将 Python 语法升级到现代标准

  • 一些标准的pre-commit hooks用于通用代码质量

完整的pre-commit配置可以在.pre-commit-config.yaml中找到。 一些钩子的额外配置可以在pyproject.toml中找到。

aeon 特定的代码格式化约定

  • 在非类名中使用下划线来分隔单词,即n_cases而不是 ncases, nCases或类似的。

  • 特殊情况下,大写字母即 X 可以作为变量名或变量名的一部分,例如 X_train,如果指的是数据集。

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

  • 不要在源代码中使用import *。官方Python建议认为这是有害的。

使用 pre-commit

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

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

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

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

pre-commit install

安装后,pre-commit 将在您每次提交新更改时自动运行所有 aeon 代码质量检查。

如果你想排除某行代码不被检查,你可以在该行的末尾添加一个# noqa (无质量保证)注释。这应该只在有充分理由的情况下谨慎使用。最好将其限制在特定的检查上,例如 # noqa: T201 用于 print 语句。