Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-ijson for openSUSE:Factory 
checked in at 2026-10-26 10:00:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ijson (Old)
 and      /work/SRC/openSUSE:Factory/.python-ijson.new.2252680 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ijson"

Mon Oct 26 10:00:43 2026 rev:11 rq:1392437 version:3.6.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ijson/python-ijson.changes        
2026-07-21 22:58:14.945313114 +0200
+++ /work/SRC/openSUSE:Factory/.python-ijson.new.2252680/python-ijson.changes   
2026-10-26 10:01:55.206539663 +0100
@@ -1,0 +2,8 @@
+Sun Oct 25 14:26:42 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 3.6.0:
+  * Removed support for Python < 3.10
+  * Fixed treatment of null characters on strings (map keys and
+    string values) on `cffi` backend (#178).
+
+-------------------------------------------------------------------

Old:
----
  ijson-3.5.1.tar.gz

New:
----
  ijson-3.6.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-ijson.spec ++++++
--- /var/tmp/diff_new_pack.JQzUX9/_old  2026-10-26 10:01:55.918569536 +0100
+++ /var/tmp/diff_new_pack.JQzUX9/_new  2026-10-26 10:01:55.920569620 +0100
@@ -20,14 +20,14 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-ijson
-Version:        3.5.1
+Version:        3.6.0
 Release:        0
 Summary:        Iterative JSON parser with a standard Python iterator interface
 License:        BSD-3-Clause
 Group:          Development/Languages/Python
 URL:            https://github.com/ICRAR/ijson
 Source:         
https://files.pythonhosted.org/packages/source/i/ijson/ijson-%{version}.tar.gz
-BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module devel >= 3.10}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}

++++++ ijson-3.5.1.tar.gz -> ijson-3.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/CHANGELOG.md new/ijson-3.6.0/CHANGELOG.md
--- old/ijson-3.5.1/CHANGELOG.md        2026-07-06 19:24:12.000000000 +0200
+++ new/ijson-3.6.0/CHANGELOG.md        2026-10-12 22:24:15.300327800 +0200
@@ -2,6 +2,11 @@
 
 ## Development
 
+## [3.6.0]
+
+* Removed support for Python < 3.10
+* Fixed treatment of null characters on strings (map keys and string values) 
on `cffi` backend (#178).
+
 ## [3.5.1]
 
 * The internal `ijson.common.ObjectBuilder` no longer creates internal 
reference
@@ -410,3 +415,4 @@
 [3.4.0.post0]: https://github.com/ICRAR/ijson/releases/tag/v3.4.0.post0
 [3.5.0]: https://github.com/ICRAR/ijson/releases/tag/v3.5.0
 [3.5.1]: https://github.com/ICRAR/ijson/releases/tag/v3.5.1
+[3.6.0]: https://github.com/ICRAR/ijson/releases/tag/v3.6.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/PKG-INFO new/ijson-3.6.0/PKG-INFO
--- old/ijson-3.5.1/PKG-INFO    2026-07-06 19:24:17.241391400 +0200
+++ new/ijson-3.6.0/PKG-INFO    2026-10-12 22:24:19.169019700 +0200
@@ -1,21 +1,21 @@
 Metadata-Version: 2.4
 Name: ijson
-Version: 3.5.1
+Version: 3.6.0
 Summary: Iterative JSON parser with standard Python iterator interfaces
 Author-email: Rodrigo Tobar <[email protected]>, Ivan Sagalaev 
<[email protected]>
 License-Expression: BSD-3-Clause AND ISC
 Project-URL: Homepage, https://github.com/ICRAR/ijson
 Classifier: Development Status :: 5 - Production/Stable
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
 Classifier: Programming Language :: Python :: 3.14
+Classifier: Programming Language :: Python :: 3.15
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 Description-Content-Type: text/x-rst
 License-File: LICENSE.txt
 Dynamic: license-file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/pyproject.toml 
new/ijson-3.6.0/pyproject.toml
--- old/ijson-3.5.1/pyproject.toml      2026-07-06 19:24:12.000000000 +0200
+++ new/ijson-3.6.0/pyproject.toml      2026-10-12 22:24:15.301051000 +0200
@@ -13,17 +13,17 @@
 ]
 classifiers = [
   'Development Status :: 5 - Production/Stable',
-  'Programming Language :: Python :: 3.9',
   'Programming Language :: Python :: 3.10',
   'Programming Language :: Python :: 3.11',
   'Programming Language :: Python :: 3.12',
   'Programming Language :: Python :: 3.13',
   'Programming Language :: Python :: 3.14',
+  'Programming Language :: Python :: 3.15',
   'Programming Language :: Python :: Implementation :: CPython',
   'Programming Language :: Python :: Implementation :: PyPy',
   'Topic :: Software Development :: Libraries :: Python Modules',
 ]
