Skip to content

datethyme._scheduling_utils

Note the following type aliases used for readability in this file:

type SpanPair[TP: TimeProtocol] = tuple[SpanProtocol[TP], SpanProtocol[TP]]

type SpanTuple[TP: TimeProtocol] = tuple[SpanProtocol[TP], ...]

type SpanList[TP: TimeProtocol] = list[SpanProtocol[TP]]

type SpanIterable[TP: TimeProtocol] = Iterable[SpanProtocol[TP]]

type PairCallback[TP: TimeProtocol] = Callable[
    [SpanProtocol[TP], SpanProtocol[TP]],
    SpanPair[TP],
]

snap_forward

snap_forward(first: SpanProtocol[T], second: SpanProtocol[T]) -> SpanPair[T]

Please write me!

snap_back

snap_back(first: SpanProtocol[T], second: SpanProtocol[T]) -> SpanPair[T]

Please write me!

snap_between

snap_between(span: SpanProtocol[T], earliest: T | None, latest: T | None) -> SpanProtocol[T]

Please write me!

earliest_start

earliest_start(seq: Iterable[T]) -> T
earliest_start(seq: SpanIterable[T]) -> T
earliest_start(seq: SpanIterable[T] | Iterable[T]) -> T

Please write me!

latest_end

latest_end(seq: Iterable[T]) -> T
latest_end(seq: SpanIterable[T]) -> T
latest_end(seq: SpanIterable[T] | Iterable[T]) -> T

Please write me!

most_central

most_central(seq: SpanIterable[T]) -> SpanProtocol[T]
most_central(seq: Iterable[T]) -> T
most_central(seq: SpanIterable[T] | Iterable[T]) -> SpanProtocol[T] | T

Please write me!

get_relative_lengths

get_relative_lengths(seq: SpanIterable[T]) -> list[float]

Please write me!

get_total_length

get_total_length(seq: SpanIterable[T]) -> float

Please write me!

stack_forward

stack_forward(seq: SpanIterable[T], anchor: T | None = None) -> SpanList[T]

Please write me!

stack_backward

stack_backward(seq: SpanIterable[T] | Iterable[T], anchor: T | None = None) -> SpanList[T]

Please write me!

stack_from_middle

stack_from_middle(seq: SpanIterable[T], anchor: T | None = None) -> SpanList[T]

Please write me!

apply_pairwise

apply_pairwise(pair_callback: PairCallback, seq: SpanIterable[T]) -> SpanList[T]

Please write me!

split_overlap_equal

split_overlap_equal(first: SpanProtocol[T], second: SpanProtocol[T]) -> SpanPair[T]

Please write me!

split_overlap_proportional

split_overlap_proportional(first: SpanProtocol[T], second: SpanProtocol[T]) -> SpanPair[T]

Please write me!

split_overlap_inverse_proportional

split_overlap_inverse_proportional(first: SpanProtocol[T], second: SpanProtocol[T]) -> SpanPair[T]

Please write me!

split_gap_equal

split_gap_equal(first: SpanProtocol[T], second: SpanProtocol[T]) -> SpanPair[T]

Please write me!

split_gap_proportional

split_gap_proportional(first: SpanProtocol[T], second: SpanProtocol[T]) -> SpanPair[T]

Please write me!

split_gap_inverse_proportional

split_gap_inverse_proportional(first: SpanProtocol[T], second: SpanProtocol[T]) -> SpanPair[T]

Please write me!

truncate

truncate(seq: SpanIterable[T], earliest: T, latest: T) -> tuple[SpanList[T], SpanList[T], SpanList[T]]

Please write me!

truncate_nodiscard

truncate_nodiscard(seq: SpanIterable[T], earliest: TimeProtocol, latest: TimeProtocol) -> SpanList[T] | None

Please write me!

eclipse_forward

eclipse_forward(seq: SpanIterable[T]) -> tuple[SpanTuple[T], SpanTuple[T]]

Please write me!

eclipse_backward

eclipse_backward(seq: SpanIterable[T]) -> tuple[SpanTuple[T], SpanTuple[T]]

Please write me!

resolve_overlaps

resolve_overlaps(seq: SpanIterable[T], mode: Literal['EQUAL', 'PROPORTIONAL', 'INVERSE']) -> SpanTuple[T]

Please write me!

resolve_gaps

resolve_gaps(seq: SpanIterable[T], mode=Literal['EQUAL', 'PROPORTIONAL', 'INVERSE', 'SNAP_FORWARD', 'SNAP_BACK']) -> SpanTuple[T]

Please write me!

squeeze

squeeze(seq: SpanIterable[T], mode: Literal['PROPORTIONAL', 'EQUAL'], earliest: T | None = None, latest: T | None = None, min_minutes: int | float = 5) -> SpanTuple[T]

Squeeze all elements of seq to fit between earliest and latest.

squeeze_with_rollover

squeeze_with_rollover(seq: SpanIterable[T], mode: Literal['PROPORTIONAL', 'EQUAL'], earliest: T | None = None, latest: T | None = None, min_minutes: int | float = 5) -> tuple[SpanTuple[T], SpanTuple[T]]

Please write me!

stack

stack(seq: SpanIterable[T], mode: Literal['FORWARD', 'OUTWARD', 'BACKWARD'], anchor=None) -> SpanTuple[T]

Please write me!

is_contiguous

is_contiguous(seq: SpanIterable[T]) -> bool

Please write me!