diff options
author | Victor Stinner <vstinner@python.org> | 2022-06-24 06:46:53 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-24 06:46:53 (GMT) |
commit | 6e33ba114ffb47505fec59674c5cce5eb6476f76 (patch) | |
tree | 3682df72eda311bea3bb61f8cc59d50a21e514f5 | |
parent | 5075e81c519af5cf3fd9d356d483b0c9df6b116a (diff) | |
download | cpython-6e33ba114ffb47505fec59674c5cce5eb6476f76.zip cpython-6e33ba114ffb47505fec59674c5cce5eb6476f76.tar.gz cpython-6e33ba114ffb47505fec59674c5cce5eb6476f76.tar.bz2 |
gh-94169: Remove deprecated io.OpenWrapper (#94170)
Remove io.OpenWrapper and _pyio.OpenWrapper, deprecated in Python
3.10: just use :func:`open` instead. The open() (io.open()) function
is a built-in function. Since Python 3.10, _pyio.open() is also a
static method.
-rw-r--r-- | Doc/whatsnew/3.12.rst | 6 | ||||
-rw-r--r-- | Lib/_pyio.py | 16 | ||||
-rw-r--r-- | Lib/io.py | 16 | ||||
-rw-r--r-- | Lib/test/test_io.py | 8 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2022-06-23-14-35-10.gh-issue-94169.jeba90.rst | 4 |
5 files changed, 10 insertions, 40 deletions
diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst index 8dde135..52e4d7e 100644 --- a/Doc/whatsnew/3.12.rst +++ b/Doc/whatsnew/3.12.rst @@ -208,6 +208,12 @@ Removed (and corresponding ``EXPERIMENTAL_ISOLATED_SUBINTERPRETERS``) have been removed. +* Remove ``io.OpenWrapper`` and ``_pyio.OpenWrapper``, deprecated in Python + 3.10: just use :func:`open` instead. The :func:`open` (:func:`io.open`) + function is a built-in function. Since Python 3.10, :func:`_pyio.open` is + also a static method. + (Contributed by Victor Stinner in :gh:`94169`.) + Porting to Python 3.12 ====================== diff --git a/Lib/_pyio.py b/Lib/_pyio.py index 0bfdeaa..1251078 100644 --- a/Lib/_pyio.py +++ b/Lib/_pyio.py @@ -303,22 +303,6 @@ except AttributeError: open_code = _open_code_with_warning -def __getattr__(name): - if name == "OpenWrapper": - # bpo-43680: Until Python 3.9, _pyio.open was not a static method and - # builtins.open was set to OpenWrapper to not become a bound method - # when set to a class variable. _io.open is a built-in function whereas - # _pyio.open is a Python function. In Python 3.10, _pyio.open() is now - # a static method, and builtins.open() is now io.open(). - import warnings - warnings.warn('OpenWrapper is deprecated, use open instead', - DeprecationWarning, stacklevel=2) - global OpenWrapper - OpenWrapper = open - return OpenWrapper - raise AttributeError(f"module {__name__!r} has no attribute {name!r}") - - # In normal operation, both `UnsupportedOperation`s should be bound to the # same object. try: @@ -57,22 +57,6 @@ from _io import (DEFAULT_BUFFER_SIZE, BlockingIOError, UnsupportedOperation, IncrementalNewlineDecoder, text_encoding, TextIOWrapper) -def __getattr__(name): - if name == "OpenWrapper": - # bpo-43680: Until Python 3.9, _pyio.open was not a static method and - # builtins.open was set to OpenWrapper to not become a bound method - # when set to a class variable. _io.open is a built-in function whereas - # _pyio.open is a Python function. In Python 3.10, _pyio.open() is now - # a static method, and builtins.open() is now io.open(). - import warnings - warnings.warn('OpenWrapper is deprecated, use open instead', - DeprecationWarning, stacklevel=2) - global OpenWrapper - OpenWrapper = open - return OpenWrapper - raise AttributeError("module {__name__!r} has no attribute {name!r}") - - # Pretend this exception was created here. UnsupportedOperation.__module__ = "io" diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 129734b..24c93b9 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -4301,14 +4301,6 @@ class MiscIOTest(unittest.TestCase): proc = assert_python_ok('-X', 'utf8=1', '-c', code) self.assertEqual(b"utf-8", proc.out.strip()) - @support.cpython_only - # Depending if OpenWrapper was already created or not, the warning is - # emitted or not. For example, the attribute is already created when this - # test is run multiple times. - @warnings_helper.ignore_warnings(category=DeprecationWarning) - def test_openwrapper(self): - self.assertIs(self.io.OpenWrapper, self.io.open) - class CMiscIOTest(MiscIOTest): io = io diff --git a/Misc/NEWS.d/next/Library/2022-06-23-14-35-10.gh-issue-94169.jeba90.rst b/Misc/NEWS.d/next/Library/2022-06-23-14-35-10.gh-issue-94169.jeba90.rst new file mode 100644 index 0000000..40c1fc1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-06-23-14-35-10.gh-issue-94169.jeba90.rst @@ -0,0 +1,4 @@ +Remove ``io.OpenWrapper`` and ``_pyio.OpenWrapper``, deprecated in Python +3.10: just use :func:`open` instead. The :func:`open` (:func:`io.open`) +function is a built-in function. Since Python 3.10, :func:`_pyio.open` is +also a static method. Patch by Victor Stinner. |