GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||
GeezerVison is showing github.com — Runtime-checkable protocols are broken on py312 (the sequel) · Issue #104935 · python/cpython Closed Labels 3.12only security fixesonly security fixes3.13only security fixesonly security fixestopic-typingtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error DescriptionBug reportOn 3.8-3.11, all subclasses of Line 1790 in 76873ca
Two places in Lines 1895 to 1897 in dbc8216
Lines 2062 to 2064 in dbc8216
However, on Python 3.12 (due to the implementation of PEP-695), subclasses of >>> class Foo[T]: ... ... >>> Foo._is_protocol Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: type object 'Foo' has no attribute '_is_protocol' This leads to Python 3.13.0a0 (heads/main:1080c4386d, May 25 2023, 13:11:38) [MSC v.1932 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from typing import Protocol, runtime_checkable >>> @runtime_checkable ... class Foo[T]: ... ... Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\alexw\coding\cpython\Lib\typing.py", line 2062, in runtime_checkable if not issubclass(cls, Generic) or not cls._is_protocol: ^^^^^^^^^^^^^^^^ AttributeError: type object 'Foo' has no attribute '_is_protocol' >>> @runtime_checkable ... class HasX(Protocol): ... x: int ... >>> class Bar[T]: ... x: T ... def __init__(self, x): ... self.x = x ... >>> isinstance(Bar(42), HasX) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\alexw\coding\cpython\Lib\typing.py", line 1810, in __instancecheck__ if super().__instancecheck__(instance): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\alexw\coding\cpython\Lib\abc.py", line 119, in __instancecheck__ return _abc_instancecheck(cls, instance) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\alexw\coding\cpython\Lib\typing.py", line 1794, in __subclasscheck__ return super().__subclasscheck__(other) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\alexw\coding\cpython\Lib\abc.py", line 123, in __subclasscheck__ return _abc_subclasscheck(cls, subclass) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\alexw\coding\cpython\Lib\typing.py", line 1897, in _proto_hook issubclass(other, Generic) and other._is_protocol): ^^^^^^^^^^^^^^^^^^ AttributeError: type object 'Bar' has no attribute '_is_protocol' Cc. @JelleZijlstra for PEP-695 Linked PRsActivity
MetadataMetadataAssigneesLabels3.12only security fixesonly security fixes3.13only security fixesonly security fixestopic-typingtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error ProjectsMilestoneRelationshipsDevelopmentIssue actions | ||||||||||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |