diff options
author | Victor Stinner <vstinner@python.org> | 2021-04-12 08:44:53 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-12 08:44:53 (GMT) |
commit | 77d668b1221d0f8c3e9d6b6199f67aaf3c45f040 (patch) | |
tree | 9c1d155aebeed470a77c624ce7b5c5e6f80a5e90 /Lib/_pyio.py | |
parent | 9825bdfbd5c966abf1f1b7264992d722a94c9613 (diff) | |
download | cpython-77d668b1221d0f8c3e9d6b6199f67aaf3c45f040.zip cpython-77d668b1221d0f8c3e9d6b6199f67aaf3c45f040.tar.gz cpython-77d668b1221d0f8c3e9d6b6199f67aaf3c45f040.tar.bz2 |
bpo-43680: _pyio.open() becomes a static method (GH-25354)
The Python _pyio.open() function becomes a static method to behave as
io.open() built-in function: don't become a bound method when stored
as a class variable. It becomes possible since static methods are now
callable in Python 3.10. Moreover, _pyio.OpenWrapper becomes a simple
alias to _pyio.open.
init_set_builtins_open() now sets builtins.open to io.open, rather
than setting it to io.OpenWrapper, since OpenWrapper is now an alias
to open in the io and _pyio modules.
Diffstat (limited to 'Lib/_pyio.py')
-rw-r--r-- | Lib/_pyio.py | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/Lib/_pyio.py b/Lib/_pyio.py index 0f182d4..cb5a619 100644 --- a/Lib/_pyio.py +++ b/Lib/_pyio.py @@ -63,6 +63,13 @@ def text_encoding(encoding, stacklevel=2): return encoding +# Wrapper for builtins.open +# +# Trick so that open() won't become a bound method when stored +# as a class variable (as dbm.dumb does). +# +# See init_set_builtins_open() in Python/pylifecycle.c. +@staticmethod def open(file, mode="r", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None): @@ -313,18 +320,9 @@ class DocDescriptor: "errors=None, newline=None, closefd=True)\n\n" + open.__doc__) -class OpenWrapper: - """Wrapper for builtins.open - Trick so that open won't become a bound method when stored - as a class variable (as dbm.dumb does). - - See initstdio() in Python/pylifecycle.c. - """ - __doc__ = DocDescriptor() - - def __new__(cls, *args, **kwargs): - return open(*args, **kwargs) +# bpo-43680: Alias to open() kept for backward compatibility +OpenWrapper = open # In normal operation, both `UnsupportedOperation`s should be bound to the |