From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Fri, 29 May 2026 21:30:50 +0000 (+0200) Subject: [3.15] gh-149056: Properly pass array_hook in json.load() to json.loads() (GH-149057... X-Git-Tag: v3.15.0b2~43 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=863c7e0f9f9d72b8a2b87759b1ab51a0c4293de9;p=thirdparty%2FPython%2Fcpython.git [3.15] gh-149056: Properly pass array_hook in json.load() to json.loads() (GH-149057) (GH-150591) (cherry picked from commit f87d9605d3f9489d33aaf97a97fa9cb81cd7cc40) Co-authored-by: Thomas Kowalski --- diff --git a/Lib/json/__init__.py b/Lib/json/__init__.py index 9681a8fe53ec..37a86831ff94 100644 --- a/Lib/json/__init__.py +++ b/Lib/json/__init__.py @@ -307,7 +307,7 @@ def load(fp, *, cls=None, object_hook=None, parse_float=None, cls=cls, object_hook=object_hook, parse_float=parse_float, parse_int=parse_int, parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, - array_hook=None, **kw) + array_hook=array_hook, **kw) def loads(s, *, cls=None, object_hook=None, parse_float=None, diff --git a/Lib/test/test_json/test_decode.py b/Lib/test/test_json/test_decode.py index d846c8af7ec4..1d51fb2de0e6 100644 --- a/Lib/test/test_json/test_decode.py +++ b/Lib/test/test_json/test_decode.py @@ -87,6 +87,13 @@ class TestDecode: self.assertEqual(self.loads('[]', array_hook=tuple), ()) + def test_load_array_hook(self): + # json.load must forward array_hook to loads + fp = StringIO('[10, 20, 30]') + result = self.json.load(fp, array_hook=tuple) + self.assertEqual(result, (10, 20, 30)) + self.assertEqual(type(result), tuple) + def test_decoder_optimizations(self): # Several optimizations were made that skip over calls to # the whitespace regex, so this test is designed to try and diff --git a/Misc/NEWS.d/next/Library/2026-04-29-08-10-17.gh-issue-149056.jnaD4W.rst b/Misc/NEWS.d/next/Library/2026-04-29-08-10-17.gh-issue-149056.jnaD4W.rst new file mode 100644 index 000000000000..0026d02c8762 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-04-29-08-10-17.gh-issue-149056.jnaD4W.rst @@ -0,0 +1,2 @@ +Fix :func:`json.load` not forwarding the *array_hook* argument to +:func:`json.loads`. Patch by Thomas Kowalski.