Hello community, here is the log from the commit of package python3-simplejson for openSUSE:Factory checked in at 2015-07-19 11:45:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python3-simplejson (Old) and /work/SRC/openSUSE:Factory/.python3-simplejson.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-simplejson" Changes: -------- --- /work/SRC/openSUSE:Factory/python3-simplejson/python3-simplejson.changes 2015-06-06 09:54:17.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python3-simplejson.new/python3-simplejson.changes 2015-07-19 11:45:51.000000000 +0200 @@ -1,0 +2,8 @@ +Sat Jul 18 23:47:30 UTC 2015 - a...@gmx.de + +- update to version 3.8.0: + * New iterable_as_array encoder option to perform lazy serialization + of any iterable objects, without having to convert to tuple or + list. + +------------------------------------------------------------------- Old: ---- simplejson-3.7.3.tar.gz New: ---- simplejson-3.8.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python3-simplejson.spec ++++++ --- /var/tmp/diff_new_pack.7uZxCH/_old 2015-07-19 11:45:52.000000000 +0200 +++ /var/tmp/diff_new_pack.7uZxCH/_new 2015-07-19 11:45:52.000000000 +0200 @@ -17,7 +17,7 @@ Name: python3-simplejson -Version: 3.7.3 +Version: 3.8.0 Release: 0 Url: http://github.com/simplejson/simplejson Summary: Simple, fast, extensible JSON encoder/decoder for Python ++++++ simplejson-3.7.3.tar.gz -> simplejson-3.8.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/CHANGES.txt new/simplejson-3.8.0/CHANGES.txt --- old/simplejson-3.7.3/CHANGES.txt 2015-05-31 21:24:24.000000000 +0200 +++ new/simplejson-3.8.0/CHANGES.txt 2015-07-18 23:46:40.000000000 +0200 @@ -1,3 +1,8 @@ +Version 3.8.0 released 2015-XX-XX + +* New iterable_as_array encoder option to perform lazy serialization of + any iterable objects, without having to convert to tuple or list. + Version 3.7.3 released 2015-05-31 * Fix typo introduced in 3.7.0 (behavior should be indistinguishable) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/PKG-INFO new/simplejson-3.8.0/PKG-INFO --- old/simplejson-3.7.3/PKG-INFO 2015-05-31 21:27:46.000000000 +0200 +++ new/simplejson-3.8.0/PKG-INFO 2015-07-18 23:50:32.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: simplejson -Version: 3.7.3 +Version: 3.8.0 Summary: Simple, fast, extensible JSON encoder/decoder for Python Home-page: http://github.com/simplejson/simplejson Author: Bob Ippolito diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/conf.py new/simplejson-3.8.0/conf.py --- old/simplejson-3.7.3/conf.py 2015-05-31 21:24:52.000000000 +0200 +++ new/simplejson-3.8.0/conf.py 2015-07-18 23:46:40.000000000 +0200 @@ -42,9 +42,9 @@ # other places throughout the built documents. # # The short X.Y version. -version = '3.7' +version = '3.8' # The full version, including alpha/beta/rc tags. -release = '3.7.3' +release = '3.8.0' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/index.rst new/simplejson-3.8.0/index.rst --- old/simplejson-3.7.3/index.rst 2015-05-18 18:28:42.000000000 +0200 +++ new/simplejson-3.8.0/index.rst 2015-07-18 23:46:40.000000000 +0200 @@ -142,7 +142,7 @@ namedtuple_as_object=True, tuple_as_array=True, \ bigint_as_string=False, sort_keys=False, \ item_sort_key=None, for_json=None, ignore_nan=False, \ - int_as_string_bitcount=None, **kw) + int_as_string_bitcount=None, iterable_as_array=False, **kw) Serialize *obj* as a JSON formatted stream to *fp* (a ``.write()``-supporting file-like object) using this :ref:`conversion table <py-to-json-table>`. @@ -230,6 +230,13 @@ If *tuple_as_array* is true (default: ``True``), :class:`tuple` (and subclasses) will be encoded as JSON arrays. + If *iterable_as_array* is true (default: ``False``), + any object not in the above table that implements ``__iter__()`` + will be encoded as a JSON array. + + .. versionchanged:: 3.8.0 + *iterable_as_array* is new in 3.8.0. + .. versionchanged:: 2.2.0 *tuple_as_array* is new in 2.2.0. @@ -302,7 +309,7 @@ namedtuple_as_object=True, tuple_as_array=True, \ bigint_as_string=False, sort_keys=False, \ item_sort_key=None, for_json=None, ignore_nan=False, \ - int_as_string_bitcount=None, **kw) + int_as_string_bitcount=None, iterable_as_array=False, **kw) Serialize *obj* to a JSON formatted :class:`str`. @@ -374,6 +381,14 @@ .. versionchanged:: 2.1.0 *use_decimal* is new in 2.1.0. + If *iterable_as_array* is true (default: ``False``), + any object not in the above table that implements ``__iter__()`` + will be encoded as a JSON array. + + .. versionchanged:: 3.8.0 + *iterable_as_array* is new in 3.8.0. + + To use a custom :class:`JSONDecoder` subclass, specify it with the ``cls`` kwarg. Additional keyword arguments will be passed to the constructor of the class. You probably shouldn't do this. @@ -527,7 +542,7 @@ namedtuple_as_object=True, tuple_as_array=True, \ bigint_as_string=False, item_sort_key=None, \ for_json=True, ignore_nan=False, \ - int_as_string_bitcount=None) + int_as_string_bitcount=None, iterable_as_array=False) Extensible JSON encoder for Python data structures. @@ -662,6 +677,13 @@ .. versionchanged:: 2.2.0 *tuple_as_array* is new in 2.2.0. + If *iterable_as_array* is true (default: ``False``), + any object not in the above table that implements ``__iter__()`` + will be encoded as a JSON array. + + .. versionchanged:: 3.8.0 + *iterable_as_array* is new in 3.8.0. + If *bigint_as_string* is true (default: ``False``), :class:`int`` ``2**53`` and higher or lower than ``-2**53`` will be encoded as strings. This is to avoid the rounding that happens in Javascript otherwise. Note that this diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/setup.py new/simplejson-3.8.0/setup.py --- old/simplejson-3.7.3/setup.py 2015-05-31 21:24:46.000000000 +0200 +++ new/simplejson-3.8.0/setup.py 2015-07-18 23:46:40.000000000 +0200 @@ -11,7 +11,7 @@ DistutilsPlatformError IS_PYPY = hasattr(sys, 'pypy_translation_info') -VERSION = '3.7.3' +VERSION = '3.8.0' DESCRIPTION = "Simple, fast, extensible JSON encoder/decoder for Python" with open('README.rst', 'r') as f: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/simplejson/__init__.py new/simplejson-3.8.0/simplejson/__init__.py --- old/simplejson-3.7.3/simplejson/__init__.py 2015-05-31 21:24:42.000000000 +0200 +++ new/simplejson-3.8.0/simplejson/__init__.py 2015-07-18 23:46:40.000000000 +0200 @@ -5,9 +5,8 @@ :mod:`simplejson` exposes an API familiar to users of the standard library :mod:`marshal` and :mod:`pickle` modules. It is the externally maintained version of the :mod:`json` library contained in Python 2.6, but maintains -compatibility with Python 2.4 and Python 2.5 and (currently) has -significant performance advantages, even without using the optional C -extension for speedups. +compatibility back to Python 2.5 and (currently) has significant performance +advantages, even without using the optional C extension for speedups. Encoding basic Python object hierarchies:: @@ -98,7 +97,7 @@ Expecting property name: line 1 column 3 (char 2) """ from __future__ import absolute_import -__version__ = '3.7.3' +__version__ = '3.8.0' __all__ = [ 'dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder', @@ -140,6 +139,7 @@ use_decimal=True, namedtuple_as_object=True, tuple_as_array=True, + iterable_as_array=False, bigint_as_string=False, item_sort_key=None, for_json=False, @@ -152,7 +152,8 @@ encoding='utf-8', default=None, use_decimal=True, namedtuple_as_object=True, tuple_as_array=True, bigint_as_string=False, sort_keys=False, item_sort_key=None, - for_json=False, ignore_nan=False, int_as_string_bitcount=None, **kw): + for_json=False, ignore_nan=False, int_as_string_bitcount=None, + iterable_as_array=False, **kw): """Serialize ``obj`` as a JSON formatted stream to ``fp`` (a ``.write()``-supporting file-like object). @@ -204,6 +205,10 @@ If *tuple_as_array* is true (default: ``True``), :class:`tuple` (and subclasses) will be encoded as JSON arrays. + If *iterable_as_array* is true (default: ``False``), + any object not in the above table that implements ``__iter__()`` + will be encoded as a JSON array. + If *bigint_as_string* is true (default: ``False``), ints 2**53 and higher or lower than -2**53 will be encoded as strings. This is to avoid the rounding that happens in Javascript otherwise. Note that this is still a @@ -242,7 +247,7 @@ check_circular and allow_nan and cls is None and indent is None and separators is None and encoding == 'utf-8' and default is None and use_decimal - and namedtuple_as_object and tuple_as_array + and namedtuple_as_object and tuple_as_array and not iterable_as_array and not bigint_as_string and not sort_keys and not item_sort_key and not for_json and not ignore_nan and int_as_string_bitcount is None @@ -258,6 +263,7 @@ default=default, use_decimal=use_decimal, namedtuple_as_object=namedtuple_as_object, tuple_as_array=tuple_as_array, + iterable_as_array=iterable_as_array, bigint_as_string=bigint_as_string, sort_keys=sort_keys, item_sort_key=item_sort_key, @@ -276,7 +282,8 @@ encoding='utf-8', default=None, use_decimal=True, namedtuple_as_object=True, tuple_as_array=True, bigint_as_string=False, sort_keys=False, item_sort_key=None, - for_json=False, ignore_nan=False, int_as_string_bitcount=None, **kw): + for_json=False, ignore_nan=False, int_as_string_bitcount=None, + iterable_as_array=False, **kw): """Serialize ``obj`` to a JSON formatted ``str``. If ``skipkeys`` is false then ``dict`` keys that are not basic types @@ -324,6 +331,10 @@ If *tuple_as_array* is true (default: ``True``), :class:`tuple` (and subclasses) will be encoded as JSON arrays. + If *iterable_as_array* is true (default: ``False``), + any object not in the above table that implements ``__iter__()`` + will be encoded as a JSON array. + If *bigint_as_string* is true (not the default), ints 2**53 and higher or lower than -2**53 will be encoded as strings. This is to avoid the rounding that happens in Javascript otherwise. @@ -356,12 +367,11 @@ """ # cached encoder - if ( - not skipkeys and ensure_ascii and + if (not skipkeys and ensure_ascii and check_circular and allow_nan and cls is None and indent is None and separators is None and encoding == 'utf-8' and default is None and use_decimal - and namedtuple_as_object and tuple_as_array + and namedtuple_as_object and tuple_as_array and not iterable_as_array and not bigint_as_string and not sort_keys and not item_sort_key and not for_json and not ignore_nan and int_as_string_bitcount is None @@ -377,6 +387,7 @@ use_decimal=use_decimal, namedtuple_as_object=namedtuple_as_object, tuple_as_array=tuple_as_array, + iterable_as_array=iterable_as_array, bigint_as_string=bigint_as_string, sort_keys=sort_keys, item_sort_key=item_sort_key, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/simplejson/_speedups.c new/simplejson-3.8.0/simplejson/_speedups.c --- old/simplejson-3.7.3/simplejson/_speedups.c 2015-05-19 04:12:00.000000000 +0200 +++ new/simplejson-3.8.0/simplejson/_speedups.c 2015-07-18 23:46:40.000000000 +0200 @@ -169,6 +169,7 @@ int use_decimal; int namedtuple_as_object; int tuple_as_array; + int iterable_as_array; PyObject *max_long_size; PyObject *min_long_size; PyObject *item_sort_key; @@ -2581,7 +2582,6 @@ static int encoder_init(PyObject *self, PyObject *args, PyObject *kwds) { - /* initialize Encoder object */ static char *kwlist[] = { "markers", "default", @@ -2596,30 +2596,32 @@ "use_decimal", "namedtuple_as_object", "tuple_as_array", + "iterable_as_array" "int_as_string_bitcount", "item_sort_key", "encoding", "for_json", "ignore_nan", "Decimal", + "iterable_as_array", NULL}; PyEncoderObject *s; PyObject *markers, *defaultfn, *encoder, *indent, *key_separator; PyObject *item_separator, *sort_keys, *skipkeys, *allow_nan, *key_memo; - PyObject *use_decimal, *namedtuple_as_object, *tuple_as_array; + PyObject *use_decimal, *namedtuple_as_object, *tuple_as_array, *iterable_as_array; PyObject *int_as_string_bitcount, *item_sort_key, *encoding, *for_json; PyObject *ignore_nan, *Decimal; assert(PyEncoder_Check(self)); s = (PyEncoderObject *)self; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOOOOOOOOOOOOOOOOOO:make_encoder", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOOOOOOOOOOOOOOOOOOO:make_encoder", kwlist, &markers, &defaultfn, &encoder, &indent, &key_separator, &item_separator, &sort_keys, &skipkeys, &allow_nan, &key_memo, &use_decimal, &namedtuple_as_object, &tuple_as_array, &int_as_string_bitcount, &item_sort_key, &encoding, &for_json, - &ignore_nan, &Decimal)) + &ignore_nan, &Decimal, &iterable_as_array)) return -1; Py_INCREF(markers); @@ -2649,6 +2651,7 @@ s->use_decimal = PyObject_IsTrue(use_decimal); s->namedtuple_as_object = PyObject_IsTrue(namedtuple_as_object); s->tuple_as_array = PyObject_IsTrue(tuple_as_array); + s->iterable_as_array = PyObject_IsTrue(iterable_as_array); if (PyInt_Check(int_as_string_bitcount) || PyLong_Check(int_as_string_bitcount)) { static const unsigned int long_long_bitsize = SIZEOF_LONG_LONG * 8; int int_as_string_bitcount_val = (int)PyLong_AsLong(int_as_string_bitcount); @@ -2936,6 +2939,16 @@ else { PyObject *ident = NULL; PyObject *newobj; + if (s->iterable_as_array) { + newobj = PyObject_GetIter(obj); + if (newobj == NULL) + PyErr_Clear(); + else { + rv = encoder_listencode_list(s, rval, newobj, indent_level); + Py_DECREF(newobj); + break; + } + } if (s->markers != Py_None) { int has_key; ident = PyLong_FromVoidPtr(obj); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/simplejson/encoder.py new/simplejson-3.8.0/simplejson/encoder.py --- old/simplejson-3.7.3/simplejson/encoder.py 2015-05-31 21:22:00.000000000 +0200 +++ new/simplejson-3.8.0/simplejson/encoder.py 2015-07-18 23:46:40.000000000 +0200 @@ -124,7 +124,7 @@ use_decimal=True, namedtuple_as_object=True, tuple_as_array=True, bigint_as_string=False, item_sort_key=None, for_json=False, ignore_nan=False, - int_as_string_bitcount=None): + int_as_string_bitcount=None, iterable_as_array=False): """Constructor for JSONEncoder, with sensible defaults. If skipkeys is false, then it is a TypeError to attempt @@ -179,6 +179,10 @@ If tuple_as_array is true (the default), tuple (and subclasses) will be encoded as JSON arrays. + If *iterable_as_array* is true (default: ``False``), + any object not in the above table that implements ``__iter__()`` + will be encoded as a JSON array. + If bigint_as_string is true (not the default), ints 2**53 and higher or lower than -2**53 will be encoded as strings. This is to avoid the rounding that happens in Javascript otherwise. @@ -210,6 +214,7 @@ self.use_decimal = use_decimal self.namedtuple_as_object = namedtuple_as_object self.tuple_as_array = tuple_as_array + self.iterable_as_array = iterable_as_array self.bigint_as_string = bigint_as_string self.item_sort_key = item_sort_key self.for_json = for_json @@ -338,7 +343,7 @@ self.namedtuple_as_object, self.tuple_as_array, int_as_string_bitcount, self.item_sort_key, self.encoding, self.for_json, - self.ignore_nan, decimal.Decimal) + self.ignore_nan, decimal.Decimal, self.iterable_as_array) else: _iterencode = _make_iterencode( markers, self.default, _encoder, self.indent, floatstr, @@ -347,7 +352,7 @@ self.namedtuple_as_object, self.tuple_as_array, int_as_string_bitcount, self.item_sort_key, self.encoding, self.for_json, - Decimal=decimal.Decimal) + self.iterable_as_array, Decimal=decimal.Decimal) try: return _iterencode(o, 0) finally: @@ -386,6 +391,7 @@ _use_decimal, _namedtuple_as_object, _tuple_as_array, _int_as_string_bitcount, _item_sort_key, _encoding,_for_json, + _iterable_as_array, ## HACK: hand-optimized bytecode; turn globals into locals _PY3=PY3, ValueError=ValueError, @@ -399,6 +405,7 @@ list=list, str=str, tuple=tuple, + iter=iter, ): if _use_decimal and Decimal is None: Decimal = decimal.Decimal @@ -646,6 +653,16 @@ elif _use_decimal and isinstance(o, Decimal): yield str(o) else: + while _iterable_as_array: + # Markers are not checked here because it is valid for + # an iterable to return self. + try: + o = iter(o) + except TypeError: + break + for chunk in _iterencode_list(o, _current_indent_level): + yield chunk + return if markers is not None: markerid = id(o) if markerid in markers: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/simplejson/tests/test_iterable.py new/simplejson-3.8.0/simplejson/tests/test_iterable.py --- old/simplejson-3.7.3/simplejson/tests/test_iterable.py 1970-01-01 01:00:00.000000000 +0100 +++ new/simplejson-3.8.0/simplejson/tests/test_iterable.py 2015-07-18 23:46:40.000000000 +0200 @@ -0,0 +1,31 @@ +import unittest +from StringIO import StringIO + +import simplejson as json + +def iter_dumps(obj, **kw): + return ''.join(json.JSONEncoder(**kw).iterencode(obj)) + +def sio_dump(obj, **kw): + sio = StringIO() + json.dumps(obj, **kw) + return sio.getvalue() + +class TestIterable(unittest.TestCase): + def test_iterable(self): + l = [1, 2, 3] + for dumps in (json.dumps, iter_dumps, sio_dump): + expect = dumps(l) + default_expect = dumps(sum(l)) + # Default is False + self.assertRaises(TypeError, dumps, iter(l)) + self.assertRaises(TypeError, dumps, iter(l), iterable_as_array=False) + self.assertEqual(expect, dumps(iter(l), iterable_as_array=True)) + # Ensure that the "default" gets called + self.assertEqual(default_expect, dumps(iter(l), default=sum)) + self.assertEqual(default_expect, dumps(iter(l), iterable_as_array=False, default=sum)) + # Ensure that the "default" does not get called + self.assertEqual( + default_expect, + dumps(iter(l), iterable_as_array=True, default=sum)) + \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/simplejson/tests/test_tuple.py new/simplejson-3.8.0/simplejson/tests/test_tuple.py --- old/simplejson-3.7.3/simplejson/tests/test_tuple.py 2014-07-22 22:30:14.000000000 +0200 +++ new/simplejson-3.8.0/simplejson/tests/test_tuple.py 2015-07-18 23:46:40.000000000 +0200 @@ -45,7 +45,3 @@ self.assertEqual( json.dumps(repr(t)), sio.getvalue()) - -class TestNamedTuple(unittest.TestCase): - def test_namedtuple_dump(self): - pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/simplejson.egg-info/PKG-INFO new/simplejson-3.8.0/simplejson.egg-info/PKG-INFO --- old/simplejson-3.7.3/simplejson.egg-info/PKG-INFO 2015-05-31 21:27:43.000000000 +0200 +++ new/simplejson-3.8.0/simplejson.egg-info/PKG-INFO 2015-07-18 23:50:28.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: simplejson -Version: 3.7.3 +Version: 3.8.0 Summary: Simple, fast, extensible JSON encoder/decoder for Python Home-page: http://github.com/simplejson/simplejson Author: Bob Ippolito diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simplejson-3.7.3/simplejson.egg-info/SOURCES.txt new/simplejson-3.8.0/simplejson.egg-info/SOURCES.txt --- old/simplejson-3.7.3/simplejson.egg-info/SOURCES.txt 2015-05-31 21:27:43.000000000 +0200 +++ new/simplejson-3.8.0/simplejson.egg-info/SOURCES.txt 2015-07-18 23:50:28.000000000 +0200 @@ -34,6 +34,7 @@ simplejson/tests/test_for_json.py simplejson/tests/test_indent.py simplejson/tests/test_item_sort_key.py +simplejson/tests/test_iterable.py simplejson/tests/test_namedtuple.py simplejson/tests/test_pass1.py simplejson/tests/test_pass2.py