"""Exceptions for the Music DNA Similarity Engine.

All exceptions raised during similarity comparison inherit from
:class:`~similarity.exceptions.SimilarityError`.
"""

from __future__ import annotations

from core.exceptions import AIMusiMuseError


class SimilarityError(AIMusiMuseError):
    """Base exception for all Similarity Engine errors."""


class VectorValidationError(SimilarityError):
    """Raised when a vector contains NaN, Inf, or has wrong dimensions."""


class SchemaMismatchError(SimilarityError):
    """Raised when two vectors have different schema versions."""


class UnsupportedMetricError(SimilarityError):
    """Raised when an unknown metric name is requested."""
