summaryrefslogtreecommitdiffstats
path: root/Lib/_pyio.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2021-04-14 01:24:33 (GMT)
committerGitHub <noreply@github.com>2021-04-14 01:24:33 (GMT)
commit3bc694d5f3d4eb2e5d2f0b83e498b19662845d4e (patch)
tree43e6d321001603933495058eedce97d43641f02f /Lib/_pyio.py
parent11159d2c9d6616497ef4cc62953a5c3cc8454afb (diff)
downloadcpython-3bc694d5f3d4eb2e5d2f0b83e498b19662845d4e.zip
cpython-3bc694d5f3d4eb2e5d2f0b83e498b19662845d4e.tar.gz
cpython-3bc694d5f3d4eb2e5d2f0b83e498b19662845d4e.tar.bz2
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/_pyio.py')
-rw-r--r--Lib/_pyio.py26
1 files changed, 14 insertions, 12 deletions
diff --git a/Lib/_pyio.py b/Lib/_pyio.py
index cb5a619..56e9a0c 100644
--- a/Lib/_pyio.py
+++ b/Lib/_pyio.py
@@ -311,18 +311,20 @@ except AttributeError:
open_code = _open_code_with_warning
-class DocDescriptor:
- """Helper for builtins.open.__doc__
- """
- def __get__(self, obj, typ=None):
- return (
- "open(file, mode='r', buffering=-1, encoding=None, "
- "errors=None, newline=None, closefd=True)\n\n" +
- open.__doc__)
-
-
-# bpo-43680: Alias to open() kept for backward compatibility
-OpenWrapper = open
+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)
# In normal operation, both `UnsupportedOperation`s should be bound to the