Source code for pandera_catalog.schemas

"""Schema loading helpers for pandera-catalog.

This module provides utilities for loading Pandera schemas from YAML files
and from plain Python dictionaries.
"""
from __future__ import annotations

from pathlib import Path
from typing import Union

import pandera.pandas as pa
import yaml


[docs] def load_schema_from_yaml(path: Union[str, Path]) -> pa.DataFrameSchema: """Load a Pandera :class:`~pandera.DataFrameSchema` from a YAML file. The YAML file must follow the format produced by :meth:`pandera.DataFrameSchema.to_yaml`. Parameters ---------- path: Path to the ``.yaml`` (or ``.yml``) schema definition file. Returns ------- pandera.DataFrameSchema Raises ------ FileNotFoundError If the file does not exist. ValueError If the file cannot be parsed as a Pandera schema. Examples -------- >>> from pathlib import Path >>> from pandera_catalog.schemas import load_schema_from_yaml >>> schema = load_schema_from_yaml(Path("schemas/my_schema.yaml")) """ path = Path(path) if not path.exists(): raise FileNotFoundError(f"Schema file not found: {path}") return pa.DataFrameSchema.from_yaml(path)
def load_schema_from_dict(definition: dict) -> pa.DataFrameSchema: """Build a Pandera :class:`~pandera.DataFrameSchema` from a dictionary. The dictionary must follow the same structure as Pandera's YAML serialisation format. Parameters ---------- definition: Mapping that describes the schema (columns, checks, etc.). Returns ------- pandera.DataFrameSchema Examples -------- >>> from pandera_catalog.schemas import load_schema_from_dict >>> defn = {"columns": {"value": {"dtype": "float64"}}} >>> schema = load_schema_from_dict(defn) """ yaml_str = yaml.dump(definition) return pa.DataFrameSchema.from_yaml(yaml_str) __all__ = [ "load_schema_from_yaml", "load_schema_from_dict", ]