from types import FunctionType from typing import TypeVar, overload _T = TypeVar("_T") _UnpatchT = TypeVar("_UnpatchT", type, FunctionType) __all__: list[str] = [] @overload def get_unpatched(item: _UnpatchT) -> _UnpatchT: ... # type: ignore[overload-overlap] @overload def get_unpatched(item: object) -> None: ... def get_unpatched_class(cls: type[_T]) -> type[_T]: ... def patch_all() -> None: ... def patch_func(replacement, target_mod, func_name) -> None: ... def get_unpatched_function(candidate): ...