--- /dev/null
+from typing import Any, Callable, Generic, Mapping, Optional, TypeVar, overload\r
+\r
+\r
+_T = TypeVar("_T")\r
+\r
+\r
+class _SingleDispatchCallable(Generic[_T]):\r
+ registry = ... # type: Mapping[Any, Callable[..., _T]]\r
+ def dispatch(self, cls: Any) -> Callable[..., _T]: ...\r
+ @overload\r
+ def register(self, cls: Any) -> Callable[[Callable[..., _T]], Callable[..., _T]]: ...\r
+ @overload\r
+ def register(self, cls: Any, func: Callable[..., _T]) -> Callable[..., _T]: ...\r
+ def _clear_cache(self) -> None: ...\r
+ def __call__(self, *args: Any, **kwargs: Any) -> _T: ...\r
+\r
+def singledispatch(func: Callable[..., _T]) -> _SingleDispatchCallable[_T]: ...\r