173 lines
5.4 KiB
Markdown
173 lines
5.4 KiB
Markdown
# ConfigManager
|
||
|
||
Управление конфигурацией с регистрацией параметров и описаний.
|
||
|
||
## Установка
|
||
|
||
```python
|
||
import src.utils.config_manager
|
||
config = src.utils.config_manager.config
|
||
```
|
||
|
||
## Быстрый старт
|
||
|
||
```python
|
||
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()
|
||
```
|
||
|
||
## Константы
|
||
|
||
```python
|
||
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"` | Категория по умолчанию |
|
||
|
||
## Регистрация параметров
|
||
|
||
```python
|
||
config.register(
|
||
name="param_name", # Имя параметра (обязательно)
|
||
val="value", # Текущее значение (обязательно)
|
||
default="def_value", # Значение по умолчанию
|
||
desc="Description", # Описание параметра
|
||
cat="category", # Категория (по умолчанию "global")
|
||
env="ENV_VAR", # Переменная окружения
|
||
validator=int # Функция валидации
|
||
)
|
||
```
|
||
|
||
### Категории
|
||
|
||
Рекомендуемые категории:
|
||
- `app` - параметры приложения
|
||
- `logging` - параметры логирования
|
||
- `global` - общие параметры (по умолчанию)
|
||
|
||
## Получение значений
|
||
|
||
```python
|
||
# Получить значение параметра
|
||
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")
|
||
```
|
||
|
||
## Изменение значений
|
||
|
||
```python
|
||
# Изменить значение параметра
|
||
config.set("param_name", "new_value", cat="app")
|
||
```
|
||
|
||
## Сохранение и загрузка
|
||
|
||
```python
|
||
# Сохранить конфигурацию в файл
|
||
config.save() # использовать путь по умолчанию
|
||
config.save("/path/to/config.yaml") # сохранить в указанный файл
|
||
|
||
# Загрузить конфигурацию из файла
|
||
config.load() # использовать путь по умолчанию
|
||
config.load("/path/to/config.yaml") # загрузить из указанного файла
|
||
|
||
# Сбросить конфигурацию
|
||
config.reset() # очищает все параметры и перезагружает
|
||
```
|
||
|
||
## Примеры
|
||
|
||
### Базовое использование
|
||
|
||
```python
|
||
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"
|
||
```
|
||
|
||
### С валидатором
|
||
|
||
```python
|
||
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
|
||
|
||
```python
|
||
# Установить путь через переменную окружения
|
||
# export KOMAI_CONFIG_FILE=/path/to/config.yaml
|
||
|
||
config.load() # автоматически использует KOMAI_CONFIG_FILE
|
||
```
|
||
|
||
### Работа с ConfigParameter
|
||
|
||
```python
|
||
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 # переменная окружения
|
||
```
|