What a Plugin Is

An AiiDA plugin is a python package that provides a set of extensions to AiiDA.

AiiDA plugins can use entry points in order to make the aiida_core package aware of the extensions.

Note: In the python community, the term ‘package’ is used rather loosely. Depending on context, it can refer to a collection of python modules or it may, in addition, include the files necessary for building and installing the package.

What a Plugin Can Do

  • add new classes to AiiDA’s unified interface, including:

    • calculations
    • parsers
    • data types
    • schedulers
    • transports
    • db importers
    • db exporters
    • subcommands to some verdi commands
    • tests to be run using verdi devel tests

    This typically involves subclassing the respective base class AiiDA provides for that purpose.

  • install separate commandline and/or GUI executables

  • depend on any number of other plugins (the required versions must not clash with AiiDA’s requirements)

What a Plugin Should Not Do

An AiiDA plugin should not:

  • change the database schema AiiDA uses
  • use protected functions, methods or classes of AiiDA (those starting with an underscore _)
  • circumvent data provenance
  • monkey patch anything within the aiida namespace (or the namespace itself)

Failure to comply will likely prevent your plugin from being listed on the official AiiDA plugin registry.

If you find yourself tempted to do any of the above, please open an issue on the AiiDA repository and explain why. We will advise on how to proceed.