# HG changeset patch # User Bob Ippolito <bob@redivi.com> # Date 1408391746 25200 # Mon Aug 18 12:55:46 2014 -0700 # Node ID fc047df63b20368a11b1b086ee4c5d64ae173835 # Parent f9d5066027386e7a5db53bfb986fb6cdab4f81c0 documentation about key limitations in JSON per #103 diff --git a/CHANGES.txt b/CHANGES.txt --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,8 @@ +Version 3.6.3 released 2014-08-18 + +* Documentation updates + https://github.com/simplejson/simplejson/issues/103 + Version 3.6.2 released 2014-08-09 * Documentation updates diff --git a/conf.py b/conf.py --- a/conf.py +++ b/conf.py @@ -44,7 +44,7 @@ # The short X.Y version. version = '3.6' # The full version, including alpha/beta/rc tags. -release = '3.6.2' +release = '3.6.3' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: diff --git a/index.rst b/index.rst --- a/index.rst +++ b/index.rst @@ -553,6 +553,15 @@ | None | null | +-------------------+---------------+ + .. note:: The JSON format only permits strings to be used as object + keys, thus any Python dicts to be encoded should only have string keys. + For backwards compatibility, several other types are automatically + coerced to strings: int, long, float, Decimal, bool, and None. + It is error-prone to rely on this behavior, so avoid it when possible. + Dictionaries with other types used as keys should be pre-processed or + wrapped in another type with an appropriate `for_json` method to + transform the keys during encoding. + It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as their corresponding ``float`` values, which is outside the JSON spec. @@ -570,8 +579,8 @@ or *for_json* kwarg. This is faster and more portable than subclassing. If *skipkeys* is false (the default), then it is a :exc:`TypeError` to - attempt encoding of keys that are not str, int, long, float or None. If - *skipkeys* is true, such items are simply skipped. + attempt encoding of keys that are not str, int, long, float, Decimal, bool, + or None. If *skipkeys* is true, such items are simply skipped. If *ensure_ascii* is true (the default), the output is guaranteed to be :class:`str` objects with all incoming unicode characters escaped. If @@ -814,7 +823,7 @@ terms of conversion between Python objects and :class:`Unicode strings <str>`, and thus does not otherwise directly address the issue of character encodings. - + The RFC prohibits adding a byte order mark (BOM) to the start of a JSON text, and this module's serializer does not add a BOM to its output. The RFC permits, but does not require, JSON deserializers to ignore an initial diff --git a/setup.py b/setup.py --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ DistutilsPlatformError IS_PYPY = hasattr(sys, 'pypy_translation_info') -VERSION = '3.6.2' +VERSION = '3.6.3' DESCRIPTION = "Simple, fast, extensible JSON encoder/decoder for Python" with open('README.rst', 'r') as f: diff --git a/simplejson/__init__.py b/simplejson/__init__.py --- a/simplejson/__init__.py +++ b/simplejson/__init__.py @@ -98,7 +98,7 @@ Expecting property name: line 1 column 3 (char 2) """ from __future__ import absolute_import -__version__ = '3.6.2' +__version__ = '3.6.3' __all__ = [ 'dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder',