-------------------
- 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`)