1
1
"""
2
2
## Processor
3
3
4
- Documentation: https://thread.ngjx.org/docs/v1.0 .0
4
+ Documentation: https://thread.ngjx.org/docs/v1.1 .0
5
5
"""
6
6
7
7
from functools import wraps
8
8
from ..thread import ParallelProcessing
9
9
10
- from .._types import Overflow_In , Data_In
11
- from typing import Callable , Mapping , Sequence , Optional , Union , overload
10
+ from .._types import (
11
+ Overflow_In ,
12
+ Data_In ,
13
+ SupportsGetItem ,
14
+ SupportsLength ,
15
+ SupportsLengthGetItem ,
16
+ )
17
+ from typing import Any , Callable , Mapping , Sequence , Optional , Union , overload
12
18
from typing_extensions import ParamSpec , TypeVar , Concatenate
13
19
14
20
15
21
_TargetT = TypeVar ('_TargetT' )
16
22
_TargetP = ParamSpec ('_TargetP' )
17
23
_DataT = TypeVar ('_DataT' )
18
24
TargetFunction = Callable [Concatenate [_DataT , _TargetP ], _TargetT ]
25
+ Dataset = Union [
26
+ SupportsLengthGetItem [_DataT ], SupportsGetItem [_DataT ], SupportsLength , Any
27
+ ]
19
28
20
29
21
30
NoParamReturn = Callable [
22
- Concatenate [Sequence [_DataT ], _TargetP ],
31
+ Concatenate [Dataset [_DataT ], _TargetP ],
23
32
ParallelProcessing [_TargetP , _TargetT , _DataT ],
24
33
]
25
34
WithParamReturn = Callable [
26
35
[TargetFunction [_DataT , _TargetP , _TargetT ]],
27
36
NoParamReturn [_DataT , _TargetP , _TargetT ],
28
37
]
29
38
FullParamReturn = Callable [
30
- Concatenate [Sequence [_DataT ], _TargetP ],
39
+ Concatenate [Dataset [_DataT ], _TargetP ],
31
40
ParallelProcessing [_TargetP , _TargetT , _DataT ],
32
41
]
33
42
34
43
35
44
@overload
36
45
def processor (
37
46
__function : TargetFunction [_DataT , _TargetP , _TargetT ],
38
- ) -> NoParamReturn [_DataT , _TargetP , _TargetT ]:
39
- ...
47
+ ) -> NoParamReturn [_DataT , _TargetP , _TargetT ]: ...
40
48
41
49
42
50
@overload
@@ -47,8 +55,7 @@ def processor(
47
55
ignore_errors : Sequence [type [Exception ]] = (),
48
56
suppress_errors : bool = False ,
49
57
** overflow_kwargs : Overflow_In ,
50
- ) -> WithParamReturn [_DataT , _TargetP , _TargetT ]:
51
- ...
58
+ ) -> WithParamReturn [_DataT , _TargetP , _TargetT ]: ...
52
59
53
60
54
61
@overload
@@ -60,8 +67,7 @@ def processor(
60
67
ignore_errors : Sequence [type [Exception ]] = (),
61
68
suppress_errors : bool = False ,
62
69
** overflow_kwargs : Overflow_In ,
63
- ) -> FullParamReturn [_DataT , _TargetP , _TargetT ]:
64
- ...
70
+ ) -> FullParamReturn [_DataT , _TargetP , _TargetT ]: ...
65
71
66
72
67
73
def processor (
@@ -106,8 +112,7 @@ def processor(
106
112
107
113
You can also pass keyword arguments to change the thread behaviour, it otherwise follows the defaults of `thread.Thread`
108
114
>>> @thread.threaded(daemon = True)
109
- >>> def myfunction():
110
- ... ...
115
+ >>> def myfunction(): ...
111
116
112
117
Args will be ordered infront of function-parsed args parsed into `thread.Thread.args`
113
118
>>> @thread.threaded(args = (1))
@@ -142,7 +147,7 @@ def wrapper(
142
147
143
148
@wraps (__function )
144
149
def wrapped (
145
- data : Sequence [_DataT ],
150
+ data : Dataset [_DataT ],
146
151
* parsed_args : _TargetP .args ,
147
152
** parsed_kwargs : _TargetP .kwargs ,
148
153
) -> ParallelProcessing [_TargetP , _TargetT , _DataT ]:
0 commit comments