Files
komAI/src/utils/config_manager/README.md

3.8 KiB
Raw Blame History

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 - общие