Source code for climate_categories

"""Access to all categorizations is provided directly at the module level, using the
names of categorizations. To access the example categorization `Excat`, simply use
`climate_categories.Excat` .
"""

__author__ = """Mika Pflüger"""
__email__ = "mika.pflueger@climate-resource.com"
__version__ = "0.11.1"

import importlib
import importlib.resources

from . import (
    search,
)
from ._categories import (
    Categorization,
    Category,
    HierarchicalCategorization,
    HierarchicalCategory,
    from_pickle,
    from_python,
    from_spec,
    from_yaml,
)
from ._conversions import Conversion, ConversionRule

cats = {}


def _read_py_hier(name) -> HierarchicalCategorization:
    mod = importlib.import_module(f".data.{name}", package="climate_categories")
    cat = HierarchicalCategorization.from_spec(mod.spec)
    cat._cats = cats
    cats[cat.name] = cat
    return cat


# do this explicitly to help static analysis tools
IPCC1996 = _read_py_hier("IPCC1996")
IPCC2006 = _read_py_hier("IPCC2006")
IPCC2006_PRIMAP = _read_py_hier("IPCC2006_PRIMAP")
CRF1999 = _read_py_hier("CRF1999")
CRF2013 = _read_py_hier("CRF2013")
CRF2013_2021 = _read_py_hier("CRF2013_2021")
CRF2013_2022 = _read_py_hier("CRF2013_2022")
CRF2013_2023 = _read_py_hier("CRF2013_2023")
CRFDI = _read_py_hier("CRFDI")
CRFDI_class = _read_py_hier("CRFDI_class")
BURDI = _read_py_hier("BURDI")
BURDI_class = _read_py_hier("BURDI_class")
GCB = _read_py_hier("GCB")
RCMIP = _read_py_hier("RCMIP")
gas = _read_py_hier("gas")
ISO3 = _read_py_hier("ISO3")
ISO3_GCAM = _read_py_hier("ISO3_GCAM")
FAO = _read_py_hier("FAO")
CT = _read_py_hier("CT")


[docs] def find_code(code: str) -> set[Category]: """Search for the given code in all included categorizations.""" return search.search_code(code, cats.values())
__all__ = [ "cats", "Categorization", "HierarchicalCategorization", "Category", "HierarchicalCategory", "Conversion", "ConversionRule", "find_code", "from_pickle", "from_spec", "from_yaml", "from_python", *list(cats.keys()), ]