mirror of
https://github.com/python/cpython.git
synced 2025-08-22 17:55:18 +00:00
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.
This commit is contained in:
parent
5075e81c51
commit
6e33ba114f
5 changed files with 10 additions and 40 deletions
|
@ -208,6 +208,12 @@ Removed
|
||||||
(and corresponding ``EXPERIMENTAL_ISOLATED_SUBINTERPRETERS``)
|
(and corresponding ``EXPERIMENTAL_ISOLATED_SUBINTERPRETERS``)
|
||||||
have been removed.
|
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
|
Porting to Python 3.12
|
||||||
======================
|
======================
|
||||||
|
|
16
Lib/_pyio.py
16
Lib/_pyio.py
|
@ -303,22 +303,6 @@ except AttributeError:
|
||||||
open_code = _open_code_with_warning
|
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
|
# In normal operation, both `UnsupportedOperation`s should be bound to the
|
||||||
# same object.
|
# same object.
|
||||||
try:
|
try:
|
||||||
|
|
16
Lib/io.py
16
Lib/io.py
|
@ -57,22 +57,6 @@ from _io import (DEFAULT_BUFFER_SIZE, BlockingIOError, UnsupportedOperation,
|
||||||
IncrementalNewlineDecoder, text_encoding, TextIOWrapper)
|
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.
|
# Pretend this exception was created here.
|
||||||
UnsupportedOperation.__module__ = "io"
|
UnsupportedOperation.__module__ = "io"
|
||||||
|
|
||||||
|
|
|
@ -4301,14 +4301,6 @@ class MiscIOTest(unittest.TestCase):
|
||||||
proc = assert_python_ok('-X', 'utf8=1', '-c', code)
|
proc = assert_python_ok('-X', 'utf8=1', '-c', code)
|
||||||
self.assertEqual(b"utf-8", proc.out.strip())
|
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):
|
class CMiscIOTest(MiscIOTest):
|
||||||
io = io
|
io = io
|
||||||
|
|
|
@ -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.
|
Loading…
Add table
Add a link
Reference in a new issue