Source code for datagnosis.plugins

# stdlib
import glob
from os.path import basename, dirname, isfile, join

# third party
from pydantic import validate_call  # pyright: ignore

# datagnosis absolute
from datagnosis.plugins.core.plugin import Plugin, PluginLoader  # noqa: F401,E402

def_categories = [
    "generic",
    "images",
]
plugins = {}

for cat in def_categories:
    plugins[cat] = glob.glob(join(dirname(__file__), cat, "plugin*.py"))


[docs]class Plugins(PluginLoader): @validate_call def __init__(self, categories: list = def_categories) -> None: plugins_to_use = [] for cat in categories: plugins_to_use.extend(plugins[cat]) super().__init__(plugins_to_use, Plugin, categories)
__all__ = [ basename(f)[:-3] for f in plugins[cat] # pyright: ignore for cat in plugins if isfile(f) ] + [ "Plugins", "Plugin", ]