1414
1515T = TypeVar ('T' )
1616P = ParamSpec ('P' )
17- TargetFunction = Callable [P , Data_Out ]
17+ TargetFunction = Callable [P , T ]
1818NoParamReturn = 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 ]]
2222
2323
2424@overload
25- def threaded (__function : TargetFunction [P ]) -> NoParamReturn [P , T ]: ...
25+ def threaded (__function : TargetFunction [P , T ]) -> NoParamReturn [P , T ]: ...
2626
2727@overload
2828def threaded (
@@ -36,25 +36,25 @@ def threaded(
3636
3737@overload
3838def threaded (
39- __function : Callable [P , Data_Out ],
39+ __function : TargetFunction [P , T ],
4040 * ,
4141 args : Sequence [Data_In ] = (),
4242 kwargs : Mapping [str , Data_In ] = {},
4343 ignore_errors : Sequence [type [Exception ]] = (),
4444 suppress_errors : bool = False ,
4545 ** overflow_kwargs : Overflow_In
46- ) -> FullParamReturn [P ]: ...
46+ ) -> FullParamReturn [P , T ]: ...
4747
4848
4949def threaded (
50- __function : Optional [TargetFunction [P ]] = None ,
50+ __function : Optional [TargetFunction [P , T ]] = None ,
5151 * ,
5252 args : Sequence [Data_In ] = (),
5353 kwargs : Mapping [str , Data_In ] = {},
5454 ignore_errors : Sequence [type [Exception ]] = (),
5555 suppress_errors : bool = False ,
5656 ** 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 ]]:
5858 """
5959 Decorate a function to run it in a thread
6060
@@ -96,7 +96,7 @@ def threaded(
9696 """
9797
9898 if not callable (__function ):
99- def wrapper (func : TargetFunction [P ]) -> FullParamReturn [P ]:
99+ def wrapper (func : TargetFunction [P , T ]) -> FullParamReturn [P , T ]:
100100 return threaded (
101101 func ,
102102 args = args ,
@@ -115,7 +115,7 @@ def wrapper(func: TargetFunction[P]) -> FullParamReturn[P]:
115115 kwargs = dict (kwargs )
116116
117117 @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 ] :
119119 kwargs .update (parsed_kwargs )
120120
121121 processed_args = ( * args , * parsed_args )
0 commit comments