relib 1.2.10__tar.gz → 1.2.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: relib
3
- Version: 1.2.10
3
+ Version: 1.2.11
4
4
  Project-URL: Repository, https://github.com/Reddan/relib.git
5
5
  Author: Hampus Hallman
6
6
  License: Copyright 2018-2025 Hampus Hallman
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "relib"
3
- version = "1.2.10"
3
+ version = "1.2.11"
4
4
  requires-python = ">=3.12"
5
5
  dependencies = []
6
6
  authors = [
@@ -1,6 +1,6 @@
1
1
  import re
2
2
  from itertools import chain
3
- from typing import Any, Callable, Iterable, overload
3
+ from typing import Any, Callable, Iterable, Literal, overload
4
4
 
5
5
  __all__ = [
6
6
  "noop",
@@ -84,12 +84,9 @@ def dict_firsts[T, K](pairs: Iterable[tuple[K, T]]) -> dict[K, T]:
84
84
  def distinct_by[T](pairs: Iterable[tuple[object, T]]) -> list[T]:
85
85
  return list(dict_firsts(pairs).values())
86
86
 
87
- def sort_by[T](pairs: Iterable[tuple[object, T]]) -> list[T]:
88
- pair_list: list[Any] = list(pairs)
89
- pair_list.sort(key=lambda p: p[0])
90
- for i in range(len(pair_list)):
91
- pair_list[i] = pair_list[i][1]
92
- return pair_list
87
+ def sort_by[T](pairs: Iterable[tuple[Any, T]]) -> list[T]:
88
+ pairs = sorted(pairs, key=lambda p: p[0])
89
+ return [v for _, v in pairs]
93
90
 
94
91
  def first[T](iterable: Iterable[T]) -> T | None:
95
92
  return next(iter(iterable), None)
@@ -161,10 +158,36 @@ def dict_by[T, K](keys: Iterable[K], values: Iterable[T]) -> dict[K, T]:
161
158
  def tuple_by[T, K](d: dict[K, T], keys: Iterable[K]) -> tuple[T, ...]:
162
159
  return tuple(d[key] for key in keys)
163
160
 
164
- def flatten[T](iterable: Iterable[Iterable[T]]) -> list[T]:
165
- return list(chain.from_iterable(iterable))
161
+ @overload
162
+ def flatten[T](iterable: Iterable[T], depth: Literal[0]) -> list[T]: ...
163
+ @overload
164
+ def flatten[T](iterable: Iterable[Iterable[T]], depth: Literal[1] = 1) -> list[T]: ...
165
+ @overload
166
+ def flatten[T](iterable: Iterable[Iterable[Iterable[T]]], depth: Literal[2]) -> list[T]: ...
167
+ @overload
168
+ def flatten[T](iterable: Iterable[Iterable[Iterable[Iterable[T]]]], depth: Literal[3]) -> list[T]: ...
169
+ @overload
170
+ def flatten[T](iterable: Iterable[Iterable[Iterable[Iterable[Iterable[T]]]]], depth: Literal[4]) -> list[T]: ...
171
+ @overload
172
+ def flatten(iterable: Iterable, depth: int) -> list: ...
173
+
174
+ def flatten(iterable: Iterable, depth: int = 1) -> list:
175
+ for _ in range(depth):
176
+ iterable = chain.from_iterable(iterable)
177
+ return list(iterable)
178
+
179
+ @overload
180
+ def transpose[T1, T2](tuples: Iterable[tuple[T1, T2]], default_num_returns: int = 0) -> tuple[list[T1], list[T2]]: ...
181
+ @overload
182
+ def transpose[T1, T2, T3](tuples: Iterable[tuple[T1, T2, T3]], default_num_returns: int = 0) -> tuple[list[T1], list[T2], list[T3]]: ...
183
+ @overload
184
+ def transpose[T1, T2, T3, T4](tuples: Iterable[tuple[T1, T2, T3, T4]], default_num_returns: int = 0) -> tuple[list[T1], list[T2], list[T3], list[T4]]: ...
185
+ @overload
186
+ def transpose[T1, T2, T3, T4, T5](tuples: Iterable[tuple[T1, T2, T3, T4, T5]], default_num_returns: int = 0) -> tuple[list[T1], list[T2], list[T3], list[T4], list[T5]]: ...
187
+ @overload
188
+ def transpose(tuples: Iterable[tuple], default_num_returns: int = 0) -> tuple[list, ...]: ...
166
189
 
167
- def transpose(tuples, default_num_returns=0):
190
+ def transpose(tuples: Iterable[tuple], default_num_returns=0) -> tuple[list, ...]:
168
191
  output = tuple(zip(*tuples))
169
192
  if not output:
170
193
  return ([],) * default_num_returns
@@ -106,7 +106,7 @@ wheels = [
106
106
 
107
107
  [[package]]
108
108
  name = "relib"
109
- version = "1.2.10"
109
+ version = "1.2.11"
110
110
  source = { editable = "." }
111
111
 
112
112
  [package.dev-dependencies]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes