##// END OF EJS Templates
Hot fix
Hot fix

File last commit:

r705:2b21a763c9a1
r1166:ce0987c48654
Show More
data.py
114 lines | 2.5 KiB | text/x-python | PythonLexer
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 '''
Created on Jul 15, 2014
@author: Miguel Urco
'''
Miguel Valdez
serializer module added to Signal Chain
r697 from serializer import DynamicSerializer
Miguel Valdez
jroplotter.py updated
r703
DEFAULT_SERIALIZER = None #'cPickle', 'msgpack', "yaml"
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
from schainpy.model.data.jrodata import *
CLASSNAME_KEY = 'classname__'
Miguel Valdez
schain serializer: minor changes
r705 def isObject(myObj):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
Miguel Valdez
schain serializer: minor changes
r705 return hasattr(myObj,'__dict__')
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
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
Miguel Valdez
schain serializer: minor changes
r705 if not isObject(thisValue):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 myDict[thisKey] = thisValue
continue
## If this value is another class instance
Miguel Valdez
schain serializer: minor changes
r705 myDict[thisKey] = obj2Dict(thisValue)
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
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
Miguel Valdez
jroplotter.py updated
r703 def dict2Serial(myDict, serializer=DEFAULT_SERIALIZER):
SERIALIZER = DynamicSerializer(serializer)
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 mySerial = SERIALIZER.dumps(myDict)
Miguel Valdez
jroplotter.py updated
r703
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 return mySerial
Miguel Valdez
jroplotter.py updated
r703
def serial2Dict(mySerial, serializer=DEFAULT_SERIALIZER):
SERIALIZER = DynamicSerializer(serializer)
Miguel Valdez
serializer module added to Signal Chain
r697 myDict = SERIALIZER.loads(mySerial)
Miguel Valdez
jroplotter.py updated
r703
Miguel Valdez
serializer module added to Signal Chain
r697 return myDict
Miguel Valdez
jroplotter.py updated
r703
def obj2Serial(myObj, serializer=DEFAULT_SERIALIZER, **kwargs):
SERIALIZER = DynamicSerializer(serializer)
Miguel Valdez
serializer module added to Signal Chain
r697 myDict = obj2Dict(myObj, **kwargs)
mySerial = dict2Serial(myDict, serializer)
Miguel Valdez
jroplotter.py updated
r703
Miguel Valdez
serializer module added to Signal Chain
r697 return mySerial
Miguel Valdez
jroplotter.py updated
r703
def serial2Obj(mySerial, metadataDict = {}, serializer=DEFAULT_SERIALIZER):
SERIALIZER = DynamicSerializer(serializer)
Miguel Valdez
serializer module added to Signal Chain
r697 myDataDict = serial2Dict(mySerial, serializer)
Miguel Valdez
jroplotter.py updated
r703
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 if not metadataDict:
myObj = dict2Obj(myDataDict)
return myObj
Miguel Valdez
jroplotter.py updated
r703
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 metadataDict.update(myDataDict)
myObj = dict2Obj(metadataDict)
Miguel Valdez
jroplotter.py updated
r703
Miguel Valdez
serializer module added to Signal Chain
r697 return myObj