New submission from Shantanu <hauntsani...@gmail.com>:
Consider: ``` from typing import Protocol class P(Protocol): ... class C(P): def __init__(self): super().__init__() C() ``` This code passes without error on 3.9.6. With 3.9.7, we get: ``` Traceback (most recent call last): File "/Users/shantanu/dev/test.py", line 10, in <module> C() File "/Users/shantanu/dev/test.py", line 8, in __init__ super().__init__() File "/Users/shantanu/.pyenv/versions/3.9.7/lib/python3.9/typing.py", line 1083, in _no_init raise TypeError('Protocols cannot be instantiated') TypeError: Protocols cannot be instantiated ``` I bisected this to: bpo-44806: Fix __init__ in subclasses of protocols (GH-27545) (GH-27559) Note there is also an interaction with the later commit: bpo-45081: Fix __init__ method generation when inheriting from Protocol (GH-28121) (GH-28132) This later commit actually causes a RecursionError: ``` File "/Users/shantanu/dev/cpython/Lib/typing.py", line 1103, in _no_init_or_replace_init cls.__init__(self, *args, **kwargs) File "/Users/shantanu/dev/test.py", line 8, in __init__ super().__init__() File "/Users/shantanu/dev/cpython/Lib/typing.py", line 1103, in _no_init_or_replace_init cls.__init__(self, *args, **kwargs) File "/Users/shantanu/dev/test.py", line 8, in __init__ super().__init__() ``` Originally reported by @tyralla on Gitter. ---------- components: Library (Lib) messages: 401184 nosy: hauntsaninja priority: normal severity: normal status: open title: Regression in 3.9.7 with typing.Protocol versions: Python 3.9 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue45121> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com