1
1
import sys
2
2
import types
3
- from _typeshed import IdentityFunction , SupportsAllComparisons , SupportsItems
3
+ from _typeshed import SupportsAllComparisons , SupportsItems
4
4
from collections .abc import Callable , Hashable , Iterable , Sequence , Sized
5
5
from typing import Any , Generic , NamedTuple , TypeVar , overload
6
- from typing_extensions import Literal , Self , TypeAlias , final
6
+ from typing_extensions import Literal , ParamSpec , Self , TypeAlias , final
7
7
8
8
if sys .version_info >= (3 , 9 ):
9
9
from types import GenericAlias
@@ -28,10 +28,12 @@ if sys.version_info >= (3, 8):
28
28
if sys .version_info >= (3 , 9 ):
29
29
__all__ += ["cache" ]
30
30
31
- _AnyCallable : TypeAlias = Callable [..., object ]
32
-
33
31
_T = TypeVar ("_T" )
34
32
_S = TypeVar ("_S" )
33
+ _PWrapped = ParamSpec ("_PWrapped" )
34
+ _RWrapped = TypeVar ("_RWrapped" )
35
+ _PWrapper = ParamSpec ("_PWrapper" )
36
+ _RWapper = TypeVar ("_RWapper" )
35
37
36
38
@overload
37
39
def reduce (function : Callable [[_T , _S ], _T ], sequence : Iterable [_S ], initial : _T ) -> _T : ...
@@ -67,8 +69,22 @@ WRAPPER_ASSIGNMENTS: tuple[
67
69
]
68
70
WRAPPER_UPDATES : tuple [Literal ["__dict__" ]]
69
71
70
- def update_wrapper (wrapper : _T , wrapped : _AnyCallable , assigned : Sequence [str ] = ..., updated : Sequence [str ] = ...) -> _T : ...
71
- def wraps (wrapped : _AnyCallable , assigned : Sequence [str ] = ..., updated : Sequence [str ] = ...) -> IdentityFunction : ...
72
+ class _Wrapped (Generic [_PWrapped , _RWrapped , _PWrapper , _RWapper ]):
73
+ __wrapped__ : Callable [_PWrapped , _RWrapped ]
74
+ def __call__ (self , * args : _PWrapper .args , ** kwargs : _PWrapper .kwargs ) -> _RWapper : ...
75
+
76
+ class _Wrapper (Generic [_PWrapped , _RWrapped ]):
77
+ def __call__ (self , f : Callable [_PWrapper , _RWapper ]) -> _Wrapped [_PWrapped , _RWrapped , _PWrapper , _RWapper ]: ...
78
+
79
+ def update_wrapper (
80
+ wrapper : Callable [_PWrapper , _RWapper ],
81
+ wrapped : Callable [_PWrapped , _RWrapped ],
82
+ assigned : Sequence [str ] = ...,
83
+ updated : Sequence [str ] = ...,
84
+ ) -> _Wrapped [_PWrapped , _RWrapped , _PWrapper , _RWapper ]: ...
85
+ def wraps (
86
+ wrapped : Callable [_PWrapped , _RWrapped ], assigned : Sequence [str ] = ..., updated : Sequence [str ] = ...
87
+ ) -> _Wrapper [_PWrapped , _RWrapped ]: ...
72
88
def total_ordering (cls : type [_T ]) -> type [_T ]: ...
73
89
def cmp_to_key (mycmp : Callable [[_T , _T ], int ]) -> Callable [[_T ], SupportsAllComparisons ]: ...
74
90
0 commit comments