[Twisted-Python] spread: differences between remote_ and perspective_ needing an explanation
Wolfgang Rohdewald
wolfgang.kde at rohdewald.de
Sat Oct 11 15:30:56 MDT 2014
Hi,
while trying to isolate a bug in my app, I found some strange
differences between the implementations of remote_* and perspective_*.
1. in pb.Broker.serialize(), those attributes are set and restored:
jellyMethod, jellyArgs, jellyKw. Within twisted
Those attributes are not used anywhere. I grepped, and I ran the
test suite without those. Is there some code outside of twisted
using this? What for? Or is there a need for avoiding garbage
collection? (which would need some explanation).
My theory is that it was forgotten to remove them when doing
svn commit 1448: Before, they were actually used in
_NetJellier._jelly_instance, but no more after this commit.
2. Those implementations differ:
remote_*: return broker.serialize(state, self.perspective)
perspective_*: return broker.serialize(state, self, method, args, kw)
view_*: return broker.serialize(state, self.perspective, method, args, kw)
observe_*: return broker.serialize(state, None, method, args, kw)
Can you please explain why remote_* is implemented differently?
This goes back to before the first import to svn, so I cannot
browse the history.
3. They all raise AttributeError for undefined method except remote_*
which raises MethodNotFound. Both are not documented in the API.
Could this be unified to MethodNotFound?
My theory is that svn commit 13473 was incomplete. Commit message was:
Raise NoSuchMethod instead of AttributeError when call is made to remote_
method that doesn't exist
--
Wolfgang
More information about the Twisted-Python
mailing list