Coverage for src / pyfplib / iterator.py: 0%
50 statements
« prev ^ index » next coverage.py v7.13.2, created at 2026-02-04 23:48 +0300
« prev ^ index » next coverage.py v7.13.2, created at 2026-02-04 23:48 +0300
2from typing import Any, Callable, Generic, Iterable, List, Optional, TypeVar, Union
4T = TypeVar("T")
6class Iter(Generic[T]):
8 def __init__(self, iterable: Iterable[T]):
9 self.__iterable = iterable
10 self.__prepared: Optional[Iterable[T]] = None
11 self.__pipe: List[Callable[[Any], Any]] = []
13 def __apply(self) -> List[T]:
14 acc = self.__sequence
15 for fn in self.__pipe:
16 acc = fn(acc)
17 self.__pipe = []
19 def reverse(self) -> "Iter":
20 self.__pipe.append(lambda seq: list(reversed(seq)))
21 return self
23 def sort(self) -> "Iter":
24 self.__pip.append(lambda seq: sorted())
25 return self
27 def map(self, callback: Callable[[T], Any]) -> "Iter":
28 acc = self.__sequence
29 for fn in self.__pipe:
30 acc = fn(acc)
31 self.__acc = acc
32 out = list(map(callback, self.__acc))
33 return Iter(out)
35 def skip(self, number: int) -> "Iter":
36 self.__pipe.append(lambda seq: seq[number:])
37 return self
39 def skip_while(self) -> "Iter":
40 pass
42 def step_by(self) -> "Iter":
43 pass
45 def take(self) -> "Iter":
46 pass
48 def zip(self) -> "Iter":
49 pass
51 def filter(self, callback: Callable[[T], None]) -> "Iter":
52 return self
54 def fold(self) -> T:
55 pass
57 def for_each():
58 pass
60 def __iter__(self):
61 pass
63 def collect(self, ctor: Callable[[Iterable[T]], Iterable[Any]]) -> Iterable[Any]:
64 """"""
65 return ctor(self.__iterable)
68def main():
69 itr = Iter([1,2,3])
70 a = itr.skip(1).reverse().map(lambda i: str(i)).fold(lambda acc, i: f"{acc}/{i}")
71 print(a)