Skip to content

Commit 8cc700d

Browse files
committed
Some type fixes.
1 parent 9cef8ac commit 8cc700d

4 files changed

Lines changed: 91 additions & 181 deletions

File tree

.pre-commit-config.yaml

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ repos:
2323
- id: add-trailing-comma
2424

2525
- repo: https://github.com/crate-ci/typos
26-
rev: v1.45.1
26+
rev: v1
2727
hooks:
2828
- id: typos
2929

3030
- repo: https://github.com/Yelp/detect-secrets
3131
rev: v1.5.0
3232
hooks:
33-
- id: detect-secrets
33+
- id: detect-secrets
3434

3535
- repo: https://github.com/astral-sh/uv-pre-commit
3636
rev: 0.11.7
@@ -42,19 +42,15 @@ repos:
4242
hooks:
4343
- id: ruff-format
4444
- id: ruff-check
45-
args: [ --fix, --unsafe-fixes ]
46-
47-
- repo: https://github.com/pre-commit/mirrors-mypy
48-
rev: 'v1.20.1'
49-
hooks:
50-
- id: mypy
51-
additional_dependencies: [ "no_implicit_optional" ]
52-
args: [ "--config-file=pyproject.toml", "--install-types", "--non-interactive" ]
45+
args: [--fix, --unsafe-fixes]
5346

