Skip to content

Commit bf0af9c

Browse files
committed
fix: types
1 parent d2adbfb commit bf0af9c

2 files changed

Lines changed: 59 additions & 1 deletion

File tree

laygo/transformers/http.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ def flatten[T](self: "HTTPTransformer[In, set[T]]") -> "HTTPTransformer[In, T]":
132132
def flatten[T]( # type: ignore
133133
self: Union["HTTPTransformer[In, list[T]]", "HTTPTransformer[In, tuple[T, ...]]", "HTTPTransformer[In, set[T]]"],
134134
) -> "HTTPTransformer[In, T]":
135-
return super().flatten() # type: ignore
135+
super().flatten() # type: ignore
136+
return self # type: ignore
136137

137138
def tap(self, function: PipelineFunction[Out, Any]) -> "HTTPTransformer[In, Out]":
138139
super().tap(function)

laygo/transformers/parallel.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Parallel transformer implementation using multiple threads."""
22

33
from collections import deque
4+
from collections.abc import Callable
45
from collections.abc import Iterable
56
from collections.abc import Iterator
67
from concurrent.futures import FIRST_COMPLETED
@@ -11,10 +12,16 @@
1112
from functools import partial
1213
import itertools
1314
import threading
15+
from typing import Any
16+
from typing import Union
17+
from typing import overload
1418

19+
from laygo.errors import ErrorHandler
1520
from laygo.helpers import PipelineContext
1621
from laygo.transformers.transformer import DEFAULT_CHUNK_SIZE
22+
from laygo.transformers.transformer import ChunkErrorHandler
1723
from laygo.transformers.transformer import InternalTransformer
24+
from laygo.transformers.transformer import PipelineFunction
1825
from laygo.transformers.transformer import Transformer
1926

2027

@@ -142,3 +149,53 @@ def result_iterator_manager() -> Iterator[Out]:
142149
yield from result_chunk
143150

144151
return result_iterator_manager()
152+
153+
# --- Overridden Chaining Methods to Preserve Type ---
154+
155+
def on_error(self, handler: ChunkErrorHandler[In, Out] | ErrorHandler) -> "ParallelTransformer[In, Out]":
156+
super().on_error(handler)
157+
return self
158+
159+
def map[U](self, function: PipelineFunction[Out, U]) -> "ParallelTransformer[In, U]":
160+
super().map(function)
161+
return self # type: ignore
162+
163+
def filter(self, predicate: PipelineFunction[Out, bool]) -> "ParallelTransformer[In, Out]":
164+
super().filter(predicate)
165+
return self
166+
167+
@overload
168+
def flatten[T](self: "ParallelTransformer[In, list[T]]") -> "ParallelTransformer[In, T]": ...
169+
@overload
170+
def flatten[T](self: "ParallelTransformer[In, tuple[T, ...]]") -> "ParallelTransformer[In, T]": ...
171+
@overload
172+
def flatten[T](self: "ParallelTransformer[In, set[T]]") -> "ParallelTransformer[In, T]": ...
173+
def flatten[T]( # type: ignore
174+
self: Union[
175+
"ParallelTransformer[In, list[T]]", "ParallelTransformer[In, tuple[T, ...]]", "ParallelTransformer[In, set[T]]"
176+
],
177+
) -> "ParallelTransformer[In, T]":
178+
super().flatten() # type: ignore
179+
return self # type: ignore
180+
181+
def tap(self, function: PipelineFunction[Out, Any]) -> "ParallelTransformer[In, Out]":
182+
super().tap(function)
183+
return self
184+
185+
def apply[T](
186+
self, t: Callable[["ParallelTransformer[In, Out]"], "Transformer[In, T]"]
187+
) -> "ParallelTransformer[In, T]":
188+
super().apply(t) # type: ignore
189+
return self # type: ignore
190+
191+
def catch[U](
192+
self,
193+
sub_pipeline_builder: Callable[[Transformer[Out, Out]], Transformer[Out, U]],
194+
on_error: ChunkErrorHandler[Out, U] | None = None,
195+
) -> "ParallelTransformer[In, U]":
196+
super().catch(sub_pipeline_builder, on_error)
197+
return self # type: ignore
198+
199+
def short_circuit(self, function: Callable[[PipelineContext], bool | None]) -> "ParallelTransformer[In, Out]":
200+
super().short_circuit(function)
201+
return self

0 commit comments

Comments
 (0)