-requires-python = ">=3.9"
+requires-python = ">=3.10"
 dynamic = ["version"]
 
 [project.urls]
@@ -38,7 +38,6 @@
 [tool.tox]
 requires = ["tox>=4.23"]
 env_list = [
-    "py39",
     "py310",
     "py311",
     "py312",
@@ -46,6 +45,8 @@
     "py313t",
     "py314",
     "py314t",
+    "py315",
+    "py315t",
 ]
 
 [tool.tox.env_run_base]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/src/ijson/backends/yajl2_cffi.py 
new/ijson-3.6.0/src/ijson/backends/yajl2_cffi.py
--- old/ijson-3.5.1/src/ijson/backends/yajl2_cffi.py    2026-07-06 
19:24:12.000000000 +0200
+++ new/ijson-3.6.0/src/ijson/backends/yajl2_cffi.py    2026-10-12 
22:24:15.303051000 +0200
@@ -117,7 +117,8 @@
 @ffi.callback('int(void *ctx, const unsigned char *stringVal, size_t 
stringLen)')
 @append_event_to_ctx('string')
 def string(val, length):
-    return ffi.string(val, maxlen=length).decode('utf-8')
+    # yajl gives an explicit length; ffi.string would stop at an embedded NUL
+    return ffi.buffer(val, length)[:].decode('utf-8')
 
 
 @ffi.callback('int(void *ctx)')
@@ -129,7 +130,7 @@
 @ffi.callback('int(void *ctx, const unsigned char *key, size_t stringLen)')
 @append_event_to_ctx('map_key')
 def map_key(key, length):
-    return ffi.string(key, maxlen=length).decode('utf-8')
+    return ffi.buffer(key, length)[:].decode('utf-8')
 
 
 @ffi.callback('int(void *ctx)')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/src/ijson/version.py 
new/ijson-3.6.0/src/ijson/version.py
--- old/ijson-3.5.1/src/ijson/version.py        2026-07-06 19:24:12.000000000 
+0200
+++ new/ijson-3.6.0/src/ijson/version.py        2026-10-12 22:24:15.303051000 
+0200
@@ -1 +1 @@
-__version__ = '3.5.1'
+__version__ = '3.6.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/src/ijson.egg-info/PKG-INFO 
new/ijson-3.6.0/src/ijson.egg-info/PKG-INFO
--- old/ijson-3.5.1/src/ijson.egg-info/PKG-INFO 2026-07-06 19:24:17.000000000 
+0200
+++ new/ijson-3.6.0/src/ijson.egg-info/PKG-INFO 2026-10-12 22:24:19.138062700 
+0200
@@ -1,21 +1,21 @@
 Metadata-Version: 2.4
 Name: ijson
-Version: 3.5.1
+Version: 3.6.0
 Summary: Iterative JSON parser with standard Python iterator interfaces
 Author-email: Rodrigo Tobar <[email protected]>, Ivan Sagalaev 
<[email protected]>
 License-Expression: BSD-3-Clause AND ISC
 Project-URL: Homepage, https://github.com/ICRAR/ijson
 Classifier: Development Status :: 5 - Production/Stable
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
 Classifier: Programming Language :: Python :: 3.14
+Classifier: Programming Language :: Python :: 3.15
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 Description-Content-Type: text/x-rst
 License-File: LICENSE.txt
 Dynamic: license-file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/tests/test_base.py 
