Added SheerkaComparisonManager

This commit is contained in:
2020-05-17 20:19:26 +02:00
parent 56e0a9d338
commit 08e3086820
29 changed files with 586 additions and 148 deletions
+28 -1
View File
@@ -29,6 +29,14 @@ def sysarg_to_string(argv):
return result
def get_all_loaded_modules(prefix):
import sys
if prefix:
return [m for m in sys.modules.keys() if m.startswith(prefix)]
else:
return sys.modules.keys()
def get_class(qname):
"""
Loads a class from its full qualified name
@@ -117,12 +125,31 @@ def get_classes_from_package(package_name):
def init_package_import(package_name):
pkg = __import__(package_name)
prefix = pkg.__name__ + "."
# prefix = package_name + "."
for (module_loader, name, ispkg) in pkgutil.iter_modules(pkg.__path__, prefix):
importlib.import_module(name)
importlib.import_module(package_name)
def import_module_and_sub_module(module_name):
"""
Import the module, and one sub level
:param module_name:
:return:
"""
mod = get_module(module_name)
for (module_loader, name, ispkg) in pkgutil.iter_modules(mod.__path__, module_name + "."):
importlib.import_module(name)
def get_sub_classes(package_name, base_class):
base_class = get_class(base_class) if isinstance(base_class, str) else base_class
def _get_class(name):
modname, _, clsname = name.rpartition('.')
mod = importlib.import_module(modname)
cls = getattr(mod, clsname)
return cls
base_class = _get_class(base_class) if isinstance(base_class, str) else base_class
all_class = set(base_class.__subclasses__()).union(
[s for c in base_class.__subclasses__() for s in get_sub_classes(package_name, c)])