""" Configuration module for voicebox backend. Handles data directory configuration for production bundling. """ import logging import os from pathlib import Path logger = logging.getLogger(__name__) # Allow users to override the HuggingFace model download directory. # Set VOICEBOX_MODELS_DIR to an absolute path before starting the server. # This sets HF_HUB_CACHE so all huggingface_hub downloads go to that path. _custom_models_dir = os.environ.get("VOICEBOX_MODELS_DIR") if _custom_models_dir: os.environ["HF_HUB_CACHE"] = _custom_models_dir logger.info("Model download path set to: %s", _custom_models_dir) # Default data directory (used in development) _data_dir = Path("data").resolve() def set_data_dir(path: str | Path): """ Set the data directory path. Args: path: Path to the data directory """ global _data_dir _data_dir = Path(path).resolve() _data_dir.mkdir(parents=True, exist_ok=True) logger.info("Data directory set to: %s", _data_dir) def get_data_dir() -> Path: """ Get the data directory path. Returns: Path to the data directory """ return _data_dir def get_db_path() -> Path: """Get database file path.""" return _data_dir / "voicebox.db" def get_profiles_dir() -> Path: """Get profiles directory path.""" path = _data_dir / "profiles" path.mkdir(parents=True, exist_ok=True) return path def get_generations_dir() -> Path: """Get generations directory path.""" path = _data_dir / "generations" path.mkdir(parents=True, exist_ok=True) return path def get_cache_dir() -> Path: """Get cache directory path.""" path = _data_dir / "cache" path.mkdir(parents=True, exist_ok=True) return path def get_models_dir() -> Path: """Get models directory path.""" path = _data_dir / "models" path.mkdir(parents=True, exist_ok=True) return path