Получение параметра из переменной окружения
Функция вычитывает из переменной окружения параметр, преобразовывает к нужному типу и возвращает.
get_env(name, type_name, [default], [mandatory])
| Параметр | Тип | Описание |
|---|---|---|
name | str | Имя переменной из которой получаем параметр |
type_name | type | Имя типа в который следует преобразовать данный параметр. В качестве типов можно использовать адаптеры типов |
default | Any | Значение по умолчанию для данного параметра, в случае его отсутствия в переменных окружения. По умолчанию None |
mandatory | bool | Обязательный параметр? Если параметр обязательный и в переменных окружения он отсутствует, а значение по умолчанию не заданно, то возникает исключение EnvConfigError |
Возвращаемое значение: Значение переменной окружения, приведённое к заданному типу, либо значение по умолчанию.
Внимание! Значение по умолчанию к заданному типу не приводится, а возвращается ровно в том виде, в котором было заданно при вызове функции
Функция определения абсолютного пути к имени директории, в которой расположено приложение.
Функция построена на логике, когда python-модуль приложения расположен в корне директории данного приложения. Возвращается самая первая директория, которая не содержит обязательный для всех модулей файл __init__.py. При наличии собственного стандарта размещения приложения в файловой системе, эту особенность нужно держать в голове.
get_app_root(file_name)
Возвращает: Полный путь к директории размещения модуля, файл которой дан в качестве аргумента
| Параметр | Значение |
|---|---|
file_name | Имя файла, составляющего модуль python |
Предлагаемое использование: в процессе разбора конфигураций вызов функции в форме:
APP_PATH = get_app_root(__file__)
Предполагается, что конфигурация приложения состоит из набора объектов (либо namedtuple либо dataclass) в которых собраны параметры необходимые для каждого из компонентов приложения. Для упрощения работы с ними, данные объекты могу быть сохранены на этапе разбора конфигурации и отданы на этапе работы модуля предоставленным Библиотекой API.
Не производится защиты конфиденциальных данных. Этот вопрос остаётся за программистом
В случае ошибок преобразования при работе функций модуля возникает исключение AppConfManagerError
Инициализировать Хранилище.
В рамках операции производится очистка хранилища. Данная операция должна быть выполнена перед использованием.
init_configs()
Добавление в хранилище объекта конфигурации.
При попытке повторной вставки элемента с имеющимся идентификатором, возникает исключение AppConfManagerError.
add_config(conf_selector, conf_obj)
| Параметр | Описание |
|---|---|
conf_selector | Элемент, с использованием которого можно получить данный конфигурационный объект в будущем. Здесь может использоваться всё, что пригодно для Python в качестве ключа словаря. Например: Объект типа класса данных (скажем если определено DBConfig = namedtuple(…), то этот самый DBConfig вполне подойдёт для идентификатора) |
conf_obj | Собственно объект конфигурации. Так же не накладывается ограничений на тип аргумента |
Пример:
add_config(NetConfig, NetConfig( port=root_section.get_value('port', int, 8080), baseurl=root_section.get_value('baseurl', str) )
Заменяет объект с заданным идентификатором в хранилище на новый, указанный в параметрах.
replace_config(conf_selector, conf_obj)
| Параметр | Описание |
|---|---|
conf_selector | Идентификатор объекта конфигурации. См. add_config |
conf_obj | Собственно объект конфигурации. См. add_config |
Получаем из хранилища добавленный ранее объект конфигурации по идентификатору.
Если объект не добавлен, возникает исключение AppConfNotFound
get_config(conf_selector)
| Параметр | Описание |
|---|---|
conf_selector | Идентификатор добавленного ранее объекта конфигурации |