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