diff options
author | Victor Stinner <vstinner@python.org> | 2021-04-14 03:24:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-14 03:24:33 +0200 |
commit | 3bc694d5f3d4eb2e5d2f0b83e498b19662845d4e (patch) | |
tree | 43e6d321001603933495058eedce97d43641f02f /Lib/io.py | |
parent | 11159d2c9d6616497ef4cc62953a5c3cc8454afb (diff) | |
download | cpython-3bc694d5f3d4eb2e5d2f0b83e498b19662845d4e.tar.gz cpython-3bc694d5f3d4eb2e5d2f0b83e498b19662845d4e.zip |
bpo-43680: Deprecate io.OpenWrapper (GH-25357)
Deprecate io.OpenWrapper and _pyio.OpenWrapper: use io.open and
_pyio.open instead. 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().
Diffstat (limited to 'Lib/io.py')
-rw-r--r-- | Lib/io.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/Lib/io.py b/Lib/io.py index 01f1df80ded..2a6140c3dd5 100644 --- a/Lib/io.py +++ b/Lib/io.py @@ -56,7 +56,22 @@ from _io import (DEFAULT_BUFFER_SIZE, BlockingIOError, UnsupportedOperation, BufferedWriter, BufferedRWPair, BufferedRandom, IncrementalNewlineDecoder, text_encoding, TextIOWrapper) -OpenWrapper = _io.open # for compatibility with _pyio + +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(name) + # Pretend this exception was created here. UnsupportedOperation.__module__ = "io" |