"""Site altitudes, standard atmosphere profiles, and common configurations."""
from __future__ import annotations
SITES: dict[str, dict[str, float]] = {
"LSST": {"altitude": 2.663, "pressure": 731.50433},
"CTIO": {"altitude": 2.207, "pressure": 776.0},
"OHP": {"altitude": 0.650, "pressure": 935.0},
"PDM": {"altitude": 2.890, "pressure": 716.0},
"OMK": {"altitude": 4.200, "pressure": 601.0},
"OSL": {"altitude": 0.0, "pressure": 1013.25},
}
PROFILES: dict[str, str] = {
"us": "US-standard",
"ms": "midlatitude_summer",
"mw": "midlatitude_winter",
"tp": "tropics",
"ss": "subarctic_summer",
"sw": "subarctic_winter",
}
[docs]
def resolve_altitude(altitude: float | str) -> float:
"""Resolve altitude -- accepts km float or site preset name."""
if isinstance(altitude, int | float):
return float(altitude)
if isinstance(altitude, str):
if altitude in SITES:
return SITES[altitude]["altitude"]
raise ValueError(
f"Unknown site '{altitude}'. Available: {sorted(SITES.keys())}"
)
raise TypeError(f"altitude must be float or str, got {type(altitude)}")