Source code for pyinterp.cf

# Copyright (c) 2026 CNES.
#
# All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
"""CF (Climate and Forecast)."""

from __future__ import annotations


[docs] class AxisUnit(set): """Base class for managing valid CF convention units for coordinate axes. This class extends Python's built-in set to store and validate standardized units used in Climate and Forecast (CF) conventions for coordinate axes. """ @property def units(self) -> set[str]: """Retrieve the set of valid units for this axis type. Returns: A set of strings representing valid CF convention unit names. """ return self
[docs] class AxisLatitudeUnit(AxisUnit): """Container for valid latitude axis units in CF conventions. Stores standardized CF units for latitude coordinates, including variants like 'degrees_north', 'degree_N', etc. """ def __init__(self) -> None: """Initialize an AxisLatitudeUnit instance.""" super().__init__( ( "degrees_north", "degree_north", "degree_N", "degrees_N", "degreeN", "degreesN", ) )
[docs] class AxisLongitudeUnit(AxisUnit): """Container for valid longitude axis units in CF conventions. Stores standardized CF units for longitude coordinates, including variants like 'degrees_east', 'degree_E', etc. """ def __init__(self) -> None: """Initialize an AxisLongitudeUnit instance.""" super().__init__( ( "degrees_east", "degree_east", "degree_E", "degrees_E", "degreeE", "degreesE", ) )
[docs] class AxisTimeUnit(AxisUnit): """Container for valid time axis units in CF conventions. Stores standardized CF units for temporal coordinates, such as 'days' and 'seconds'. """ def __init__(self) -> None: """Initialize an AxisTimeUnit instance.""" super().__init__(("days", "seconds"))