##// END OF EJS Templates
Python 2to3, Spectra (all operations) working
Python 2to3, Spectra (all operations) working

File last commit:

r1167:1f521b07c958
r1167:1f521b07c958
Show More
data.py
113 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
'''
George Yong
Python 2to3, Spectra (all operations) working
r1167 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
George Yong
Python 2to3, Spectra (all operations) working
r1167 if CLASSNAME_KEY not in list(thisValue.keys()):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 return False
return True
def obj2Dict(myObj, keyList=[]):
if not keyList:
George Yong
Python 2to3, Spectra (all operations) working
r1167 keyList = list(myObj.__dict__.keys())
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
myDict = {}
myDict[CLASSNAME_KEY] = myObj.__class__.__name__
George Yong
Python 2to3, Spectra (all operations) working
r1167 for thisKey, thisValue in list(myObj.__dict__.items()):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
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):
'''
'''
George Yong
Python 2to3, Spectra (all operations) working
r1167 if CLASSNAME_KEY not in list(myDict.keys()):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 return None
className = eval(myDict[CLASSNAME_KEY])
myObj = className()
George Yong
Python 2to3, Spectra (all operations) working
r1167 for thisKey, thisValue in list(myDict.items()):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
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
George Yong
Python 2to3, Spectra (all operations) working
r1167 return myObj