====== Ресурсы ====== * [[https://repo.devel.a0fs.ru/py.lib.aw_config/|Исходный код]] * [[https://py-repo.devel.a0fs.ru/|Дистрибутивы]] ====== Разделы ====== * [[.:obj|Объекты]] * [[.:func|Функции]] * [[.:except|Исключения]] * [[.:type_helper|Адаптеры типов]] ====== Работа с файлом конфигурации ====== Конструктор объекта ''ConfigFile'' принимает путь к файлу конфигурации. Путь задаётся строкой и может быть относительным. conf_file = ConfigFile('/etc/application.conf') Далее объект ''ConfigFileContent'' можно получить либо вызвав метод ''get()'', либо, что более предпочтительно, воспользовавшись менеджером контекста: with ConfigFile(config_file) as root_section: port = root_section.get_value('port', int, 8080) Особенно хорошо и лаконично получается при использовании хранилища конфигураций: with ConfigFile('/etc/application.conf') as root_section: add_config(NetConfig, NetConfig( port=root_section.get_value('port', int, 8080), baseurl=root_section.get_value('baseurl', str) )) Для работы с разделами и подразделами конфигурации можно получать доступ к вложенным словарям: with ConfigFile('/etc/application.conf') as root_section: with root_sectin.get_section('net') as net_section: add_config(NetConfig, NetConfig( port=net_section.get_value('port', int, 8080), baseurl=net_section.get_value('baseurl', str) )) Вложенность не ограничивается. Для работы с списками секций, когда формат конфигурации следующий: [[net]] name = "a" ip = "192.168.0.0/24" [[net]] name = "b" ip = "192.168.1.0/24" Используется метод ''get_list_section()'' with ConfigFile('/etc/application.conf') as root_section: conf_ar = [] for net_section in root_sectin.get_list_section('net'): conf_ar.append(NetConfig( name=net_section.get_value('name'), ip=net_section.get_value('ip') )) add_config(NetConfig, conf_ar) Кроме массива можно строить словарь, если выделить некий ключевой элемент в конфигурации with ConfigFile('/etc/application.conf') as root_section: conf_ar = {} for net_section in root_sectin.get_list_section('net'): _name = net_section.get_value('name') conf_ar[_name] = NetConfig( name=_name, ip=net_section.get_value('ip') ) add_config(NetConfig, conf_ar) Иной работы объекты класса ''ConfigFile'' не делают. ===== Работа с параметрами конфигурации ===== Как известно, файлы конфигурации в формате ''toml'' легко можно представить в виде словаря Python (либо JSON-объекта). Для работы с одним уровнем данного словаря и создан класс ''ConfigFileContent''. Он даёт API работы с параметрами на данном текущем уровне.