Spaces:
Sleeping
Sleeping
| """Environment configuration management.""" | |
| from __future__ import annotations | |
| import logging | |
| from app.config import EnvType, Settings, get_settings, update_settings | |
| from app.executor import reset_executor | |
| from app.models import EnvironmentConfig | |
| from app.package_manager import reset_package_manager | |
| logger = logging.getLogger(__name__) | |
| def get_environment_config() -> EnvironmentConfig: | |
| """Get the current environment configuration.""" | |
| settings = get_settings() | |
| return EnvironmentConfig( | |
| env_type=settings.env_type.value, | |
| conda_env_name=settings.conda_env_name, | |
| venv_path=settings.venv_path, | |
| uv_venv_path=settings.uv_venv_path, | |
| python_executable=settings.get_python_executable(), | |
| code_storage_dir=settings.code_storage_dir, | |
| ) | |
| def configure_environment( | |
| env_type: str, | |
| conda_name: str | None = None, | |
| venv_path: str | None = None, | |
| uv_venv_path: str | None = None, | |
| ) -> EnvironmentConfig: | |
| """Dynamically update the environment configuration.""" | |
| update_kwargs = {"env_type": EnvType(env_type)} | |
| if env_type == "conda": | |
| if not conda_name: | |
| raise ValueError("conda_name is required for conda environment type") | |
| update_kwargs["conda_env_name"] = conda_name | |
| elif env_type == "venv": | |
| if not venv_path: | |
| raise ValueError("venv_path is required for venv environment type") | |
| update_kwargs["venv_path"] = venv_path | |
| elif env_type == "venv-uv": | |
| if not uv_venv_path: | |
| raise ValueError("uv_venv_path is required for venv-uv environment type") | |
| update_kwargs["uv_venv_path"] = uv_venv_path | |
| else: | |
| raise ValueError(f"Invalid environment type: {env_type}") | |
| new_settings = update_settings(**update_kwargs) | |
| # Reset executor and package manager with new settings | |
| reset_executor(new_settings) | |
| reset_package_manager(new_settings) | |
| logger.info("Environment reconfigured to: %s", env_type) | |
| return get_environment_config() |