Convenience tools for operating on sequences.
flatten_list(sequence: list[T]) -> list[T]
Flatten a sequence.
Source code in src/pygerber/sequence_tools.py
| def flatten_list(sequence: list[T]) -> list[T]:
"""Flatten a sequence."""
out = []
for item in sequence:
if isinstance(item, list):
out.extend(flatten_list(item))
else:
out.append(item)
return out
|
flatten(sequence: Iterable[T]) -> Iterable[T]
Flatten a sequence.
Source code in src/pygerber/sequence_tools.py
| def flatten(sequence: Iterable[T]) -> Iterable[T]:
"""Flatten a sequence."""
for item in sequence:
if isinstance(item, (list, tuple)):
yield from flatten(item)
else:
yield item
|
Unwrap item wrapped in sequences.
Source code in src/pygerber/sequence_tools.py
| def unwrap(item: T) -> T:
"""Unwrap item wrapped in sequences."""
try:
while isinstance(item, (list, tuple, ParseResults)): # type: ignore[index]
item = item[0] # type: ignore[unreachable, return-value]
except (TypeError, IndexError):
pass
return item # type: ignore[unreachable, return-value]
|