Содержание

Общее

В качестве формата конфигурационных файлов принят toml. Разбор конфигурации построен на 2-х объектах:

get_value()

Получить значение параметра из файла.

obj.get_value(name, [val_type], [default], [mandatory])

Возвращает: Значение параметра, приведённое к заданному типу.

Параметр Тип параметра Значение по умолчанию Описание
name str Имя параметра, каким оно задано в файле конфигурации
val_type Тип аргумента str Тип значения. Может быть любым идентификатором типа python, через которое можно вызвать преобразование в данный тип ( type(param)) либо адаптер типа данной библиотеки
default Any None Значение по умолчанию для параметра. Тип его не проверяется на соответствие заданному в параметрах.
mandatory bool True Является ли значение обязательным? Если да, то при отсутствии значения по умолчанию и самого значения в файле, будет возбуждено исключение. В противном случае метод тихо вернёт None

Пример использования дан выше.

get_section()

Погрузиться на уровень ниже по словарю конфигурации.

Это позволяет выполнить чтение подуровней конфигурационного файла относительно текущего.

obj.get_section(name, [mandatory])

Возвращает: Объект ConfigFileContent содержимого нижележашего уровня.

Параметр Тип Описание
name str Имя секции, как оно задано в файле
mandatory bool Является ли секция обязательной. Если да, и она отсутствует, то возбуждается исключение ConfigSectionNotFound. В противном случае возвращается пустая секция, не содержащая параметров. По умолчанию True

Для работы с секциями можно применять менеджер контекста. Например для файла с содержимым:

[section]
param1 = "value1"

Можно применить следующий код:

with ConfigFile('/etc/application.conf') as root_section:
    with root_section.get_section('section') as section_section:
        param1 = section_section.get_value('parma1')

get_list_section()

Подобен get_section(), но ожидает увидеть либо словарь, либо список словарей.

obj.get_list_section(name, [mandatory])

Возвращает: Массив объектов ConfigFileContent содержимого нижележащего уровня.

Параметр Тип Описание
name str Имя секции, как оно задано в файле
mandatory bool Является ли секция обязательной. Если да, и она отсутствует, то возбуждается исключение ConfigSectionNotFound. В противном случае возвращается пустая секция, не содержащая параметров. По умолчанию True

Для работы с секциями можно применять менеджер контекста. Например для файла с содержимым:

[[section]]
param = "value1"
 
[[section]]
param = "value2"

Можно применить следующий код:

with ConfigFile('/etc/application.conf') as root_section:
    with root_sectin.get_list_section('section') as section_section:
        conf_ar = []
        for el in net_section:
            conf_ar.append(dict(
                param1 = el.get_value('parma1')
            ))
 

get_section_by_path()

Подобен get_section(), но позволяет пройти по иерархии дальше чем на один уровень. Каждый уровень указывается отдельным параметром

obj.get_section_by_path(name, ..., [mandatory=False])

Возвращает: Объект ConfigFileContent содержимого нижележашего уровня.

Параметр Тип Описание
name str Имя секции, как оно задано в файле. Параметр можно задавать несколько раз
mandatory bool Является ли секция обязательной. Если да, и она отсутствует, то возбуждается исключение ConfigSectionNotFound. В противном случае возвращается пустая секция, не содержащая параметров. По умолчанию True. Задаётся ТОЛЬКО в формате ключ-значение

Для работы с секциями можно применять менеджер контекста. Например для файла с содержимым:

[section.section2]
param1 = "value1"

Можно применить следующий код:

with ConfigFile('/etc/application.conf') as root_section:
    with root_section.get_section_by_path('section', 'section2') as section_section:
        param1 = section_section.get_value('parma1')