Tekvel Magic
|
Классы | |
class | ICD |
Класс для работы с ICD-файлами. Подробнее... | |
class | NSD |
Обработчик определений пространства имен (Namespace definition) Подробнее... | |
class | RSD |
Класс для работы с RSD-файлами. Подробнее... | |
class | SCD |
Класс для работы с SCD-файлами. Подробнее... | |
class | SCL |
Общий класс для работы с SCL-файлами. Подробнее... | |
class | SclValidationResult |
Результат валидации SCL-файла Подробнее... | |
class | SICS |
Класс описание декларации реализации поддержки SCL (SICS). Подробнее... | |
class | SSD |
Класс для работы с SSD-файлами. Подробнее... | |
Функции | |
def | xmlTreeMerge (a, b) |
Объединение двух XML-деревьев. Подробнее... | |
def | check_nsd_conditions (nsd_spec, scl_impl, **kwargs) |
Краткое описание класса Подробнее... | |
def | normalize_mac (mac_string) |
Приводит MAC-адрес к стандартному SCL-формату Подробнее... | |
def | clone (element) |
Создаёт полную копию элемента. Подробнее... | |
def | add_default_namespace_to_element (namespace_str, element_str) |
Добавляет к элементу namespace. Подробнее... | |
def | get_tag_without_namespace (element) |
Получить тег элемента без префикса пространства имен. Подробнее... | |
def | scl_element_from_string (scl_element_str, scl_namespace='http://www.iec.ch/61850/2003/SCL') |
Создать SCL-элемент из строки. Подробнее... | |
def | get_one_or_raise (element_list, element_identifier='Undefined') |
Возвращает первый элемент списка или ошибку, если его нет или он не один. Подробнее... | |
def | get_element_by_attribute (dom, element_namespace, element_tag, attribute_value, attribute_name="name", strict=False) |
Получить элемент по атрибуту Подробнее... | |
def | get_p_element_value (connected_ap, p_type) |
Получить значение элемента Подробнее... | |
def | get_p_element_list (connected_ap) |
Получить список элементов Подробнее... | |
def | get_p_osi_element_list (connected_ap) |
Получить список элементов Подробнее... | |
def | get_gse_maxtime (gse) |
Получить элемент MaxTime для GSE. Подробнее... | |
def | get_gse_mintime (gse) |
Получить элемент MinTime для GSE. Подробнее... | |
def | get_gse_maxtime_value (gse) |
Получить значение MaxTime для GSE. Подробнее... | |
def | get_gse_mintime_value (gse) |
Получить значение MinTime для GSE. Подробнее... | |
def | get_reference_for_element (element, ref_type=ReferenceType.ObjectReference) |
Получить ссылку на элемент Подробнее... | |
def | get_dataset_fcda_list (et_dataset) |
Получить список элементов FCDA для DataSet. Подробнее... | |
def | get_reference_for_fcda (et_fcda, ref_type=ReferenceType.ObjectReference) |
Формирует ссылку FCDA. Подробнее... | |
def | get_LNodeType_element_by_id (dom, lnType) |
Получить элемент LNodeType по ID. Подробнее... | |
def | get_LN_element_by_name (dom, lnName) |
Получить элемент LN по имени Подробнее... | |
def | compare_ln_elements_by_path (ln1_name, ln2_name) |
Сравнить элементы LN по пути Подробнее... | |
def | get_DOI_element_by_name (et_LN, doi_name) |
Получить элемент DOI по имени Подробнее... | |
def | get_DOI_by_name (et_LN, doi_name) |
Получить элемент DOI по имени Подробнее... | |
def | get_SDI_element_by_seq_name (et_DOI, sdiSeq) |
Получить элемент SDI по последовательности имён Подробнее... | |
def | get_DAI_element_by_name (et_DOI, dai_name) |
Получить элемент DAI по имени Подробнее... | |
def | get_sdo_type_recursive (et_root, et_element, sdo_seq_list) |
Получить конечный элемент в цепочке DO/SDO/DA. Подробнее... | |
def | get_regex_by_enumtype (enum_type) |
Получить регулярное выражение по EnumType. Подробнее... | |
def | convert_mms_to_scl_ref (mms_ref) |
Конвертирует ссылку формата MMSReference в ссылку формата ObjectReference. Подробнее... | |
def | compare_data_models (model1, model2) |
def | compare_elements (domNode1, domNode2, queryElementSet1, queryElementSet2) |
def | remove_scl_element (element) |
Удаляет SCL-элемент Подробнее... | |
def | convertNodeToJSON (jsonNodeArray, sclNode) |
Преобразует узел SCL в формат JSON. Подробнее... | |
def | convertNodesToJSON (sclNodes) |
Преобразует лист из XML-узлов в JSON. Подробнее... | |
def | get_name_for_ln (et_LN) |
Возвращает полное имя для элемента LN / LN0. Подробнее... | |
def | get_ancestors_tree_to_element (root, et_element, descendants) |
Получить дерево прародителей элемента. Подробнее... | |
def | equality_two_elements (element_1, element_2) |
Сравнивает два элемента XML. Подробнее... | |
def | merge_two_axis (axis_1, axis_2, NSMAP) |
Cлияние двух родительских осей. Подробнее... | |
def | check_string_template_conformance (string, template_string) |
Проверяет соответствие строки заданному шаблону. Подробнее... | |
def | get_type_element (dom, xmlns, tag, type_id) |
Получить элемент типа из DOM по тегу и идентификатору. Подробнее... | |
def | get_applicable_conditions () |
FIXME: Это заглушка функции, она всегда возвращает ["M", "AtLeastOne"]. Подробнее... | |
def | check_type_recursive (scl, nsd, element, nsd_element=None, **kwargs) |
Рекурсивно проверить тип элемента Подробнее... | |
def | compare_sections (model1, model2, section_name=None, exceptions=None) |
Сравнение секций между двумя моделями. Подробнее... | |
Переменные | |
NSD_7_4 = NSD(NSD_7_4_2007A2_PATH) | |
NSD_7_4_2007A2 = NSD(NSD_7_4_2007A2_PATH) | |
NSD_7_4_2007B = NSD(NSD_7_4_2007B_PATH) | |
NSD_7_4_2007B3 = NSD(NSD_7_4_2007B3_PATH) | |
NSD_7_4_FSK2020A = NSD(NSD_7_4_FSK2020A_PATH) | |
SICS = SICS() | |
def add_default_namespace_to_element | ( | namespace_str, | |
element_str | |||
) |
Добавляет к элементу namespace.
Создаёт элемент XML из строки и добавляет к нему пространство имен.
namespace_str | Идентификатор пространства имен NamespaceID |
element_str | Наименование (Тег) элемента |
def check_nsd_conditions | ( | nsd_spec, | |
scl_impl, | |||
** | kwargs | ||
) |
Краткое описание класса
Детальное описание класса в несколько строк
def check_string_template_conformance | ( | string, | |
template_string | |||
) |
Проверяет соответствие строки заданному шаблону.
Выполняет проверку заданной строки на соответствие заданному шаблону.
string | Текстовая строка для проверки. |
template_string | Регулярное выражение в виде текстовой строки. |
def check_type_recursive | ( | scl, | |
nsd, | |||
element, | |||
nsd_element = None , |
|||
** | kwargs | ||
) |
Рекурсивно проверить тип элемента
Позволяет проверить тип элемента на соответствие пространству имён, проходя рекурсивно по всем дочерним элементам.
scl | экземпляр класса SCL (например, ICD, SCD) |
nsd | экземпляр класса NSD |
element | элемент типа et.Element модели данных. Допустимые элементы: LN0, LN, DO, SDO, DA, BDA |
nsd_element | элемент NSD, который используется для проверки element , если требуется контекст. Параметр nsd_element обязателен, если element передается в качестве DA/BDA. |
**kwargs | объект ключевых аргументов. Допустимые ключевые слова:
|
def clone | ( | element | ) |
Создаёт полную копию элемента.
Обертка вокруг copy.deepcopy()
element | XML-элемент, который необходимо глубоко скопировать. |
def compare_data_models | ( | model1, | |
model2 | |||
) |
def compare_elements | ( | domNode1, | |
domNode2, | |||
queryElementSet1, | |||
queryElementSet2 | |||
) |
def compare_ln_elements_by_path | ( | ln1_name, | |
ln2_name | |||
) |
Сравнить элементы LN по пути
Сравнивает два элемента логического узла (LN) по их пути и возвращает список различных атрибутов.
ln1_name | Имя первого логического узла (LN), который нужно сравнить |
ln2_name | Имя второго логического узла (LN), который нужно сравнить |
Exception | если формат ln1_name или ln2_name недопустим |
def compare_sections | ( | model1, | |
model2, | |||
section_name = None , |
|||
exceptions = None |
|||
) |
Сравнение секций между двумя моделями.
Функция сравнивает SCL-секции двух моделей model1
и model2
на основе указанного имени секции или выполняет сравнение всех секций, если имя секции не указано. Функция определяет различия в атрибутах и элементах между двумя моделями. Поддерживается исключение определённых элементов и атрибутов, а также обработка сложных случаев с использованием исключений для таких элементов XML, как FCDA
и ExtRef
. Результат возвращается в виде словаря с несовпадающими элементами.
model1 | Первая модель (SCL) для сравнения. |
model2 | Вторая модель (SCL) для сравнения. |
section_name | (необязательно) Имя секции для ограничения сравнения только указанной секцией. Если не указано, сравниваются все секции. |
exceptions | (необязательно) Список имён элементов для исключения из сравнения. |
Exception | Возникает при ошибках разбора или удаления элементов и атрибутов из списков сравнения. |
def convert_mms_to_scl_ref | ( | mms_ref | ) |
Конвертирует ссылку формата MMSReference в ссылку формата ObjectReference.
Функция конвертирует ссылку формата MMSReference (в соответствии с МЭК 61850-8-1) в ссылку формата ObjectReference
mms_ref | Ссылка на элемент в формате MMSReference |
Exception | Выбрасывается, если ссылка не соответствует формату MMSReference для любого типа объекта |
def convertNodesToJSON | ( | sclNodes | ) |
Преобразует лист из XML-узлов в JSON.
Преобразует каждый узел в предоставленном списке XML-узлов в его представление JSON и возвращает список этих JSON-объектов.
sclNodes | Список XML-узлов для преобразования. |
def convertNodeToJSON | ( | jsonNodeArray, | |
sclNode | |||
) |
Преобразует узел SCL в формат JSON.
Функция преобразует узел SCL и его дочерние элементы в формат JSON, подходящий для дальнейшей обработки.
jsonNodeArray | Массив, к которому будет добавлено JSON-представление узла |
sclNode | Узел SCL для преобразования |
def equality_two_elements | ( | element_1, | |
element_2 | |||
) |
Сравнивает два элемента XML.
Сравнивает два элемента XML, чтобы проверить их на равенство. Элементы считаются равными, если их теги, атрибуты и текстовое содержимое идентичны.
element_1 | Первый элемент XML для сравнения. |
element_2 | Второй элемент XML для сравнения. |
def get_ancestors_tree_to_element | ( | root, | |
et_element, | |||
descendants | |||
) |
Получить дерево прародителей элемента.
Конструирует и возвращает XML-дерево, содержащее всех прародителей от корневого элемента до указанного элемента. Потомки также включены.
root | Корневой элемент, с которого начинается дерево. |
et_element | Целевой элемент, для которого строится дерево прародителей. |
descendants | Существующее дерево потомков, которые будут включены в дерево прародителей. |
ExceptionType | Описание исключения и условия его возникновения. |
def get_applicable_conditions | ( | ) |
FIXME: Это заглушка функции, она всегда возвращает ["M", "AtLeastOne"].
def get_DAI_element_by_name | ( | et_DOI, | |
dai_name | |||
) |
Получить элемент DAI по имени
Возвращает элемент DAI в контексте элемента DOI/SDI по атрибуту name.
et_DOI | Контекст элемента DOI или SDI |
dai_name | Атрибут name элемента DAI |
def get_dataset_fcda_list | ( | et_dataset | ) |
Получить список элементов FCDA для DataSet.
Возвращает список элементов FCDA для заданного DataSet.
et_dataset | Элемент типа et._Element, представляющий DataSet |
def get_DOI_by_name | ( | et_LN, | |
doi_name | |||
) |
Получить элемент DOI по имени
Возвращает элемент DOI в контексте элемента LNode по атрибуту name.
et_LN | Контекст элемента LNode |
doi_name | Атрибут name элемента DOI, который нужно вернуть |
def get_DOI_element_by_name | ( | et_LN, | |
doi_name | |||
) |
Получить элемент DOI по имени
Возвращает элемент DOI в контексте элемента LNode по атрибуту name.
et_LN | Контекст элемента LNode |
doi_name | Атрибут name элемента DOI, который нужно вернуть |
Exception | если элемент DOI с указанным именем не найден или если есть несколько элементов с одинаковым именем |
def get_element_by_attribute | ( | dom, | |
element_namespace, | |||
element_tag, | |||
attribute_value, | |||
attribute_name = "name" , |
|||
strict = False |
|||
) |
Получить элемент по атрибуту
Возвращает первый элемент по тегу, имени и значению одного атрибута.
dom | DOM объект XML |
element_namespace | Пространство имен элемента |
element_tag | Тег элемента |
attribute_value | Значение атрибута для поиска |
attribute_name | Имя атрибута для поиска (по-умолчанию: "name") |
strict | Флаг, указывающий на строгий поиск (по-умолчанию: False) |
def get_gse_maxtime | ( | gse | ) |
Получить элемент MaxTime для GSE.
Возвращает элемент MaxTime для заданного элемента GSE.
gse | Элемент GSE |
Exception | Вызывает исключение, если элемент MaxTime не найден. |
def get_gse_maxtime_value | ( | gse | ) |
Получить значение MaxTime для GSE.
Возвращает значение MaxTime в миллисекундах для заданного элемента GSE.
gse | Элемент GSE |
Exception | Вызывает исключение, если элемент MaxTime не найден. |
def get_gse_mintime | ( | gse | ) |
Получить элемент MinTime для GSE.
Возвращает элемент MinTime для заданного элемента GSE.
gse | Элемент GSE |
Exception | Вызывает исключение, если элемент MinTime не найден. |
def get_gse_mintime_value | ( | gse | ) |
Получить значение MinTime для GSE.
Возвращает значение MinTime в миллисекундах для заданного элемента GSE.
gse | Элемент GSE |
Exception | Вызывает исключение, если элемент MinTime не найден. |
def get_LN_element_by_name | ( | dom, | |
lnName | |||
) |
Получить элемент LN по имени
Возвращает элемент LN или LN0 с заданным lnName.
dom | Элемент типа et._Element, представляющий DOM |
lnName | Имя логического узла (LN), который необходимо получить |
Exception | если формат lnName недопустим или элемент LN/LN0 не найден |
def get_LNodeType_element_by_id | ( | dom, | |
lnType | |||
) |
Получить элемент LNodeType по ID.
Возвращает элемент LNodeType с заданным ID.
dom | Элемент типа et._Element, представляющий DOM |
lnType | ID элемента LNodeType, который необходимо получить |
Exception | если элемент LNodeType не найден или найдено несколько элементов |
def get_name_for_ln | ( | et_LN | ) |
Возвращает полное имя для элемента LN / LN0.
Конструирует и возвращает полное имя логического узла (LN) или логического узла 0 (LN0) на основе его атрибутов prefix, lnClass и inst.
et_LN | Элемент LN или LN0 типа et._Element. |
def get_one_or_raise | ( | element_list, | |
element_identifier = 'Undefined' |
|||
) |
Возвращает первый элемент списка или ошибку, если его нет или он не один.
Эта функция возвращает первый элемент списка, если в списке есть ровно один элемент. Если список пуст, она генерирует исключение, указывающее, что элемент не найден. Если в списке более одного элемента, она генерирует исключение, указывающее, что обнаружено несколько элементов.
element_list | Список элементов. |
element_identifier | Необязательный идентификатор элемента, используемый в сообщениях об ошибках. |
Exception | если элемент не найден или если обнаружено несколько элементов. |
def get_p_element_list | ( | connected_ap | ) |
Получить список элементов
Возвращает все элементы
внутри заданного элемента ConnectedAP.
connected_ap | Элемент ConnectedAP |
.
def get_p_element_value | ( | connected_ap, | |
p_type | |||
) |
Получить значение элемента
по типу
Возвращает значение элемента
заданного типа.
connected_ap | Элемент ConnectedAP |
p_type | Тип элемента |
для поиска
в виде строки.
def get_p_osi_element_list | ( | connected_ap | ) |
Получить список элементов
типа OSI-*
Возвращает все элементы
с типом, начинающимся с OSI-.
connected_ap | Элемент ConnectedAP |
типа OSI-*.
def get_reference_for_element | ( | element, | |
ref_type = ReferenceType.ObjectReference |
|||
) |
Получить ссылку на элемент
Возвращает путь (ObjectReference, MMSReference) до элемента.
element | Элемент, для которого необходимо получить ссылку |
ref_type | Тип возвращаемой ссылки (ObjectReference или MMSReference) |
Exception | Вызывает исключение, если тип элемента неизвестен. |
def get_reference_for_fcda | ( | et_fcda, | |
ref_type = ReferenceType.ObjectReference |
|||
) |
Формирует ссылку FCDA.
Формирует ссылку ObjectReference или MMSReference из атрибутов элемента FCDA.
et_fcda | Элемент типа et._Element, представляющий FCDA |
ref_type | Тип формируемой ссылки (ObjectReference или MMSReference) |
def get_regex_by_enumtype | ( | enum_type | ) |
Получить регулярное выражение по EnumType.
Возвращает регулярное выражение на основе элемента EnumType.
enum_type | Элемент EnumType, для которого создается регулярное выражение |
def get_SDI_element_by_seq_name | ( | et_DOI, | |
sdiSeq | |||
) |
Получить элемент SDI по последовательности имён
Возвращает конечный элемент SDI, проходя рекурсивно по цепочке sdiSeq.
et_DOI | Контекст элемента DOI |
sdiSeq | Последовательность имён SDI, разделённых точками |
def get_sdo_type_recursive | ( | et_root, | |
et_element, | |||
sdo_seq_list | |||
) |
Получить конечный элемент в цепочке DO/SDO/DA.
Возвращает конечный элемент цепочки DO/SDO/DA по именам из sdo_seq_list.
et_root | Корневой элемент для поиска |
et_element | Текущий элемент в цепочке |
sdo_seq_list | Список последовательности имен SDO |
Exception | Возникает, если тип BDA имеет вложенные элементы |
def get_tag_without_namespace | ( | element | ) |
Получить тег элемента без префикса пространства имен.
Возвращает тег элемента без индентификатора пространства имен (то есть только строку с тегом).
element | Элемент типа et.Element |
def get_type_element | ( | dom, | |
xmlns, | |||
tag, | |||
type_id | |||
) |
Получить элемент типа из DOM по тегу и идентификатору.
Получает элемент типа из DOM, используя указанные тег и идентификатор.
dom | DOM объект для поиска. |
xmlns | Пространство имен для поиска. |
tag | Тег элемента для поиска. |
type_id | Идентификатор элемента для поиска. |
Exception | Выбрасывается, если не найдено ни одного элемента или найдено более одного элемента. |
def merge_two_axis | ( | axis_1, | |
axis_2, | |||
NSMAP | |||
) |
Cлияние двух родительских осей.
Слияние двух родительских осей и возврат нового дерева. В случае отсутствия совпадений возвращает пустой список.
axis_1 | Первая родительская ось (et.Element). |
axis_2 | Вторая родительская ось (et.Element). |
NSMAP | Карта пространств имен, используемая в элементах XML. |
def normalize_mac | ( | mac_string | ) |
Приводит MAC-адрес к стандартному SCL-формату
Преобразует строку MAC-адреса в стандартный SCL-формат. Функция заменяет двоеточия на дефисы и переводит все буквы в верхний регистр.
mac_string | MAC-адрес в виде строки. |
def remove_scl_element | ( | element | ) |
Удаляет SCL-элемент
Функция удаляет SCL-элемент, если он является элементом типа et._Element
element | Удаляемый SCL-элемент |
Exception | Выбрасывается, если элемент не является элементом типа et._Element |
Удаляет SCL-элемент.
def scl_element_from_string | ( | scl_element_str, | |
scl_namespace = 'http://www.iec.ch/61850/2003/SCL' |
|||
) |
Создать SCL-элемент из строки.
Создаёт SCL-элемент из заданной строки с помещением вновь созданного элемента в указанное пространство имён.
scl_element_str | Строка с описанием SCL-элемента |
scl_namespace | Идентификатор пространства имен NamespaceID (по-умолчанию: http://www.iec.ch/61850/2003/SCL) |
def xmlTreeMerge | ( | a, | |
b | |||
) |
Объединение двух XML-деревьев.
Объединение двух XML-деревьев A и B, так что каждый рекурсивно найденный листовой элемент из B добавляется в A. Если элемент уже существует в A, он заменяется версией из B. Структура дерева создается в A в соответствии с положением листового элемента в B. Например, при объединении <top><first></first></top> и <top><first></first></top>, результатом будет <top><first>
</first></top> (порядок не гарантирован).
a | Первое XML-дерево (et.Element), которое будет объединено. |
b | Второе XML-дерево (et.Element), которое будет объединено с первым. |
NSD_7_4 = NSD(NSD_7_4_2007A2_PATH) |
NSD_7_4_2007A2 = NSD(NSD_7_4_2007A2_PATH) |
NSD_7_4_2007B = NSD(NSD_7_4_2007B_PATH) |
NSD_7_4_2007B3 = NSD(NSD_7_4_2007B3_PATH) |
NSD_7_4_FSK2020A = NSD(NSD_7_4_FSK2020A_PATH) |