Source code for air_sdk.const
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: MIT
"""
Constants shared throughout the SDK.
"""
from datetime import timedelta
from enum import Enum
from urllib.parse import urlparse
DEFAULT_CONNECT_TIMEOUT = timedelta(seconds=16)
DEFAULT_READ_TIMEOUT = timedelta(seconds=61)
DEFAULT_PAGINATION_PAGE_SIZE = 200 # Objects per paginated response
# Request retry configuration
DEFAULT_RETRY_ATTEMPTS: int = 5
DEFAULT_RETRY_BACKOFF_FACTOR: float = 1.0
DEFAULT_RETRY_BACKOFF_JITTER: float = 1.0
# Image upload configuration
# Multipart upload chunk size (~100MB for balance of speed/reliability)
MULTIPART_CHUNK_SIZE = 100 * 1000 * 1000 # 100 MB in bytes
# Minimum part size for S3 multipart (5 MiB, except for last part)
MULTIPART_MIN_PART_SIZE = 5 * 1024 * 1024 # 5 MiB in bytes
# Maximum recommended concurrent workers for multipart uploads
MAX_RECOMMENDED_UPLOAD_WORKERS = 10
# Default timeout per part upload
DEFAULT_UPLOAD_TIMEOUT = timedelta(minutes=5)
SCOPED_KEY_PREFIX = 'nvapi-stg-'
# TODO: change to production URL
AIR_API_URL = 'https://api.air.nvidia.com/api/'
NGC_API_BASE_URL = urlparse(
'https://api.stg.ngc.nvidia.com'
) # Will drop the stg eventually
NGC_DEVICE_LOGIN_URL = NGC_API_BASE_URL._replace(path='/device/login')
NGC_TOKEN_URL = NGC_API_BASE_URL._replace(path='/token')
NGC_SAK_DETAILS_URL = NGC_API_BASE_URL._replace(path='/v3/keys/get-caller-info')
NGC_ME_URL = NGC_API_BASE_URL._replace(path='/v2/users/me')