-------------------
- Support for encoding/decoding SQLAlchemy ORM objects with a new adapter.
Lots of people involved in this one, but special thanks to Dave Thompson
and Michael Van Tellingen for making this happen. (ticket 277)
- All gateways now log exceptions when exceptions are raised during
en/decoding. (ticket 394)
- Flex messaging now uses correct static attributes for encoding. Determining
static/dynamic attributes on objects is now easier (ticket 357)
- Added use_proxy option to amf3 which will automagically convert ObjectProxy
to dict and ArrayCollection to list on decoding, and vice versa on encode.
Thanks to dthompso for the excellent patch (ticket 355)
- flex.ArrayCollection now subclasses list instead of dict as non-int keys
are not allowed. IList interface has been implemented. (ticket 349)
- Encoding registered subclass of list that define the 'externalised'
metadata will be encoded as an object.
- Encoders how have a 'strict' mode. Not generally useful for the time being
but will help with developments in the future. Type mapped functions now
require a second 'encoder' attribute. (ticket 378)
- Added adapter to handle the :py:mod:`decimal` module and, if strict is set
to False, silently converts a Decimal instance to a float (ticket 376)
- ClassAlias can now be subclassed and three new methods have been added:
applyAttributes, createInstance, getAttributes all which help to provide
fine control for object/instance manipulation (ticket 348)
- Added support for __slots__ (ticket 347)
- Fixed problem when decoding objects that map to GAE db.Model objects with
required properties (ticket 342)
- ByteArray now does not throw an error when used in the Remoting framework
(ticket 379)
- A new adapter that converts sets.ImmutableSet and sets.Set to tuples before
encoding. (ticket 280)
- A revamped google app engine adapter that checks for the _key attribute in
an aliased class and first loads the object from the datastore and then
applies that properties in the object stream. (ticket 307)
- New helper function to make it easier to manually add adapters (ticket 350)
- Ability to disable the c extension with passing --disable-ext to setup.py
(ticket 381, ticket 391)
- Python C-extension for the pyamf.util.BufferedByteStream class. Originally
contributed by Gerard Escalante (ticket 225, ticket 405)
- New API to add headers such as cookies in pyamf.remoting.client
(ticket 337)
- Now clearing the context between remoting requests (ticket 309)
- Fixed issue with AMF3 class definition references (ticket 341)
- More helpful description for register_class args check (ticket 334)
- pyamf.register_class now checks to ensure that __init__ args do not have
any arguments (ticket 322)
- Added RemoteObject support for AsyncMessage (ticket 292)
- pyamf.remoting.ErrorFault.__repr__ now displays the traceback info (if it
exists). (ticket 331)
- Both Encoders will now raise pyamf.EncodeError if a function is encoded
(ticket 311)
- Twisted Gateway would fall over when returning tuples (ticket 313)
- The remoting gateways now send a customizable Server header (ticket 317)
- The remoting client now sends a customizable User-Agent header (ticket 306)
- Added ability to set the HTTP referer in remoting client (ticket 316)
- Fixed issue where the AMF3 encoder assumed objects with a 'tag' attribute
needed XML encoding. Reported by cy-man (ticket 303)
- Solved issue with repr for AbstractMessage. Reported by datafunk
(ticket 283)
- Content-type was missing in POST requests from the AMF client. Reported by
magog (ticket 304)
- Added the disconnect Command operation (ticket 325)
- Fixed issue with the unit tests for Django (ticket 281)
- Removed the NetworkIOMixIn class (ticket 232)