6.9 KiB
6.9 KiB
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, ROOT_KEY
| Константа | Значение | Описание |
|---|---|---|
DEFAULT_CONFIG_FILE |
"config/global.yaml" |
Путь к файлу конфигурации |
DEFAULT_CONFIG_ENV |
"KOMAI_CONFIG_FILE" |
Переменная окружения для переопределения пути |
DEFAULT_CATEGORY |
"global" |
Категория по умолчанию |
ROOT_KEY |
"$root$" |
Ключ для корневого значения во вложенных структурах |
Регистрация параметров
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") # категория по умолчанию (global)
value = config.get("param_name", cat="app") # категория app
# Получить по полному ключу (без подстановки категории)
value = config.getraw("app.param_name")
# Получить описание параметра
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.setraw("app.param_name", "new_value")
Вложенные параметры
Параметры с точками в имени создают вложенные структуры:
config.register(name="coder", val="llama-coder", cat="models")
config.register(name="coder.thinking", val="full", cat="models")
config.register(name="coder.temperature", val="0.3", cat="models")
config.register(name="chatter", val="gemmini", cat="models")
config.register(name="chatter.thinking", val="none", cat="models")
config.register(name="chatter.temperature", val="0.9", cat="models")
# Получить корневое значение
config.get("coder", cat="models") # "llama-coder"
# Получить все параметры группы с корневым значением
config.getall("coder", cat="models")
# {"$root$": "llama-coder", "thinking": "full", "temperature": "0.3"}
# Получить все параметры категории в виде вложенного dict
config.getrawall("models")
# {"coder": {"$root$": "llama-coder", "thinking": "full", "temperature": "0.3"},
# "chatter": {"$root$": "gemmini", "thinking": "none", "temperature": "0.9"}}
Сохранение и загрузка
# Сохранить конфигурацию в файл
config.save() # использовать путь по умолчанию
config.save("/path/to/config.yaml") # сохранить в указанный файл
# Загрузить конфигурацию из файла
config.load() # использовать путь по умолчанию
config.load("/path/to/config.yaml") # загрузить из указанного файла
# Сбросить конфигурацию
config.reset() # очищает все параметры и перезагружает
Валидация
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") # Ошибка валидации, значение не меняется
Примеры
Базовое использование
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"
Переопределение через 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 # переменная окружения