/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
src/liquidcode/application/config_loader.py
74 строки
3 KB
User
0.4.19 - refactor: удалить прокси-методы _load_middleware_* в app.py (T-002)
07 июл 2026, 22:22
07 июл 2026, 22:22
9d1cf79
Код
Авторство
О чём код?
import logging import os from typing import Any from ..config import load_config, ConfigError from ..template import TemplateManager from .middleware_loader import load_middleware_from_config logger = logging.getLogger(__name__) def load_config_to_app(app, file_path: str) -> None: """Загружает конфигурацию и применяет к приложению.""" if app._config_loaded: logger.warning("Конфиг уже загружен. Повторная загрузка пропущена.") return try: config = load_config(file_path) except ConfigError as e: error_type = getattr(e, 'error_type', None) if error_type == ConfigError.FILE_NOT_FOUND: logger.warning(f"Конфигурационный файл не найден: {file_path}. Используются настройки по умолчанию.") return elif error_type == ConfigError.PERMISSION_DENIED: logger.error(f"Нет прав доступа к конфигурационному файлу: {file_path}") logger.error("Пожалуйста, проверьте права доступа к файлу и директории.") else: logger.error(f"Ошибка загрузки конфига: {e}") return config = interpolate_config(config) params = config.get('parameters', {}) if 'host' in params: app.host = params['host'] if 'port' in params: app.port = int(params['port']) if 'static_prefix' in params: app._static_prefix = params['static_prefix'] if 'static_dir' in params: app._static_dir = params['static_dir'] if not os.path.exists(app._static_dir): logger.warning(f"Директория статики '{app._static_dir}' не существует.") if 'template_dir' in params: app._template_dir = params['template_dir'] app.template_manager = TemplateManager(app._template_dir) app.container.set(TemplateManager, app.template_manager) if not os.path.exists(app._template_dir): logger.warning(f"Директория шаблонов '{app._template_dir}' не существует.") if 'debug' in params: app._debug = bool(params['debug']) if 'websocket_port' in params: app._websocket_port = int(params['websocket_port']) if 'middleware_config' in params: app.load_middleware_config(params['middleware_config']) elif 'middleware' in config: load_middleware_from_config(app, config['middleware']) app._config_loaded = True logger.info(f"Конфиг загружен из {file_path}") def interpolate_config(value: Any) -> Any: """Рекурсивно подставляет переменные окружения в значения.""" if isinstance(value, dict): return {k: interpolate_config(v) for k, v in value.items()} elif isinstance(value, list): return [interpolate_config(v) for v in value] elif isinstance(value, str): return os.path.expandvars(value) else: return value