From d08fb1da6ee29994a2a8dc0ef330f42a0683f072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20V=C3=A9ril?= Date: Fri, 4 Feb 2022 13:52:08 +0100 Subject: [PATCH] Dynamically import format handlers --- tools/lib/formats/default/__init__.py | 32 ++++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/tools/lib/formats/default/__init__.py b/tools/lib/formats/default/__init__.py index f6b0a8fa..cf34cfaf 100644 --- a/tools/lib/formats/default/__init__.py +++ b/tools/lib/formats/default/__init__.py @@ -1,8 +1,24 @@ -from .lineHandler import lineHandler -from .columnHandler import columnHandler -from .doubleColumnHandler import doubleColumnHandler -from .TBEHandler import TBEHandler -from .doubleTBEHandler import doubleTBEHandler -from .exoticColumnHandler import exoticColumnHandler -from .fromXLSToLaTeXHandler import fromXLSToLaTeXHandler -from .CTHandlers import CT1Handler, CT2Handler \ No newline at end of file +from inspect import isclass +from pkgutil import iter_modules +from pathlib import Path +from importlib import import_module +from ..formatHandlerBase import formatHandlerBase + +# iterate through the modules in the current package +package_dir = Path(__file__).resolve().parent +for (_, module_name, _) in iter_modules([package_dir]): + + # import the module and iterate through its attributes + module = import_module(f"{__name__}.{module_name}") + +# iterate through the modules in the current package +package_dir = Path(__file__).resolve().parent +for (_, module_name, _) in iter_modules([package_dir]): + + # import the module and iterate through its attributes + module = import_module(f"{__name__}.{module_name}") + for attribute_name in dir(module): + attribute = getattr(module, attribute_name) + # if it's a format handler import it + if isclass(attribute) and issubclass(attribute, formatHandlerBase) and hasattr(attribute, '__formatName__'): + globals()[attribute_name] = attribute \ No newline at end of file