iterables.merging

Module pythonic_fp.iterables.merging

class pythonic_fp.iterables.merging.MergeEnum(*values)

Iterable Blending Enums.

  • MergeEnum.Concat: Concatenate first to last

  • MergeEnum.Merge: Merge until one is exhausted

  • MergeEnum.Exhaust: Merge until all are exhausted

pythonic_fp.iterables.merging.blend(*iterables: Iterable, merge_enum: MergeEnum = MergeEnum.Concat, yield_partials: bool = False) Iterator

Base merge behavior on name only parameters.

Parameters:
  • iterables – iterables to blend together

  • merge_enum – MergeEnum to determine merging behavior

  • yield_partials – yield yielded unpaired values from other iterables

Returns:

an iterator of type D

Raises:

ValueError – when an unknown MergeEnum is given

pythonic_fp.iterables.merging.concat(*iterables: Iterable) Iterator

Sequentially concatenate multiple iterables together.

Warning

An infinite iterable will prevent subsequent iterables from yielding any values.

Note

Performant to the standard library’s itertools.chain.

Parameters:

iterables – iterables to concatenate

Returns:

iterator of concatenated values from the iterables

pythonic_fp.iterables.merging.exhaust(*iterables: Iterable) Iterator

Merge together multiple iterables until all are exhausted.

Parameters:

iterables – iterables to exhaustively merge

Returns:

iterator of merged values from the iterables until all are exhausted

pythonic_fp.iterables.merging.merge(*iterables: Iterable, yield_partials: bool = False) Iterator

Merge together iterables until one is exhausted.

Note

When yield_partials is true, then any unmatched values from other iterables already yielded when the first iterable is exhausted are yielded. This prevents data lose if any of the iterables are iterators with external references.

Parameters:
  • iterables – iterables to merge until one gets exhausted

  • yield_partials – yield any unpaired yielded values from other iterables

Returns:

iterator of merged values from the iterables until one is exhausted