https://github.com/python/cpython/commit/2b74cce521f929e57aeb5e1edd874da8d3b777b5
commit: 2b74cce521f929e57aeb5e1edd874da8d3b777b5
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: Yhg1s <[email protected]>
date: 2024-09-27T21:28:30Z
summary:

[3.13] gh-90190: Add doc for using `singledispatch` with precise collection 
type hints (GH-116544) (#124710)

gh-90190: Add doc for using `singledispatch` with precise collection type hints 
(GH-116544)
(cherry picked from commit 2357d5ba48cd9685cb36bcf92a0eaed86a85f4de)

Co-authored-by: Matt Delengowski <[email protected]>

files:
M Doc/library/functools.rst

diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst
index e4428299cd0343..3540a1e8f4971f 100644
--- a/Doc/library/functools.rst
+++ b/Doc/library/functools.rst
@@ -492,6 +492,25 @@ The :mod:`functools` module defines the following 
functions:
      ...     print(arg.real, arg.imag)
      ...
 
+   For code that dispatches on a collections type (e.g., ``list``), but wants
+   to typehint the items of the collection (e.g., ``list[int]``), the
+   dispatch type should be passed explicitly to the decorator itself with the
+   typehint going into the function definition::
+
+     >>> @fun.register(list)
+     ... def _(arg: list[int], verbose=False):
+     ...     if verbose:
+     ...         print("Enumerate this:")
+     ...     for i, elem in enumerate(arg):
+     ...         print(i, elem)
+
+   .. note::
+
+      At runtime the function will dispatch on an instance of a list regardless
+      of the type contained within the list i.e. ``[1,2,3]`` will be
+      dispatched the same as ``["foo", "bar", "baz"]``. The annotation
+      provided in this example is for static type checkers only and has no
+      runtime impact.
 
    To enable registering :term:`lambdas<lambda>` and pre-existing functions,
    the :func:`register` attribute can also be used in a functional form::

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to