Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-43680: _pyio.open() becomes a static method #25354

Merged
merged 3 commits into from Apr 12, 2021

Conversation

vstinner
Copy link
Member

@vstinner vstinner commented Apr 12, 2021

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.

https://bugs.python.org/issue43680

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.
@vstinner
Copy link
Member Author

vstinner commented Apr 12, 2021

@methane: Would you mind to review this change?

Thanks to https://bugs.python.org/issue43682, it becomes possible to put @staticmethod on _pyio.open. I propose to start with this change. Then I will propose a change to deprecate io.OpenWrapper and _pyio.OpenWrapper.

Copy link
Member

@methane methane left a comment

LGTM except one nitpick.

vstinner and others added 2 commits Apr 12, 2021
@vstinner vstinner merged commit 77d668b into python:master Apr 12, 2021
10 of 11 checks passed
@vstinner vstinner deleted the pyio_openwrapper branch Apr 12, 2021
@methane
Copy link
Member

methane commented Apr 14, 2021

Can we remove DocDescriptor too?

It is not defined in C _io module. So I think it is safe to remove.

@vstinner
Copy link
Member Author

vstinner commented Apr 14, 2021

Can we remove DocDescriptor too?
It is not defined in C _io module. So I think it is safe to remove.

Sure, it was not documented and doesn't exist in the io module. I already removed it: 3bc694d

kreathon pushed a commit to kreathon/cpython that referenced this pull request May 2, 2021
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants