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")