"""Legacy constant mappings for backward compatibility with modelscope SDK."""

from ..constants import (
    UPLOAD_ADAPTIVE_BATCHING_ENABLED,
    UPLOAD_BLOB_CONNECT_TIMEOUT_SECONDS,
    UPLOAD_BLOB_MAX_ATTEMPTS,
    UPLOAD_BLOB_PROGRESS_THRESHOLD_BYTES,
    UPLOAD_BLOB_READ_TIMEOUT_SECONDS,
    UPLOAD_BLOB_RETRY_BACKOFF_BASE_SECONDS,
    UPLOAD_BLOB_RETRY_MAX_DELAY_SECONDS,
    UPLOAD_BLOB_VALIDATION_BATCH_MAX_OBJECTS,
    UPLOAD_CACHE_ENABLED,
    UPLOAD_COMMIT_BATCH_MAX_OPERATIONS,
    UPLOAD_FAILED_FILE_MAX_RETRY_ROUNDS,
    UPLOAD_HTTP_RETRY_ALLOWED_METHODS,
    UPLOAD_LFS_FORCE_THRESHOLD_BYTES,
    UPLOAD_MAX_CONCURRENT_WORKERS,
    UPLOAD_MAX_FILE_SIZE_BYTES,
    UPLOAD_MAX_FILES_PER_DIRECTORY,
    UPLOAD_NORMAL_FILES_TOTAL_SIZE_BYTES,
    UPLOAD_RECOVERY_BACKOFF_MAX_EXPONENT,
    UPLOAD_RECOVERY_ENABLED,
    UPLOAD_RECOVERY_MAX_DELAY_SECONDS,
    UPLOAD_RECOVERY_SERIAL_BACKOFF_BASE_SECONDS,
    UPLOAD_RECOVERY_SINGLE_FILE_DELAY_SECONDS,
    RepoType,
    Visibility,
    get_upload_ignore_file_pattern,  # noqa: F401
)
from ..constants import (
    UPLOAD_LFS_THRESHOLD as _UPLOAD_LFS_THRESHOLD,
)
from ..constants import (
    UPLOAD_MAX_FILE_COUNT as _UPLOAD_MAX_FILE_COUNT,
)

REPO_TYPE_MODEL: str = RepoType.MODEL.value
REPO_TYPE_DATASET: str = RepoType.DATASET.value
REPO_TYPE_STUDIO: str = RepoType.STUDIO.value
REPO_TYPE_SUPPORT: list[str] = [REPO_TYPE_MODEL, REPO_TYPE_DATASET, REPO_TYPE_STUDIO]

DEFAULT_DATASET_REVISION: str = "master"
DEFAULT_MAX_WORKERS: int = UPLOAD_MAX_CONCURRENT_WORKERS

# Legacy upload constants. Values come from the modelscope-hub runtime config.
UPLOAD_BLOB_CONNECT_TIMEOUT: int = UPLOAD_BLOB_CONNECT_TIMEOUT_SECONDS
UPLOAD_BLOB_READ_TIMEOUT: int = UPLOAD_BLOB_READ_TIMEOUT_SECONDS
UPLOAD_BLOB_MAX_RETRIES: int = UPLOAD_BLOB_MAX_ATTEMPTS
UPLOAD_BLOB_RETRY_BACKOFF: int = UPLOAD_BLOB_RETRY_BACKOFF_BASE_SECONDS
UPLOAD_BLOB_RETRY_MAX_WAIT: int = UPLOAD_BLOB_RETRY_MAX_DELAY_SECONDS
UPLOAD_FAILED_FILE_MAX_RETRIES: int = UPLOAD_FAILED_FILE_MAX_RETRY_ROUNDS
UPLOAD_BLOB_TIMEOUT: tuple[int, int] = (
    UPLOAD_BLOB_CONNECT_TIMEOUT_SECONDS,
    UPLOAD_BLOB_READ_TIMEOUT_SECONDS,
)
UPLOAD_RETRY_ALLOWED_METHODS: frozenset[str] = UPLOAD_HTTP_RETRY_ALLOWED_METHODS
UPLOAD_MAX_FILE_SIZE: int = UPLOAD_MAX_FILE_SIZE_BYTES
UPLOAD_MAX_FILE_COUNT: int = _UPLOAD_MAX_FILE_COUNT
UPLOAD_SIZE_THRESHOLD_TO_ENFORCE_LFS: int = UPLOAD_LFS_FORCE_THRESHOLD_BYTES
UPLOAD_LFS_THRESHOLD: int = _UPLOAD_LFS_THRESHOLD
UPLOAD_MAX_FILE_COUNT_IN_DIR: int = UPLOAD_MAX_FILES_PER_DIRECTORY
UPLOAD_NORMAL_FILE_SIZE_TOTAL_LIMIT: int = UPLOAD_NORMAL_FILES_TOTAL_SIZE_BYTES
UPLOAD_COMMIT_BATCH_SIZE: int = UPLOAD_COMMIT_BATCH_MAX_OPERATIONS
UPLOAD_VALIDATE_BLOB_BATCH_SIZE: int = UPLOAD_BLOB_VALIDATION_BATCH_MAX_OBJECTS
UPLOAD_ADAPTIVE_BATCH_SIZE: bool = UPLOAD_ADAPTIVE_BATCHING_ENABLED
UPLOAD_REACT_ENABLED: bool = UPLOAD_RECOVERY_ENABLED
UPLOAD_REACT_ROUND2_BASE_DELAY: int = UPLOAD_RECOVERY_SERIAL_BACKOFF_BASE_SECONDS
UPLOAD_REACT_ROUND3_FILE_DELAY: int = UPLOAD_RECOVERY_SINGLE_FILE_DELAY_SECONDS
UPLOAD_REACT_BACKOFF_MAX_EXPONENT: int = UPLOAD_RECOVERY_BACKOFF_MAX_EXPONENT
UPLOAD_REACT_MAX_DELAY: int = UPLOAD_RECOVERY_MAX_DELAY_SECONDS
UPLOAD_BLOB_TQDM_DISABLE_THRESHOLD: int = UPLOAD_BLOB_PROGRESS_THRESHOLD_BYTES
UPLOAD_USE_CACHE: bool = UPLOAD_CACHE_ENABLED

# Visibility integer constants matching the old SDK
ModelVisibility_PUBLIC: int = int(Visibility.PUBLIC)
ModelVisibility_PRIVATE: int = int(Visibility.PRIVATE)
ModelVisibility_INTERNAL: int = int(Visibility.INTERNAL)

# Env var name constants (old SDK imports these as string constants)
MODELSCOPE_DOMAIN: str = "MODELSCOPE_DOMAIN"
MODELSCOPE_PREFER_AI_SITE: str = "MODELSCOPE_PREFER_AI_SITE"

# API response field names
FILE_HASH: str = "Sha256"

# Download temp folder name
TEMPORARY_FOLDER_NAME: str = "._____temp"
