3.8 KiB
3.8 KiB
ConfigManager
Управление конфигурацией с регистрацией параметров и описаний.
Описание
Класс ConfigParameter
Базовый класс для описания параметра
name: Имя параметра val: Значение def: Значение по умолчанию desc: Описание параметра (не обязательно) cat: Категория параметра (не обязательно, по умолчанию 'global') env: Имя переменной окружения (не обязательно) validator: Функция проверки допустимости параметра (если не используется, то значение -- строка. не обязательно)
Параметры хранятся к конфиге так:
#$description
#$category.$name: $value
$category.$name: $value
например:
#Наименование проекта
#global.name: "komAI"
global.name: "SuperAPP"
Пример использования параметра:
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тантой. Например:
config_file_default = "config/global.yaml" config_env_default = "KOMAI_CONFIG_FILE" - Регистрация и инициализация класса должна быть глобальная
Пример использования:
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
Регистрация параметров модулями
Каждый модуль регистрирует свои параметры при инициализации:
config.register(name="level", val="INFO", desc="Уровень логирования", cat="logging")
Категории
Возможные категории параметров
app- приложениеlogging- логированиеglobal- общие