"""Core module for Eclipsera.

This module provides the foundational components including base classes,
exceptions, validation utilities, metrics, and common utilities.
"""
from .base import (
    BaseClassifier,
    BaseCluster,
    BaseEstimator,
    BaseRegressor,
    BaseTransformer,
    ClassifierMixin,
    ClusterMixin,
    MetaEstimatorMixin,
    RegressorMixin,
    TransformerMixin,
    clone,
)
from .exceptions import (
    ConvergenceWarning,
    DataConversionWarning,
    DataDimensionalityError,
    EclipseraException,
    EfficiencyWarning,
    FeatureNamesError,
    FitFailedWarning,
    InvalidParameterError,
    ModelNotLoadedError,
    NotFittedError,
    NotSupportedError,
    ValidationError,
    check_is_fitted,
)
from .metrics import (
    MetricRegistry,
    accuracy_score,
    auc,
    confusion_matrix,
    f1_score,
    fbeta_score,
    mean_absolute_error,
    mean_squared_error,
    precision_recall_fscore_support,
    precision_score,
    r2_score,
    recall_score,
    roc_auc_score,
    roc_curve,
)
from .utils import (
    check_random_state,
    check_scalar,
    compute_sample_weight,
    get_chunk_n_rows,
    log_loss,
    log_softmax,
    parallel_helper,
    resample,
    safe_indexing,
    safe_sparse_dot,
    safe_sqr,
    shuffle,
    softmax,
)
from .validation import (
    check_array,
    check_classification_targets,
    check_consistent_length,
    check_regression_targets,
    check_symmetric,
    check_X_y,
    column_or_1d,
    has_fit_parameter,
    type_of_target,
)

__all__ = [
    # Base classes
    "BaseEstimator",
    "BaseClassifier",
    "BaseRegressor",
    "BaseTransformer",
    "BaseCluster",
    "ClassifierMixin",
    "RegressorMixin",
    "TransformerMixin",
    "ClusterMixin",
    "MetaEstimatorMixin",
    "clone",
    # Exceptions
    "EclipseraException",
    "NotFittedError",
    "InvalidParameterError",
    "DataDimensionalityError",
    "FeatureNamesError",
    "NotSupportedError",
    "ModelNotLoadedError",
    "ValidationError",
    "ConvergenceWarning",
    "FitFailedWarning",
    "DataConversionWarning",
    "EfficiencyWarning",
    "check_is_fitted",
    # Validation
    "check_array",
    "check_X_y",
    "check_consistent_length",
    "column_or_1d",
    "check_random_state",
    "check_classification_targets",
    "check_regression_targets",
    "type_of_target",
    "check_symmetric",
    "has_fit_parameter",
    # Metrics
    "accuracy_score",
    "precision_score",
    "recall_score",
    "f1_score",
    "fbeta_score",
    "precision_recall_fscore_support",
    "confusion_matrix",
    "r2_score",
    "mean_squared_error",
    "mean_absolute_error",
    "roc_auc_score",
    "roc_curve",
    "auc",
    "MetricRegistry",
    # Utils
    "safe_sparse_dot",
    "safe_indexing",
    "shuffle",
    "resample",
    "compute_sample_weight",
    "softmax",
    "log_softmax",
    "log_loss",
    "safe_sqr",
    "parallel_helper",
    "get_chunk_n_rows",
    "check_scalar",
]