5447
- repo: local
5548
hooks:
56-
- id: black
57-
name: Format with Black
58-
entry: uv run black
49+
- id: mypy
50+
name: mypy
51+
entry: uv run mypy
5952
language: system
60-
types: [python]
53+
always_run: true
54+
pass_filenames: false
55+
args:
56+
- taskiq_pipelines

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Repository = "https://github.com/taskiq-python/taskiq-pipelines"
3737
dev = [
3838
"anyio>=4",
3939
"black>=26.3.1",
40-
"mypy>=1",
40+
"mypy>=1,<=2",
4141
"pre-commit>=4",
4242
"pytest>=9.0.2",
4343
"pytest-cov>=7.1.0",

taskiq_pipelines/pipeliner.py

Lines changed: 66 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
_ReturnType = TypeVar("_ReturnType")
2525
_FuncParams = ParamSpec("_FuncParams")
2626
_T = TypeVar("_T")
27+
_T2 = TypeVar("_T2")
2728

2829

2930
class DumpedStep(pydantic.BaseModel):
@@ -50,6 +51,27 @@ class Pipeline(Generic[_FuncParams, _ReturnType]):
5051
but it's nice to have.
5152
"""
5253

54+
@overload
55+
def __init__(
56+
self,
57+
broker: AsyncBroker,
58+
task: Optional[
59+
Union[
60+
AsyncKicker[_FuncParams, Coroutine[Any, Any, _ReturnType]],
61+
AsyncKicker[_FuncParams, CoroutineType[Any, Any, _ReturnType]],
62+
AsyncTaskiqDecoratedTask[
63+
_FuncParams,
64+
Coroutine[Any, Any, _ReturnType],
65+
],
66+
AsyncTaskiqDecoratedTask[
67+
_FuncParams,
68+
CoroutineType[Any, Any, _ReturnType],
69+
],
70+
]
71+
] = None,
72+
) -> None: ...
73+
74+
@overload
5375
def __init__(
5476
self,
5577
broker: AsyncBroker,
@@ -59,6 +81,17 @@ def __init__(
5981
AsyncTaskiqDecoratedTask[_FuncParams, _ReturnType],
6082
]
6183
] = None,
84+
) -> None: ...
85+
86+
def __init__(
87+
self,
88+
broker: AsyncBroker,
89+
task: Optional[
90+
Union[
91+
AsyncKicker[Any, Any],
92+
AsyncTaskiqDecoratedTask[Any, Any],
93+
]
94+
] = None,
6295
) -> None:
6396
self.broker = broker
6497
self.steps: "List[DumpedStep]" = []
@@ -69,10 +102,10 @@ def __init__(
69102
def call_next(
70103
self: "Pipeline[_FuncParams, _ReturnType]",
71104
task: Union[
72-
AsyncKicker[Any, Coroutine[Any, Any, _T]],
73-
AsyncKicker[Any, CoroutineType[Any, Any, _T]],
74-
AsyncTaskiqDecoratedTask[Any, Coroutine[Any, Any, _T]],
75-
AsyncTaskiqDecoratedTask[Any, CoroutineType[Any, Any, _T]],
105+
AsyncKicker[[_ReturnType], Coroutine[Any, Any, _T]],
106+
AsyncKicker[[_ReturnType], CoroutineType[Any, Any, _T]],
107+
AsyncTaskiqDecoratedTask[[_ReturnType], Coroutine[Any, Any, _T]],
108+
AsyncTaskiqDecoratedTask[[_ReturnType], CoroutineType[Any, Any, _T]],
76109
],
77110
param_name: Union[Optional[str], Literal[-1]] = None,
78111
**additional_kwargs: Any,
@@ -82,8 +115,8 @@ def call_next(
82115
def call_next(
83116
self: "Pipeline[_FuncParams, _ReturnType]",
84117
task: Union[
85-
AsyncKicker[Any, _T],
86-
AsyncTaskiqDecoratedTask[Any, _T],
118+
AsyncKicker[[_ReturnType], _T],
119+
AsyncTaskiqDecoratedTask[[_ReturnType], _T],
87120
],
88121
param_name: Union[Optional[str], Literal[-1]] = None,
89122
**additional_kwargs: Any,
@@ -130,10 +163,10 @@ def call_next(
130163
def call_after(
131164
self: "Pipeline[_FuncParams, _ReturnType]",
132165
task: Union[
133-
AsyncKicker[Any, Coroutine[Any, Any, _T]],
134-
AsyncKicker[Any, CoroutineType[Any, Any, _T]],
135-
AsyncTaskiqDecoratedTask[Any, Coroutine[Any, Any, _T]],
136-
AsyncTaskiqDecoratedTask[Any, CoroutineType[Any, Any, _T]],
166+
AsyncKicker[[], Coroutine[Any, Any, _T]],
167+
AsyncKicker[[], CoroutineType[Any, Any, _T]],
168+
AsyncTaskiqDecoratedTask[[], Coroutine[Any, Any, _T]],
169+
AsyncTaskiqDecoratedTask[[], CoroutineType[Any, Any, _T]],
137170
],
138171
**additional_kwargs: Any,
139172
) -> "Pipeline[_FuncParams, _T]": ...
@@ -142,8 +175,8 @@ def call_after(
142175
def call_after(
143176
self: "Pipeline[_FuncParams, _ReturnType]",
144177
task: Union[
145-
AsyncKicker[Any, _T],
146-
AsyncTaskiqDecoratedTask[Any, _T],
178+
AsyncKicker[[], _T],
179+
AsyncTaskiqDecoratedTask[[], _T],
147180
],
148181
**additional_kwargs: Any,
149182
) -> "Pipeline[_FuncParams, _T]": ...
@@ -184,34 +217,34 @@ def call_after(
184217

185218
@overload
186219
def map(
187-
self,
220+
self: "Pipeline[_FuncParams, list[_T]]",
188221
task: Union[
189-
AsyncKicker[Any, Coroutine[Any, Any, _T]],
190-
AsyncKicker[Any, CoroutineType[Any, Any, _T]],
191-
AsyncTaskiqDecoratedTask[Any, Coroutine[Any, Any, _T]],
192-
AsyncTaskiqDecoratedTask[Any, CoroutineType[Any, Any, _T]],
222+
AsyncKicker[Any, Coroutine[Any, Any, _T2]],
223+
AsyncKicker[Any, CoroutineType[Any, Any, _T2]],
224+
AsyncTaskiqDecoratedTask[Any, Coroutine[Any, Any, _T2]],
225+
AsyncTaskiqDecoratedTask[Any, CoroutineType[Any, Any, _T2]],
193226
],
194227
param_name: Optional[str] = None,
195228
skip_errors: bool = False,
196229
check_interval: float = 0.5,
197230
**additional_kwargs: Any,
198-
) -> "Pipeline[_FuncParams, _T]": ...
231+
) -> "Pipeline[_FuncParams, list[_T2]]": ...
199232

200233
@overload
201234
def map(
202-
self,
235+
self: "Pipeline[_FuncParams, list[_T]]",
203236
task: Union[
204-
AsyncKicker[Any, _T],
205-
AsyncTaskiqDecoratedTask[Any, _T],
237+
AsyncKicker[Any, _T2],
238+
AsyncTaskiqDecoratedTask[Any, _T2],
206239
],
207240
param_name: Optional[str] = None,
208241
skip_errors: bool = False,
209242
check_interval: float = 0.5,
210243
**additional_kwargs: Any,
211-
) -> "Pipeline[_FuncParams, _T]": ...
244+
) -> "Pipeline[_FuncParams, list[_T2]]": ...
212245

213246
def map(
214-
self,
247+
self: "Pipeline[_FuncParams, list[Any]]",
215248
task: Union[
216249
AsyncKicker[Any, Any],
217250
AsyncTaskiqDecoratedTask[Any, Any],
@@ -255,31 +288,31 @@ def map(
255288

256289
@overload
257290
def filter(
258-
self,
291+
self: "Pipeline[_FuncParams, List[_T]]",
259292
task: Union[
260-
AsyncKicker[Any, Coroutine[Any, Any, _T]],
261-
AsyncKicker[Any, CoroutineType[Any, Any, _T]],
262-
AsyncTaskiqDecoratedTask[Any, Coroutine[Any, Any, _T]],
263-
AsyncTaskiqDecoratedTask[Any, CoroutineType[Any, Any, _T]],
293+
AsyncKicker[[_T], Coroutine[Any, Any, bool]],
294+
AsyncKicker[[_T], CoroutineType[Any, Any, bool]],
295+
AsyncTaskiqDecoratedTask[[_T], Coroutine[Any, Any, bool]],
296+
AsyncTaskiqDecoratedTask[[_T], CoroutineType[Any, Any, bool]],
264297
],
265298
param_name: Optional[str] = None,
266299
skip_errors: bool = False,
267300
check_interval: float = 0.5,
268301
**additional_kwargs: Any,
269-
) -> "Pipeline[_FuncParams, _T]": ...
302+
) -> "Pipeline[_FuncParams, List[_T]]": ...
270303

271304
@overload
272305
def filter(
273-
self,
306+
self: "Pipeline[_FuncParams, List[_T]]",
274307
task: Union[
275-
AsyncKicker[Any, _T],
276-
AsyncTaskiqDecoratedTask[Any, _T],
308+
AsyncKicker[[_T], bool],
309+
AsyncTaskiqDecoratedTask[[_T], bool],
277310
],
278311
param_name: Optional[str] = None,
279312
skip_errors: bool = False,
280313
check_interval: float = 0.5,
281314
**additional_kwargs: Any,
282-
) -> "Pipeline[_FuncParams, _T]": ...
315+
) -> "Pipeline[_FuncParams, List[_T]]": ...
283316

284317
def filter(
285318
self,

0 commit comments

Comments
 (0)