Add tests to functools.wraps (#12173)

These tests demonstrate the issue described in #10653.
This commit is contained in:
Sebastian Rittau
2024-06-22 16:17:09 +02:00
committed by GitHub
parent 8ddd5102ed
commit 95faa1ae24

View File

@@ -23,6 +23,37 @@ def my_decorator(func: Callable[P, T_co]) -> Callable[P, 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