Add __name__ to _Wrapped in functools (#9835)

This commit is contained in:
Thomas M Kehrenberg
2023-03-03 16:02:51 +01:00
committed by GitHub
parent 45f0a5e7e4
commit d76259a062
2 changed files with 25 additions and 1 deletions

View File

@@ -1,10 +1,31 @@
from __future__ import annotations
import sys
from functools import wraps
from typing import Callable, TypeVar
from typing_extensions import ParamSpec, assert_type
P = ParamSpec("P")
T_co = TypeVar("T_co", covariant=True)
def my_decorator(func: Callable[P, T_co]) -> Callable[P, T_co]:
@wraps(func)
def wrapper(*args: P.args, **kwargs: P.kwargs) -> T_co:
print(args)
return func(*args, **kwargs)
# verify that the wrapped function has all these attributes
wrapper.__annotations__ = func.__annotations__
wrapper.__doc__ = func.__doc__
wrapper.__module__ = func.__module__
wrapper.__name__ = func.__name__
wrapper.__qualname__ = func.__qualname__
return wrapper
if sys.version_info >= (3, 8):
from functools import cached_property
from typing_extensions import assert_type
class A:
def __init__(self, x: int):