Skip to content

Commit adb2f13

Browse files
Made more type safe
1 parent df3021b commit adb2f13

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/thread/decorators.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@
1414

1515
T = TypeVar('T')
1616
P = ParamSpec('P')
17-
TargetFunction = Callable[P, Data_Out]
17+
TargetFunction = Callable[P, T]
1818
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]]
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
2828
def threaded(
@@ -36,25 +36,25 @@ def threaded(
3636

3737
@overload
3838
def 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

4949
def 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

Comments
 (0)