-
-
Notifications
You must be signed in to change notification settings - Fork 32.3k
bpo-45081: Fix __init__ method generation when inheriting from Protocol #28121
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
Conversation
@Fidget-Spinner Could you please verify that we need backport those changes to 3.9 and 3.10 versions? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@uriyyo if I understand the original issue correctly, you're right that we need to backport this to fix that issue's backports.
I'm deferring this to @serhiy-storchaka or @ambv because I'm not too familiar with the previous patch that caused this regression. Sorry.
@Fidget-Spinner Could you please review this PR? Looks like I found way how to fix this issue without changing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After researching this issue (and the previous patch), this LGTM in general, I only have suggestions to change wording in some parts.
I'm not very confident with backporting this change so late into 3.10's release cycle. I hope another core dev can review.
cls = type(self) | ||
|
||
if cls._is_protocol: | ||
raise TypeError('Protocols cannot be instantiated') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note to self: this is the previous behavior.
Co-authored-by: Ken Jin <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. I will wait a bit to see if Serhiy or Lukasz (or anyone else) says anything.
The previous behavior was introduced in GH-27545 as an attempt to make non-protocol subclasses of Protocol ignore the This PR retains this ability and restores compatibility with |
…ol (pythonGH-28121) Co-authored-by: Ken Jin <[email protected]> (cherry picked from commit 0635e20) Co-authored-by: Yurii Karabas <[email protected]>
GH-28131 is a backport of this pull request to the 3.10 branch. |
GH-28132 is a backport of this pull request to the 3.9 branch. |
…ol (pythonGH-28121) Co-authored-by: Ken Jin <[email protected]> (cherry picked from commit 0635e20) Co-authored-by: Yurii Karabas <[email protected]>
…ol (GH-28121) (GH-28132) Co-authored-by: Ken Jin <[email protected]> (cherry picked from commit 0635e20) Co-authored-by: Yurii Karabas <[email protected]>
…ol (GH-28121) Co-authored-by: Ken Jin <[email protected]> (cherry picked from commit 0635e20) Co-authored-by: Yurii Karabas <[email protected]>
https://bugs.python.org/issue45081