11from types import CoroutineType
2- from typing import Any , Coroutine , Generic , Tuple , Union , overload
2+ from typing import Any , Coroutine , Generic , Literal , Optional , Tuple , Union , overload
33
44from taskiq import AsyncTaskiqDecoratedTask
55from taskiq .kicker import AsyncKicker
99
1010_Tups = TypeVarTuple ("_Tups" )
1111_T = TypeVar ("_T" )
12+ # Whether skip_errors is set to True or False
13+ _S = TypeVar ("_S" , bound = bool )
1214_TVal = TypeVar ("_TVal" )
1315_Params = ParamSpec ("_Params" )
1416
1517
16- class Group (Generic [_T ]):
18+ class Group (Generic [_S , _T ]):
1719 """
1820 Group of tasks.
1921
@@ -23,8 +25,22 @@ class Group(Generic[_T]):
2325 :param skip_errors: If True, errors in one task will not affect others.
2426 """
2527
28+ @overload
29+ def __init__ (
30+ self : "Group[Literal[True], Tuple[()]]" ,
31+ skip_errors : Literal [True ],
32+ check_interval : float = 0.1 ,
33+ ) -> None : ...
34+
35+ @overload
2636 def __init__ (
27- self : "Group[Tuple[()]]" ,
37+ self : "Group[Literal[False], Tuple[()]]" ,
38+ skip_errors : bool = False ,
39+ check_interval : float = 0.1 ,
40+ ) -> None : ...
41+
42+ def __init__ (
43+ self : "Group[Any, Tuple[()]]" ,
2844 skip_errors : bool = False ,
2945 check_interval : float = 0.1 ,
3046 ) -> None :
@@ -34,7 +50,7 @@ def __init__(
3450
3551 @overload
3652 def add (
37- self : "Group[Tuple[Unpack[_Tups]]]" ,
53+ self : "Group[Literal[True], Tuple[Unpack[_Tups]]]" ,
3854 task : Union [
3955 AsyncKicker [_Params , Coroutine [Any , Any , _TVal ]],
4056 AsyncKicker [_Params , "CoroutineType[Any, Any, _TVal]" ],
@@ -43,21 +59,45 @@ def add(
4359 ],
4460 * args : _Params .args ,
4561 ** kwargs : _Params .kwargs ,
46- ) -> "Group[Tuple[Unpack[_Tups], _TVal]]" : ...
62+ ) -> "Group[_S, Tuple[Unpack[_Tups], Optional[_TVal]]]" : ...
63+
64+ @overload
65+ def add (
66+ self : "Group[Literal[False], Tuple[Unpack[_Tups]]]" ,
67+ task : Union [
68+ AsyncKicker [_Params , Coroutine [Any , Any , _TVal ]],
69+ AsyncKicker [_Params , "CoroutineType[Any, Any, _TVal]" ],
70+ AsyncTaskiqDecoratedTask [_Params , Coroutine [Any , Any , _TVal ]],
71+ AsyncTaskiqDecoratedTask [_Params , "CoroutineType[Any, Any, _TVal]" ],
72+ ],
73+ * args : _Params .args ,
74+ ** kwargs : _Params .kwargs ,
75+ ) -> "Group[_S, Tuple[Unpack[_Tups], _TVal]]" : ...
76+
77+ @overload
78+ def add (
79+ self : "Group[Literal[True], Tuple[Unpack[_Tups]]]" ,
80+ task : Union [
81+ AsyncKicker [_Params , _TVal ],
82+ AsyncTaskiqDecoratedTask [_Params , _TVal ],
83+ ],
84+ * args : _Params .args ,
85+ ** kwargs : _Params .kwargs ,
86+ ) -> "Group[_S, Tuple[Unpack[_Tups], Optional[_TVal]]]" : ...
4787
4888 @overload
4989 def add (
50- self : "Group[Tuple[Unpack[_Tups]]]" ,
90+ self : "Group[Literal[False], Tuple[Unpack[_Tups]]]" ,
5191 task : Union [
5292 AsyncKicker [_Params , _TVal ],
5393 AsyncTaskiqDecoratedTask [_Params , _TVal ],
5494 ],
5595 * args : _Params .args ,
5696 ** kwargs : _Params .kwargs ,
57- ) -> "Group[Tuple[Unpack[_Tups], _TVal]]" : ...
97+ ) -> "Group[_S, Tuple[Unpack[_Tups], _TVal]]" : ...
5898
5999 def add (
60- self : "Group[Any]" ,
100+ self : "Group[Any, Any ]" ,
61101 task : Union [AsyncKicker [_Params , Any ], AsyncTaskiqDecoratedTask [_Params , Any ]],
62102 * args : _Params .args ,
63103 ** kwargs : _Params .kwargs ,
0 commit comments