iterables.merging

Merging Iterables

module pythonic_fp.iterables.merging

Functions to merge multiple iterables together into one.

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.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.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.

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.blend(*iterables: Iterable, merge_enum: MergeEnum = MergeEnum.Concat, yield_partials: bool = False) Iterator

Merge behavior based on value of merge_enum parameter.

Parameters:
  • iterables – Iterables to blend together.

  • merge_enumMergeEnum to determine merging behavior.

  • yield_partials – Yield unpaired values from other iterables.

Returns:

An iterator of type D.

Raises:

ValueError – When an unknown MergeEnum is given.