##// END OF EJS Templates
Modificaciones en el numero de intergraciones, en la escala de db Range
Modificaciones en el numero de intergraciones, en la escala de db Range

File last commit:

r568:486c66596e4c
r599:f46dc4c4834d
Show More
DataTranslate.py
114 lines | 2.5 KiB | text/x-python | PythonLexer
'''
Created on Jul 15, 2014
@author: Miguel Urco
'''
from JROSerializer import DynamicSerializer
PICKLE_SERIALIZER = DynamicSerializer('cPickle')
MSGPACK_SERIALIZER = DynamicSerializer('msgpack')
from schainpy.model.data.jrodata import *
CLASSNAME_KEY = 'classname__'
def isNotClassVar(myObj):
return not hasattr(myObj,'__dict__')
def isDictFormat(thisValue):
if type(thisValue) != type({}):
return False
if CLASSNAME_KEY not in thisValue.keys():
return False
return True
def obj2Dict(myObj, keyList=[]):
if not keyList:
keyList = myObj.__dict__.keys()
myDict = {}
myDict[CLASSNAME_KEY] = myObj.__class__.__name__
for thisKey, thisValue in myObj.__dict__.items():
if thisKey not in keyList:
continue
if isNotClassVar(thisValue):
myDict[thisKey] = thisValue
continue
## If this value is another class instance
myNewDict = obj2Dict(thisValue)
myDict[thisKey] = myNewDict
return myDict
def dict2Obj(myDict):
'''
'''
if CLASSNAME_KEY not in myDict.keys():
return None
className = eval(myDict[CLASSNAME_KEY])
myObj = className()
for thisKey, thisValue in myDict.items():
if thisKey == CLASSNAME_KEY:
continue
if not isDictFormat(thisValue):
setattr(myObj, thisKey, thisValue)
continue
myNewObj = dict2Obj(thisValue)
setattr(myObj, thisKey, myNewObj)
return myObj
def obj2Serial(myObj, serializer='msgpack', **kwargs):
if serializer == 'cPickle':
SERIALIZER = PICKLE_SERIALIZER
else:
SERIALIZER = MSGPACK_SERIALIZER
myDict = obj2Dict(myObj, **kwargs)
mySerial = SERIALIZER.dumps(myDict)
return mySerial
def serial2Dict(mySerial, serializer='msgpack'):
if serializer == 'cPickle':
SERIALIZER = PICKLE_SERIALIZER
else:
SERIALIZER = MSGPACK_SERIALIZER
return SERIALIZER.loads(mySerial)
def serial2Obj(mySerial, metadataDict = {}, serializer='msgpack'):
if serializer == 'cPickle':
SERIALIZER = PICKLE_SERIALIZER
else:
SERIALIZER = MSGPACK_SERIALIZER
myDataDict = SERIALIZER.loads(mySerial)
if not metadataDict:
myObj = dict2Obj(myDataDict)
return myObj
metadataDict.update(myDataDict)
myObj = dict2Obj(metadataDict)
return myObj