https://github.com/python/cpython/commit/f87d9605d3f9489d33aaf97a97fa9cb81cd7cc40
commit: f87d9605d3f9489d33aaf97a97fa9cb81cd7cc40
branch: main
author: Thomas Kowalski <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2026-05-29T22:53:21+03:00
summary:
gh-149056: Properly pass array_hook in json.load() to json.loads() (GH-149057)
files:
A Misc/NEWS.d/next/Library/2026-04-29-08-10-17.gh-issue-149056.jnaD4W.rst
M Lib/json/__init__.py
M Lib/test/test_json/test_decode.py
diff --git a/Lib/json/__init__.py b/Lib/json/__init__.py
index 9681a8fe53ec480..37a86831ff94838 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 d846c8af7ec4345..1d51fb2de0e69e4 100644
--- a/Lib/test/test_json/test_decode.py
+++ b/Lib/test/test_json/test_decode.py
@@ -87,6 +87,13 @@ def test_array_hook(self):
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 000000000000000..0026d02c8762570
--- /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.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]