Spaces:
Paused
Paused
| import os | |
| from enum import Enum | |
| from loguru import logger | |
| from pydantic import BaseModel | |
| from pydantic_settings import BaseSettings, SettingsConfigDict | |
| DOCKER_SECRETS_DIR = '/run/secrets' | |
| class QdrantMode(str, Enum): | |
| SERVER = 'server' | |
| LOCAL = 'local' | |
| MEMORY = 'memory' | |
| class QdrantSettings(BaseModel): | |
| mode: QdrantMode = QdrantMode.SERVER | |
| host: str = 'localhost' | |
| port: int = 6333 | |
| grpc_port: int = 6334 | |
| coll: str = 'NekoImg' | |
| prefer_grpc: bool = True | |
| api_key: str | None = None | |
| local_path: str = './images_metadata' | |
| class ModelsSettings(BaseModel): | |
| clip: str = 'openai/clip-vit-large-patch14' | |
| bert: str = 'bert-base-chinese' | |
| easypaddleocr: str | None = None | |
| class OCRSearchSettings(BaseModel): | |
| enable: bool = True | |
| ocr_module: str = 'easypaddleocr' | |
| ocr_language: list[str] = ['ch_sim', 'en'] | |
| ocr_min_confidence: float = 1e-2 | |
| class S3StorageSettings(BaseModel): | |
| path: str = "./static" | |
| bucket: str | None = None | |
| region: str | None = None | |
| endpoint_url: str | None = None | |
| access_key_id: str | None = None | |
| secret_access_key: str | None = None | |
| session_token: str | None = None | |
| class LocalStorageSettings(BaseModel): | |
| path: str = './static' | |
| class StorageMode(str, Enum): | |
| LOCAL = 'local' | |
| S3 = 's3' | |
| DISABLED = 'disabled' | |
| def enabled(self): | |
| return self != StorageMode.DISABLED | |
| class StorageSettings(BaseModel): | |
| method: StorageMode = StorageMode.LOCAL | |
| s3: S3StorageSettings = S3StorageSettings() | |
| local: LocalStorageSettings = LocalStorageSettings() | |
| # [Deprecated] | |
| class StaticFileSettings(BaseModel): | |
| path: str = '[DEPRECATED]' | |
| enable: bool = True # Deprecated | |
| class Config(BaseSettings): | |
| qdrant: QdrantSettings = QdrantSettings() | |
| model: ModelsSettings = ModelsSettings() | |
| ocr_search: OCRSearchSettings = OCRSearchSettings() | |
| static_file: StaticFileSettings = StaticFileSettings() # [Deprecated] | |
| storage: StorageSettings = StorageSettings() | |
| device: str = 'auto' | |
| cors_origins: set[str] = {'*'} | |
| admin_api_enable: bool = False | |
| admin_token: str = '' | |
| admin_index_queue_max_length: int = 200 | |
| access_protected: bool = False | |
| access_token: str = '' | |
| model_config = SettingsConfigDict(env_prefix="app_", env_nested_delimiter='__', | |
| env_file=('config/default.env', 'config/local.env'), | |
| env_file_encoding='utf-8', | |
| secrets_dir=DOCKER_SECRETS_DIR if os.path.exists( | |
| DOCKER_SECRETS_DIR) else None) # for docker secret | |
| class Environment(BaseModel): | |
| local_indexing: bool = False | |
| def _check_deprecated_settings(_config): | |
| if _config.static_file.path != '[DEPRECATED]': | |
| logger.warning("Config StaticFileSettings is deprecated and should not be set.") | |
| config = Config() | |
| environment = Environment() | |
| _check_deprecated_settings(config) | |