"""
Training Service Utilities
"""

from .ml_datetime import (
    ensure_timezone_aware,
    ensure_timezone_naive,
    normalize_datetime_to_utc,
    normalize_dataframe_datetime_column,
    prepare_prophet_datetime,
    safe_datetime_comparison,
    get_current_utc,
    convert_timestamp_to_datetime
)

from .circuit_breaker import (
    CircuitBreaker,
    CircuitBreakerError,
    CircuitState,
    circuit_breaker_registry
)

from .file_utils import (
    calculate_file_checksum,
    verify_file_checksum,
    get_file_size,
    ensure_directory_exists,
    safe_file_delete,
    get_file_metadata,
    ChecksummedFile
)

from .distributed_lock import (
    DatabaseLock,
    SimpleDatabaseLock,
    LockAcquisitionError,
    get_training_lock
)

from .retry import (
    RetryStrategy,
    RetryError,
    retry_async,
    with_retry,
    retry_with_timeout,
    AdaptiveRetryStrategy,
    TimeoutRetryStrategy,
    HTTP_RETRY_STRATEGY,
    DATABASE_RETRY_STRATEGY,
    EXTERNAL_SERVICE_RETRY_STRATEGY
)

__all__ = [
    # Timezone utilities
    'ensure_timezone_aware',
    'ensure_timezone_naive',
    'normalize_datetime_to_utc',
    'normalize_dataframe_datetime_column',
    'prepare_prophet_datetime',
    'safe_datetime_comparison',
    'get_current_utc',
    'convert_timestamp_to_datetime',
    # Circuit breaker
    'CircuitBreaker',
    'CircuitBreakerError',
    'CircuitState',
    'circuit_breaker_registry',
    # File utilities
    'calculate_file_checksum',
    'verify_file_checksum',
    'get_file_size',
    'ensure_directory_exists',
    'safe_file_delete',
    'get_file_metadata',
    'ChecksummedFile',
    # Distributed locking
    'DatabaseLock',
    'SimpleDatabaseLock',
    'LockAcquisitionError',
    'get_training_lock',
    # Retry mechanisms
    'RetryStrategy',
    'RetryError',
    'retry_async',
    'with_retry',
    'retry_with_timeout',
    'AdaptiveRetryStrategy',
    'TimeoutRetryStrategy',
    'HTTP_RETRY_STRATEGY',
    'DATABASE_RETRY_STRATEGY',
    'EXTERNAL_SERVICE_RETRY_STRATEGY'
]
