Source code for unitflow.core.unit_families
"""Unit-family metadata primitives for pseudo-dimensionless units."""
from __future__ import annotations
from dataclasses import dataclass
from unitflow.errors import UnitFamilyError
[docs]
@dataclass(frozen=True, slots=True)
class UnitFamily:
"""Semantic metadata for units that share a meaningful family."""
name: str
description: str
def __post_init__(self) -> None:
if not self.name or not self.name.strip():
raise UnitFamilyError("Unit family names must be non-empty.")
if not self.description or not self.description.strip():
raise UnitFamilyError("Unit family descriptions must be non-empty.")
ANGLE = UnitFamily(
name="angle",
description="Angular units such as radian and turn.",
)
SOLID_ANGLE = UnitFamily(
name="solid_angle",
description="Solid-angle units such as steradian.",
)
CYCLE_COUNT = UnitFamily(
name="cycle_count",
description="Cycle-based counting units such as cycle and revolution.",
)