插件系统#
备注
本页解释了如何为 aiida-core
的插件系统做出贡献。有关如何开发插件的说明,请参阅 如何打包插件。
设计原则#
只有在真正必要时才限制插件开发人员;
尽可能避免更改数据库模式;
查找和加载插件的速度必须在插件允许的范围内,尤其是命令行界面(CLI)命令。换句话说,直接导入插件类的速度不应明显快于使用插件加载器/工厂;
以直接替换的方式实施,向后兼容 0.9 之前的插件系统;
插件管理应与 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 的每个方面命名,可通过插件进行扩展,如
calculations
、schedulers
……(完整列表请参见verdi plugin list
的输出)。每个类别映射到一个 entry point 组
aiida.<category>
。
接口#
插件加载器#
插件加载功能在 aiida.plugins.entry_point
中定义。
注册表工具#
请参阅 aiida.plugins
中的 API 文档。