Coverage for src / remedapy / pipe.py: 100%
23 statements
« prev ^ index » next coverage.py v7.13.2, created at 2026-02-02 10:52 +0100
« prev ^ index » next coverage.py v7.13.2, created at 2026-02-02 10:52 +0100
1from collections.abc import Callable
2from typing import Any, TypeVar, overload
4A = TypeVar('A')
5B = TypeVar('B')
6C = TypeVar('C')
7D = TypeVar('D')
8E = TypeVar('E')
9F = TypeVar('F')
10G = TypeVar('G')
11H = TypeVar('H')
12I = TypeVar('I')
13J = TypeVar('J')
14K = TypeVar('K')
15L = TypeVar('L')
16M = TypeVar('M')
17N = TypeVar('N')
18O = TypeVar('O')
19P = TypeVar('P')
22@overload
23def pipe(data: A, funcA: Callable[[A], B], /) -> B: ...
26@overload
27def pipe(data: A, funcA: Callable[[A], B], funcB: Callable[[B], C], /) -> C: ...
30@overload
31def pipe(data: A, funcA: Callable[[A], B], funcB: Callable[[B], C], funcC: Callable[[C], D], /) -> D: ...
34@overload
35def pipe(
36 data: A,
37 funcA: Callable[[A], B],
38 funcB: Callable[[B], C],
39 funcC: Callable[[C], D],
40 funcD: Callable[[D], E],
41 /,
42) -> E: ...
45@overload
46def pipe(
47 data: A,
48 funcA: Callable[[A], B],
49 funcB: Callable[[B], C],
50 funcC: Callable[[C], D],
51 funcD: Callable[[D], E],
52 funcE: Callable[[E], F],
53 /,
54) -> F: ...
57@overload
58def pipe(
59 data: A,
60 funcA: Callable[[A], B],
61 funcB: Callable[[B], C],
62 funcC: Callable[[C], D],
63 funcD: Callable[[D], E],
64 funcE: Callable[[E], F],
65 funcF: Callable[[F], G],
66 /,
67) -> G: ...
70@overload
71def pipe(
72 data: A,
73 funcA: Callable[[A], B],
74 funcB: Callable[[B], C],
75 funcC: Callable[[C], D],
76 funcD: Callable[[D], E],
77 funcE: Callable[[E], F],
78 funcF: Callable[[F], G],
79 funcG: Callable[[G], H],
80 /,
81) -> H: ...
84@overload
85def pipe(
86 data: A,
87 funcA: Callable[[A], B],
88 funcB: Callable[[B], C],
89 funcC: Callable[[C], D],
90 funcD: Callable[[D], E],
91 funcE: Callable[[E], F],
92 funcF: Callable[[F], G],
93 funcG: Callable[[G], H],
94 funcH: Callable[[H], I],
95 /,
96) -> I: ...
99@overload
100def pipe(
101 data: A,
102 funcA: Callable[[A], B],
103 funcB: Callable[[B], C],
104 funcC: Callable[[C], D],
105 funcD: Callable[[D], E],
106 funcE: Callable[[E], F],
107 funcF: Callable[[F], G],
108 funcG: Callable[[G], H],
109 funcH: Callable[[H], I],
110 funcI: Callable[[I], J],
111 /,
112) -> J: ...
115@overload
116def pipe(
117 data: A,
118 funcA: Callable[[A], B],
119 funcB: Callable[[B], C],
120 funcC: Callable[[C], D],
121 funcD: Callable[[D], E],
122 funcE: Callable[[E], F],
123 funcF: Callable[[F], G],
124 funcG: Callable[[G], H],
125 funcH: Callable[[H], I],
126 funcI: Callable[[I], J],
127 funcJ: Callable[[J], K],
128 /,
129) -> K: ...
132@overload
133def pipe(
134 data: A,
135 funcA: Callable[[A], B],
136 funcB: Callable[[B], C],
137 funcC: Callable[[C], D],
138 funcD: Callable[[D], E],
139 funcE: Callable[[E], F],
140 funcF: Callable[[F], G],
141 funcG: Callable[[G], H],
142 funcH: Callable[[H], I],
143 funcI: Callable[[I], J],
144 funcJ: Callable[[J], K],
145 funcK: Callable[[K], L],
146 /,
147) -> L: ...
150@overload
151def pipe(
152 data: A,
153 funcA: Callable[[A], B],
154 funcB: Callable[[B], C],
155 funcC: Callable[[C], D],
156 funcD: Callable[[D], E],
157 funcE: Callable[[E], F],
158 funcF: Callable[[F], G],
159 funcG: Callable[[G], H],
160 funcH: Callable[[H], I],
161 funcI: Callable[[I], J],
162 funcJ: Callable[[J], K],
163 funcK: Callable[[K], L],
164 funcL: Callable[[L], M],
165 /,
166) -> M: ...
169@overload
170def pipe(
171 data: A,
172 funcA: Callable[[A], B],
173 funcB: Callable[[B], C],
174 funcC: Callable[[C], D],
175 funcD: Callable[[D], E],
176 funcE: Callable[[E], F],
177 funcF: Callable[[F], G],
178 funcG: Callable[[G], H],
179 funcH: Callable[[H], I],
180 funcI: Callable[[I], J],
181 funcJ: Callable[[J], K],
182 funcK: Callable[[K], L],
183 funcL: Callable[[L], M],
184 funcM: Callable[[M], N],
185 /,
186) -> N: ...
189@overload
190def pipe(
191 data: A,
192 funcA: Callable[[A], B],
193 funcB: Callable[[B], C],
194 funcC: Callable[[C], D],
195 funcD: Callable[[D], E],
196 funcE: Callable[[E], F],
197 funcF: Callable[[F], G],
198 funcG: Callable[[G], H],
199 funcH: Callable[[H], I],
200 funcI: Callable[[I], J],
201 funcJ: Callable[[J], K],
202 funcK: Callable[[K], L],
203 funcL: Callable[[L], M],
204 funcM: Callable[[M], N],
205 funcN: Callable[[N], O],
206 /,
207) -> O: ...
210@overload
211def pipe(
212 data: A,
213 funcA: Callable[[A], B],
214 funcB: Callable[[B], C],
215 funcC: Callable[[C], D],
216 funcD: Callable[[D], E],
217 funcE: Callable[[E], F],
218 funcF: Callable[[F], G],
219 funcG: Callable[[G], H],
220 funcH: Callable[[H], I],
221 funcI: Callable[[I], J],
222 funcJ: Callable[[J], K],
223 funcK: Callable[[K], L],
224 funcL: Callable[[L], M],
225 funcM: Callable[[M], N],
226 funcN: Callable[[N], O],
227 funcO: Callable[[O], P],
228 /,
229) -> P: ...
232def pipe(*args: Any) -> Any:
233 x = args[0]
234 for fn in args[1:]:
235 x = fn(x)
236 return x