Source code for openff.evaluator.plugins

"""
A collection of convenience utilities for loading the built-in
'plugins', such as workflow protocols, calculation layers and
physical properties.
"""
import importlib
import logging
import pkgutil
import sys

if sys.version_info[1] < 10:
    # Backport only for Python 3.9 - drop April 2024
    from importlib_metadata import entry_points
else:
    from importlib.metadata import entry_points


logger = logging.getLogger(__name__)


[docs]def register_default_plugins(): """Registers the built-in workflow protocols, calculation layers and physical properties with the plugin system. """ # Import the default properties. importlib.import_module("openff.evaluator.properties") # Import the default layers importlib.import_module("openff.evaluator.layers.simulation") importlib.import_module("openff.evaluator.layers.reweighting") # Import the default workflow protocols. protocols_module = importlib.import_module("openff.evaluator.protocols") for _, module_name, _ in pkgutil.iter_modules(protocols_module.__path__): importlib.import_module(f"openff.evaluator.protocols.{module_name}")
[docs]def register_external_plugins(): """Registers any supported plugins found in external packages with the plugin system. """ for entry_point in entry_points().select(group="openff_evaluator.plugins"): try: entry_point.load() except ImportError: logger.exception(f"Could not load the {entry_point.name} plugin")