Source code for carpet_concentrations.xarray_pint_utils

"""
Tools for helping with :mod:`xarray_pint`
"""
from __future__ import annotations

from typing import TYPE_CHECKING

import pint

from carpet_concentrations.attrs_utils import (
    make_attrs_validator_compatible_single_input,
)
from carpet_concentrations.exceptions import NotPintQuantifiedError

if TYPE_CHECKING:
    import xarray as xr


[docs]def check_pint_quantified_array(inp: xr.DataArray) -> None: """ Check that input can be converted using pint Parameters ---------- inp Data to check Raises ------ NotPintQuantifiedError ``inp`` is not pint compatible i.e. has not already been converted using pint via e.g. ``.pint.quantify()`` """ if not isinstance(inp.data, pint.registry.Quantity): raise NotPintQuantifiedError(inp)
[docs]def check_pint_quantified_dataset(inp: xr.Dataset) -> None: """ Check that all variables in an :obj:`xr.Dataset` can be converted using pint Parameters ---------- inp Data to check """ for val in inp.values(): check_pint_quantified_array(val)
check_pint_quantified_array_attrs = make_attrs_validator_compatible_single_input( check_pint_quantified_array ) check_pint_quantified_dataset_attrs = make_attrs_validator_compatible_single_input( check_pint_quantified_dataset )