mdf icon indicating copy to clipboard operation
mdf copied to clipboard

Node serialization fails with Pyro >= 2.20

Open SleepingPills opened this issue 11 years ago • 1 comments

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__

SleepingPills avatar Nov 27 '13 15:11 SleepingPills

Some clues on the fix: http://pythonhosted.org/Pyro4/clientcode.html#serialization

SleepingPills avatar Nov 27 '13 15:11 SleepingPills