"""Data versioning system for embergraphrouter.

Provides content-addressable versioning with lineage tracking for datasets
and configurations. Designed for reproducibility and integrity validation.

Usage:
    from embergraphrouter.versioning import DataRegistry, load_dataset

    # Load the current version of a dataset
    df = load_dataset("router_data")

    # Load a specific version
    df = load_dataset("router_data", version="2025.12.07")

    # Access registry metadata
    registry = DataRegistry.load()
    info = registry.get_dataset_info("router_data")
    print(f"Rows: {info.row_count}, Checksum: {info.checksum}")

    # For strict validation, use Pydantic models
    from embergraphrouter.versioning import RegistryModel
    registry = RegistryModel.from_yaml(path)  # Validates all fields
"""

from embergraphrouter.versioning.loader import load_config, load_dataset
from embergraphrouter.versioning.models import (
    ConfigModel,
    ConfigVersionModel,
    DatasetModel,
    DatasetVersionModel,
    RegistryModel,
    SchemaModel,
)
from embergraphrouter.versioning.registry import (
    ConfigVersion,
    DataRegistry,
    DatasetVersion,
    SchemaDefinition,
)

__all__ = [
    # Core registry (dataclasses - lightweight)
    "DataRegistry",
    "DatasetVersion",
    "ConfigVersion",
    "SchemaDefinition",
    # Pydantic models (strict validation)
    "RegistryModel",
    "DatasetModel",
    "DatasetVersionModel",
    "ConfigModel",
    "ConfigVersionModel",
    "SchemaModel",
    # Loading functions
    "load_dataset",
    "load_config",
]
