"""
sparkwheel: A powerful YAML-based configuration system with references, expressions, and dynamic instantiation.

Uses YAML format only.
"""

from .config import Config, parse_overrides
from .items import Component, Expression, Instantiable, Item
from .operators import apply_operators, validate_operators
from .resolver import Resolver
from .schema import MISSING, ValidationError, validate, validator
from .utils.constants import EXPR_KEY, ID_SEP_KEY, RAW_REF_KEY, REMOVE_KEY, REPLACE_KEY, RESOLVED_REF_KEY
from .utils.exceptions import (
    BaseError,
    CircularReferenceError,
    ConfigKeyError,
    ConfigMergeError,
    EvaluationError,
    FrozenConfigError,
    InstantiationError,
    Location,
    TargetNotFoundError,
)

__version__ = "0.0.9"

__all__ = [
    "__version__",
    "Config",
    "parse_overrides",
    "MISSING",
    "Item",
    "Component",
    "Expression",
    "Instantiable",
    "Resolver",
    "apply_operators",
    "validate_operators",
    "validate",
    "validator",
    "RESOLVED_REF_KEY",
    "RAW_REF_KEY",
    "ID_SEP_KEY",
    "EXPR_KEY",
    "REMOVE_KEY",
    "REPLACE_KEY",
    "BaseError",
    "TargetNotFoundError",
    "CircularReferenceError",
    "InstantiationError",
    "ConfigKeyError",
    "ConfigMergeError",
    "EvaluationError",
    "FrozenConfigError",
    "ValidationError",
    "Location",
]
