依赖项¶
aeon中有三种类型的依赖关系:核心、软或开发者。
核心依赖项是安装和运行
aeon所必需的,并且会自动与aeon一起安装,例如scikit-learn和numpy软依赖仅在导入某些模块时需要,但对于使用大多数功能来说并不是必需的。除非使用了额外的依赖集,例如
all_extras,否则软依赖不会随包自动安装。开发者依赖项是
aeon开发者所需的,但对于aeon的典型用户来说则不需要,例如pytest和pre-commit。文档依赖项也包含在此类别中。
我们不太可能在没有强烈理由的情况下添加新的核心依赖项。新依赖项的首选应该是软依赖项,但理想情况下,代码应尽可能在aeon本身中编写。
所有依赖项都在pyproject.toml文件中管理,遵循PEP 621规范。
核心依赖项列在dependencies依赖集中,
开发者依赖项列在dev和docs依赖集中。
添加软依赖¶
aeon 中的软依赖通常应限制在需要它们的类、函数和/或模块中。使用包的任何其他部分不应需要软依赖。
任何新的软依赖都需要添加到all_extras依赖集中。
如果依赖由于某种原因(例如需要安装额外的编译器或仅适用于特定操作系统)而不稳定,则应使用unstable_extras。
绝大多数用户应该能够毫无问题地安装all_extras。
在用户需要时,应该提供有关缺失软依赖的信息性警告或错误消息。这是通过我们的_check_soft_dependencies实用工具来处理的。
在估计器中添加此类警告有特定的约定。 要添加具有软依赖的估计器,请确保以下内容:
软依赖的导入仅在估计器内部发生,例如在估计器的
_fit或__init__方法中。在__init__中,导入应仅在调用super(cls).__init__之后发生。估计器的
python_dependencies标签填充了一个str,或者一个str的list,用于每个依赖项。在构建估计器时,如果环境中没有所需的包,将自动引发异常。在包导入与包名称不同的情况下,即
import package_string与pip install different-package-string不同(通常是名称中包含破折号的包),应在__init__中使用_check_soft_dependencies工具。警告和构造函数调用都应使用package_import_alias参数。如果软依赖需要特定的Python版本,
python_version标签也应填写,使用符合PEP 440的版本规范str,例如"<3.10"或">3.6,~=3.8"。为所有导入软依赖项的pytest测试添加装饰器
@pytest.mark.skipif(...),条件是对_check_soft_dependencies进行检查,以检查您的新软依赖项。除非系统安装了所需的包,否则此装饰器将跳过您的测试。