From 4ebf9754f84e28eb73a09df0f788b5be80c9c73e Mon Sep 17 00:00:00 2001 From: jvoisin <julien.voisin@dustri.org> Date: Mon, 4 Jun 2018 00:14:24 +0200 Subject: [PATCH] Import the dynamic import system The dynamic import should now work when MAT2 is installed system-wide, either via the distribution's packaging system, or via pip. --- libmat2/parser_factory.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/libmat2/parser_factory.py b/libmat2/parser_factory.py index 65f94ee..2f6acc1 100644 --- a/libmat2/parser_factory.py +++ b/libmat2/parser_factory.py @@ -1,22 +1,24 @@ +import glob import os import mimetypes import importlib -import pkgutil from typing import TypeVar, List from . import abstract, unsupported_extensions - T = TypeVar('T', bound='abstract.AbstractParser') -# This loads every parser in a dynamic way -for module_loader, name, ispkg in pkgutil.walk_packages('.libmat2'): - if not name.startswith('libmat2.'): - continue - elif name == 'libmat2.abstract': - continue - importlib.import_module(name) - +def __load_all_parsers(): + """ Loads every parser in a dynamic way """ + current_dir = os.path.dirname(__file__) + for name in glob.glob(os.path.join(current_dir, '*.py')): + if name in ('abstract.py', '__init__.py'): + continue + basename = os.path.basename(name) + name, _ = os.path.splitext(basename) + importlib.import_module('.' + name, package='libmat2') + +__load_all_parsers() def _get_parsers() -> List[T]: """ Get all our parsers!""" -- GitLab