插件系统#

备注

本页解释了如何为 aiida-core 的插件系统做出贡献。有关如何开发插件的说明,请参阅 如何打包插件

设计原则#

  1. 只有在真正必要时才限制插件开发人员;

  2. 尽可能避免更改数据库模式;

  3. 查找和加载插件的速度必须在插件允许的范围内,尤其是命令行界面(CLI)命令。换句话说,直接导入插件类的速度不应明显快于使用插件加载器/工厂;

  4. 以直接替换的方式实施,向后兼容 0.9 之前的插件系统;

  5. 插件管理应与 CLI 一样,通过 verdi shell 方便易用。

Mini-Spec#

术语#

plugin_name

标识插件的唯一名称。建议命名方案为

  • aiida-<plugin-name> 用于 pypi 发行版/源代码库

  • aiida_<plugin_name> 用于 python 软件包 ( import aiida_<plugin_name>;破折号用下划线代替)

  • <plugin_name>.ep_name for entry points

category

为 AiiDA 的每个方面命名,可通过插件进行扩展,如 calculationsschedulers……(完整列表请参见 verdi plugin list 的输出)。

每个类别映射到一个 entry point 组 aiida.<category>

接口#

插件加载器#

插件加载功能在 aiida.plugins.entry_point 中定义。

注册表工具#

请参阅 aiida.plugins 中的 API 文档。