diff --git a/stdlib/@tests/test_cases/check_functools.py b/stdlib/@tests/test_cases/check_functools.py index dca572683f8d..47b6bb77c25d 100644 --- a/stdlib/@tests/test_cases/check_functools.py +++ b/stdlib/@tests/test_cases/check_functools.py @@ -23,6 +23,37 @@ def wrapper(*args: P.args, **kwargs: P.kwargs) -> T_co: return wrapper +def check_wraps_function() -> None: + def wrapped(x: int) -> None: ... + @wraps(wrapped) + def identical_wrapper(x: int) -> None: ... + @wraps(wrapped) + def other_signature_wrapper(x: str, y: float) -> None: ... + + identical_wrapper(3) + other_signature_wrapper("parrot", 42.0) + + +def check_wraps_method() -> None: + class Wrapped: + def wrapped(self, x: int) -> None: ... + @wraps(wrapped) + def wrapper(self, x: int) -> None: ... + + class Wrapper: # pyright: ignore[reportUnusedClass] + @wraps(Wrapped.wrapped) + def method(self, x: int) -> None: ... + + @wraps(Wrapped.wrapped) + def func_wrapper(x: int) -> None: ... + + # TODO: The following should work, but currently don't. + # https://github.com/python/typeshed/issues/10653 + # Wrapped().wrapper(3) + # Wrapper().method(3) + func_wrapper(3) + + class A: def __init__(self, x: int): self.x = x