Releases: irmen/Pyro4
release 4.36
- added SOCK_NODELAY config item to be able to turn the TCP_NODELAY socket option on (default is off).
- little cleanup of the intro example in the manual, and benchmark example
- added timezones example
- some clarifications added to the manual about serialization peculiarities
- serpent library dependency updated to 1.11, to profit from the performance improvements and float Inf/NaN support.
- pyrolite .net library now points to Nuget.org packages for download, and the java one to Maven.
- code blocks in manual updated to python 3 syntax
release 4.35
- removed Jython compatibility support and kludges. Use 4.34 or older if you need to run this in Jython.
- httpgateway is more forgiving when a name server is not (yet) found
- httpgateway now returns 403 forbidden instead of 401 unauthorized when accessing a resource without proper rights
- httpgateway gained -g option to set a key to use to access the gateway (like the hmac key to access pyro). Set $key querystring param to specify the key for a request.
- added X-Pyro-Gateway-Key http header to the httpgateway request as an alternative way to set the gateway key for the call
- serpent library dependency updated to 1.9, this adds support for serializing the container datatypes from the collections stdlib module
- introduced Pyro4.errors.SerializeError (subclass of ProtocolError) to be more precise in reporting errors related to (de)serializing objects.
- client gets a proper serialization error instead of getting a forced connection abort, if something goes wrong in a serializer.
release 4.34
- setting an attribute on a proxy as first operation no longer crashes with an AttributeError, it now correctly obtains the metadata first
- added JSON_MODULE config item to be able to set a 3rd party json library (such as simplejson) to use instead of the default json that comes in the stdlib.
- added X-Pyro-Options http header to the httpgateway request to set certain Pyro options for the call (such as ‘oneway’)
- http gateway name prefix option changed, you now specify an export name regex pattern instead (allows you to export multiple name patterns)
- http gateway gained a pyro timeout option as shortcut for Pyro’s commtimeout config item that should be used
- fixed http example code when handling oneway methods (empty response)
- the nameserver’s list function no longer internally appends a ‘$’ (end of string marker) to a given regex pattern
- removed paragraph in docs about choosing between pyro4 and pyro3 (there’s only one sensible choice nowadays)
NOTE: intending to drop support for Python 2.6 and Jython. This will probably be the last version that officially supports Python version 2.6 and Jython 2.7. Future versions will only be compatible with and tested with Python 2.7 and 3.2+, IronPython, and Pypy. The explicit Jython compatibility will be dropped. Until Jython 2.7 itself becomes up to par with official Python 2.7 you will probably no longer be able to use Pyro from within Jython. PyroLite will ofcourse still be supported for Java clients. If you’re stuck with Python 2.6 (or Jython), plan on either committing to this last Pyro version that supports it, or plan on cloning the Pyro4 source repository and applying compatibility patches yourself. This decision is made to remove the development and support burden that now exists for these old or problematic Python implementations.
release 4.33
- added Pyro4.utils.httpgateway, this allows clients (such as a web browser) to use a simple http interface to call Pyro objects
- test.echoserver now correctly deals with a specified hmac key in combination with name server usage
- added connection troubleshooting checklist to tips & tricks chapter
- some raised exceptions had a cause added on Python 2.x as well, this has been corrected (it could cause unwanted serialization errors)
- added http example that shows simple use of the http gateway
- fixed sphinx config issues when building the docs
release 4.32
- json serializer can now deal with set() types; they will be converted to tuples/lists instead. (similar to what serpent does on older Python versions)
- this also fixes the problem that the proxy metadata feature used to crash when using json as serializer (because it used sets to transfer the data.
You had to turn the metadata feature off to be able to use the json serializer at all) - flame explicitly checks for pickle to be enabled instead of causing connection level errors
- PYRONAME uri resolving now also uses the _pyroHmacKey set on the proxy (if any)
- proxy no longer locks up in pyroRelease when a protocol error occurs while getting the metadata
- stockquotes tutorial doesn't actually require pickle anymore, so removed that from code and docs
- distributed-computing example now uses a custom class deserializer instead of relying on pickle
- distributed-computing example no longer overflows on older python versions (<3.x)
- serpent library dependency updated to 1.8
- setup.py no longer fails when it can't import Pyro4 (it no longer needs to do so)
release 4.31
- locateNS now properly sets provided hmac key on proxy returned via broadcast lookup
- terminate call added to flame remoteconsole
release 4.30
- Persistent name server option: -s (currently implemented: dbm, sqlite, and the default volatile in-memory storage)
- Name server utility methods have new 'storage' parameter to customize storage mechanism
- nsc got new 'lookup' command to get one single registration from the nameserver
- removed
HMAC_KEY
config item (deprecated in 4.29), use the_pyroHmacKey
property on proxy and daemon instead.
This finalizes the change that allows you to have a per-proxy hmac key instead of a single global one. (Also counts for daemons) - name server and nsc command line tools gained -k/--key option to specify hmac key (just as the echoserver and flameserver already had)
- name server locateNS and resolve methods gained hmac key parameter
- configuration dump now also includes protocol version
- message class now has a static convenience 'ping' method to send ping messages. Useful for instance in the 'disconnects' example.
release 4.29
- HMAC_KEY config item is deprecated, will be removed in next version
- set hmac key directly on proxy._pyroHmacKey property, this makes per-proxy hmac keys possible
- removed support for server side object traversal using dotted names such as a.b.c.d (has been deprecated since 4.27)
- removed DOTTEDNAMES config item (has been deprecated since 4.27)
- removed support for setting proxy._pyroOneway() in client code (has been deprecated since 4.27. You must depend on the metadata mechanism now, which is enabled by default)
- Future and FutureResult then() methods now return itself, so they can be easiliy chained
- added Future.iferror and FutureResult.iferror to handle exceptions (instead of silently ignoring them)
- fixed FutureResult.then to correctly evaluate all chained functions
release 4.28
- implemented dir() on a Proxy to also return remote methods if known (useful for autocompletion in certain python shells)
- USE_MSG_WAITALL config item added because there remain certain other systems where MSG_WAITALL is unreliable
- removed Pyro4.socketutil.USE_MSG_WAITALL attribute (because it got promoted to a config item)
- remote access to ‘dunder’ attributes (whatever) is allowed again (pyro now follows python in making an exception for them rather than treating them as private)
release 4.27
- requires serpent 1.7 or newer (because of some changes regarding to set literals and the error for circular references)
- added @Pyro4.expose and @Pyro4.oneway decorators
- attr lookup now actually honors 'private' attributes in all cases (name starting with underscore-- these are blocked from remote access no matter what)
- added METADATA config item to enable/disable the automatic metadata query that a proxy now does. To talk to older Pyro versions you'll have to set this to False.
- proper client side attribute validation if metadata is enabled. This also means that hasattr(proxy, "something") now actually works.
- added REQUIRE_EXPOSE config item to toggle exposing everything in a server object, or that you must cherrypick with the new @expose decorator
- copying a proxy now also copies its meta attributes (timeout, oneways, etc) instead of just the uri
- Proxy._pyroGetMetadata method added. Is used internally as well (if METADATA is enabled), to obtain info about remote object attributes and methods.
- The daemon got a new method that is used by the metadata mechanism: get_metadata
- Daemon can now be constructed with custom interface class (so you can change the behavior of the DaemonObject default implementation easily)
- echoserver gained a few more methods to test the new decorators
- DOTTEDNAMES is deprecated and will be removed in the next version
- setting proxy._pyroOneway yourself is deprecated and support for that will be removed in the next version
- locateNS() has a new parameter 'broadcast' to choose if it should use a broadcast lookup (default=True)
- the 'robots' example no longer requires pickle
- fixed the way the tracebacks are handled with the @callback decorator. They will now be logged as a warning (not printed) in both server types
- setup script now generates a bunch of console commands such as 'pyro4-ns' (previously you had to type 'python -m Pyro4.naming' etc.)
- made logger category names of the two socket servers consistent
- improved the clean shutdown mechanism of the daemon
- Daemon.register() now has a force argument that allows you to silently overwrite a previous registration of the object (if present)
- flame server methods _invokeBuiltin and _invokeModule renamed without underscores to follow the public exposed method name rule
- pep8'ified most of the source code
- documentation improvements
- linked to Travis CI: https://travis-ci.org/irmen/Pyro4