# Bug report If you apply this diff to `typing.py`, all tests continue to pass: ```diff diff --git a/Lib/typing.py b/Lib/typing.py index 1dd9398344..98e19644a2 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -1931,6 +1931,7 @@ def _proto_hook(other): if (isinstance(annotations, collections.abc.Mapping) and attr in annotations and issubclass(other, Generic) and getattr(other, '_is_protocol', False)): + 1/0 break ``` The `break` on line 1934 here is unreachable; thus, this whole block of code is pointless: https://github.com/python/cpython/blob/3af2dc7588614c65e9d1178ad9b4a11a19c14dde/Lib/typing.py#L1929-L1934 I think we can say for sure that the `break` here is unreachable. This is the `__subclasshook__` method that is monkey-patched onto all subclasses of `typing.Protocol` that do not define their own `__subclasshook__` methods. This block of code in the `__subclasshook__` method is inspecting the `__annotations__` dictionary of `other` to see if it can find any protocol members in that dictionary. _But_ we know that there can't be any protocol members in the `__annotations__` dictionary, because if there were, that would make `other` a protocol with at least one non-callable member. If it's a protocol that has at least one non-callable member, the `__subclasshook__` method is never called at all during `isinstance()` or `issubclass()` checks, because we raise `TypeError` in `_ProtocolMeta.__subclasscheck__`, short-circuiting the call to `abc.ABCMeta.__subclasscheck__` that would call `Protocol.__subclasshook__`: https://github.com/python/cpython/blob/3af2dc7588614c65e9d1178ad9b4a11a19c14dde/Lib/typing.py#L1828-L1831 I believe that this block of code can therefore be safely deleted. <!-- gh-linked-prs --> ### Linked PRs * gh-105835 * gh-105859 * gh-105860 <!-- /gh-linked-prs -->