Initial commit: add config_manager module with ConfigParameter and ConfigManager
This commit is contained in:
172
doc/src.utils.config_manager.md
Normal file
172
doc/src.utils.config_manager.md
Normal file
@@ -0,0 +1,172 @@
|
||||
# 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 # переменная окружения
|
||||
```
|
||||
Reference in New Issue
Block a user