some cleanup
This commit is contained in:
parent
99b808a0de
commit
222af81bed
11 changed files with 13 additions and 157 deletions
|
|
@ -1 +0,0 @@
|
|||
__author__ = 'rafael'
|
||||
|
|
@ -1 +0,0 @@
|
|||
__author__ = 'rafael'
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
__author__ = 'rafael'
|
||||
|
||||
|
||||
class Dummy(object):
|
||||
def __init__(self, **kwargs):
|
||||
self.args = kwargs
|
||||
|
||||
def create(args):
|
||||
return Dummy(**args)
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
import json
|
||||
import imp
|
||||
import os.path as path
|
||||
|
||||
class DummyParent(object):
|
||||
def __init__(self, name=None, argsToReplace=None):
|
||||
self.name = name
|
||||
self.argsToReplace = argsToReplace
|
||||
|
||||
def get_args_to_replace(self):
|
||||
return self.argsToReplace
|
||||
|
||||
|
||||
def _create_raw_Object(jsonDict, msgName, creator):
|
||||
"""
|
||||
creates an Main object from the configuration, but just parses raw data and hands it to the object
|
||||
|
||||
:param jsonDict: the configuration file part as dict
|
||||
:param msgName: name of object for error message
|
||||
:param creator: function pointer which is taking two arguments: identifier of the object and arguments.
|
||||
:should return an object
|
||||
:return: a list of objects returned by creator
|
||||
"""
|
||||
items = []
|
||||
for key, val in jsonDict.items():
|
||||
try:
|
||||
item = creator(key, val)
|
||||
items.append(item)
|
||||
except Exception, e:
|
||||
print "ignoring " + msgName + ": " + key + "! reason:"
|
||||
print e
|
||||
return items
|
||||
|
||||
|
||||
def replace_with_import(objList, items_func):
|
||||
"""
|
||||
replaces configuration dicts with their objects by importing and creating it in the first step.
|
||||
In the second step the original list of json config dicts gets replaced by the loaded objects
|
||||
|
||||
:param objList: the list of objects which is iterated on
|
||||
:param modPart: the folder from the module (i.e tasks, parsers)
|
||||
:param items_func: function to get a pointer on the list of json-config-objects to replace. Takes one argument and
|
||||
should return a list of
|
||||
:param class_check: currently unsupported
|
||||
"""
|
||||
for obj in objList:
|
||||
repl = []
|
||||
items = items_func(obj)
|
||||
for clazzItem in items:
|
||||
try:
|
||||
|
||||
clazz = clazzItem["class"]
|
||||
p = path.join("lib", clazz + ".py")
|
||||
mod = imp.load_source(clazz, p)
|
||||
item = mod.create(clazzItem)
|
||||
repl.append(item)
|
||||
except ImportError, err:
|
||||
print "could not import " + clazz + ": " + str(clazzItem) + "! reason"
|
||||
print str(err)
|
||||
except KeyError, k:
|
||||
print "Key " + str(k) + " not in classItem " + str(clazzItem)
|
||||
except Exception, e:
|
||||
print "Error while replacing class ( " + clazz + " ):" + str(e)
|
||||
|
||||
del items[:]
|
||||
items.extend(repl)
|
||||
|
||||
jsonFile = '''
|
||||
{
|
||||
"tests": {
|
||||
"someDummy": {
|
||||
"argsToReplace":
|
||||
[
|
||||
{"class": "dummy", "args": {"someargs":"ok"}},
|
||||
{"class": "dummy", "args": {"someargs":"blah"}}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
'''
|
||||
|
||||
jsonDict = json.loads(jsonFile)
|
||||
|
||||
|
||||
creator = lambda name, values: DummyParent(name, **values)
|
||||
dummys = _create_raw_Object(jsonDict["tests"], "DummyParent", creator)
|
||||
|
||||
items_func = lambda dummy: dummy.get_args_to_replace()
|
||||
replace_with_import(dummys, items_func)
|
||||
|
||||
for d in dummys:
|
||||
print d.__dict__
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue