Source code for nxt.plugin_loader

# Built-in
import os
import importlib.util
import logging

# Internal
from .constants import PLUGIN_DIRS

_nxt_loaded_plugin_module_names = []
_nxt_loaded_plugin_modules = []

logger = logging.getLogger('nxt.plugins')


[docs]def load_plugins(): global _nxt_loaded_plugin_module_names global _nxt_loaded_plugin_modules logger.info('Loading plugins.') for plugin_dir in PLUGIN_DIRS: if not os.path.isdir(plugin_dir): continue for file_name in os.listdir(plugin_dir): if not file_name.endswith('.py'): continue mod_name, _ = os.path.splitext(file_name) if mod_name in _nxt_loaded_plugin_module_names: continue mod_path = os.path.join(plugin_dir, file_name) spec = importlib.util.spec_from_file_location(mod_name, mod_path) if not spec: continue mod = importlib.util.module_from_spec(spec) _nxt_loaded_plugin_module_names += [mod_name] _nxt_loaded_plugin_modules += [mod] spec.loader.exec_module(mod)