"""Started from xarray options.py"""importcopyfromcollections.abcimportMutableMappingfromtypingimportAnyfrom.utilsimportalways_iterableOPTIONS:MutableMapping[str,Any]={"custom_criteria":[],"warn_on_missing_variables":True,}
[docs]classset_options:# numpydoc ignore=PR01,PR02""" Set options for cf-xarray in a controlled context. Parameters ---------- custom_criteria : dict Translate from axis, coord, or custom name to variable name optionally using ``custom_criteria``. Default: []. warn_on_missing_variables : bool Whether to raise a warning when variables referred to in attributes are not present in the object. Examples -------- You can use ``set_options`` either as a context manager: >>> import numpy as np >>> import xarray as xr >>> my_custom_criteria = {"ssh": {"name": "elev$"}} >>> ds = xr.Dataset({"elev": np.arange(1000)}) >>> with cf_xarray.set_options(custom_criteria=my_custom_criteria): ... xr.testing.assert_identical(ds["elev"], ds.cf["ssh"]) ... Or to set global options: >>> cf_xarray.set_options(custom_criteria=my_custom_criteria) >>> xr.testing.assert_identical(ds["elev"], ds.cf["ssh"]) """
[docs]def__init__(self,**kwargs):self.old={}forkinkwargs:ifknotinOPTIONS:raiseValueError(f"argument name {k!r} is not in the set of valid options {set(OPTIONS)!r}")self.old[k]=OPTIONS[k]self._apply_update(kwargs)