From 4766237d19c81b73296524ee51f834c381d3c16e Mon Sep 17 00:00:00 2001 From: Savannah Ostrowski Date: Mon, 12 Jan 2026 11:03:42 -0800 Subject: [PATCH] =?utf8?q?GH-43374:=20Revert=20"GH-43374:=20Fix=20urlretri?= =?utf8?q?eve=20reporthook=20to=20report=20actual=20bytes=20r=E2=80=A6=20(?= =?utf8?q?#143711)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Revert "GH-43374: Fix urlretrieve reporthook to report actual bytes read (#142653)" This reverts commit 68a01f901f446f71aac88431e01bb18b9fa35bd0. --- Lib/test/test_urllib.py | 2 +- Lib/test/test_urllibnet.py | 14 ++++++-------- Lib/urllib/request.py | 2 +- .../2025-12-12-23-17-10.gh-issue-43374.M6jGC5.rst | 1 - 4 files changed, 8 insertions(+), 11 deletions(-) delete mode 100644 Misc/NEWS.d/next/Library/2025-12-12-23-17-10.gh-issue-43374.M6jGC5.rst diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index a468b1157528..ae524c5ffba6 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -727,7 +727,7 @@ class urlretrieve_FileTests(unittest.TestCase): self.assertEqual(report[0][2], 8193) self.assertEqual(report[0][1], 8192) self.assertEqual(report[1][1], 8192) - self.assertEqual(report[2][1], 1) # last block only reads 1 byte + self.assertEqual(report[2][1], 8192) class urlretrieve_HttpTests(unittest.TestCase, FakeHTTPMixin): diff --git a/Lib/test/test_urllibnet.py b/Lib/test/test_urllibnet.py index da094752b84c..1a42c35dc49b 100644 --- a/Lib/test/test_urllibnet.py +++ b/Lib/test/test_urllibnet.py @@ -219,14 +219,12 @@ class urlretrieveNetworkTests(unittest.TestCase): self.assertEqual(records[0][2], expected_size) self.assertEqual(records[-1][2], expected_size) - self.assertEqual(records[0][1], 8192, - msg="first block size should be 8192 in %s" % records_repr) - for block_num, block_size, total_size in records: - self.assertLessEqual(block_size, 8192, - msg="block size should be <= 8192 in %s" % records_repr) - total_read = sum(block_size for _, block_size, _ in records[1:]) - self.assertEqual(total_read, expected_size, - msg="sum of bytes read must equal total size in %s" % records_repr) + block_sizes = {block_size for _, block_size, _ in records} + self.assertEqual({records[0][1]}, block_sizes, + msg="block sizes in %s must be equal" % records_repr) + self.assertGreaterEqual(records[-1][0]*records[0][1], expected_size, + msg="number of blocks * block size must be" + " >= total size in %s" % records_repr) if __name__ == "__main__": diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index 60607c48145c..f32de189b135 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -242,7 +242,7 @@ def urlretrieve(url, filename=None, reporthook=None, data=None): tfp.write(block) blocknum += 1 if reporthook: - reporthook(blocknum, len(block), size) + reporthook(blocknum, bs, size) if size >= 0 and read < size: raise ContentTooShortError( diff --git a/Misc/NEWS.d/next/Library/2025-12-12-23-17-10.gh-issue-43374.M6jGC5.rst b/Misc/NEWS.d/next/Library/2025-12-12-23-17-10.gh-issue-43374.M6jGC5.rst deleted file mode 100644 index 0fe3c35ab3fc..000000000000 --- a/Misc/NEWS.d/next/Library/2025-12-12-23-17-10.gh-issue-43374.M6jGC5.rst +++ /dev/null @@ -1 +0,0 @@ -Fix :func:`urllib.request.urlretrieve` to pass the actual number of bytes read to the *reporthook* callback, instead of always passing the block size. -- 2.47.3