summaryrefslogtreecommitdiff
path: root/libmat2
diff options
context:
space:
mode:
authorjvoisin2018-06-04 00:14:24 +0200
committerjvoisin2018-06-04 20:53:21 +0200
commit4ebf9754f84e28eb73a09df0f788b5be80c9c73e (patch)
tree80c84b330b3471c2d140bf78f9acbc9b38747f5d /libmat2
parente71eff481401811a543b15860e0b20de1d5c49dc (diff)
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.
Diffstat (limited to 'libmat2')
-rw-r--r--libmat2/parser_factory.py20
1 files changed, 11 insertions, 9 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 @@
1import glob
1import os 2import os
2import mimetypes 3import mimetypes
3import importlib 4import importlib
4import pkgutil
5from typing import TypeVar, List 5from typing import TypeVar, List
6 6
7from . import abstract, unsupported_extensions 7from . import abstract, unsupported_extensions
8 8
9
10T = TypeVar('T', bound='abstract.AbstractParser') 9T = TypeVar('T', bound='abstract.AbstractParser')
11 10
12# This loads every parser in a dynamic way 11def __load_all_parsers():
13for module_loader, name, ispkg in pkgutil.walk_packages('.libmat2'): 12 """ Loads every parser in a dynamic way """
14 if not name.startswith('libmat2.'): 13 current_dir = os.path.dirname(__file__)
15 continue 14 for name in glob.glob(os.path.join(current_dir, '*.py')):
16 elif name == 'libmat2.abstract': 15 if name in ('abstract.py', '__init__.py'):
17 continue 16 continue
18 importlib.import_module(name) 17 basename = os.path.basename(name)
18 name, _ = os.path.splitext(basename)
19 importlib.import_module('.' + name, package='libmat2')
19 20
21__load_all_parsers()
20 22
21def _get_parsers() -> List[T]: 23def _get_parsers() -> List[T]:
22 """ Get all our parsers!""" 24 """ Get all our parsers!"""