Added parsers and Evaluators auto discovery
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
import importlib
|
||||
import inspect
|
||||
import pkgutil
|
||||
import sys
|
||||
|
||||
|
||||
@@ -38,6 +40,7 @@ def get_class(qname):
|
||||
m = getattr(m, comp)
|
||||
return m
|
||||
|
||||
|
||||
def get_module(qname):
|
||||
"""
|
||||
Loads a module from its full qualified name
|
||||
@@ -77,6 +80,11 @@ def get_full_qualified_name(obj):
|
||||
|
||||
|
||||
def get_classes(module_name):
|
||||
"""
|
||||
Gets all classes, for a given module_name
|
||||
:param module_name: name of the module
|
||||
:return:
|
||||
"""
|
||||
mod = get_module(module_name)
|
||||
for name in dir(mod):
|
||||
obj = getattr(mod, name)
|
||||
@@ -84,6 +92,30 @@ def get_classes(module_name):
|
||||
yield obj
|
||||
|
||||
|
||||
def get_classes_from_package(package_name):
|
||||
"""
|
||||
Gets all classes, for a given package
|
||||
:param package_name: name of the package
|
||||
:return:
|
||||
"""
|
||||
pkg = __import__(package_name)
|
||||
prefix = pkg.__name__ + "."
|
||||
for importer, modname, ispkg in pkgutil.iter_modules(pkg.__path__, prefix):
|
||||
for c in get_classes(modname):
|
||||
yield c
|
||||
|
||||
|
||||
def get_sub_classes(package_name, base_class_name):
|
||||
|
||||
pkg = __import__(package_name)
|
||||
prefix = pkg.__name__ + "."
|
||||
for (module_loader, name, ispkg) in pkgutil.iter_modules(pkg.__path__, prefix):
|
||||
importlib.import_module(name)
|
||||
|
||||
base_class = get_class(base_class_name)
|
||||
return base_class.__subclasses__()
|
||||
|
||||
|
||||
def remove_from_list(lst, to_remove):
|
||||
"""
|
||||
Removes elements from a list if they exist
|
||||
|
||||
Reference in New Issue
Block a user