From 4d6a423fb50b7ec2ad9c99c151984d4a0d70b596 Mon Sep 17 00:00:00 2001 From: JustAnotherArchivist Date: Fri, 10 Mar 2023 20:15:02 +0000 Subject: [PATCH] Replace hacky module importing (taken from snscrape commit aa7d7d3d) --- codearchiver/modules/__init__.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/codearchiver/modules/__init__.py b/codearchiver/modules/__init__.py index 9de989a..e15a7b9 100644 --- a/codearchiver/modules/__init__.py +++ b/codearchiver/modules/__init__.py @@ -1,15 +1,17 @@ -import importlib -import os -import codearchiver.core +import pkgutil + + +__all__ = [] def _import_modules(): - files = os.listdir(__path__[0]) - for fn in files: - if fn.endswith('.py') and fn != '__init__.py': - # Import module if not already imported - moduleName = f'codearchiver.modules.{fn[:-3]}' - module = importlib.import_module(moduleName) + prefixLen = len(__name__) + 1 + for importer, moduleName, isPkg in pkgutil.iter_modules(__path__, prefix = f'{__name__}.'): + assert not isPkg + moduleNameWithoutPrefix = moduleName[prefixLen:] + __all__.append(moduleNameWithoutPrefix) + module = importer.find_module(moduleName).load_module(moduleName) + globals()[moduleNameWithoutPrefix] = module _import_modules()