From 53bea44f358b5a5c9b76e7b52f97c2aa3e93a0e4 Mon Sep 17 00:00:00 2001 From: Cody Maloney Date: Tue, 13 May 2025 11:14:41 -0700 Subject: [PATCH 1/4] gh-71253: Match _io exception in _pyio Test was only testing _io, expanded to cover _pyio. --- Lib/_pyio.py | 3 ++- Lib/test/test_io.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Lib/_pyio.py b/Lib/_pyio.py index a870de5b532542..f79674fb7a9f5e 100644 --- a/Lib/_pyio.py +++ b/Lib/_pyio.py @@ -1563,7 +1563,8 @@ def __init__(self, file, mode='r', closefd=True, opener=None): if not isinstance(fd, int): raise TypeError('expected integer from opener') if fd < 0: - raise OSError('Negative file descriptor') + # bpo-27066: Raise a ValueError for bad value. + raise ValueError(f'opener returned {fd}') owned_fd = fd if not noinherit_flag: os.set_inheritable(fd, False) diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 5a8f1949baaa98..a12bd82fea9cd6 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -918,7 +918,7 @@ def test_bad_opener_negative_1(self): def badopener(fname, flags): return -1 with self.assertRaises(ValueError) as cm: - open('non-existent', 'r', opener=badopener) + self.open('non-existent', 'r', opener=badopener) self.assertEqual(str(cm.exception), 'opener returned -1') def test_bad_opener_other_negative(self): @@ -926,7 +926,7 @@ def test_bad_opener_other_negative(self): def badopener(fname, flags): return -2 with self.assertRaises(ValueError) as cm: - open('non-existent', 'r', opener=badopener) + self.open('non-existent', 'r', opener=badopener) self.assertEqual(str(cm.exception), 'opener returned -2') def test_opener_invalid_fd(self): From 28d198e63d66e7c4b38a3eebc966675d4a7a9809 Mon Sep 17 00:00:00 2001 From: Cody Maloney Date: Tue, 13 May 2025 18:22:03 -0400 Subject: [PATCH 2/4] Add blurb --- .../next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst diff --git a/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst b/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst new file mode 100644 index 00000000000000..9fedaec06af721 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst @@ -0,0 +1,2 @@ +Raise ValueError if an opener returns a negative fd in ``_pyio`` +:func:`open` to match ``_io`` From f15a811e0445acd16dec7cbd00ec3aa75a5e9a86 Mon Sep 17 00:00:00 2001 From: Cody Maloney Date: Thu, 15 May 2025 09:38:50 -0400 Subject: [PATCH 3/4] Update Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst Co-authored-by: Peter Bierma --- .../next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst b/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst index 9fedaec06af721..a92cdc7017ea05 100644 --- a/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst +++ b/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst @@ -1,2 +1,2 @@ -Raise ValueError if an opener returns a negative fd in ``_pyio`` +Raise :exc:`ValueError` if an opener returns a negative file-descriptor in ``_pyio`` :func:`open` to match ``_io`` From 2ecd0267535b30939629326e180df0b89fa73c7b Mon Sep 17 00:00:00 2001 From: Cody Maloney Date: Thu, 15 May 2025 09:49:03 -0400 Subject: [PATCH 4/4] Tweak blurb with review comments --- .../Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst b/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst index a92cdc7017ea05..714d707f488709 100644 --- a/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst +++ b/Misc/NEWS.d/next/Library/2025-05-13-18-21-59.gh-issue-71253.-3Sf_K.rst @@ -1,2 +1,3 @@ -Raise :exc:`ValueError` if an opener returns a negative file-descriptor in ``_pyio`` -:func:`open` to match ``_io`` +Raise :exc:`ValueError` in :func:`open` if *opener* returns a negative +file-descriptor in the Python implementation of :mod:`io` to match the +C implementation. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy