14
14
15
15
T = TypeVar ('T' )
16
16
P = ParamSpec ('P' )
17
- TargetFunction = Callable [P , Data_Out ]
17
+ TargetFunction = Callable [P , T ]
18
18
NoParamReturn = Callable [P , Thread [P , T ]]
19
- WithParamReturn = Callable [[TargetFunction [P ]], NoParamReturn [P , T ]]
20
- FullParamReturn = Callable [P , Thread ]
21
- WrappedWithParamReturn = Callable [[TargetFunction [P ]], WithParamReturn [P , T ]]
19
+ WithParamReturn = Callable [[TargetFunction [P , T ]], NoParamReturn [P , T ]]
20
+ FullParamReturn = Callable [P , Thread [ P , T ] ]
21
+ WrappedWithParamReturn = Callable [[TargetFunction [P , T ]], WithParamReturn [P , T ]]
22
22
23
23
24
24
@overload
25
- def threaded (__function : TargetFunction [P ]) -> NoParamReturn [P , T ]: ...
25
+ def threaded (__function : TargetFunction [P , T ]) -> NoParamReturn [P , T ]: ...
26
26
27
27
@overload
28
28
def threaded (
@@ -36,25 +36,25 @@ def threaded(
36
36
37
37
@overload
38
38
def threaded (
39
- __function : Callable [P , Data_Out ],
39
+ __function : TargetFunction [P , T ],
40
40
* ,
41
41
args : Sequence [Data_In ] = (),
42
42
kwargs : Mapping [str , Data_In ] = {},
43
43
ignore_errors : Sequence [type [Exception ]] = (),
44
44
suppress_errors : bool = False ,
45
45
** overflow_kwargs : Overflow_In
46
- ) -> FullParamReturn [P ]: ...
46
+ ) -> FullParamReturn [P , T ]: ...
47
47
48
48
49
49
def threaded (
50
- __function : Optional [TargetFunction [P ]] = None ,
50
+ __function : Optional [TargetFunction [P , T ]] = None ,
51
51
* ,
52
52
args : Sequence [Data_In ] = (),
53
53
kwargs : Mapping [str , Data_In ] = {},
54
54
ignore_errors : Sequence [type [Exception ]] = (),
55
55
suppress_errors : bool = False ,
56
56
** overflow_kwargs : Overflow_In
57
- ) -> Union [NoParamReturn [P , T ], WithParamReturn [P , T ], FullParamReturn [P ]]:
57
+ ) -> Union [NoParamReturn [P , T ], WithParamReturn [P , T ], FullParamReturn [P , T ]]:
58
58
"""
59
59
Decorate a function to run it in a thread
60
60
@@ -96,7 +96,7 @@ def threaded(
96
96
"""
97
97
98
98
if not callable (__function ):
99
- def wrapper (func : TargetFunction [P ]) -> FullParamReturn [P ]:
99
+ def wrapper (func : TargetFunction [P , T ]) -> FullParamReturn [P , T ]:
100
100
return threaded (
101
101
func ,
102
102
args = args ,
@@ -115,7 +115,7 @@ def wrapper(func: TargetFunction[P]) -> FullParamReturn[P]:
115
115
kwargs = dict (kwargs )
116
116
117
117
@wraps (__function )
118
- def wrapped (* parsed_args : P .args , ** parsed_kwargs : P .kwargs ) -> Thread :
118
+ def wrapped (* parsed_args : P .args , ** parsed_kwargs : P .kwargs ) -> Thread [ P , T ] :
119
119
kwargs .update (parsed_kwargs )
120
120
121
121
processed_args = ( * args , * parsed_args )
0 commit comments