# ConfigManager Управление конфигурацией с регистрацией параметров и описаний. ## Описание ### Класс ConfigParameter Базовый класс для описания параметра name: Имя параметра val: Значение def: Значение по умолчанию desc: Описание параметра (не обязательно) cat: Категория параметра (не обязательно, по умолчанию 'global') env: Имя переменной окружения (не обязательно) validator: Функция проверки допустимости параметра (если не используется, то значение -- строка. не обязательно) Параметры хранятся к конфиге так: ```config #$description #$category.$name: $value $category.$name: $value ``` например: ```config #Наименование проекта #global.name: "komAI" global.name: "SuperAPP" ``` Пример использования параметра: ```python param1 = ConfigParameter(cat="global", name="name", val="komAI", desc="Наименование проекта", def="SuppaPuppa") #name:name value:Наименование проекта print(f"name:{param1.name} value:{param1.desc}") #name.as_int:0 print(f"{param1.name}.as_int:{param1.as_int()}") ##Наименование проекта\n#global.name: "SuppaPuppa"\nglobal.name: "komAI" print(param1) ``` ### Класс ConfigManager - Базовый класс для работы с параметрами - Параметры хранятся текстовом конфиге (например в `config/global.yaml`) - Файл можно переопределить из командной строки (например `--config ~/myApp/config/app.yaml`) - Файл можно переопределить через переменную окружения `$projectname_CONFIG=~/superApp/config.yaml` - Приоритет определения параметров (от высшего к низшему): коммандная строка --> переменные окружения --> файл ~/.ENV - Для ConfigManager значение файла конфигурации по умолчанию задано в тексте конcтантой. Например: ```python config_file_default = "config/global.yaml" config_env_default = "KOMAI_CONFIG_FILE" ``` - Регистрация и инициализация класса должна быть глобальная Пример использования: ```python from src.utils.config_manager.config_manager import get_config config = get_config() config.register(cat="global", name="app.name", val="komAI", desc="Наименование проекта") #если не задана cat, использовать значение по умолчанию #данный вызов вернёт значение параметра 'global.app.name' value = config.get("app.name") #данный вызов вернёт значение описания параметра 'global.app.name' desc = config.get_description("app.name", cat="global") ``` ## Глобальный доступ `get_config()` - возвращает singleton ConfigManager ## Регистрация параметров модулями Каждый модуль регистрирует свои параметры при инициализации: ```python config.register(name="level", val="INFO", desc="Уровень логирования", cat="logging") ``` ## Категории Возможные категории параметров - `app` - приложение - `logging` - логирование - `global` - общие