Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-simplejson for
openSUSE:Factory checked in at 2021-09-09 23:07:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-simplejson (Old)
and /work/SRC/openSUSE:Factory/.python-simplejson.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-simplejson"
Thu Sep 9 23:07:17 2021 rev:45 rq:917209 version:3.17.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-simplejson/python-simplejson.changes
2021-07-21 19:05:28.387196932 +0200
+++
/work/SRC/openSUSE:Factory/.python-simplejson.new.1899/python-simplejson.changes
2021-09-09 23:07:20.220816530 +0200
@@ -1,0 +2,9 @@
+Tue Sep 7 06:55:10 UTC 2021 - Dirk M??ller <[email protected]>
+
+- update to 3.17.5:
+ * Fix the C extension module to harden is_namedtuple against looks-a-likes
such
+ as Mocks. Also prevent dict encoding from causing an unraised SystemError
when
+ encountering a non-Dict. Noticed by running user tests against a CPython
+ interpreter with C asserts enabled (COPTS += -UNDEBUG).
+
+-------------------------------------------------------------------
Old:
----
simplejson-3.17.3.tar.gz
New:
----
simplejson-3.17.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-simplejson.spec ++++++
--- /var/tmp/diff_new_pack.W1Efoh/_old 2021-09-09 23:07:20.772817171 +0200
+++ /var/tmp/diff_new_pack.W1Efoh/_new 2021-09-09 23:07:20.776817176 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-simplejson
-Version: 3.17.3
+Version: 3.17.5
Release: 0
Summary: Extensible JSON encoder/decoder for Python
License: AFL-2.1 OR MIT
++++++ simplejson-3.17.3.tar.gz -> simplejson-3.17.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/simplejson-3.17.3/CHANGES.txt
new/simplejson-3.17.5/CHANGES.txt
--- old/simplejson-3.17.3/CHANGES.txt 2021-07-10 01:45:59.000000000 +0200
+++ new/simplejson-3.17.5/CHANGES.txt 2021-08-24 06:42:09.000000000 +0200
@@ -1,3 +1,16 @@
+Version 3.17.5 released 2021-08-23
+
+* Fix the C extension module to harden is_namedtuple against looks-a-likes such
+ as Mocks. Also prevent dict encoding from causing an unraised SystemError
when
+ encountering a non-Dict. Noticed by running user tests against a CPython
+ interpreter with C asserts enabled (COPTS += -UNDEBUG).
+ https://github.com/simplejson/simplejson/pull/284
+
+Version 3.17.4 released 2021-08-19
+
+* Upgrade cibuildwheel
+ https://github.com/simplejson/simplejson/pull/287
+
Version 3.17.3 released 2021-07-09
* Replaced Travis-CI and AppVeyor with Github Actions,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/simplejson-3.17.3/PKG-INFO
new/simplejson-3.17.5/PKG-INFO
--- old/simplejson-3.17.3/PKG-INFO 2021-07-10 01:46:02.285155300 +0200
+++ new/simplejson-3.17.5/PKG-INFO 2021-08-24 06:42:09.889491000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: simplejson
-Version: 3.17.3
+Version: 3.17.5
Summary: Simple, fast, extensible JSON encoder/decoder for Python
Home-page: https://github.com/simplejson/simplejson
Author: Bob Ippolito
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/simplejson-3.17.3/conf.py
new/simplejson-3.17.5/conf.py
--- old/simplejson-3.17.3/conf.py 2021-07-10 01:45:59.000000000 +0200
+++ new/simplejson-3.17.5/conf.py 2021-08-24 06:42:09.000000000 +0200
@@ -44,7 +44,7 @@
# The short X.Y version.
version = '3.17'
# The full version, including alpha/beta/rc tags.
-release = '3.17.3'
+release = '3.17.5'
# 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.17.3/setup.py
new/simplejson-3.17.5/setup.py
--- old/simplejson-3.17.3/setup.py 2021-07-10 01:45:59.000000000 +0200
+++ new/simplejson-3.17.5/setup.py 2021-08-24 06:42:09.000000000 +0200
@@ -12,7 +12,7 @@
DistutilsPlatformError
IS_PYPY = hasattr(sys, 'pypy_translation_info')
-VERSION = '3.17.3'
+VERSION = '3.17.5'
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.17.3/simplejson/__init__.py
new/simplejson-3.17.5/simplejson/__init__.py
--- old/simplejson-3.17.3/simplejson/__init__.py 2021-07-10
01:45:59.000000000 +0200
+++ new/simplejson-3.17.5/simplejson/__init__.py 2021-08-24
06:42:09.000000000 +0200
@@ -118,7 +118,7 @@
"""
from __future__ import absolute_import
-__version__ = '3.17.3'
+__version__ = '3.17.5'
__all__ = [
'dump', 'dumps', 'load', 'loads',
'JSONDecoder', 'JSONDecodeError', 'JSONEncoder',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/simplejson-3.17.3/simplejson/_speedups.c
new/simplejson-3.17.5/simplejson/_speedups.c
--- old/simplejson-3.17.3/simplejson/_speedups.c 2021-07-10
01:45:59.000000000 +0200
+++ new/simplejson-3.17.5/simplejson/_speedups.c 2021-08-24
06:42:09.000000000 +0200
@@ -386,6 +386,8 @@
_is_namedtuple(PyObject *obj)
{
int rval = 0;
+ /* We intentionally accept anything with a duck typed _asdict method rather
+ * than requiring it to pass PyTuple_Check(obj). */
PyObject *_asdict = PyObject_GetAttrString(obj, "_asdict");
if (_asdict == NULL) {
PyErr_Clear();
@@ -2853,6 +2855,15 @@
return rv;
newobj = PyObject_CallMethod(obj, "_asdict", NULL);
if (newobj != NULL) {
+ if (!PyDict_Check(newobj)) {
+ PyErr_Format(
+ PyExc_TypeError,
+ "_asdict() must return a dict, not %.80s",
+ Py_TYPE(newobj)->tp_name
+ );
+ Py_DECREF(newobj);
+ return -1;
+ }
rv = encoder_listencode_dict(s, rval, newobj, indent_level);
Py_DECREF(newobj);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/simplejson-3.17.3/simplejson/encoder.py
new/simplejson-3.17.5/simplejson/encoder.py
--- old/simplejson-3.17.3/simplejson/encoder.py 2021-07-10 01:45:59.000000000
+0200
+++ new/simplejson-3.17.5/simplejson/encoder.py 2021-08-24 06:42:09.000000000
+0200
@@ -520,7 +520,10 @@
else:
_asdict = _namedtuple_as_object and getattr(value,
'_asdict', None)
if _asdict and callable(_asdict):
- chunks = _iterencode_dict(_asdict(),
+ dct = _asdict()
+ if not isinstance(dct, dict):
+ raise TypeError("_asdict() must return a dict, not
%s" % (type(dct).__name__,))
+ chunks = _iterencode_dict(dct,
_current_indent_level)
elif _tuple_as_array and isinstance(value, tuple):
chunks = _iterencode_list(value, _current_indent_level)
@@ -641,7 +644,10 @@
else:
_asdict = _namedtuple_as_object and getattr(value,
'_asdict', None)
if _asdict and callable(_asdict):
- chunks = _iterencode_dict(_asdict(),
+ dct = _asdict()
+ if not isinstance(dct, dict):
+ raise TypeError("_asdict() must return a dict, not
%s" % (type(dct).__name__,))
+ chunks = _iterencode_dict(dct,
_current_indent_level)
elif _tuple_as_array and isinstance(value, tuple):
chunks = _iterencode_list(value, _current_indent_level)
@@ -686,8 +692,10 @@
else:
_asdict = _namedtuple_as_object and getattr(o, '_asdict', None)
if _asdict and callable(_asdict):
- for chunk in _iterencode_dict(_asdict(),
- _current_indent_level):
+ dct = _asdict()
+ if not isinstance(dct, dict):
+ raise TypeError("_asdict() must return a dict, not %s"
% (type(dct).__name__,))
+ for chunk in _iterencode_dict(dct, _current_indent_level):
yield chunk
elif (_tuple_as_array and isinstance(o, tuple)):
for chunk in _iterencode_list(o, _current_indent_level):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/simplejson-3.17.3/simplejson/tests/test_namedtuple.py
new/simplejson-3.17.5/simplejson/tests/test_namedtuple.py
--- old/simplejson-3.17.3/simplejson/tests/test_namedtuple.py 2021-07-10
01:45:59.000000000 +0200
+++ new/simplejson-3.17.5/simplejson/tests/test_namedtuple.py 2021-08-24
06:42:09.000000000 +0200
@@ -4,6 +4,11 @@
from simplejson.compat import StringIO
try:
+ from unittest import mock
+except ImportError:
+ mock = None
+
+try:
from collections import namedtuple
except ImportError:
class Value(tuple):
@@ -120,3 +125,25 @@
self.assertEqual(
json.dumps(f({})),
json.dumps(f(DeadDict()), namedtuple_as_object=True))
+
+ def test_asdict_does_not_return_dict(self):
+ if not mock:
+ if hasattr(unittest, "SkipTest"):
+ raise unittest.SkipTest("unittest.mock required")
+ else:
+ print("unittest.mock not available")
+ return
+ fake = mock.Mock()
+ self.assertTrue(hasattr(fake, '_asdict'))
+ self.assertTrue(callable(fake._asdict))
+ self.assertFalse(isinstance(fake._asdict(), dict))
+ # https://github.com/simplejson/simplejson/pull/284
+ # when running under a debug build of CPython (COPTS=-UNDEBUG)
+ # a C assertion could fire due to an unchecked error of an PyDict
+ # API call on a non-dict internally in _speedups.c. Without a debug
+ # build of CPython this test likely passes either way despite the
+ # potential for internal data corruption. Getting it to crash in
+ # a debug build is not always easy either as it requires an
+ # assert(!PyErr_Occurred()) that could fire later on.
+ with self.assertRaises(TypeError):
+ json.dumps({23: fake}, namedtuple_as_object=True, for_json=False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/simplejson-3.17.3/simplejson.egg-info/PKG-INFO
new/simplejson-3.17.5/simplejson.egg-info/PKG-INFO
--- old/simplejson-3.17.3/simplejson.egg-info/PKG-INFO 2021-07-10
01:46:01.000000000 +0200
+++ new/simplejson-3.17.5/simplejson.egg-info/PKG-INFO 2021-08-24
06:42:09.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: simplejson
-Version: 3.17.3
+Version: 3.17.5
Summary: Simple, fast, extensible JSON encoder/decoder for Python
Home-page: https://github.com/simplejson/simplejson
Author: Bob Ippolito