new/ijson-3.6.0/tests/test_base.py
--- old/ijson-3.5.1/tests/test_base.py  2026-07-06 19:24:12.000000000 +0200
+++ new/ijson-3.6.0/tests/test_base.py  2026-10-12 22:24:15.304331800 +0200
@@ -270,6 +270,7 @@
 }
 '''
 SURROGATE_PAIRS_JSON = br'"\uD83D\uDCA9"'
+EMBEDDED_NUL_JSON = br'{"a\u0000b": "c\u0000d"}'
 PARTIAL_ARRAY_JSONS = [
     (b'[1,', 1),
     (b'[1, 2 ', 1, 2),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/tests/test_basic_parse.py 
new/ijson-3.6.0/tests/test_basic_parse.py
--- old/ijson-3.5.1/tests/test_basic_parse.py   2026-07-06 19:24:12.000000000 
+0200
+++ new/ijson-3.6.0/tests/test_basic_parse.py   2026-10-12 22:24:15.304331800 
+0200
@@ -7,7 +7,7 @@
 import pytest
 from ijson import common
 
-from .test_base import ARRAY_JSON, ARRAY_JSON_EVENTS, INCOMPLETE_JSONS, 
INCOMPLETE_JSON_TOKENS, INVALID_JSONS, JSON, JSON_EVENTS, SCALAR_JSON, 
SURROGATE_PAIRS_JSON, STRINGS_JSON
+from .test_base import ARRAY_JSON, EMBEDDED_NUL_JSON, ARRAY_JSON_EVENTS, 
INCOMPLETE_JSONS, INCOMPLETE_JSON_TOKENS, INVALID_JSONS, JSON, JSON_EVENTS, 
SCALAR_JSON, SURROGATE_PAIRS_JSON, STRINGS_JSON
 
 
 def _raises_json_error(adaptor, json, **kwargs):
@@ -57,6 +57,12 @@
     assert '💩' == parsed_string
 
 
+def test_embedded_nul(adaptor):
+    events = adaptor.basic_parse(EMBEDDED_NUL_JSON)
+    assert ('map_key', 'a\x00b') in events
+    assert ('string', 'c\x00d') in events
+
+
 def _get_numbers(adaptor, json, use_float):
     events = adaptor.basic_parse(json, use_float=use_float)
     return [value for event, value in events if event == 'number']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/tests/test_memleaks.py 
new/ijson-3.6.0/tests/test_memleaks.py
--- old/ijson-3.5.1/tests/test_memleaks.py      2026-07-06 19:24:12.000000000 
+0200
+++ new/ijson-3.6.0/tests/test_memleaks.py      2026-10-12 22:24:15.304331800 
+0200
@@ -34,7 +34,7 @@
 @pytest.mark.parametrize("exhaust", (True, False))
 @pytest.mark.parametrize("n", (100000,))
 @pytest.mark.parametrize("function",
-    (
+    [
         pytest.param(construction, id=name) for name, construction in
         {
             "basic_parse": lambda backend: 
backend.basic_parse_gen(io.BytesIO(b'[1, 2, 3, 4, 5]')),
@@ -42,7 +42,7 @@
             "items": lambda backend: backend.items_gen(io.BytesIO(b'[1, 2, 3, 
4, 5]'), 'item'),
             "kvitems": lambda backend: backend.kvitems_gen(io.BytesIO(b'{"a": 
0, "b": 1, "c": 2}'), ''),
         }.items()
-    )
+    ]
 )
 def test_generator(backend, function, n, exhaust):
     """Tests that running parse doesn't leak"""
@@ -51,7 +51,7 @@
 
 @pytest.mark.parametrize("n", (100000,))
 @pytest.mark.parametrize("invalid_construction",
-    (
+    [
         pytest.param(construction, id=name) for name, construction in
         {
             "basic_parse": lambda backend: 
next(backend.basic_parse_gen(io.BytesIO(b'[1, 2, 3, 4, 5]'), not_a_kwarg=0)),
@@ -59,7 +59,7 @@
             "items": lambda backend: next(backend.items_gen(io.BytesIO(b'[1, 
2, 3, 4, 5]'), 'item', not_a_kwarg=0)),
             "kvitems": lambda backend: 
next(backend.kvitems_gen(io.BytesIO(b'{"a": 0, "b": 1, "c": 2}'), '', 
not_a_kwarg=0)),
         }.items()
-    )
+    ]
 )
 def test_erroneous_generator_construction(backend, invalid_construction, n):
     """Tests that running parse doesn't leak"""
@@ -71,7 +71,7 @@
 
 @pytest.mark.parametrize("n", (100000,))
 @pytest.mark.parametrize("invalid_construction",
-    (
+    [
         pytest.param(construction, id=name) for name, construction in
         {
             "basic_parse": lambda backend: backend.basic_parse_async(b'[1, 2, 
3, 4, 5]', not_a_kwarg=0),
@@ -79,7 +79,7 @@
             "items": lambda backend: backend.items_async(b'[1, 2, 3, 4, 5]', 
'item', not_a_kwarg=0),
             "kvitems": lambda backend: backend.kvitems_async(b'{"a": 0, "b": 
1, "c": 2}', '', not_a_kwarg=0),
         }.items()
-    )
+    ]
 )
 def test_erroneous_async_construction(backend, n ,invalid_construction):
     def erroneous_async_construction():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ijson-3.5.1/tests/test_pulling.py 
new/ijson-3.6.0/tests/test_pulling.py
--- old/ijson-3.5.1/tests/test_pulling.py       2026-07-06 19:24:12.000000000 
+0200
+++ new/ijson-3.6.0/tests/test_pulling.py       2026-10-12 22:24:15.304331800 
+0200
@@ -11,6 +11,6 @@
 
 
 @pytest.mark.pull_only
[email protected]("buf_size", (2 ** exp for exp in range(0, 13, 2)))
[email protected]("buf_size", [2 ** exp for exp in range(0, 13, 2)])
 def test_different_buf_sizes(adaptor, buf_size):
     assert JSON_EVENTS == adaptor.basic_parse(JSON, buf_size=buf_size)

Reply via email to