…cleaned up Handle slot with fewer parameters
…on3 or python2
….x bug fixes from master [refactoring prevented automerge]
…Ctrl-C on python < 3
- Renamed logger to LOGGER - Rewrote launcher to serve in process
…idden subscription messages with xpub
Refactored exception communication to add traceback information as list of strings. You can print the server traceback in the proxy side by calling `set_excepthook()`. Additionally, if the environmental variable `PZC_HIDE_TRACEBACK` is True (default) the traceback corresponding to pizco will be hidden.
… are not installed'
When the proxy connects to the server, it will request a set of attributes that will be returned as RemoteAttribute and a set of attributes that will be returned as objects. The set of RemoteAttributes has precedence over the ones of objects. Attributes not mentioned in these sets will follow the usual path. A class derived from Server could reimplement `inspect`, `return_as_remote` or `force_as_object` for specific functionality
Shortly, a request that returns a Future object, will return a dummy (proxy-side) Future object linked to the original (server-side) Future object via the PUB/SUB socket. When a Proxy calls a method (or request an attribute) in the Server that returns a Future object: 1.- A callback is added to the Future (at the Server) 2.- A message is sent back to the proxy to acknowledge the request. The proxy will create dummy Future object, start it and store in dictionary using an identification provided by the server as key. (This identification is currently the msgid of the Request) The proxy return de Future object Once that the future object is completed, the callback on the Server will be called. This callback will notify the Proxy using the PUB/SUB connection about the result and any exceptions that had been raised. The Proxy will then call the set_result and set_exception method. Not supported yet: Future.cancel()