Source code for glotaran.model.interval_item

"""This module contains the interval item."""
from __future__ import annotations

from glotaran.model.item import Item
from glotaran.model.item import item


[docs] @item class IntervalItem(Item): """An item with an interval.""" interval: tuple[float, float] | list[tuple[float, float]] | None = None
[docs] def has_interval(self) -> bool: """Check if intervals are defined. Returns ------- bool """ return self.interval is not None
[docs] def applies(self, index: float | None) -> bool: """Check if the index is in the intervals. Parameters ---------- index : float The index. Returns ------- bool """ if self.interval is None or index is None: return True def applies(interval: tuple[float, float]): lower, upper = interval[0], interval[1] if lower > upper: lower, upper = upper, lower return lower <= index <= upper if isinstance(self.interval, tuple): return applies(self.interval) return any(applies(i) for i in self.interval)