Углубленное использование

Конфигурация ВСПТД-параметров

Есть возможность создавать собственные конфигурации ВСПТД-параметров для дальнейшего их применения. Конфигурация влияет на строковое представление ВСПТД-структур, валидацию параметров, а также разбор строк на ВСПТД-структуры. Настройка конфигурации производится с помощью класса vsptd.VSPTDSettings.

Описание API

vsptd.vsptd.VSPTDSettings

Создание конфигурации

Примечание

Инициализация конфигурации производится со стандартными настройками. Соответственно все классы (например, vsptd.vsptd.Trp) также инициализируются со стандартными настройками.

Значения параметров по умолчанию можно изучить в описании API класса.

>>> my_settings = VSPTDSettings()

Изменение параметров

>>> my_settings.trp_start = '~'
>>> my_settings.prefix_min = 5
>>> my_settings.prefix_max = 100
>>> my_settings.prefix_regexp = '.*'

Применение конфигурации

>>> Trp.settings = my_settings
>>> TrpStr.settings = my_settings
>>> TrpExpr.settings = my_settings

Предупреждение

Применить настройки можно и к экземплярам классов, делать однако так не надо.

Работа с исключениями

Исключения, выбрасываемые модулями, содержат подробную информацию о возникших ошибках.

Любое исключение содержит в себе два параметра:

  1. описание ошибки;
  2. объект (или объекты в tuple), который привёл к возникновению ошибки.

Обработать исключение и получить из него параметры можно следующим образом:

>>> try:
...     Trp('A', 'B', {'z': 0})
... except TypeError as e:
...     print(e.args)
...     print(e.args[0])  # описание ошибки
...     print(e.args[1])  # объект, который привёл к возникновению ошибки
('Значение должно быть str, int, float, bool, Trp, TrpExpr, не dict', {'z': 0})
Значение должно быть str, int, float, bool, Trp, TrpExpr, не dict
{'z': 0}

Использование других типов данных в качестве значения триплета

Можно использовать и типы данных, что не поддерживаются в библиотеке в качестве значения триплета (например, триплетная строка). Для этого их нужно просто представлять в виде строки.

>>> Trp('A', 'B', str([1, 2, 3]))
$A.B='[1, 2, 3]';