]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] typing docs: Clarify Protocol / runtime_checkable docs (GH-132606) (#132607)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 16 Apr 2025 17:50:31 +0000 (19:50 +0200)
committerGitHub <noreply@github.com>
Wed, 16 Apr 2025 17:50:31 +0000 (17:50 +0000)
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Doc/library/typing.rst

index 0ce2c52a0c670e62831d02cb8b6d17069c43a21d..bba7114fc1ff33b811990c2cce42a0136b6deb89 100644 (file)
@@ -2353,7 +2353,8 @@ types.
    See :pep:`544` for more details. Protocol classes decorated with
    :func:`runtime_checkable` (described later) act as simple-minded runtime
    protocols that check only the presence of given attributes, ignoring their
-   type signatures.
+   type signatures. Protocol classes without this decorator cannot be used
+   as the second argument to :func:`isinstance` or :func:`issubclass`.
 
    Protocol classes can be generic, for example::
 
@@ -2377,8 +2378,7 @@ types.
    Mark a protocol class as a runtime protocol.
 
    Such a protocol can be used with :func:`isinstance` and :func:`issubclass`.
-   This raises :exc:`TypeError` when applied to a non-protocol class.  This
-   allows a simple-minded structural check, very similar to "one trick ponies"
+   This allows a simple-minded structural check, very similar to "one trick ponies"
    in :mod:`collections.abc` such as :class:`~collections.abc.Iterable`.  For example::
 
       @runtime_checkable
@@ -2394,6 +2394,8 @@ types.
       import threading
       assert isinstance(threading.Thread(name='Bob'), Named)
 
+   This decorator raises :exc:`TypeError` when applied to a non-protocol class.
+
    .. note::
 
         :func:`!runtime_checkable` will check only the presence of the required