kenjutsu.measure module

exception kenjutsu.measure.UnknownSliceLengthException[source]

Bases: exceptions.Exception

Raised if a slice does not have a known length.

kenjutsu.measure.len_slice(a_slice, a_length=None)[source]

Determines how many elements a slice will contain.

Raises:
Parameters:
  • a_slice (slice) – a slice to reformat.
  • a_length (int) – a length to fill for stopping if not provided.
Returns:

a new slice with as many values filled in as

possible.

Return type:

(slice)

Examples

>>> len_slice(slice(2, None), 10)
8
>>> len_slice(slice(2, 6))
4
kenjutsu.measure.len_slices(slices, lengths=None)[source]

Takes a tuple of slices and reformats them to fill in as many undefined values as possible.

Parameters:
  • slices (tuple(slice)) – a tuple of slices to reformat.
  • lengths (tuple(int)) – a tuple of lengths to fill.
Returns:

a tuple of slices with all default

values filled if possible.

Return type:

(slice)

Examples

>>> len_slices(
...     (
...         slice(None),
...         slice(3, None),
...         slice(None, 5),
...         slice(None, None, 2)
...     ),
...     (10, 13, 15, 20)
... )
(10, 10, 5, 10)