You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An AttributeError raised in the __get__ of an exposed descriptor exposed_foo is only propagated correctly to the client if the client accesses the exposed descriptor as conn.root.exposed_foo rather than as conn.root.foo. See example below :)
This appears to occur only when __get__ raises an AttributeError in particular, which makes sense. If __get__ raises an exception of a different type, it is raised by hasattr here:
An
AttributeError
raised in the__get__
of an exposed descriptorexposed_foo
is only propagated correctly to the client if the client accesses the exposed descriptor asconn.root.exposed_foo
rather than asconn.root.foo
. See example below :)Environment
Minimal example
Server:
Client:
Tracebacks
When using
conn.root.exposed_foo
:When using
conn.root.foo
:Debugging
This appears to occur only when
__get__
raises anAttributeError
in particular, which makes sense. If__get__
raises an exception of a different type, it is raised byhasattr
here:rpyc/rpyc/core/protocol.py
Line 518 in ce6f432
But if
__get__
raises anAttributeError
, thishasattr
returnsFalse
instead of raising, and so the arguments of theAttributeError
are lost.The text was updated successfully, but these errors were encountered: