mdf
mdf copied to clipboard
Node serialization fails with Pyro >= 2.20
Tests involving serializing nodes fail on the newer pyro versions:
Traceback (most recent call last):
File "/home/travis/build/SleepingPills/mdf/mdf/tests/test_regression.py", line 37, in test_df_differ
diffs = mdf.regression.run(date_range, [df_differ], lhs=None, rhs=None)
File "/home/travis/build/SleepingPills/mdf/mdf/regression/__init__.py", line 281, in run
rhs_modulenames=rhs_modulenames)
File "/home/travis/build/SleepingPills/mdf/mdf/regression/__init__.py", line 239, in get_contexts
lhs_ctx = lhs_server.get_remote_context(ctx)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/Pyro4/core.py", line 160, in __call__
return self.__send(self.__name, args, kwargs)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/Pyro4/core.py", line 290, in _pyroInvoke
compress=Pyro4.config.COMPRESSION)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/Pyro4/util.py", line 159, in serializeCall
data=self.dumpsCall(obj, method, vargs, kwargs)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/Pyro4/util.py", line 392, in dumpsCall
return serpent.dumps((obj, method, vargs, kwargs))
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 62, in dumps
return Serializer(indent, set_literals).serialize(obj)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 211, in serialize
self._serialize(obj, out, 0)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 240, in _serialize
getattr(self, method_name, self.ser_default_class)(obj, out, level) # dispatch
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 290, in ser_builtins_tuple
self._serialize(elt, out, level + 1)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 240, in _serialize
getattr(self, method_name, self.ser_default_class)(obj, out, level) # dispatch
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 290, in ser_builtins_tuple
self._serialize(elt, out, level + 1)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 240, in _serialize
getattr(self, method_name, self.ser_default_class)(obj, out, level) # dispatch
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 436, in ser_default_class
raise TypeError("don't know how to serialize class " + str(obj.__class__) + ". Give it vars() or an appropriate __getstate__")
TypeError: don't know how to serialize class <type 'mdf.context.MDFContext'>. Give it vars() or an appropriate __getstate__
Some clues on the fix: http://pythonhosted.org/Pyro4/clientcode.html#serialization