##// END OF EJS Templates
Modificación a kmamisr para ejecutarse en la versión 3, creación de scripts con terminación v3 para difereciarlos, se comentó la linea #720 de JroIO_param.py debido a que reiniciaba la lista de archivos, ocasionando la reescritura del archivo hdf5. Alguna otra modificación aparente es producto de algunas variaciones en espacios al usar la función print()
Modificación a kmamisr para ejecutarse en la versión 3, creación de scripts con terminación v3 para difereciarlos, se comentó la linea #720 de JroIO_param.py debido a que reiniciaba la lista de archivos, ocasionando la reescritura del archivo hdf5. Alguna otra modificación aparente es producto de algunas variaciones en espacios al usar la función print()

File last commit:

r1167:1f521b07c958
r1279:c53fe2a4a291
Show More
data.py
113 lines | 2.5 KiB | text/x-python | PythonLexer
'''
Created on Jul 15, 2014
@author: Miguel Urco
'''
from .serializer import DynamicSerializer
DEFAULT_SERIALIZER = None #'cPickle', 'msgpack', "yaml"
from schainpy.model.data.jrodata import *
CLASSNAME_KEY = 'classname__'
def isObject(myObj):
return hasattr(myObj,'__dict__')
def isDictFormat(thisValue):
if type(thisValue) != type({}):
return False
if CLASSNAME_KEY not in list(thisValue.keys()):
return False
return True
def obj2Dict(myObj, keyList=[]):
if not keyList:
keyList = list(myObj.__dict__.keys())
myDict = {}
myDict[CLASSNAME_KEY] = myObj.__class__.__name__
for thisKey, thisValue in list(myObj.__dict__.items()):
if thisKey not in keyList:
continue
if not isObject(thisValue):
myDict[thisKey] = thisValue
continue
## If this value is another class instance
myDict[thisKey] = obj2Dict(thisValue)
return myDict
def dict2Obj(myDict):
'''
'''
if CLASSNAME_KEY not in list(myDict.keys()):
return None
className = eval(myDict[CLASSNAME_KEY])
myObj = className()
for thisKey, thisValue in list(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 dict2Serial(myDict, serializer=DEFAULT_SERIALIZER):
SERIALIZER = DynamicSerializer(serializer)
mySerial = SERIALIZER.dumps(myDict)
return mySerial
def serial2Dict(mySerial, serializer=DEFAULT_SERIALIZER):
SERIALIZER = DynamicSerializer(serializer)
myDict = SERIALIZER.loads(mySerial)
return myDict
def obj2Serial(myObj, serializer=DEFAULT_SERIALIZER, **kwargs):
SERIALIZER = DynamicSerializer(serializer)
myDict = obj2Dict(myObj, **kwargs)
mySerial = dict2Serial(myDict, serializer)
return mySerial
def serial2Obj(mySerial, metadataDict = {}, serializer=DEFAULT_SERIALIZER):
SERIALIZER = DynamicSerializer(serializer)
myDataDict = serial2Dict(mySerial, serializer)
if not metadataDict:
myObj = dict2Obj(myDataDict)
return myObj
metadataDict.update(myDataDict)
myObj = dict2Obj(metadataDict)
return myObj