Refactored to allow ConceptEvaluator

This commit is contained in:
2019-11-14 22:04:38 +01:00
parent 576ce77740
commit 9e10e77737
30 changed files with 2406 additions and 1007 deletions
+45 -5
View File
@@ -1,3 +1,7 @@
import inspect
import sys
def sysarg_to_string(argv):
"""
Transform a list of strings into a single string
@@ -16,24 +20,38 @@ def sysarg_to_string(argv):
result += '"' + s + '"' if " " in s else s
first = False
if result[0] in ('"', "'"):
result = result[1:-1] # strip quotes
return result
def get_class(kls):
def get_class(qname):
"""
Loads a class from its string full qualified name
:param kls:
Loads a class from its full qualified name
:param qname:
:return:
"""
parts = kls.split('.')
parts = qname.split('.')
module = ".".join(parts[:-1])
m = __import__(module)
for comp in parts[1:]:
m = getattr(m, comp)
return m
def get_module(qname):
"""
Loads a module from its full qualified name
:param qname:
:return:
"""
parts = qname.split('.')
m = __import__(qname)
for comp in parts[1:]:
m = getattr(m, comp)
return m
def get_object(kls, *args, **kwargs):
def new_object(kls, *args, **kwargs):
"""
New instance of an object
:param kls:
@@ -56,3 +74,25 @@ def get_full_qualified_name(obj):
return obj.__class__.__name__ # Avoid reporting __builtin__
else:
return module + '.' + obj.__class__.__name__
def get_classes(module_name):
mod = get_module(module_name)
for name in dir(mod):
obj = getattr(mod, name)
if inspect.isclass(obj):
yield obj
def remove_from_list(lst, to_remove):
"""
Removes elements from a list if they exist
:param lst:
:param to_remove:
:return:
"""
for item in to_remove:
if item in lst:
lst.remove(item)
return lst