Change Log

Version 0.8.1 - October TBD, 2014

  • Support for Pickle Protocol v4.

Version 0.8.0 - September 6, 2014

  • We now support serializing objects that contain references to module-level functions (#77).
  • Better Pickle Protocol v2 support (#78).
  • Support for string __slots__ and iterable __slots__ (#67) (#68).
  • encode() now has a warn option that makes jsonpickle emit warnings when encountering objects that cannot be pickled.
  • A Javascript implementation of jsonpickle is now included in the jsonpickleJS directory.

Version 0.7.2 - August 6, 2014

  • We now properly serialize classes that inherit from classes that use __slots__ and add additional slots in the derived class.
  • jsonpickle can now serialize objects that implement __getstate__() but not __setstate__(). The result of __getstate__() is returned as-is when doing a round-trip from Python objects to jsonpickle and back.
  • Better support for collections.defaultdict with custom factories.
  • Added support for queue.Queue objects.

Version 0.7.1 - May 6, 2014

  • Added support for Python 3.4.
  • Added support for posix.stat_result.

Version 0.7.0 - March 15, 2014

  • Added handles decorator to jsonpickle.handlers.BaseHandler, enabling simple declaration of a handler for a class.
  • __getstate__() and __setstate__() are now honored when pickling objects that subclass dict.
  • jsonpickle can now serialize collections.Counter objects.
  • Object references are properly handled when using integer keys.
  • Object references are now supported when using custom handlers.
  • Decimal objects are supported in Python 3.
  • jsonpickle’s “fallthrough-on-error” behavior can now be disabled.
  • Simpler API for registering custom handlers.
  • A new “safe-mode” is provided which avoids eval(). Backwards-compatible deserialization of repr-serialized objects is disabled in this mode. e.g. decode(string, safe=True)

Version 0.6.1 - August 25, 2013

  • Python 3.2 support, and additional fixes for Python 3.

Version 0.6.0 - August 24, 2013

Version 0.5.0 - August 22, 2013

  • Non-string dictionary keys (e.g. ints, objects) are now supported by passing keys=True to jsonpickle.encode() and jsonpickle.decode().
  • We now support namedtuple, deque, and defaultdict.
  • Datetimes with timezones are now fully supported.
  • Better support for complicated structures e.g. datetime inside dicts.
  • jsonpickle added support for references and cyclical data structures in 0.4.0. This can be disabled by passing make_refs=False to jsonpickle.encode().

Version 0.4.0 - June 21, 2011

  • Switch build from setuptools to distutils
  • Consistent dictionary key ordering
  • Fix areas with improper support for unpicklable=False
  • Added support for cyclical data structures (#16).
  • Experimental support for jsonlib and py-yajl backends.
  • New contributers David K. Hess and Alec Thomas

Warning

To support cyclical data structures (#16), the storage format has been modified. Efforts have been made to ensure backwards-compatibility. jsonpickle 0.4.0 can read data encoded by jsonpickle 0.3.1, but earlier versions of jsonpickle may be unable to read data encoded by jsonpickle 0.4.0.

Version 0.3.1 - December 12, 2009

  • Include tests and docs directories in sdist for distribution packages.

Version 0.3.0 - December 11, 2009

  • List and set subclasses.
  • Objects with module references.
  • Newstyle classes with __slots__.
  • Objects implementing __setstate__() and __getstate__() (follows the pickle protocol).
  • Improved support for Zope objects via pre-fetch.
  • Support for user-defined serialization handlers via the jsonpickle.handlers registry.
  • Removed cjson support per John Millikin’s recommendation.
  • General improvements to style, including PEP 257 compliance and refactored project layout.
  • Steps towards Python 2.3 and Python 3 support.
  • New contributors Dan Buch and Ian Schenck.
  • Thanks also to Kieran Darcy, Eoghan Murray, and Antonin Hildebrand for their assistance!

Version 0.2.0 - January 10, 2009

  • Support for all major Python JSON backends (including json in Python 2.6, simplejson, cjson, and demjson)
  • Handle several datetime objects using the repr() of the objects (Thanks to Antonin Hildebrand).
  • Sphinx documentation
  • Added support for recursive data structures
  • Unicode dict-keys support
  • Support for Google App Engine and Django
  • Tons of additional testing and bug reports (Antonin Hildebrand, Sorin, Roberto Saccon, Faber Fedor, FirePython, and Joose)

Version 0.1.0 - August 21, 2008

  • Added long as basic primitive (thanks Adam Fisk)
  • Prefer python-cjson to simplejson, if available
  • Major API change, use python-cjson’s decode/encode instead of simplejson’s load/loads/dump/dumps
  • Added benchmark.py to compare simplejson and python-cjson

Version 0.0.5 - July 21, 2008

  • Changed prefix of special fields to conform with CouchDB requirements (Thanks Dean Landolt). Break backwards compatibility.
  • Moved to Google Code subversion
  • Fixed unit test imports

Version 0.0.3

  • Convert back to setup.py from pavement.py (issue found by spidaman)

Version 0.0.2

  • Handle feedparser’s FeedParserDict
  • Converted project to Paver
  • Restructured directories
  • Increase test coverage

Version 0.0.1

Initial release