Source code for scgo.utils.config_aliases

"""Helpers for aliased dataclass construction kwargs."""

from __future__ import annotations

from typing import Any

from scgo.exceptions import SCGOValidationError

_UNSET: Any = object()


[docs] def resolve_aliased_float( canonical_name: str, canonical: Any, alias_name: str, alias: Any, default: float, ) -> float: """Pick ``canonical`` or ``alias`` (or ``default``); error if both disagree.""" c_set = canonical is not _UNSET a_set = alias is not _UNSET if c_set and a_set and float(canonical) != float(alias): raise SCGOValidationError( f"conflicting {canonical_name}={canonical!r} and {alias_name}={alias!r}" ) if c_set: return float(canonical) if a_set: return float(alias) return float(default)