Added SheerkaComparisonManager
This commit is contained in:
+28
-1
@@ -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)])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user