Files
komAI/doc/src.utils.config_manager.md

5.4 KiB
Raw Blame History

ConfigManager

Управление конфигурацией с регистрацией параметров и описаний.

Установка

import src.utils.config_manager
config = src.utils.config_manager.config

Быстрый старт

import src.utils.config_manager
config = src.utils.config_manager.config

# Регистрация параметра
config.register(name="app_name", val="komAI", desc="Наименование проекта", cat="app")

# Получение значения
name = config.get("app_name", cat="app")

# Изменение значения
config.set("app_name", "NewName", cat="app")

# Сохранение в файл
config.save()

# Сброс и перезагрузка
config.reset()

Константы

from src.utils.config_manager import DEFAULT_CONFIG_FILE, DEFAULT_CONFIG_ENV, DEFAULT_CATEGORY
Константа Значение Описание
DEFAULT_CONFIG_FILE "config/global.yaml" Путь к файлу конфигурации
DEFAULT_CONFIG_ENV "KOMAI_CONFIG_FILE" Переменная окружения для переопределения пути
DEFAULT_CATEGORY "global" Категория по умолчанию

Регистрация параметров

config.register(
    name="param_name",      # Имя параметра (обязательно)
    val="value",           # Текущее значение (обязательно)
    default="def_value",   # Значение по умолчанию
    desc="Description",    # Описание параметра
    cat="category",        # Категория (по умолчанию "global")
    env="ENV_VAR",         # Переменная окружения
    validator=int           # Функция валидации
)

Категории

Рекомендуемые категории:

  • app - параметры приложения
  • logging - параметры логирования
  • global - общие параметры (по умолчанию)

Получение значений

# Получить значение параметра
value = config.get("param_name")  # категория по умолчанию
value = config.get("param_name", cat="app")  # категория app

# Получить описание параметра
desc = config.get_description("param_name", cat="app")

# Получить объект ConfigParameter
param = config.get_parameter("param_name", cat="app")

Изменение значений

# Изменить значение параметра
config.set("param_name", "new_value", cat="app")

Сохранение и загрузка

# Сохранить конфигурацию в файл
config.save()                           # использовать путь по умолчанию
config.save("/path/to/config.yaml")      # сохранить в указанный файл

# Загрузить конфигурацию из файла
config.load()                           # использовать путь по умолчанию
config.load("/path/to/config.yaml")     # загрузить из указанного файла

# Сбросить конфигурацию
config.reset()                          # очищает все параметры и перезагружает

Примеры

Базовое использование

import src.utils.config_manager
config = src.utils.config_manager.config

# Регистрация параметра приложения
config.register(
    name="name",
    val="komAI",
    default="MyApp",
    desc="Наименование проекта",
    cat="app"
)

# Получение значения
print(config.get("name", cat="app"))  # "komAI"

С валидатором

def validate_level(old_val, new_val):
    valid_levels = ["DEBUG", "INFO", "WARNING", "ERROR"]
    if new_val not in valid_levels:
        raise ValueError(f"Invalid level: {new_val}")

config.register(
    name="level",
    val="INFO",
    default="INFO",
    desc="Уровень логирования",
    cat="logging",
    validator=validate_level
)

# При изменении значения вызывается валидатор
config.set("level", "DEBUG")  # OK
config.set("level", "INVALID")  # Ошибка валидации, значение не меняется

Переопределение через env

# Установить путь через переменную окружения
# export KOMAI_CONFIG_FILE=/path/to/config.yaml

config.load()  # автоматически использует KOMAI_CONFIG_FILE

Работа с ConfigParameter

param = config.get_parameter("name", cat="app")

# Конвертация значений
param.as_int()      # в целое число
param.as_bool()     # в boolean
param.as_str()      # в строку

# Доступ к свойствам
param.name          # имя параметра
param.val           # текущее значение
param.default       # значение по умолчанию
param.desc          # описание
param.cat           # категория
param.env           # переменная окружения