Source code for ddf.ant_link.loss_channel

from dataclasses import dataclass
from enum import Enum
from uuid import UUID


[docs] class FuturePastProbe(Enum): FUTURE = 0 PAST = 1 PROBE = 2
[docs] @dataclass(eq=True, frozen=True) # for hashing class LossChannel: mode: FuturePastProbe lossref: UUID | None name: str
[docs] @classmethod def from_string(cls, loss_channel: str) -> "LossChannel": parts = loss_channel.split(":") if len(parts) != 3: # noqa: PLR2004 raise ValueError("loss_channel must be in the format 'FuturePastProbe:lossref:name'") parts[0] = parts[0].lower() match parts: case ["future", lossref, name]: future_past_probe = FuturePastProbe.FUTURE case ["past", lossref, name]: future_past_probe = FuturePastProbe.PAST case ["probe", lossref, name]: future_past_probe = FuturePastProbe.PROBE case _: raise ValueError("Invalid FuturePastProbe value") return LossChannel(future_past_probe, UUID(lossref) if lossref != "" else None, name)
[docs] def to_string(self) -> str: return f"{self.mode.name}:{self.lossref}:{self.name}"