Source code for pandera_catalog.types

"""Shared type aliases, dataclasses, and protocol helpers for pandera-catalog."""
from __future__ import annotations

from dataclasses import dataclass, field
import pandera.pandas as pa


[docs] @dataclass class SchemaEntry: """A catalog entry wrapping a Pandera schema with metadata. Attributes ---------- name: Unique name of the schema within the catalog. schema: The Pandera :class:`~pandera.DataFrameSchema` instance. description: Optional human-readable description. tags: Optional list of string tags for categorisation or filtering. """ name: str schema: pa.DataFrameSchema description: str | None = None tags: list[str] = field(default_factory=list) def __repr__(self) -> str: tag_str = f", tags={self.tags!r}" if self.tags else "" desc_str = f", description={self.description!r}" if self.description else "" return f"SchemaEntry(name={self.name!r}{desc_str}{tag_str})"
[docs] @dataclass class SchemaProjectionEntry: """A named projection built from ordered schema selection steps.""" name: str steps: list["SchemaProjectionStep"] description: str | None = None def __repr__(self) -> str: desc_str = f", description={self.description!r}" if self.description else "" return ( f"SchemaProjectionEntry(name={self.name!r}, steps={self.steps!r}{desc_str})" )
[docs] @dataclass class SchemaProjectionStep: """A single schema projection step.""" schema: str kind: str names: list[str]
__all__ = ["SchemaEntry", "SchemaProjectionEntry", "SchemaProjectionStep"]