aboutsummaryrefslogtreecommitdiffstats
path: root/src/py/mod.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/py/mod.py')
-rw-r--r--src/py/mod.py50
1 files changed, 26 insertions, 24 deletions
diff --git a/src/py/mod.py b/src/py/mod.py
index c41b839..e67a9e6 100644
--- a/src/py/mod.py
+++ b/src/py/mod.py
@@ -1,33 +1,35 @@
import sys
+import re;
+import importlib
from importlib import import_module
+from importlib.abc import MetaPathFinder
+import importlib.machinery
-mod_info = {}
+mod = sys.modules[__name__]
+mod_list = {}
-def load(mod_name, mod_path, *args):
- if(
- mod_name in mod_info or
- mod_path in sys.modules
- ):
- raise NameError
+class SqmodFinder(MetaPathFinder):
+ def find_module(fullname,path):
+ if not fullname.startswith('sqmod/'):
+ return None
- instance = import_module(mod_path, "")
- instance.load(*args)
- mod_info[mod_name] = [instance, args, mod_path]
- return instance
+ return importlib.machinery.SourceFileLoader(fullname,fullname + '.py')
-def reload(mod_name):
- instance, args, mod_path = mod_info[mod_name]
- instance = import_module(mod_path, "")
- instance.load(*args)
- mod_info[mod_name][0] = instance
- return instance
+def load(name,path,*args):
+ instance = import_module(path,'')
+ mod_list[name] = instance
+ setattr(mod,name,getattr(instance,name)(*args))
+def unload(name):
+ getattr(mod,name).unload()
+ delattr(mod,name)
+ del mod_list[name]
-def unload(mod_name):
- instance, args, mod_path = mod_info[mod_name]
- instance.unload()
- del sys.modules[mod_path]
- del mod_info[mod_name]
+def load_sqmod(sqmodname):
+ print(sqmodname)
-def list_mod():
- print(list(mod_info.keys()))
+ instance = import_module(''.join(['sqmod/',sqmodname,'/py/',sqmodname]))
+
+ return getattr(instance,sqmodname)
+
+sys.meta_path.append(SqmodFinder)