##// END OF EJS Templates
Rewrite controller, remove MPDecorator to units (keep for plots an writers) use of queues for interproc comm instead of zmq, self operations are no longer supported
Rewrite controller, remove MPDecorator to units (keep for plots an writers) use of queues for interproc comm instead of zmq, self operations are no longer supported

File last commit:

r1167:1f521b07c958
r1287:af11e4aac00c
Show More
serialtest.py
186 lines | 6.1 KiB | text/x-python | PythonLexer
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
#
# when Serializer is imported alone, fault indicates this package is
# dependent on lookup, but don't import Lookup, instead:
#
import DynamicObject # dependent on pysvn
import Serializer # dependent on Dynamic Object
import msgpack
import redis
import numpy as np
class NamedObject():
#---------------------------------------------
@staticmethod
def indexListMatch(list_of_lists, name, value, name2=None, value2=None, unique_f=False):
#
# for each list's <element> attribute compare with value
# if match, return True plus list
# else return False plus empty list
#
# search needs to be named part of class for object else .<value> is unrecognized
#
# unique_f finds non-uniqueness
index = [] # return empty indices
list_data = [] # return empty list
ii = 0
for theList in list_of_lists:
cmd0 = "theList.%s == value" % (name)
cmd1 = "isInlist(theList.%s,value)" % name
# if name is valid then
# match name against value
# match name (as list) against value
if (eval(cmd0) or eval(cmd1)):
if (name2 != None):
cmd2 = "theList.%s == value2" % name2
cmd3 = "isInlist(theList.%s,value2)" % name2
if (eval(cmd2) or eval(cmd3)):
if (unique_f):
index = index + [ii]
list_data = list_data + [theList] # save list of lists if non-unique
# don't exit on match, may be non-unique
else:
list_data = theList # save the list
index = [ii]
break
else:
if (unique_f):
index = index + [ii]
list_data = list_data + [theList] # list of lists if non-unique
else:
list_data = theList
index = [ii]
break # exit on match
#endif
ii = ii + 1
#end for
return index, list_data # return indices of matches and list (or list of lists)
#end indexListMatch
#---------------------------------------------
@staticmethod
def namedListMatch(list_of_lists, name, value, name2=None, value2=None, unique_f=None):
#
# for each list's <element> attribute compare with value
# if match, return True plus list
# else return False plus empty list
#
# search needs to be named part of class for object else .<value> is unrecognized
#
# unique_f finds non-uniqueness ('None' is same as False)
match_f = False
list_data = [] # initialize
for theList in list_of_lists:
cmd0 = "theList.%s == value" % (name)
cmd1 = "isInlist(theList.%s,value)" % name
# if name is valid then
# match name against value
# match name (as list) against value
if (eval(cmd0) or eval(cmd1)):
if (name2 != None):
cmd2 = "theList.%s == value2" % name2
cmd3 = "isInlist(theList.%s,value2)" % name2
if (eval(cmd2) or eval(cmd3)):
match_f = True
if (unique_f):
list_data = list_data + [theList] # save list of lists if non-unique
# don't exit on match, may be non-unique
else:
list_data = theList # save the list
break
else:
match_f = True
if (unique_f):
list_data = list_data + [theList] # list of lists if non-unique
else:
list_data = theList
break # exit on match
#endif
#end for
return match_f, list_data # return match, and list (or list of lists)
#end namedListMatch
#---------------------------------------------
@staticmethod
def combineLists(object):
#
# used for dumping elements in list of lists for debugging
#
ret_list =[]
ii = 0
while ii < len(object):
ret_list = ret_list + [object[ii].list] # not a real list, so can't use built-in list iterator
ii = ii + 1
return ret_list
# end combineLists
class StateListObject(NamedObject):
def __init__(self, concurrent=None, hierarchical=None, history=None, state=None):
self.concurrent = concurrent
self.hierarchical = hierarchical
self.history = history
self.state = state
self.list = [self.concurrent, self.hierarchical, self.history, self.state ]
#end class StateListObject
source_object = "my test string"
serializer = "yaml"
#
# python versioning issue (ver 2.7 -> else path)
#
if isinstance(serializer,Serializer.Serializer):
serial_type = Serializer.serial_types[serializer]
else:
serial_type = serializer
serializer = Serializer.serializers[serializer]()
datastr = serializer.toSerial(source_object)
dest_object = serializer.fromSerial(datastr)
George Yong
Python 2to3, Spectra (all operations) working
r1167 print("dest_object=",dest_object)
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
myObject = StateListObject(hierarchical="yes",state=np.array([1,2,3.0]))
datastr = serializer.toSerial(myObject)
packed = msgpack.packb(datastr)
try:
r= redis.StrictRedis(host='localhost',port=6379,db=0)
except Exception as eobj:
George Yong
Python 2to3, Spectra (all operations) working
r1167 print("is the redis server running?",eobj)
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 else:
r.set('baz',packed) # converts to string
x = r.get('baz')
unpacked = msgpack.unpackb(x)
dest_object = serializer.fromSerial(unpacked)
George Yong
Python 2to3, Spectra (all operations) working
r1167 print("val1=",dest_object.hierarchical)
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 val2 = dest_object.state
George Yong
Python 2to3, Spectra (all operations) working
r1167 print("val2=",val2)
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 # can numpy array be used as array?
George Yong
Python 2to3, Spectra (all operations) working
r1167 print(val2.shape)
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568