vsptd¶
Основная библиотека. Позволяет работать с триплетами, триплетными строками, триплетными выражениями (фрейм-формулами). Также содержит функционал для настройки параметров ВСПТД.
-
class
vsptd.vsptd.VSPTDSettings¶ Хранение настроек параметров ВСПТД-объектов и правил валидации строковых значений
Примечание
- Правила валидации значений представлены в виде регулярных выражений (RegExp).
- Подразумевается, что типы данных для параметров триплета не будут изменяться.
Пример работы: >>> my_settings = VSPTDSettings() >>> my_settings.prefix_min = 5 >>> my_settings.prefix_max = 100 >>> my_settings.prefix_regexp = '.*' >>> my_settings.trp_start = '~' >>> Trp.settings = my_settings # применение настроек к классу триплета
-
bid= ':'¶ Заявка. См. описание ВСПТД
-
trp_start= '$'¶ Начало триплета
-
trp_pn_sprtr= '.'¶ Разделитель префикса и имени триплета
-
trp_nv_sprtr= '='¶ Разделитель имени и значения триплета
-
trp_end= ';'¶ Конец триплета
-
trp_val_str_isltr= "'"¶ Обособление значения-строки триплета
-
trp_comment_isltr= '"'¶ Обособление комментария триплета
-
trp_expr_items_sprtr= ''¶ Разделитель операторов и операндов в триплетном выражении
TrpExp
-
prefix_min= 1¶ Мин. длина префикса триплета
-
prefix_max= 32¶ Макс. длина префикса триплета
-
prefix_regexp= '[A-Z]+\\d*'¶ Формат префикса триплета (RegExp)
-
prefix_types= (<class 'str'>,)¶ Типы данных префикса триплета
-
name_min= 1¶ Мин. длина имени триплета
-
name_max= 32¶ Макс. длина имени триплета
-
name_regexp= '[A-Z]+'¶ Формат имени триплета (RegExp)
-
name_types= (<class 'str'>,)¶ Типы данных имени триплета
-
value_str_min= 0¶ Мин. длина значения-строки триплета
-
value_str_max= 256¶ Макс. длина значения-строки триплета
-
value_str_regexp= None¶ Формат значения-строки триплета (RegExp)
-
value_types= (<class 'str'>, <class 'int'>, <class 'float'>, <class 'vsptd.vsptd.Trp'>, <class 'vsptd.vsptd.TrpExpr'>)¶ Типы данных значения триплета
-
comment_min= 0¶ Мин. длина комментария триплета
-
comment_max= 256¶ Макс. длина комментария триплета
-
comment_regexp= None¶ Формат комментария триплета (RegExp)
-
comment_types= (<class 'str'>,)¶ Типы данных комментария триплета
-
validate(prefix=None, name=None, value=None, comment=None) → None¶ Проверяет корректность параметра триплета. В случае ошибки вызывает исключение
Примечание
Проверить можно лишь один параметр за раз. Необходимо всегда указывать имя параметра функции.
Параметры: - prefix – префикс триплета
- name – имя триплета
- value – значение триплета
- comment – комментарий триплета
-
to_dict() → dict¶ Возвращает настройки ВСПТД в виде словаря
-
from_dict(settings: dict) → None¶ Обновляет настройки ВСПТД из переданных в словаре
Предупреждение
Валидация настроек не проводится.
Параметры: settings (dict) – настройки
-
class
vsptd.vsptd.Trp(prefix: str, name=None, value=None, comment=None, bid=False, special=False)¶ Триплет
Примечание
при создании триплета и изменении его значений производится валидация, в результате чего могут вызваны различные исключения. См. дополнительно в спецификации ВСПТД требования к параметрам триплета, а также стандартную конфигурацию ВСПТД-параметров в описании API класса
VSPTDSettings.свойства
prefixиnameнедоступны для изменения после создания триплета;если не указано значение триплета, то созданный триплет может использоваться как триплет-цель в значении другого триплета или в триплетном выражении
TrpExpr:>>> print(Trp('A', 'B', Trp('C', 'D'))) $A.B=$C.D;
свойство
specialотвечает за “особенность” триплета, что проявляется отсутствием символа начала триплета в строковом представлении, а также приобретаемым дополнительным смыслом в контексте решаемой задачи:>>> print(Trp('A', 'B', special=True)) A.B
имени или комментарию, равным пустой строке, будет присвоено значение None
Параметры: Исключение: - TypeError – если параметры не соответствующих типов
- ValueError – если параметры не удовлетворяют соответствующим требованиям
- ValueError – при попытке использовать в качестве значения триплет, не являющийся триплетом-целью
- AttributeError – при попытке изменить свойства prefix и name
Пример работы: >>> Trp('A', 'B', 'C') Trp(prefix='A', name='B', value='C')
-
settings= <VSPTDSettings>¶ Свойство класса. Настройки конфигурации ВСПТД
VSPTDSettings; по умолчанию используются стандартные
-
prefix¶ Префикс триплета
-
name¶ Имя триплета
-
value¶ Значение триплета
-
comment¶ Комментарий триплета
-
bid¶ Заявка
-
special¶ “Особенность” триплета
-
class
vsptd.vsptd.TrpStr(*trps)¶ Триплетная строка
Примечание
Триплетная строка упорядочена. Новые триплеты добавляются в конец, старые обновляются и сохраняют свои позиции.
Параметры: *trps – триплеты
TrpИсключение: TypeError – если параметры не
TrpПример работы: >>> TrpStr(Trp('A', 'B', 'C')) TrpStr(Trp(prefix='A', name='B', value='C'))
-
settings= <VSPTDSettings>¶ Свойство класса. Настройки конфигурации ВСПТД
VSPTDSettings; по умолчанию используются стандартные
-
add(other) → None¶ Добавляет в триплетную строку переданный триплет или триплеты переданной триплетной строки
Практически эквивалентно сложению через оператор “+”. Отличие в том, что данный метод не возвращает новый экземпляр, а изменяет нынешний.
Параметры: Исключение: Пример работы: >>> my_trp_str = TrpStr(Trp('A', 'B', 'C')) >>> my_trp_str.add(Trp('D', 'E', 'F'))
-
index(trp) → int¶ Возвращает позицию триплета в триплетной строке
Параметры: trp (Trp) – триплет
Тип результата: int
Исключение: - TypeError – Если принят не Trp
- ValueError – Если триплет не найден в триплетной строке
-
get(prefix: str, name)¶ Возвращает из триплетной строки триплет по заданным префиксу и имени
Эквивалентно
<TrpStr>[prefix, name]Параметры: - prefix (str) – префикс
- name (str) – имя
Тип результата: Исключение: - TypeError – если префикс/имя не является
str - ValueError – если префикс/имя не удовлетворяет соответствующим требованиям
- KeyError – если по заданным префиксу и имени триплет не найден
-
getpr(prefix: str, strict=True)¶ Возвращает из триплетной строки триплеты по заданному префиксу
Эквивалентно
<TrpStr>[prefix]Параметры: - prefix (str) – префикс
- strict (bool) – использовать строгий поиск (не включает префиксы вида E, E1, E2 и т.д.), True по умолчанию
Тип результата: Исключение: - TypeError – если префикс не является
str - ValueError – префикс не удовлетворяет соответствующим требованиям
- KeyError – если по заданному префиксу триплетов не найдено
-
rem(prefix: str, name) → None¶ Удаляет из триплетной строки триплет по заданным префиксу и имени
Эквивалентно
del <TrpStr>[prefix, name]Параметры: - prefix (str) – префикс
- name (str) – имя параметра
Исключение: - TypeError – если префикс/имя не является
str - ValueError – если префикс/имя не удовлетворяет соответствующим требованиям
- KeyError – если по заданным префиксу и имени триплет не найден
-
rempr(prefix: str, strict=True) → None¶ Удаляет из триплетной строки все триплеты по заданному префиксу
Эквивалентно
del <TrpStr>[prefix]Параметры: - prefix (str) – префикс
- strict (bool) – использовать строгий поиск (не включает префиксы вида E, E1, E2 и т.д.), True по умолчанию
Исключение: - TypeError – если префикс не является
str - ValueError – префикс не удовлетворяет соответствующим требованиям
- KeyError – если по заданному префиксу триплетов не найдено
-
sort() → None¶ Сортирует триплетную строку в лексиграфическом порядке по префиксу и имени триплетов
-
-
class
vsptd.vsptd.TrpExpr(*items)¶ Триплетное выражение, или фрейм-формула
Примечание
- операторы должны быть в виде строк
str; - используемые триплеты должны быть триплетами-целями.
Параметры: *items (str, int, float, bool, Trp) – параметры
Исключение: - ValueError – если триплет не является триплетом-целью
- TypeError – если элемент не str, int, float, bool, Trp, TrpExpr
Пример работы: >>> expr = TrpExpr(Trp('A', 'B'), '*', Trp('C', 'D')) >>> print(expr) $A.B*$C.D >>> print(Trp('E', 'F', expr)) $E.F=$A.B*$C.D;
-
settings= <VSPTDSettings>¶ Свойство класса. Настройки конфигурации ВСПТД
VSPTDSettings; по умолчанию используются стандартные
-
items¶ Операнды и операторы в триплетном выражении
-
calculate(source=None, special_source=None)¶ Вычисляет выражение
Предупреждение
В текущей версии для вычисления выражения используется
eval, что потенциально опасно.Параметры: Результат: результат вычисления выражения
Пример работы: >>> expr = TrpExpr(Trp('A', 'B'), '*', Trp('C', 'D')) >>> trp_str = TrpStr(Trp('A', 'B', 21), Trp('C', 'D', 2)) >>> expr.calculate(trp_str) 42
- операторы должны быть в виде строк