pyegeria 5.4.0.28__py3-none-any.whl → 5.5.3.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyegeria might be problematic. Click here for more details.
- commands/__init__.py +24 -0
- commands/cat/Dr-Egeria_md-orig.py +2 -2
- commands/cat/collection_actions.py +197 -0
- commands/cat/dr_egeria_command_help.py +137 -38
- commands/cat/dr_egeria_jupyter.py +7 -7
- commands/cat/dr_egeria_md.py +10 -267
- commands/cat/exp_list_glossaries.py +11 -14
- commands/cat/get_asset_graph.py +37 -267
- commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
- commands/cat/get_project_dependencies.py +14 -14
- commands/cat/get_project_structure.py +15 -14
- commands/cat/get_tech_type_elements.py +16 -116
- commands/cat/glossary_actions.py +145 -298
- commands/cat/list_assets.py +3 -11
- commands/cat/list_cert_types.py +17 -63
- commands/cat/list_collections.py +17 -139
- commands/cat/list_deployed_catalogs.py +15 -27
- commands/cat/list_deployed_database_schemas.py +27 -43
- commands/cat/list_deployed_databases.py +16 -31
- commands/cat/list_deployed_servers.py +35 -54
- commands/cat/list_glossaries.py +18 -17
- commands/cat/list_projects.py +10 -12
- commands/cat/list_tech_type_elements.py +21 -37
- commands/cat/list_tech_types.py +13 -25
- commands/cat/list_terms.py +38 -79
- commands/cat/list_todos.py +4 -11
- commands/cat/list_user_ids.py +3 -10
- commands/cat/my_reports.py +559 -0
- commands/cat/run_report.py +394 -0
- commands/cat/{list_format_set.py → run_report_orig.py} +136 -44
- commands/cli/egeria.py +182 -219
- commands/cli/egeria_cat.py +32 -59
- commands/cli/egeria_my.py +13 -0
- commands/cli/egeria_ops.py +69 -74
- commands/cli/egeria_tech.py +17 -93
- commands/{cat → deprecated}/list_data_designer.py +2 -4
- commands/{cat → deprecated}/list_data_structures_full.py +3 -6
- commands/deprecated/old_get_asset_graph.py +315 -0
- commands/my/__init__.py +0 -2
- commands/my/list_my_profile.py +27 -34
- commands/my/list_my_roles.py +1 -7
- commands/my/monitor_my_todos.py +1 -7
- commands/my/monitor_open_todos.py +6 -7
- commands/my/todo_actions.py +4 -5
- commands/ops/__init__.py +0 -2
- commands/ops/gov_server_actions.py +17 -21
- commands/ops/list_archives.py +17 -38
- commands/ops/list_catalog_targets.py +33 -40
- commands/ops/load_archive.py +14 -11
- commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
- commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
- commands/ops/monitor_engine_activity.py +79 -77
- commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
- commands/ops/monitor_platform_status.py +38 -50
- commands/ops/monitor_server_startup.py +6 -11
- commands/ops/monitor_server_status.py +7 -11
- commands/ops/orig_monitor_server_list.py +8 -8
- commands/ops/orig_monitor_server_status.py +1 -5
- commands/ops/refresh_integration_daemon.py +5 -5
- commands/ops/restart_integration_daemon.py +5 -5
- commands/ops/table_integ_daemon_status.py +6 -6
- commands/ops/x_engine_actions.py +7 -7
- commands/tech/__init__.py +0 -2
- commands/tech/{generic_actions.py → element_actions.py} +6 -11
- commands/tech/get_element_info.py +20 -29
- commands/tech/get_guid_info.py +23 -42
- commands/tech/get_tech_details.py +20 -35
- commands/tech/get_tech_type_template.py +28 -39
- commands/tech/list_all_om_type_elements.py +24 -30
- commands/tech/list_all_om_type_elements_x.py +22 -28
- commands/tech/list_all_related_elements.py +19 -28
- commands/tech/list_anchored_elements.py +22 -30
- commands/tech/list_asset_types.py +19 -24
- commands/tech/list_elements_by_classification_by_property_value.py +26 -32
- commands/tech/list_elements_by_property_value.py +19 -25
- commands/tech/list_elements_by_property_value_x.py +20 -28
- commands/tech/list_elements_for_classification.py +28 -41
- commands/tech/list_gov_action_processes.py +16 -27
- commands/tech/list_information_supply_chains.py +22 -30
- commands/tech/list_registered_services.py +14 -26
- commands/tech/list_related_elements_with_prop_value.py +15 -25
- commands/tech/list_related_specification.py +1 -4
- commands/tech/list_relationship_types.py +15 -25
- commands/tech/list_relationships.py +20 -36
- commands/tech/list_solution_blueprints.py +28 -33
- commands/tech/list_solution_components.py +23 -29
- commands/tech/list_solution_roles.py +21 -32
- commands/tech/list_tech_templates.py +51 -54
- commands/tech/list_valid_metadata_values.py +5 -9
- commands/tech/table_tech_templates.py +2 -6
- commands/tech/x_list_related_elements.py +1 -4
- examples/GeoSpatial Products Example.py +524 -0
- examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
- examples/Jupyter Notebooks/README.md +2 -0
- examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
- examples/Jupyter Notebooks/common/__init__.py +14 -0
- examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
- examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
- examples/Jupyter Notebooks/common/globals.ipynb +184 -0
- examples/Jupyter Notebooks/common/globals.py +154 -0
- examples/Jupyter Notebooks/common/orig_globals.py +152 -0
- examples/format_sets/all_format_sets.json +910 -0
- examples/format_sets/custom_format_sets.json +268 -0
- examples/format_sets/subset_format_sets.json +187 -0
- examples/format_sets_save_load_example.py +291 -0
- examples/jacquard_data_sets.py +129 -0
- examples/output_formats_example.py +193 -0
- examples/test_jacquard_data_sets.py +54 -0
- examples/test_jacquard_data_sets_scenarios.py +94 -0
- md_processing/__init__.py +33 -24
- md_processing/command_dispatcher.py +33 -0
- md_processing/command_mapping.py +221 -0
- md_processing/data/commands/commands_data_designer.json +537 -0
- md_processing/data/commands/commands_external_reference.json +733 -0
- md_processing/data/commands/commands_feedback.json +155 -0
- md_processing/data/commands/commands_general.json +204 -0
- md_processing/data/commands/commands_glossary.json +218 -0
- md_processing/data/commands/commands_governance.json +3678 -0
- md_processing/data/commands/commands_product_manager.json +865 -0
- md_processing/data/commands/commands_project.json +642 -0
- md_processing/data/commands/commands_solution_architect.json +366 -0
- md_processing/data/commands.json +6489 -30060
- md_processing/data/{commands-working.json → commands_working.json} +9304 -13513
- md_processing/data/gened_report_specs.py +6584 -0
- md_processing/data/generated_format_sets.json +6533 -0
- md_processing/data/generated_format_sets_old.json +4137 -0
- md_processing/data/generated_format_sets_old.py +45 -0
- md_processing/dr_egeria.py +182 -0
- md_processing/md_commands/data_designer_commands.py +195 -583
- md_processing/md_commands/ext_ref_commands.py +530 -0
- md_processing/md_commands/feedback_commands.py +726 -0
- md_processing/md_commands/glossary_commands.py +106 -490
- md_processing/md_commands/governance_officer_commands.py +129 -18
- md_processing/md_commands/product_manager_commands.py +362 -115
- md_processing/md_commands/project_commands.py +351 -134
- md_processing/md_commands/solution_architect_commands.py +276 -232
- md_processing/md_commands/view_commands.py +295 -0
- md_processing/md_processing_utils/common_md_proc_utils.py +258 -166
- md_processing/md_processing_utils/common_md_utils.py +138 -43
- md_processing/md_processing_utils/determine_width.py +103 -0
- md_processing/md_processing_utils/extraction_utils.py +100 -39
- md_processing/md_processing_utils/gen_report_specs.py +643 -0
- md_processing/md_processing_utils/generate_dr_help.py +61 -33
- md_processing/md_processing_utils/generate_md_cmd_templates.py +20 -19
- md_processing/md_processing_utils/generate_md_templates.py +3 -12
- md_processing/md_processing_utils/md_processing_constants.py +1053 -72
- pyegeria/__init__.py +203 -158
- pyegeria/core/__init__.py +40 -0
- pyegeria/core/_base_platform_client.py +574 -0
- pyegeria/core/_base_server_client.py +573 -0
- pyegeria/{_exceptions_new.py → core/_exceptions.py} +62 -30
- pyegeria/{_globals.py → core/_globals.py} +14 -3
- pyegeria/core/_server_client.py +6073 -0
- pyegeria/{_validators.py → core/_validators.py} +7 -8
- pyegeria/core/config.py +654 -0
- pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
- pyegeria/core/load_config.py +37 -0
- pyegeria/{logging_configuration.py → core/logging_configuration.py} +1 -1
- pyegeria/core/mcp_adapter.py +144 -0
- pyegeria/core/mcp_server.py +212 -0
- pyegeria/core/utils.py +405 -0
- pyegeria/{_client.py → deprecated/_client.py} +24 -25
- pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
- pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1987 -1877
- pyegeria/{output_formatter.py → deprecated/output_formatter_with_machine_keys.py} +298 -45
- pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +155 -171
- pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
- pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
- pyegeria/egeria_cat_client.py +26 -70
- pyegeria/egeria_client.py +130 -93
- pyegeria/egeria_config_client.py +40 -46
- pyegeria/egeria_tech_client.py +141 -54
- pyegeria/models/__init__.py +150 -0
- pyegeria/{models.py → models/models.py} +156 -20
- pyegeria/omvs/__init__.py +84 -0
- pyegeria/omvs/action_author.py +342 -0
- pyegeria/omvs/actor_manager.py +5980 -0
- pyegeria/omvs/asset_catalog.py +842 -0
- pyegeria/omvs/asset_maker.py +2736 -0
- pyegeria/omvs/automated_curation.py +4403 -0
- pyegeria/omvs/classification_manager.py +11213 -0
- pyegeria/{collection_manager.py → omvs/collection_manager.py} +1334 -1160
- pyegeria/omvs/community_matters_omvs.py +468 -0
- pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
- pyegeria/{data_designer.py → omvs/data_designer.py} +1115 -660
- pyegeria/omvs/data_discovery.py +869 -0
- pyegeria/omvs/data_engineer.py +372 -0
- pyegeria/omvs/digital_business.py +1133 -0
- pyegeria/omvs/external_links.py +1752 -0
- pyegeria/omvs/feedback_manager.py +834 -0
- pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
- pyegeria/{glossary_manager.py → omvs/glossary_manager.py} +857 -519
- pyegeria/{governance_officer.py → omvs/governance_officer.py} +964 -468
- pyegeria/omvs/lineage_linker.py +314 -0
- pyegeria/omvs/location_arena.py +1525 -0
- pyegeria/omvs/metadata_expert.py +668 -0
- pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
- pyegeria/omvs/my_profile.py +1042 -0
- pyegeria/omvs/notification_manager.py +358 -0
- pyegeria/omvs/people_organizer.py +394 -0
- pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
- pyegeria/omvs/product_manager.py +1825 -0
- pyegeria/omvs/project_manager.py +1907 -0
- pyegeria/omvs/reference_data.py +1140 -0
- pyegeria/omvs/registered_info.py +334 -0
- pyegeria/omvs/runtime_manager.py +2817 -0
- pyegeria/omvs/schema_maker.py +446 -0
- pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
- pyegeria/{solution_architect_omvs.py → omvs/solution_architect.py} +1886 -1505
- pyegeria/omvs/specification_properties.py +37 -0
- pyegeria/omvs/subject_area.py +1042 -0
- pyegeria/omvs/template_manager_omvs.py +236 -0
- pyegeria/omvs/time_keeper.py +1761 -0
- pyegeria/omvs/valid_metadata.py +3221 -0
- pyegeria/omvs/valid_metadata_lists.py +37 -0
- pyegeria/omvs/valid_type_lists.py +37 -0
- pyegeria/view/__init__.py +28 -0
- pyegeria/{_output_format_models.py → view/_output_format_models.py} +160 -24
- pyegeria/view/_output_formats.py +14 -0
- pyegeria/view/base_report_formats.py +2719 -0
- pyegeria/view/dr_egeria_reports.py +56 -0
- pyegeria/view/format_set_executor.py +397 -0
- pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
- pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
- pyegeria/view/output_formatter.py +1297 -0
- pyegeria-5.5.3.3.dist-info/METADATA +218 -0
- pyegeria-5.5.3.3.dist-info/RECORD +241 -0
- {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
- pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
- pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
- commands/cat/.DS_Store +0 -0
- commands/cat/.env +0 -8
- commands/cat/README.md +0 -16
- commands/cat/debug_log +0 -1126
- commands/cat/debug_log.2025-08-18_11-34-38_088636.zip +0 -0
- commands/cat/list_categories.py +0 -192
- commands/cat/logs/pyegeria.log +0 -4
- commands/cli/debug_log +0 -0
- commands/cli/debug_log.log +0 -0
- commands/cli/txt_custom_v2.tcss +0 -19
- commands/my/README.md +0 -17
- commands/ops/README.md +0 -24
- commands/ops/logs/pyegeria.log +0 -0
- commands/ops/monitor_asset_events.py +0 -108
- commands/tech/README.md +0 -24
- md_processing/.DS_Store +0 -0
- md_processing/dr-egeria-outbox/Collections-2025-08-12-13-30-37.md +0 -163
- md_processing/dr-egeria-outbox/Collections-2025-08-12-13-35-58.md +0 -474
- md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +0 -8
- md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +0 -873
- md_processing/dr_egeria_inbox/arch_test.md +0 -57
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +0 -696
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +0 -298
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +0 -608
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +0 -94
- md_processing/dr_egeria_inbox/archive/freddie_intro.md +0 -284
- md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +0 -275
- md_processing/dr_egeria_inbox/archive/test-term.md +0 -110
- md_processing/dr_egeria_inbox/cat_test.md +0 -100
- md_processing/dr_egeria_inbox/collections.md +0 -39
- md_processing/dr_egeria_inbox/data_designer_debug.log +0 -6
- md_processing/dr_egeria_inbox/data_designer_out.md +0 -60
- md_processing/dr_egeria_inbox/data_designer_search_test.md +0 -11
- md_processing/dr_egeria_inbox/data_field.md +0 -54
- md_processing/dr_egeria_inbox/data_spec.md +0 -77
- md_processing/dr_egeria_inbox/data_spec_test.md +0 -2406
- md_processing/dr_egeria_inbox/data_test.md +0 -179
- md_processing/dr_egeria_inbox/data_test2.md +0 -429
- md_processing/dr_egeria_inbox/data_test3.md +0 -462
- md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +0 -124
- md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +0 -168
- md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +0 -280
- md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +0 -318
- md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +0 -1073
- md_processing/dr_egeria_inbox/dr_egeria_isc1.md +0 -44
- md_processing/dr_egeria_inbox/generated_help_report.md +0 -9
- md_processing/dr_egeria_inbox/glossary_creation_experiment.ipynb +0 -341
- md_processing/dr_egeria_inbox/glossary_list.md +0 -5
- md_processing/dr_egeria_inbox/glossary_search_test.md +0 -40
- md_processing/dr_egeria_inbox/glossary_test1.md +0 -324
- md_processing/dr_egeria_inbox/gov_def.md +0 -482
- md_processing/dr_egeria_inbox/gov_def2.md +0 -447
- md_processing/dr_egeria_inbox/img.png +0 -0
- md_processing/dr_egeria_inbox/product.md +0 -211
- md_processing/dr_egeria_inbox/rel.md +0 -8
- md_processing/dr_egeria_inbox/sb.md +0 -119
- md_processing/dr_egeria_inbox/solution-components.md +0 -136
- md_processing/dr_egeria_inbox/solution_blueprints.md +0 -118
- md_processing/dr_egeria_inbox/synonym_test.md +0 -42
- md_processing/dr_egeria_inbox/t2.md +0 -268
- md_processing/dr_egeria_outbox/.obsidian/app.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/appearance.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +0 -6
- md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +0 -31
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +0 -4459
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +0 -3
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +0 -153
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +0 -500
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +0 -12
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +0 -37
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +0 -220
- md_processing/dr_egeria_outbox/.obsidian/types.json +0 -28
- md_processing/dr_egeria_outbox/.obsidian/workspace.json +0 -220
- md_processing/dr_egeria_outbox/Untitled.canvas +0 -1
- md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:22-dr_egeria_intro_part1.md +0 -312
- md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:23-dr_egeria_intro_part1.md +0 -265
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:06-dr_egeria_intro_part1.md +0 -230
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:30-dr_egeria_intro_part1.md +0 -296
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:31-dr_egeria_intro_part1.md +0 -253
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:08-dr_egeria_intro_part2.md +0 -343
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:12-dr_egeria_intro_part2.md +0 -343
- md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:05-product.md +0 -426
- md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:56-product.md +0 -212
- md_processing/dr_egeria_outbox/monday/processed-2025-08-19 09:43-product.md +0 -201
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 14:55-product.md +0 -77
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:05-product.md +0 -75
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:11-product.md +0 -74
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 20:40-collections.md +0 -49
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +0 -719
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +0 -41
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +0 -33
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +0 -192
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-16 19:15-gov_def2.md +0 -527
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 12:08-gov_def2.md +0 -527
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 14:27-gov_def2.md +0 -485
- md_processing/dr_egeria_outbox/tuesday/processed-2025-08-19 10:55-product.md +0 -209
- md_processing/family_docs/Data Designer/Create_Data_Class.md +0 -164
- md_processing/family_docs/Data Designer/Create_Data_Dictionary.md +0 -30
- md_processing/family_docs/Data Designer/Create_Data_Field.md +0 -162
- md_processing/family_docs/Data Designer/Create_Data_Specification.md +0 -36
- md_processing/family_docs/Data Designer/Create_Data_Structure.md +0 -38
- md_processing/family_docs/Data Designer/View_Data_Classes.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Dictionaries.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Fields.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Specifications.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Structures.md +0 -78
- md_processing/family_docs/Data Designer.md +0 -842
- md_processing/family_docs/Digital Product Manager/Add_Member->Collection.md +0 -42
- md_processing/family_docs/Digital Product Manager/Attach_Collection->Resource.md +0 -36
- md_processing/family_docs/Digital Product Manager/Create_Agreement.md +0 -96
- md_processing/family_docs/Digital Product Manager/Create_Data_Sharing_Agreement.md +0 -72
- md_processing/family_docs/Digital Product Manager/Create_DigitalSubscription.md +0 -102
- md_processing/family_docs/Digital Product Manager/Create_Digital_Product.md +0 -134
- md_processing/family_docs/Digital Product Manager/Link_Agreement_Items.md +0 -60
- md_processing/family_docs/Digital Product Manager/Link_Contracts.md +0 -26
- md_processing/family_docs/Digital Product Manager/Link_Digital_Product_-_Digital_Product.md +0 -30
- md_processing/family_docs/Digital Product Manager/Link_Subscribers.md +0 -48
- md_processing/family_docs/Digital Product Manager.md +0 -668
- md_processing/family_docs/Glossary/Attach_Category_Parent.md +0 -18
- md_processing/family_docs/Glossary/Attach_Term-Term_Relationship.md +0 -26
- md_processing/family_docs/Glossary/Create_Category.md +0 -38
- md_processing/family_docs/Glossary/Create_Glossary.md +0 -42
- md_processing/family_docs/Glossary/Create_Term.md +0 -70
- md_processing/family_docs/Glossary.md +0 -206
- md_processing/family_docs/Governance Officer/Create_Business_Imperative.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Certification_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Governance_Approach.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Obligation.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Principle.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Procedure.md +0 -128
- md_processing/family_docs/Governance Officer/Create_Governance_Process.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Processing_Purpose.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Governance_Responsibility.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Strategy.md +0 -106
- md_processing/family_docs/Governance Officer/Create_License_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Naming_Standard_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Regulation_Article.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Regulation_Definition.md +0 -118
- md_processing/family_docs/Governance Officer/Create_Security_Access_Control.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Security_Group.md +0 -120
- md_processing/family_docs/Governance Officer/Create_Service_Level_Objectives.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Threat_Definition.md +0 -106
- md_processing/family_docs/Governance Officer/Link_Governance_Controls.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Drivers.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Policies.md +0 -32
- md_processing/family_docs/Governance Officer/View_Governance_Definitions.md +0 -82
- md_processing/family_docs/Governance Officer.md +0 -2412
- md_processing/family_docs/Solution Architect/Create_Information_Supply_Chain.md +0 -70
- md_processing/family_docs/Solution Architect/Create_Solution_Blueprint.md +0 -44
- md_processing/family_docs/Solution Architect/Create_Solution_Component.md +0 -96
- md_processing/family_docs/Solution Architect/Create_Solution_Role.md +0 -66
- md_processing/family_docs/Solution Architect/Link_Information_Supply_Chain_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/Link_Solution_Component_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/View_Information_Supply_Chains.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Blueprints.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Components.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Roles.md +0 -32
- md_processing/family_docs/Solution Architect.md +0 -490
- md_processing/md_processing_utils/debug_log +0 -574
- md_processing/md_processing_utils/debug_log.log +0 -0
- md_processing/md_processing_utils/dr-egeria-help-2025-07-17T17:22:09.md +0 -2065
- md_processing/md_processing_utils/generated_help_terms.md +0 -842
- pyegeria/.DS_Store +0 -0
- pyegeria/README.md +0 -35
- pyegeria/_client_new.py +0 -1102
- pyegeria/_output_formats.py +0 -730
- pyegeria/asset_catalog_omvs.py +0 -864
- pyegeria/automated_curation_omvs.py +0 -3765
- pyegeria/config.py +0 -523
- pyegeria/egeria_my_client.py +0 -91
- pyegeria/feedback_manager_omvs.py +0 -4573
- pyegeria/load_config_orig.py +0 -218
- pyegeria/md_processing_helpers.py +0 -58
- pyegeria/md_processing_utils_orig.py +0 -1103
- pyegeria/metadata_explorer_omvs.py +0 -2326
- pyegeria/my_profile_omvs.py +0 -1022
- pyegeria/project_manager.py +0 -1591
- pyegeria/registered_info.py +0 -167
- pyegeria/template_manager_omvs.py +0 -1414
- pyegeria/utils.py +0 -256
- pyegeria-5.4.0.28.dist-info/METADATA +0 -77
- pyegeria-5.4.0.28.dist-info/RECORD +0 -343
- pyegeria-5.4.0.28.dist-info/entry_points.txt +0 -105
- /commands/cat/debug_log.log → /pyegeria/deprecated/__init__.py +0 -0
- /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
- /pyegeria/{collection_models.py → models/collection_models.py} +0 -0
- {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
|
@@ -11,18 +11,16 @@ import asyncio
|
|
|
11
11
|
|
|
12
12
|
from loguru import logger
|
|
13
13
|
|
|
14
|
-
from pyegeria import
|
|
15
|
-
from pyegeria.
|
|
16
|
-
from pyegeria._output_formats import select_output_format_set, get_output_format_type_match
|
|
14
|
+
from pyegeria.core._server_client import max_paging_size, ServerClient
|
|
15
|
+
from pyegeria.view.base_report_formats import select_report_spec, get_report_spec_match
|
|
17
16
|
from pyegeria.models import (SearchStringRequestBody, FilterRequestBody, GetRequestBody, NewElementRequestBody,
|
|
18
17
|
TemplateRequestBody,
|
|
19
18
|
UpdateElementRequestBody, NewRelationshipRequestBody,
|
|
20
|
-
|
|
21
|
-
from pyegeria.output_formatter import (extract_mermaid_only, extract_basic_dict)
|
|
22
|
-
from pyegeria.output_formatter import (generate_output
|
|
23
|
-
|
|
24
|
-
from
|
|
25
|
-
|
|
19
|
+
DeleteElementRequestBody, DeleteRelationshipRequestBody)
|
|
20
|
+
from pyegeria.view.output_formatter import (extract_mermaid_only, extract_basic_dict, populate_common_columns)
|
|
21
|
+
from pyegeria.view.output_formatter import (generate_output)
|
|
22
|
+
from pyegeria.core.utils import dynamic_catch
|
|
23
|
+
from typing import Any, Optional
|
|
26
24
|
|
|
27
25
|
def query_seperator(current_string):
|
|
28
26
|
if current_string == "":
|
|
@@ -47,21 +45,21 @@ def base_path(client, view_server: str):
|
|
|
47
45
|
return f"{client.platform_url}/servers/{view_server}/api/open-metadata/data-designer"
|
|
48
46
|
|
|
49
47
|
|
|
50
|
-
class DataDesigner(
|
|
48
|
+
class DataDesigner(ServerClient):
|
|
51
49
|
"""DataDesigner is a class that extends the Client class. The Data Designer OMVS provides APIs for
|
|
52
50
|
building specifications for data. This includes common data fields in a data dictionary, data specifications
|
|
53
51
|
for a project and data classes for data quality validation.
|
|
54
52
|
"""
|
|
55
53
|
|
|
56
|
-
def __init__(self, view_server_name: str, platform_url: str, user_id: str = None, user_pwd: str = None,
|
|
57
|
-
token: str = None, ):
|
|
54
|
+
def __init__(self, view_server_name: str, platform_url: str, user_id: Optional[str] = None, user_pwd: Optional[str] = None,
|
|
55
|
+
token: Optional[str] = None, ):
|
|
58
56
|
self.view_server = view_server_name
|
|
59
57
|
self.platform_url = platform_url
|
|
60
58
|
self.user_id = user_id
|
|
61
59
|
self.user_pwd = user_pwd
|
|
62
60
|
self.data_designer_root: str = (
|
|
63
61
|
f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-designer")
|
|
64
|
-
|
|
62
|
+
ServerClient.__init__(self, view_server_name, platform_url, user_id=user_id, user_pwd=user_pwd, token=token, )
|
|
65
63
|
|
|
66
64
|
#
|
|
67
65
|
# Data Structures
|
|
@@ -83,11 +81,11 @@ class DataDesigner(Client2):
|
|
|
83
81
|
|
|
84
82
|
Raises
|
|
85
83
|
------
|
|
86
|
-
|
|
84
|
+
PyegeriaInvalidParameterException
|
|
87
85
|
one of the parameters is null or invalid or
|
|
88
|
-
|
|
86
|
+
PyegeriaAPIException
|
|
89
87
|
There is a problem adding the element properties to the metadata repository or
|
|
90
|
-
|
|
88
|
+
PyegeriaUnauthorizedException
|
|
91
89
|
the requesting user is not authorized to issue this request.
|
|
92
90
|
|
|
93
91
|
Notes
|
|
@@ -154,11 +152,11 @@ class DataDesigner(Client2):
|
|
|
154
152
|
|
|
155
153
|
Raises
|
|
156
154
|
------
|
|
157
|
-
|
|
155
|
+
PyegeriaInvalidParameterException
|
|
158
156
|
one of the parameters is null or invalid or
|
|
159
|
-
|
|
157
|
+
PyegeriaAPIException
|
|
160
158
|
There is a problem adding the element properties to the metadata repository or
|
|
161
|
-
|
|
159
|
+
PyegeriaUnauthorizedException
|
|
162
160
|
the requesting user is not authorized to issue this request.
|
|
163
161
|
|
|
164
162
|
Notes
|
|
@@ -299,11 +297,11 @@ class DataDesigner(Client2):
|
|
|
299
297
|
|
|
300
298
|
Raises
|
|
301
299
|
------
|
|
302
|
-
|
|
300
|
+
PyegeriaInvalidParameterException
|
|
303
301
|
one of the parameters is null or invalid or
|
|
304
|
-
|
|
302
|
+
PyegeriaAPIException
|
|
305
303
|
There is a problem adding the element properties to the metadata repository or
|
|
306
|
-
|
|
304
|
+
PyegeriaUnauthorizedException
|
|
307
305
|
the requesting user is not authorized to issue this request.
|
|
308
306
|
|
|
309
307
|
Note
|
|
@@ -468,7 +466,7 @@ class DataDesigner(Client2):
|
|
|
468
466
|
|
|
469
467
|
@dynamic_catch
|
|
470
468
|
async def _async_link_member_data_field(self, parent_data_struct_guid: str, member_data_field_guid: str,
|
|
471
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
469
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
472
470
|
"""
|
|
473
471
|
Connect a data structure to a data field. Async version.
|
|
474
472
|
|
|
@@ -487,11 +485,11 @@ class DataDesigner(Client2):
|
|
|
487
485
|
|
|
488
486
|
Raises
|
|
489
487
|
------
|
|
490
|
-
|
|
488
|
+
PyegeriaInvalidParameterException
|
|
491
489
|
one of the parameters is null or invalid or
|
|
492
|
-
|
|
490
|
+
PyegeriaAPIException
|
|
493
491
|
There is a problem adding the element properties to the metadata repository or
|
|
494
|
-
|
|
492
|
+
PyegeriaUnauthorizedException
|
|
495
493
|
the requesting user is not authorized to issue this request.
|
|
496
494
|
|
|
497
495
|
Note
|
|
@@ -524,7 +522,7 @@ class DataDesigner(Client2):
|
|
|
524
522
|
|
|
525
523
|
@dynamic_catch
|
|
526
524
|
def link_member_data_field(self, parent_data_struct_guid: str, member_data_field_guid: str,
|
|
527
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
525
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
528
526
|
"""
|
|
529
527
|
Connect a data structure to a data field.
|
|
530
528
|
|
|
@@ -543,11 +541,11 @@ class DataDesigner(Client2):
|
|
|
543
541
|
|
|
544
542
|
Raises
|
|
545
543
|
------
|
|
546
|
-
|
|
544
|
+
PyegeriaInvalidParameterException
|
|
547
545
|
one of the parameters is null or invalid or
|
|
548
|
-
|
|
546
|
+
PyegeriaAPIException
|
|
549
547
|
There is a problem adding the element properties to the metadata repository or
|
|
550
|
-
|
|
548
|
+
PyegeriaUnauthorizedException
|
|
551
549
|
the requesting user is not authorized to issue this request.
|
|
552
550
|
|
|
553
551
|
Note
|
|
@@ -579,7 +577,7 @@ class DataDesigner(Client2):
|
|
|
579
577
|
|
|
580
578
|
@dynamic_catch
|
|
581
579
|
async def _async_detach_member_data_field(self, parent_data_struct_guid: str, member_data_field_guid: str,
|
|
582
|
-
body: dict |
|
|
580
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None,
|
|
583
581
|
cascade_delete: bool = False) -> None:
|
|
584
582
|
"""
|
|
585
583
|
Detach a data class from a data structure. Request body is optional. Async version.
|
|
@@ -600,11 +598,11 @@ class DataDesigner(Client2):
|
|
|
600
598
|
|
|
601
599
|
Raises
|
|
602
600
|
------
|
|
603
|
-
|
|
601
|
+
PyegeriaInvalidParameterException
|
|
604
602
|
one of the parameters is null or invalid or
|
|
605
|
-
|
|
603
|
+
PyegeriaAPIException
|
|
606
604
|
There is a problem adding the element properties to the metadata repository or
|
|
607
|
-
|
|
605
|
+
PyegeriaUnauthorizedException
|
|
608
606
|
the requesting user is not authorized to issue this request.
|
|
609
607
|
|
|
610
608
|
Note
|
|
@@ -612,7 +610,7 @@ class DataDesigner(Client2):
|
|
|
612
610
|
|
|
613
611
|
Full sample body:
|
|
614
612
|
{
|
|
615
|
-
"class": "
|
|
613
|
+
"class": "DeleteRelationshipRequestBody",
|
|
616
614
|
"cascadedDelete": false,
|
|
617
615
|
"deleteMethod": "LOOK_FOR_LINEAGE",
|
|
618
616
|
"externalSourceGUID": "add guid here",
|
|
@@ -628,12 +626,12 @@ class DataDesigner(Client2):
|
|
|
628
626
|
url = (f"{self.data_designer_root}/data-structures/{parent_data_struct_guid}"
|
|
629
627
|
f"/member-data-fields/{member_data_field_guid}/detach")
|
|
630
628
|
|
|
631
|
-
await self.
|
|
629
|
+
await self._async_delete_relationship_request(url, body, cascade_delete)
|
|
632
630
|
logger.info(f"Data field {member_data_field_guid} detached from data structure {parent_data_struct_guid}.")
|
|
633
631
|
|
|
634
632
|
@dynamic_catch
|
|
635
633
|
def detach_member_data_field(self, parent_data_struct_guid: str, member_data_field_guid: str,
|
|
636
|
-
body: dict = None |
|
|
634
|
+
body: dict = None | DeleteRelationshipRequestBody, cascade_delete: bool = False) -> None:
|
|
637
635
|
"""
|
|
638
636
|
Detach a data class from a data structure. Request body is optional.
|
|
639
637
|
|
|
@@ -652,11 +650,11 @@ class DataDesigner(Client2):
|
|
|
652
650
|
|
|
653
651
|
Raises
|
|
654
652
|
------
|
|
655
|
-
|
|
653
|
+
PyegeriaInvalidParameterException
|
|
656
654
|
one of the parameters is null or invalid or
|
|
657
|
-
|
|
655
|
+
PyegeriaAPIException
|
|
658
656
|
There is a problem adding the element properties to the metadata repository or
|
|
659
|
-
|
|
657
|
+
PyegeriaUnauthorizedException
|
|
660
658
|
the requesting user is not authorized to issue this request.
|
|
661
659
|
|
|
662
660
|
Note
|
|
@@ -664,7 +662,7 @@ class DataDesigner(Client2):
|
|
|
664
662
|
|
|
665
663
|
Full sample body:
|
|
666
664
|
{
|
|
667
|
-
"class": "
|
|
665
|
+
"class": "DeleteRelationshipRequestBody",
|
|
668
666
|
"cascadedDelete": false,
|
|
669
667
|
"deleteMethod": "LOOK_FOR_LINEAGE",
|
|
670
668
|
"externalSourceGUID": "add guid here",
|
|
@@ -702,11 +700,11 @@ class DataDesigner(Client2):
|
|
|
702
700
|
|
|
703
701
|
Raises
|
|
704
702
|
------
|
|
705
|
-
|
|
703
|
+
PyegeriaInvalidParameterException
|
|
706
704
|
one of the parameters is null or invalid or
|
|
707
|
-
|
|
705
|
+
PyegeriaAPIException
|
|
708
706
|
There is a problem adding the element properties to the metadata repository or
|
|
709
|
-
|
|
707
|
+
PyegeriaUnauthorizedException
|
|
710
708
|
the requesting user is not authorized to issue this request.
|
|
711
709
|
|
|
712
710
|
Note
|
|
@@ -715,7 +713,7 @@ class DataDesigner(Client2):
|
|
|
715
713
|
Full sample body:
|
|
716
714
|
|
|
717
715
|
{
|
|
718
|
-
"class": "
|
|
716
|
+
"class": "DeleteRelationshipRequestBody",
|
|
719
717
|
"cascadedDelete": false,
|
|
720
718
|
"deleteMethod": "LOOK_FOR_LINEAGE",
|
|
721
719
|
"externalSourceGUID": "add guid here",
|
|
@@ -729,7 +727,7 @@ class DataDesigner(Client2):
|
|
|
729
727
|
|
|
730
728
|
url = f"{self.data_designer_root}/data-structures/{data_struct_guid}/delete"
|
|
731
729
|
|
|
732
|
-
await self.
|
|
730
|
+
await self._async_delete_element_request(url, body, cascade_delete)
|
|
733
731
|
logger.info(f"Data structure {data_struct_guid} deleted.")
|
|
734
732
|
|
|
735
733
|
@dynamic_catch
|
|
@@ -752,11 +750,11 @@ class DataDesigner(Client2):
|
|
|
752
750
|
|
|
753
751
|
Raises
|
|
754
752
|
------
|
|
755
|
-
|
|
753
|
+
PyegeriaInvalidParameterException
|
|
756
754
|
one of the parameters is null or invalid or
|
|
757
|
-
|
|
755
|
+
PyegeriaAPIException
|
|
758
756
|
There is a problem adding the element properties to the metadata repository or
|
|
759
|
-
|
|
757
|
+
PyegeriaUnauthorizedException
|
|
760
758
|
the requesting user is not authorized to issue this request.
|
|
761
759
|
|
|
762
760
|
Note
|
|
@@ -765,7 +763,7 @@ class DataDesigner(Client2):
|
|
|
765
763
|
Full sample body:
|
|
766
764
|
|
|
767
765
|
{
|
|
768
|
-
"class": "
|
|
766
|
+
"class": "DeleteRelationshipRequestBody",
|
|
769
767
|
"cascadedDelete": false,
|
|
770
768
|
"deleteMethod": "LOOK_FOR_LINEAGE",
|
|
771
769
|
"externalSourceGUID": "add guid here",
|
|
@@ -781,7 +779,7 @@ class DataDesigner(Client2):
|
|
|
781
779
|
loop.run_until_complete(self._async_delete_data_field(data_struct_guid, body, cascade_delete))
|
|
782
780
|
|
|
783
781
|
@dynamic_catch
|
|
784
|
-
def find_all_data_structures(self, output_format: str = 'JSON',
|
|
782
|
+
def find_all_data_structures(self, output_format: str = 'JSON', report_spec: str | dict = None) -> list | str:
|
|
785
783
|
"""Returns a list of all known data structures. Async version.
|
|
786
784
|
|
|
787
785
|
Parameters
|
|
@@ -789,7 +787,7 @@ class DataDesigner(Client2):
|
|
|
789
787
|
|
|
790
788
|
output_format: str, default = "DICT"
|
|
791
789
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
792
|
-
|
|
790
|
+
report_spec: dict, optional, default = None
|
|
793
791
|
- The desired output columns/field options.
|
|
794
792
|
Returns
|
|
795
793
|
-------
|
|
@@ -798,24 +796,38 @@ class DataDesigner(Client2):
|
|
|
798
796
|
|
|
799
797
|
Raises
|
|
800
798
|
------
|
|
801
|
-
|
|
799
|
+
PyegeriaInvalidParameterException
|
|
802
800
|
one of the parameters is null or invalid or
|
|
803
|
-
|
|
801
|
+
PyegeriaAPIException
|
|
804
802
|
There is a problem adding the element properties to the metadata repository or
|
|
805
|
-
|
|
803
|
+
PyegeriaUnauthorizedException
|
|
806
804
|
the requesting user is not authorized to issue this request.
|
|
807
805
|
|
|
808
806
|
"""
|
|
809
807
|
|
|
810
808
|
return self.find_data_structures(search_string="*", output_format=output_format,
|
|
811
|
-
|
|
809
|
+
report_spec=report_spec)
|
|
812
810
|
|
|
813
811
|
@dynamic_catch
|
|
814
|
-
async def _async_find_data_structures(self, search_string: str,
|
|
815
|
-
starts_with: bool = True, ends_with: bool = False,
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
812
|
+
async def _async_find_data_structures(self, search_string: str,
|
|
813
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
814
|
+
ignore_case: bool = False,
|
|
815
|
+
anchor_domain: Optional[str] = None,
|
|
816
|
+
metadata_element_type: Optional[str] = None,
|
|
817
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
818
|
+
skip_relationships: Optional[list[str]] = None,
|
|
819
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
820
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
821
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
822
|
+
graph_query_depth: int = 3,
|
|
823
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
824
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
825
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
826
|
+
sequencing_property: Optional[str] = None,
|
|
827
|
+
output_format: str = "JSON", report_spec: str | dict = None,
|
|
828
|
+
start_from: int = 0, page_size: int = 100,
|
|
829
|
+
property_names: Optional[list[str]] = None,
|
|
830
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
819
831
|
""" Find the list of data structure metadata elements that contain the search string.
|
|
820
832
|
Async version.
|
|
821
833
|
|
|
@@ -823,20 +835,59 @@ class DataDesigner(Client2):
|
|
|
823
835
|
----------
|
|
824
836
|
search_string: str
|
|
825
837
|
- search string to filter on.
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
838
|
+
starts_with : bool, [default=True], optional
|
|
839
|
+
Starts with the supplied string.
|
|
840
|
+
ends_with : bool, [default=False], optional
|
|
841
|
+
Ends with the supplied string
|
|
842
|
+
ignore_case : bool, [default=False], optional
|
|
843
|
+
Ignore case when searching
|
|
844
|
+
anchor_domain: str, optional
|
|
845
|
+
The anchor domain to search in.
|
|
846
|
+
metadata_element_type: str, optional
|
|
847
|
+
The type of metadata element to search for.
|
|
848
|
+
metadata_element_subtypes: list[str], optional
|
|
849
|
+
The subtypes of metadata element to search for.
|
|
850
|
+
skip_relationships: list[str], optional
|
|
851
|
+
The types of relationships to skip.
|
|
852
|
+
include_only_relationships: list[str], optional
|
|
853
|
+
The types of relationships to include.
|
|
854
|
+
skip_classified_elements: list[str], optional
|
|
855
|
+
The types of classified elements to skip.
|
|
856
|
+
include_only_classified_elements: list[str], optional
|
|
857
|
+
The types of classified elements to include.
|
|
858
|
+
graph_query_depth: int, [default=3], optional
|
|
859
|
+
The depth of the graph query.
|
|
860
|
+
governance_zone_filter: list[str], optional
|
|
861
|
+
The governance zones to search in.
|
|
862
|
+
as_of_time: str, optional
|
|
863
|
+
The time to search as of.
|
|
864
|
+
effective_time: str, optional
|
|
865
|
+
The effective time to search at.
|
|
866
|
+
relationship_page_size: int, [default=0], optional
|
|
867
|
+
The page size for relationships.
|
|
868
|
+
limit_results_by_status: list[str], optional
|
|
869
|
+
The statuses to limit results by.
|
|
870
|
+
sequencing_order: str, optional
|
|
871
|
+
The order to sequence results by.
|
|
872
|
+
sequencing_property: str, optional
|
|
873
|
+
The property to sequence results by.
|
|
874
|
+
output_format: str, default = 'JSON'
|
|
875
|
+
Type of output to produce:
|
|
876
|
+
JSON - output standard json
|
|
877
|
+
MD - output standard markdown with no preamble
|
|
878
|
+
FORM - output markdown with a preamble for a form
|
|
879
|
+
REPORT - output markdown with a preamble for a report
|
|
880
|
+
report_spec: str | dict, optional
|
|
881
|
+
The report specification to use.
|
|
882
|
+
start_from: int, [default=0], optional
|
|
883
|
+
The page number to start from.
|
|
884
|
+
page_size: int, [default=100], optional
|
|
885
|
+
The number of items to return in a single page.
|
|
886
|
+
property_names: list[str], optional
|
|
887
|
+
The names of properties to search for.
|
|
888
|
+
body: dict, optional, default = None
|
|
889
|
+
- additional optional specifications for the search.
|
|
890
|
+
|
|
840
891
|
Returns
|
|
841
892
|
-------
|
|
842
893
|
[dict] | str
|
|
@@ -844,11 +895,11 @@ class DataDesigner(Client2):
|
|
|
844
895
|
|
|
845
896
|
Raises
|
|
846
897
|
------
|
|
847
|
-
|
|
898
|
+
PyegeriaInvalidParameterException
|
|
848
899
|
one of the parameters is null or invalid or
|
|
849
|
-
|
|
900
|
+
PyegeriaAPIException
|
|
850
901
|
There is a problem adding the element properties to the metadata repository or
|
|
851
|
-
|
|
902
|
+
PyegeriaUnauthorizedException
|
|
852
903
|
the requesting user is not authorized to issue this request.
|
|
853
904
|
|
|
854
905
|
Notes:
|
|
@@ -874,37 +925,105 @@ class DataDesigner(Client2):
|
|
|
874
925
|
|
|
875
926
|
url = f"{base_path(self, self.view_server)}/data-structures/by-search-string"
|
|
876
927
|
|
|
877
|
-
return await self._async_find_request(url, "DataStructure", self._generate_data_structure_output,
|
|
878
|
-
search_string, start_from=start_from, page_size=page_size,
|
|
928
|
+
return await self._async_find_request(url, "DataStructure", self._generate_data_structure_output, search_string,
|
|
879
929
|
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
|
880
|
-
|
|
881
|
-
|
|
930
|
+
anchor_domain=anchor_domain,
|
|
931
|
+
metadata_element_type=metadata_element_type,
|
|
932
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
933
|
+
skip_relationships=skip_relationships,
|
|
934
|
+
include_only_relationships=include_only_relationships,
|
|
935
|
+
skip_classified_elements=skip_classified_elements,
|
|
936
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
937
|
+
graph_query_depth=graph_query_depth,
|
|
938
|
+
governance_zone_filter=governance_zone_filter,
|
|
939
|
+
as_of_time=as_of_time, effective_time=effective_time,
|
|
940
|
+
relationship_page_size=relationship_page_size,
|
|
941
|
+
limit_results_by_status=limit_results_by_status,
|
|
942
|
+
sequencing_order=sequencing_order,
|
|
943
|
+
sequencing_property=sequencing_property,
|
|
944
|
+
output_format=output_format, report_spec=report_spec,
|
|
945
|
+
start_from=start_from, page_size=page_size,
|
|
946
|
+
property_names=property_names, body=body)
|
|
882
947
|
|
|
883
948
|
@dynamic_catch
|
|
884
|
-
def find_data_structures(self, search_string: str,
|
|
885
|
-
starts_with: bool = True, ends_with: bool = False,
|
|
886
|
-
|
|
887
|
-
|
|
949
|
+
def find_data_structures(self, search_string: str,
|
|
950
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
951
|
+
ignore_case: bool = False,
|
|
952
|
+
anchor_domain: Optional[str] = None,
|
|
953
|
+
metadata_element_type: Optional[str] = None,
|
|
954
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
955
|
+
skip_relationships: Optional[list[str]] = None,
|
|
956
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
957
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
958
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
959
|
+
graph_query_depth: int = 3,
|
|
960
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
961
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
962
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
963
|
+
sequencing_property: Optional[str] = None,
|
|
964
|
+
output_format: str = "JSON", report_spec: str | dict = None,
|
|
965
|
+
start_from: int = 0, page_size: int = 100,
|
|
966
|
+
property_names: Optional[list[str]] = None,
|
|
967
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
888
968
|
""" Find the list of data structure metadata elements that contain the search string.
|
|
889
969
|
|
|
890
970
|
Parameters
|
|
891
971
|
----------
|
|
892
972
|
search_string: str
|
|
893
973
|
- search string to filter on.
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
974
|
+
starts_with : bool, [default=True], optional
|
|
975
|
+
Starts with the supplied string.
|
|
976
|
+
ends_with : bool, [default=False], optional
|
|
977
|
+
Ends with the supplied string
|
|
978
|
+
ignore_case : bool, [default=False], optional
|
|
979
|
+
Ignore case when searching
|
|
980
|
+
anchor_domain: str, optional
|
|
981
|
+
The anchor domain to search in.
|
|
982
|
+
metadata_element_type: str, optional
|
|
983
|
+
The type of metadata element to search for.
|
|
984
|
+
metadata_element_subtypes: list[str], optional
|
|
985
|
+
The subtypes of metadata element to search for.
|
|
986
|
+
skip_relationships: list[str], optional
|
|
987
|
+
The types of relationships to skip.
|
|
988
|
+
include_only_relationships: list[str], optional
|
|
989
|
+
The types of relationships to include.
|
|
990
|
+
skip_classified_elements: list[str], optional
|
|
991
|
+
The types of classified elements to skip.
|
|
992
|
+
include_only_classified_elements: list[str], optional
|
|
993
|
+
The types of classified elements to include.
|
|
994
|
+
graph_query_depth: int, [default=3], optional
|
|
995
|
+
The depth of the graph query.
|
|
996
|
+
governance_zone_filter: list[str], optional
|
|
997
|
+
The governance zones to search in.
|
|
998
|
+
as_of_time: str, optional
|
|
999
|
+
The time to search as of.
|
|
1000
|
+
effective_time: str, optional
|
|
1001
|
+
The effective time to search at.
|
|
1002
|
+
relationship_page_size: int, [default=0], optional
|
|
1003
|
+
The page size for relationships.
|
|
1004
|
+
limit_results_by_status: list[str], optional
|
|
1005
|
+
The statuses to limit results by.
|
|
1006
|
+
sequencing_order: str, optional
|
|
1007
|
+
The order to sequence results by.
|
|
1008
|
+
sequencing_property: str, optional
|
|
1009
|
+
The property to sequence results by.
|
|
1010
|
+
output_format: str, default = 'JSON'
|
|
1011
|
+
Type of output to produce:
|
|
1012
|
+
JSON - output standard json
|
|
1013
|
+
MD - output standard markdown with no preamble
|
|
1014
|
+
FORM - output markdown with a preamble for a form
|
|
1015
|
+
REPORT - output markdown with a preamble for a report
|
|
1016
|
+
report_spec: str | dict, optional
|
|
1017
|
+
The report specification to use.
|
|
1018
|
+
start_from: int, [default=0], optional
|
|
1019
|
+
The page number to start from.
|
|
1020
|
+
page_size: int, [default=100], optional
|
|
1021
|
+
The number of items to return in a single page.
|
|
1022
|
+
property_names: list[str], optional
|
|
1023
|
+
The names of properties to search for.
|
|
1024
|
+
body: dict, optional, default = None
|
|
1025
|
+
- additional optional specifications for the search.
|
|
1026
|
+
|
|
908
1027
|
Returns
|
|
909
1028
|
-------
|
|
910
1029
|
[dict] | str
|
|
@@ -912,11 +1031,11 @@ class DataDesigner(Client2):
|
|
|
912
1031
|
|
|
913
1032
|
Raises
|
|
914
1033
|
------
|
|
915
|
-
|
|
1034
|
+
PyegeriaInvalidParameterException
|
|
916
1035
|
one of the parameters is null or invalid or
|
|
917
|
-
|
|
1036
|
+
PyegeriaAPIException
|
|
918
1037
|
There is a problem adding the element properties to the metadata repository or
|
|
919
|
-
|
|
1038
|
+
PyegeriaUnauthorizedException
|
|
920
1039
|
the requesting user is not authorized to issue this request.
|
|
921
1040
|
|
|
922
1041
|
Notes:
|
|
@@ -942,22 +1061,39 @@ class DataDesigner(Client2):
|
|
|
942
1061
|
|
|
943
1062
|
loop = asyncio.get_event_loop()
|
|
944
1063
|
response = loop.run_until_complete(
|
|
945
|
-
self._async_find_data_structures(search_string,
|
|
946
|
-
|
|
1064
|
+
self._async_find_data_structures(search_string,
|
|
1065
|
+
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
|
1066
|
+
anchor_domain=anchor_domain,
|
|
1067
|
+
metadata_element_type=metadata_element_type,
|
|
1068
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
1069
|
+
skip_relationships=skip_relationships,
|
|
1070
|
+
include_only_relationships=include_only_relationships,
|
|
1071
|
+
skip_classified_elements=skip_classified_elements,
|
|
1072
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
1073
|
+
graph_query_depth=graph_query_depth,
|
|
1074
|
+
governance_zone_filter=governance_zone_filter,
|
|
1075
|
+
as_of_time=as_of_time, effective_time=effective_time,
|
|
1076
|
+
relationship_page_size=relationship_page_size,
|
|
1077
|
+
limit_results_by_status=limit_results_by_status,
|
|
1078
|
+
sequencing_order=sequencing_order,
|
|
1079
|
+
sequencing_property=sequencing_property,
|
|
1080
|
+
output_format=output_format, report_spec=report_spec,
|
|
1081
|
+
start_from=start_from, page_size=page_size,
|
|
1082
|
+
property_names=property_names, body=body))
|
|
947
1083
|
return response
|
|
948
1084
|
|
|
949
1085
|
@dynamic_catch
|
|
950
|
-
async def _async_get_data_structures_by_name(self, filter_string: str, classification_names: list[str] = None,
|
|
951
|
-
body: dict | FilterRequestBody = None, start_from: int = 0,
|
|
1086
|
+
async def _async_get_data_structures_by_name(self, filter_string: str, classification_names: Optional[list[str]] = None,
|
|
1087
|
+
body: Optional[dict | FilterRequestBody] = None, start_from: int = 0,
|
|
952
1088
|
page_size: int = 0,
|
|
953
1089
|
output_format: str = 'JSON',
|
|
954
|
-
|
|
1090
|
+
report_spec: str | dict = None) -> list | str:
|
|
955
1091
|
""" Get the list of data structure metadata elements with a matching name to the search string filter.
|
|
956
1092
|
Async version.
|
|
957
1093
|
|
|
958
1094
|
Parameters
|
|
959
1095
|
----------
|
|
960
|
-
|
|
1096
|
+
filter_string : str
|
|
961
1097
|
- search string to filter on.
|
|
962
1098
|
body: dict, optional
|
|
963
1099
|
- a dictionary containing additional properties for the request.
|
|
@@ -967,7 +1103,7 @@ class DataDesigner(Client2):
|
|
|
967
1103
|
- maximum number of elements to return.
|
|
968
1104
|
output_format: str, default = "DICT"
|
|
969
1105
|
- one of "DICT", "MERMAID" or "JSON"
|
|
970
|
-
|
|
1106
|
+
report_spec: str | dict, optional, default = None
|
|
971
1107
|
- The desired output columns/field options.
|
|
972
1108
|
|
|
973
1109
|
Returns
|
|
@@ -977,11 +1113,11 @@ class DataDesigner(Client2):
|
|
|
977
1113
|
|
|
978
1114
|
Raises
|
|
979
1115
|
------
|
|
980
|
-
|
|
1116
|
+
PyegeriaInvalidParameterException
|
|
981
1117
|
one of the parameters is null or invalid or
|
|
982
|
-
|
|
1118
|
+
PyegeriaAPIException
|
|
983
1119
|
There is a problem adding the element properties to the metadata repository or
|
|
984
|
-
|
|
1120
|
+
PyegeriaUnauthorizedException
|
|
985
1121
|
the requesting user is not authorized to issue this request.
|
|
986
1122
|
|
|
987
1123
|
Notes
|
|
@@ -1005,21 +1141,21 @@ class DataDesigner(Client2):
|
|
|
1005
1141
|
filter_string=filter_string,
|
|
1006
1142
|
classification_names=classification_names,
|
|
1007
1143
|
start_from=start_from, page_size=page_size,
|
|
1008
|
-
output_format=output_format,
|
|
1144
|
+
output_format=output_format, report_spec=report_spec,
|
|
1009
1145
|
body=body)
|
|
1010
1146
|
|
|
1011
1147
|
return response
|
|
1012
1148
|
|
|
1013
1149
|
@dynamic_catch
|
|
1014
|
-
def get_data_structures_by_name(self,
|
|
1015
|
-
body: dict | FilterRequestBody = None, start_from: int = 0,
|
|
1150
|
+
def get_data_structures_by_name(self, filter_string: str, classification_names: Optional[list[str]] = None,
|
|
1151
|
+
body: Optional[dict | FilterRequestBody] = None, start_from: int = 0,
|
|
1016
1152
|
page_size: int = max_paging_size, output_format: str = 'JSON',
|
|
1017
|
-
|
|
1153
|
+
report_spec: str | dict = None) -> list | str:
|
|
1018
1154
|
""" Get the list of data structure metadata elements with a matching name to the search string filter.
|
|
1019
1155
|
|
|
1020
1156
|
Parameters
|
|
1021
1157
|
----------
|
|
1022
|
-
|
|
1158
|
+
filter_string : str
|
|
1023
1159
|
- search string to filter on.
|
|
1024
1160
|
body: dict, optional
|
|
1025
1161
|
- a dictionary containing additional properties for the request.
|
|
@@ -1029,7 +1165,7 @@ class DataDesigner(Client2):
|
|
|
1029
1165
|
- maximum number of elements to return.
|
|
1030
1166
|
output_format: str, default = "DICT"
|
|
1031
1167
|
- one of "DICT", "MERMAID" or "JSON"
|
|
1032
|
-
|
|
1168
|
+
report_spec: str | dict, optional, default = None
|
|
1033
1169
|
- The desired output columns/field options.
|
|
1034
1170
|
|
|
1035
1171
|
Returns
|
|
@@ -1039,11 +1175,11 @@ class DataDesigner(Client2):
|
|
|
1039
1175
|
|
|
1040
1176
|
Raises
|
|
1041
1177
|
------
|
|
1042
|
-
|
|
1178
|
+
PyegeriaInvalidParameterException
|
|
1043
1179
|
one of the parameters is null or invalid or
|
|
1044
|
-
|
|
1180
|
+
PyegeriaAPIException
|
|
1045
1181
|
There is a problem adding the element properties to the metadata repository or
|
|
1046
|
-
|
|
1182
|
+
PyegeriaUnauthorizedException
|
|
1047
1183
|
the requesting user is not authorized to issue this request.
|
|
1048
1184
|
|
|
1049
1185
|
|
|
@@ -1051,15 +1187,15 @@ class DataDesigner(Client2):
|
|
|
1051
1187
|
|
|
1052
1188
|
loop = asyncio.get_event_loop()
|
|
1053
1189
|
response = loop.run_until_complete(
|
|
1054
|
-
self._async_get_data_structures_by_name(
|
|
1055
|
-
output_format,
|
|
1190
|
+
self._async_get_data_structures_by_name(filter_string, classification_names, body, start_from, page_size,
|
|
1191
|
+
output_format, report_spec))
|
|
1056
1192
|
return response
|
|
1057
1193
|
|
|
1058
1194
|
@dynamic_catch
|
|
1059
|
-
async def _async_get_data_structure_by_guid(self, guid: str, element_type: str = None,
|
|
1060
|
-
body: dict | GetRequestBody = None,
|
|
1195
|
+
async def _async_get_data_structure_by_guid(self, guid: str, element_type: Optional[str] = None,
|
|
1196
|
+
body: Optional[dict | GetRequestBody] = None,
|
|
1061
1197
|
output_format: str = 'JSON',
|
|
1062
|
-
|
|
1198
|
+
report_spec: str | dict = None) -> list | str:
|
|
1063
1199
|
""" Get the data structure metadata elements for the specified GUID.
|
|
1064
1200
|
Async version.
|
|
1065
1201
|
|
|
@@ -1073,7 +1209,7 @@ class DataDesigner(Client2):
|
|
|
1073
1209
|
- optional request body.
|
|
1074
1210
|
output_format: str, default = "DICT"
|
|
1075
1211
|
- one of "DICT", "MERMAID" or "JSON"
|
|
1076
|
-
|
|
1212
|
+
report_spec: str | dict, optional, default = None
|
|
1077
1213
|
- The desired output columns/field options.
|
|
1078
1214
|
|
|
1079
1215
|
Returns
|
|
@@ -1083,11 +1219,11 @@ class DataDesigner(Client2):
|
|
|
1083
1219
|
|
|
1084
1220
|
Raises
|
|
1085
1221
|
------
|
|
1086
|
-
|
|
1222
|
+
PyegeriaInvalidParameterException
|
|
1087
1223
|
one of the parameters is null or invalid or
|
|
1088
|
-
|
|
1224
|
+
PyegeriaAPIException
|
|
1089
1225
|
There is a problem adding the element properties to the metadata repository or
|
|
1090
|
-
|
|
1226
|
+
PyegeriaUnauthorizedException
|
|
1091
1227
|
the requesting user is not authorized to issue this request.
|
|
1092
1228
|
|
|
1093
1229
|
Notes
|
|
@@ -1110,14 +1246,14 @@ class DataDesigner(Client2):
|
|
|
1110
1246
|
|
|
1111
1247
|
response = await self._async_get_guid_request(url, _type=type,
|
|
1112
1248
|
_gen_output=self._generate_data_structure_output,
|
|
1113
|
-
output_format=output_format,
|
|
1249
|
+
output_format=output_format, report_spec=report_spec,
|
|
1114
1250
|
body=body)
|
|
1115
1251
|
|
|
1116
1252
|
return response
|
|
1117
1253
|
|
|
1118
1254
|
@dynamic_catch
|
|
1119
|
-
def get_data_structure_by_guid(self, guid: str, element_type: str = None, body: str = None,
|
|
1120
|
-
output_format: str = 'JSON',
|
|
1255
|
+
def get_data_structure_by_guid(self, guid: str, element_type: Optional[str] = None, body: Optional[str] = None,
|
|
1256
|
+
output_format: str = 'JSON', report_spec: str | dict = None) -> list | str:
|
|
1121
1257
|
""" Get the data structure metadata element with the specified unique identifier..
|
|
1122
1258
|
|
|
1123
1259
|
Parameters
|
|
@@ -1130,7 +1266,7 @@ class DataDesigner(Client2):
|
|
|
1130
1266
|
- optional request body.
|
|
1131
1267
|
output_format: str, default = "DICT"
|
|
1132
1268
|
- one of "DICT", "MERMAID" or "JSON"
|
|
1133
|
-
|
|
1269
|
+
report_spec: str | dict, optional, default = None
|
|
1134
1270
|
- The desired output columns/field options.
|
|
1135
1271
|
|
|
1136
1272
|
Returns
|
|
@@ -1140,11 +1276,11 @@ class DataDesigner(Client2):
|
|
|
1140
1276
|
|
|
1141
1277
|
Raises
|
|
1142
1278
|
------
|
|
1143
|
-
|
|
1279
|
+
PyegeriaInvalidParameterException
|
|
1144
1280
|
one of the parameters is null or invalid or
|
|
1145
|
-
|
|
1281
|
+
PyegeriaAPIException
|
|
1146
1282
|
There is a problem adding the element properties to the metadata repository or
|
|
1147
|
-
|
|
1283
|
+
PyegeriaUnauthorizedException
|
|
1148
1284
|
the requesting user is not authorized to issue this request.
|
|
1149
1285
|
|
|
1150
1286
|
Notes
|
|
@@ -1163,7 +1299,7 @@ class DataDesigner(Client2):
|
|
|
1163
1299
|
|
|
1164
1300
|
loop = asyncio.get_event_loop()
|
|
1165
1301
|
response = loop.run_until_complete(
|
|
1166
|
-
self._async_get_data_structure_by_guid(guid, element_type, body, output_format,
|
|
1302
|
+
self._async_get_data_structure_by_guid(guid, element_type, body, output_format, report_spec))
|
|
1167
1303
|
return response
|
|
1168
1304
|
|
|
1169
1305
|
def get_data_memberships(self, data_get_fcn: callable, data_struct_guid: str) -> dict | None:
|
|
@@ -1276,33 +1412,29 @@ class DataDesigner(Client2):
|
|
|
1276
1412
|
assigned_meanings_qnames.append(meaning['relatedElement']['properties']['qualifiedName'])
|
|
1277
1413
|
|
|
1278
1414
|
# extract existing related data structure and data field elements
|
|
1279
|
-
|
|
1280
|
-
if
|
|
1281
|
-
for rel in
|
|
1415
|
+
part_of_data_struct = el_struct.get("partOfDataStructures", None)
|
|
1416
|
+
if part_of_data_struct:
|
|
1417
|
+
for rel in part_of_data_struct:
|
|
1282
1418
|
related_element = rel["relatedElement"]
|
|
1283
|
-
type = related_element["elementHeader"]["type"]["typeName"]
|
|
1284
1419
|
guid = related_element["elementHeader"]["guid"]
|
|
1285
1420
|
qualified_name = related_element["properties"].get("qualifiedName", "") or ""
|
|
1286
1421
|
display_name = related_element["properties"].get("displayName", "") or ""
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
parent_qnames.append(qualified_name)
|
|
1422
|
+
data_structure_guids.append(guid)
|
|
1423
|
+
data_structure_names.append(display_name)
|
|
1424
|
+
data_structure_qnames.append(qualified_name)
|
|
1425
|
+
# Todo - check the logic here
|
|
1426
|
+
# elif type == "DataField":
|
|
1427
|
+
# parent_guids.append(guid)
|
|
1428
|
+
# parent_names.append(display_name)
|
|
1429
|
+
# parent_qnames.append(qualified_name)
|
|
1296
1430
|
|
|
1297
1431
|
member_of_collections = el_struct.get("memberOfCollections", {})
|
|
1298
1432
|
for collection in member_of_collections:
|
|
1299
|
-
|
|
1433
|
+
type_name = collection["relatedElement"]["elementHeader"]["type"].get("typeName", "") or ""
|
|
1300
1434
|
guid = collection["relatedElement"]["elementHeader"]["guid"]
|
|
1301
|
-
name = collection["relatedElement"]["properties"].get("
|
|
1435
|
+
name = collection["relatedElement"]["properties"].get("displayName", "") or ""
|
|
1302
1436
|
qualifiedName = collection['relatedElement']["properties"].get("qualifiedName", "") or ""
|
|
1303
|
-
|
|
1304
|
-
for classification in classifications:
|
|
1305
|
-
type_name = classification["type"]['typeName']
|
|
1437
|
+
if type_name:
|
|
1306
1438
|
if type_name == "DataDictionary":
|
|
1307
1439
|
member_of_data_dicts_guids.append(guid)
|
|
1308
1440
|
member_of_data_dicts_names.append(name)
|
|
@@ -1312,11 +1444,12 @@ class DataDesigner(Client2):
|
|
|
1312
1444
|
member_of_data_spec_names.append(name)
|
|
1313
1445
|
member_of_data_spec_qnames.append(qualifiedName)
|
|
1314
1446
|
|
|
1315
|
-
member_data_fields = el_struct.get("
|
|
1447
|
+
member_data_fields = el_struct.get("containsDataFields", {})
|
|
1316
1448
|
for data_field in member_data_fields:
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1449
|
+
rel_el = data_field.get("relatedElement",{})
|
|
1450
|
+
member_data_field_guids.append(rel_el["elementHeader"]["guid"])
|
|
1451
|
+
member_data_field_names.append(rel_el["properties"]["displayName"])
|
|
1452
|
+
member_data_field_qnames.append(rel_el["properties"]["qualifiedName"])
|
|
1320
1453
|
|
|
1321
1454
|
data_classes = el_struct.get("assignedDataClasses", {})
|
|
1322
1455
|
for data_class in data_classes:
|
|
@@ -1345,7 +1478,7 @@ class DataDesigner(Client2):
|
|
|
1345
1478
|
|
|
1346
1479
|
"data_structure_guids": data_structure_guids,
|
|
1347
1480
|
"data_structure_names": data_structure_names,
|
|
1348
|
-
"
|
|
1481
|
+
"in_data_structure": data_structure_qnames,
|
|
1349
1482
|
|
|
1350
1483
|
"assigned_meanings_guids": assigned_meanings_guids,
|
|
1351
1484
|
"assigned_meanings_names": assigned_meanings_names,
|
|
@@ -1369,15 +1502,15 @@ class DataDesigner(Client2):
|
|
|
1369
1502
|
|
|
1370
1503
|
"member_of_data_dicts_guids": member_of_data_dicts_guids,
|
|
1371
1504
|
"member_of_data_dicts_names": member_of_data_dicts_names,
|
|
1372
|
-
"
|
|
1505
|
+
"in_data_dictionary": member_of_data_dicts_qnames,
|
|
1373
1506
|
|
|
1374
1507
|
"member_of_data_spec_guids": member_of_data_spec_guids,
|
|
1375
1508
|
"member_of_data_spec_names": member_of_data_spec_names,
|
|
1376
|
-
"
|
|
1509
|
+
"in_data_spec": member_of_data_spec_qnames,
|
|
1377
1510
|
|
|
1378
1511
|
"member_data_field_guids": member_data_field_guids,
|
|
1379
1512
|
"member_data_field_names": member_data_field_names,
|
|
1380
|
-
"
|
|
1513
|
+
"member_data_fields": member_data_field_qnames,
|
|
1381
1514
|
|
|
1382
1515
|
"mermaid": mermaid,
|
|
1383
1516
|
}
|
|
@@ -1419,11 +1552,11 @@ class DataDesigner(Client2):
|
|
|
1419
1552
|
|
|
1420
1553
|
Raises
|
|
1421
1554
|
------
|
|
1422
|
-
|
|
1555
|
+
PyegeriaInvalidParameterException
|
|
1423
1556
|
one of the parameters is null or invalid or
|
|
1424
|
-
|
|
1557
|
+
PyegeriaAPIException
|
|
1425
1558
|
There is a problem adding the element properties to the metadata repository or
|
|
1426
|
-
|
|
1559
|
+
PyegeriaUnauthorizedException
|
|
1427
1560
|
the requesting user is not authorized to issue this request.
|
|
1428
1561
|
|
|
1429
1562
|
Note
|
|
@@ -1531,11 +1664,11 @@ class DataDesigner(Client2):
|
|
|
1531
1664
|
|
|
1532
1665
|
Raises
|
|
1533
1666
|
------
|
|
1534
|
-
|
|
1667
|
+
PyegeriaInvalidParameterException
|
|
1535
1668
|
one of the parameters is null or invalid or
|
|
1536
|
-
|
|
1669
|
+
PyegeriaAPIException
|
|
1537
1670
|
There is a problem adding the element properties to the metadata repository or
|
|
1538
|
-
|
|
1671
|
+
PyegeriaUnauthorizedException
|
|
1539
1672
|
the requesting user is not authorized to issue this request.
|
|
1540
1673
|
|
|
1541
1674
|
Note
|
|
@@ -1646,11 +1779,11 @@ class DataDesigner(Client2):
|
|
|
1646
1779
|
|
|
1647
1780
|
Raises
|
|
1648
1781
|
------
|
|
1649
|
-
|
|
1782
|
+
PyegeriaInvalidParameterException
|
|
1650
1783
|
one of the parameters is null or invalid or
|
|
1651
|
-
|
|
1784
|
+
PyegeriaAPIException
|
|
1652
1785
|
There is a problem adding the element properties to the metadata repository or
|
|
1653
|
-
|
|
1786
|
+
PyegeriaUnauthorizedException
|
|
1654
1787
|
the requesting user is not authorized to issue this request.
|
|
1655
1788
|
|
|
1656
1789
|
Note
|
|
@@ -1719,11 +1852,11 @@ class DataDesigner(Client2):
|
|
|
1719
1852
|
|
|
1720
1853
|
Raises
|
|
1721
1854
|
------
|
|
1722
|
-
|
|
1855
|
+
PyegeriaInvalidParameterException
|
|
1723
1856
|
one of the parameters is null or invalid or
|
|
1724
|
-
|
|
1857
|
+
PyegeriaAPIException
|
|
1725
1858
|
There is a problem adding the element properties to the metadata repository or
|
|
1726
|
-
|
|
1859
|
+
PyegeriaUnauthorizedException
|
|
1727
1860
|
the requesting user is not authorized to issue this request.
|
|
1728
1861
|
|
|
1729
1862
|
Note
|
|
@@ -1791,11 +1924,11 @@ class DataDesigner(Client2):
|
|
|
1791
1924
|
|
|
1792
1925
|
Raises
|
|
1793
1926
|
------
|
|
1794
|
-
|
|
1927
|
+
PyegeriaInvalidParameterException
|
|
1795
1928
|
one of the parameters is null or invalid or
|
|
1796
|
-
|
|
1929
|
+
PyegeriaAPIException
|
|
1797
1930
|
There is a problem adding the element properties to the metadata repository or
|
|
1798
|
-
|
|
1931
|
+
PyegeriaUnauthorizedException
|
|
1799
1932
|
the requesting user is not authorized to issue this request.
|
|
1800
1933
|
|
|
1801
1934
|
Note
|
|
@@ -1864,11 +1997,11 @@ class DataDesigner(Client2):
|
|
|
1864
1997
|
|
|
1865
1998
|
Raises
|
|
1866
1999
|
------
|
|
1867
|
-
|
|
2000
|
+
PyegeriaInvalidParameterException
|
|
1868
2001
|
one of the parameters is null or invalid or
|
|
1869
|
-
|
|
2002
|
+
PyegeriaAPIException
|
|
1870
2003
|
There is a problem adding the element properties to the metadata repository or
|
|
1871
|
-
|
|
2004
|
+
PyegeriaUnauthorizedException
|
|
1872
2005
|
the requesting user is not authorized to issue this request.
|
|
1873
2006
|
|
|
1874
2007
|
Note
|
|
@@ -1916,7 +2049,7 @@ class DataDesigner(Client2):
|
|
|
1916
2049
|
|
|
1917
2050
|
@dynamic_catch
|
|
1918
2051
|
async def _async_link_nested_data_field(self, parent_data_field_guid: str, nested_data_field_guid: str,
|
|
1919
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
2052
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
1920
2053
|
"""
|
|
1921
2054
|
Connect a nested data field to a data field. Request body is optional. Async version.
|
|
1922
2055
|
|
|
@@ -1935,11 +2068,11 @@ class DataDesigner(Client2):
|
|
|
1935
2068
|
|
|
1936
2069
|
Raises
|
|
1937
2070
|
------
|
|
1938
|
-
|
|
2071
|
+
PyegeriaInvalidParameterException
|
|
1939
2072
|
one of the parameters is null or invalid or
|
|
1940
|
-
|
|
2073
|
+
PyegeriaAPIException
|
|
1941
2074
|
There is a problem adding the element properties to the metadata repository or
|
|
1942
|
-
|
|
2075
|
+
PyegeriaUnauthorizedException
|
|
1943
2076
|
the requesting user is not authorized to issue this request.
|
|
1944
2077
|
|
|
1945
2078
|
Note
|
|
@@ -1974,7 +2107,7 @@ class DataDesigner(Client2):
|
|
|
1974
2107
|
|
|
1975
2108
|
@dynamic_catch
|
|
1976
2109
|
def link_nested_data_field(self, parent_data_field_guid: str, nested_data_field_guid: str,
|
|
1977
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
2110
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
1978
2111
|
"""
|
|
1979
2112
|
Connect a nested data class to a data class. Request body is optional.
|
|
1980
2113
|
|
|
@@ -1993,11 +2126,11 @@ class DataDesigner(Client2):
|
|
|
1993
2126
|
|
|
1994
2127
|
Raises
|
|
1995
2128
|
------
|
|
1996
|
-
|
|
2129
|
+
PyegeriaInvalidParameterException
|
|
1997
2130
|
one of the parameters is null or invalid or
|
|
1998
|
-
|
|
2131
|
+
PyegeriaAPIException
|
|
1999
2132
|
There is a problem adding the element properties to the metadata repository or
|
|
2000
|
-
|
|
2133
|
+
PyegeriaUnauthorizedException
|
|
2001
2134
|
the requesting user is not authorized to issue this request.
|
|
2002
2135
|
|
|
2003
2136
|
Note
|
|
@@ -2030,7 +2163,7 @@ class DataDesigner(Client2):
|
|
|
2030
2163
|
|
|
2031
2164
|
@dynamic_catch
|
|
2032
2165
|
async def _async_detach_nested_data_field(self, parent_data_field_guid: str, nested_data_field_guid: str,
|
|
2033
|
-
body: dict |
|
|
2166
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None) -> None:
|
|
2034
2167
|
"""
|
|
2035
2168
|
Detach a nested data class from a data class. Request body is optional. Async version.
|
|
2036
2169
|
|
|
@@ -2049,11 +2182,11 @@ class DataDesigner(Client2):
|
|
|
2049
2182
|
|
|
2050
2183
|
Raises
|
|
2051
2184
|
------
|
|
2052
|
-
|
|
2185
|
+
PyegeriaInvalidParameterException
|
|
2053
2186
|
one of the parameters is null or invalid or
|
|
2054
|
-
|
|
2187
|
+
PyegeriaAPIException
|
|
2055
2188
|
There is a problem adding the element properties to the metadata repository or
|
|
2056
|
-
|
|
2189
|
+
PyegeriaUnauthorizedException
|
|
2057
2190
|
the requesting user is not authorized to issue this request.
|
|
2058
2191
|
|
|
2059
2192
|
Note
|
|
@@ -2076,12 +2209,12 @@ class DataDesigner(Client2):
|
|
|
2076
2209
|
url = (f"{base_path(self, self.view_server)}/data-fields/{parent_data_field_guid}"
|
|
2077
2210
|
f"/member-data-fields/{nested_data_field_guid}/detach")
|
|
2078
2211
|
|
|
2079
|
-
await self.
|
|
2212
|
+
await self._async_delete_relationship_request(url, body)
|
|
2080
2213
|
logger.info(f"Data field {parent_data_field_guid} detached from data structure {nested_data_field_guid}.")
|
|
2081
2214
|
|
|
2082
2215
|
@dynamic_catch
|
|
2083
2216
|
def detach_nested_data_field(self, parent_data_field_guid: str, nested_data_field_guid: str,
|
|
2084
|
-
body: dict |
|
|
2217
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None) -> None:
|
|
2085
2218
|
"""
|
|
2086
2219
|
Detach a nested data class from a data class. Request body is optional.
|
|
2087
2220
|
|
|
@@ -2100,11 +2233,11 @@ class DataDesigner(Client2):
|
|
|
2100
2233
|
|
|
2101
2234
|
Raises
|
|
2102
2235
|
------
|
|
2103
|
-
|
|
2236
|
+
PyegeriaInvalidParameterException
|
|
2104
2237
|
one of the parameters is null or invalid or
|
|
2105
|
-
|
|
2238
|
+
PyegeriaAPIException
|
|
2106
2239
|
There is a problem adding the element properties to the metadata repository or
|
|
2107
|
-
|
|
2240
|
+
PyegeriaUnauthorizedException
|
|
2108
2241
|
the requesting user is not authorized to issue this request.
|
|
2109
2242
|
|
|
2110
2243
|
Note
|
|
@@ -2128,7 +2261,7 @@ class DataDesigner(Client2):
|
|
|
2128
2261
|
self._async_detach_nested_data_field(parent_data_field_guid, nested_data_field_guid, body))
|
|
2129
2262
|
|
|
2130
2263
|
@dynamic_catch
|
|
2131
|
-
async def _async_delete_data_field(self, data_field_guid: str, body: dict |
|
|
2264
|
+
async def _async_delete_data_field(self, data_field_guid: str, body: Optional[dict | DeleteElementRequestBody] = None,
|
|
2132
2265
|
cascade_delete: bool = False) -> None:
|
|
2133
2266
|
"""
|
|
2134
2267
|
Delete a data class. Request body is optional. Async version.
|
|
@@ -2137,7 +2270,7 @@ class DataDesigner(Client2):
|
|
|
2137
2270
|
----------
|
|
2138
2271
|
data_field_guid: str
|
|
2139
2272
|
- the GUID of the data class to delete.
|
|
2140
|
-
body: dict, optional
|
|
2273
|
+
body: dict| DeleteElementRequestBody, optional
|
|
2141
2274
|
- a dictionary containing additional properties.
|
|
2142
2275
|
cascade: bool, optional
|
|
2143
2276
|
- if True, then all child data fields will be deleted as well.
|
|
@@ -2149,11 +2282,11 @@ class DataDesigner(Client2):
|
|
|
2149
2282
|
|
|
2150
2283
|
Raises
|
|
2151
2284
|
------
|
|
2152
|
-
|
|
2285
|
+
PyegeriaInvalidParameterException
|
|
2153
2286
|
one of the parameters is null or invalid or
|
|
2154
|
-
|
|
2287
|
+
PyegeriaAPIException
|
|
2155
2288
|
There is a problem adding the element properties to the metadata repository or
|
|
2156
|
-
|
|
2289
|
+
PyegeriaUnauthorizedException
|
|
2157
2290
|
the requesting user is not authorized to issue this request.
|
|
2158
2291
|
|
|
2159
2292
|
Note
|
|
@@ -2162,7 +2295,7 @@ class DataDesigner(Client2):
|
|
|
2162
2295
|
Full sample body:
|
|
2163
2296
|
|
|
2164
2297
|
{
|
|
2165
|
-
"class": "
|
|
2298
|
+
"class": "DeleteElementRequestBody",
|
|
2166
2299
|
"externalSourceGUID": "add guid here",
|
|
2167
2300
|
"externalSourceName": "add qualified name here",
|
|
2168
2301
|
"effectiveTime": "{{$isoTimestamp}}",
|
|
@@ -2175,11 +2308,11 @@ class DataDesigner(Client2):
|
|
|
2175
2308
|
|
|
2176
2309
|
url = f"{base_path(self, self.view_server)}/data-fields/{data_field_guid}/delete"
|
|
2177
2310
|
|
|
2178
|
-
await self.
|
|
2311
|
+
await self._async_delete_element_request(url, body, cascade_delete)
|
|
2179
2312
|
logger.info(f"Data Field {data_field_guid} deleted.")
|
|
2180
2313
|
|
|
2181
2314
|
@dynamic_catch
|
|
2182
|
-
def delete_data_field(self, data_field_guid: str, body: dict |
|
|
2315
|
+
def delete_data_field(self, data_field_guid: str, body: Optional[dict | DeleteElementRequestBody] = None,
|
|
2183
2316
|
cascade_delete: bool = False) -> None:
|
|
2184
2317
|
"""
|
|
2185
2318
|
Delete a data class. Request body is optional.
|
|
@@ -2188,7 +2321,7 @@ class DataDesigner(Client2):
|
|
|
2188
2321
|
----------
|
|
2189
2322
|
data_field_guid: str
|
|
2190
2323
|
- the GUID of the data class the data class to delete.
|
|
2191
|
-
body: dict, optional
|
|
2324
|
+
body: dict | DeleteElementRequestBody, optional
|
|
2192
2325
|
- a dictionary containing additional properties.
|
|
2193
2326
|
cascade: bool, optional
|
|
2194
2327
|
- if True, then all child data fields will be deleted as well.
|
|
@@ -2200,11 +2333,11 @@ class DataDesigner(Client2):
|
|
|
2200
2333
|
|
|
2201
2334
|
Raises
|
|
2202
2335
|
------
|
|
2203
|
-
|
|
2336
|
+
PyegeriaInvalidParameterException
|
|
2204
2337
|
one of the parameters is null or invalid or
|
|
2205
|
-
|
|
2338
|
+
PyegeriaAPIException
|
|
2206
2339
|
There is a problem adding the element properties to the metadata repository or
|
|
2207
|
-
|
|
2340
|
+
PyegeriaUnauthorizedException
|
|
2208
2341
|
the requesting user is not authorized to issue this request.
|
|
2209
2342
|
|
|
2210
2343
|
Note
|
|
@@ -2228,7 +2361,7 @@ class DataDesigner(Client2):
|
|
|
2228
2361
|
|
|
2229
2362
|
@dynamic_catch
|
|
2230
2363
|
async def _async_find_all_data_fields(self, output_format: str = 'JSON',
|
|
2231
|
-
|
|
2364
|
+
report_spec: str | dict = None) -> list | str:
|
|
2232
2365
|
"""Returns a list of all known data fields. Async version.
|
|
2233
2366
|
|
|
2234
2367
|
Parameters
|
|
@@ -2239,7 +2372,7 @@ class DataDesigner(Client2):
|
|
|
2239
2372
|
- maximum number of elements to return.
|
|
2240
2373
|
output_format: str, default = "DICT"
|
|
2241
2374
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
2242
|
-
|
|
2375
|
+
report_spec: str|dict, optional, default = None
|
|
2243
2376
|
- The desired output columns/field options.
|
|
2244
2377
|
|
|
2245
2378
|
Returns
|
|
@@ -2249,20 +2382,20 @@ class DataDesigner(Client2):
|
|
|
2249
2382
|
|
|
2250
2383
|
Raises
|
|
2251
2384
|
------
|
|
2252
|
-
|
|
2385
|
+
PyegeriaInvalidParameterException
|
|
2253
2386
|
one of the parameters is null or invalid or
|
|
2254
|
-
|
|
2387
|
+
PyegeriaAPIException
|
|
2255
2388
|
There is a problem adding the element properties to the metadata repository or
|
|
2256
|
-
|
|
2389
|
+
PyegeriaUnauthorizedException
|
|
2257
2390
|
the requesting user is not authorized to issue this request.
|
|
2258
2391
|
|
|
2259
2392
|
"""
|
|
2260
2393
|
|
|
2261
2394
|
return self.find_data_fields(search_string="*", output_format=output_format,
|
|
2262
|
-
|
|
2395
|
+
report_spec=report_spec)
|
|
2263
2396
|
|
|
2264
2397
|
@dynamic_catch
|
|
2265
|
-
def find_all_data_fields(self, output_format: str = 'JSON',
|
|
2398
|
+
def find_all_data_fields(self, output_format: str = 'JSON', report_spec: str | dict = None) -> list | str:
|
|
2266
2399
|
""" Returns a list of all known data fields.
|
|
2267
2400
|
|
|
2268
2401
|
Parameters
|
|
@@ -2273,7 +2406,7 @@ class DataDesigner(Client2):
|
|
|
2273
2406
|
- maximum number of elements to return.
|
|
2274
2407
|
output_format: str, default = "DICT"
|
|
2275
2408
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
2276
|
-
|
|
2409
|
+
report_spec: str|dict, optional, default = None
|
|
2277
2410
|
- The desired output columns/field options.
|
|
2278
2411
|
|
|
2279
2412
|
Returns
|
|
@@ -2283,46 +2416,99 @@ class DataDesigner(Client2):
|
|
|
2283
2416
|
|
|
2284
2417
|
Raises
|
|
2285
2418
|
------
|
|
2286
|
-
|
|
2419
|
+
PyegeriaInvalidParameterException
|
|
2287
2420
|
one of the parameters is null or invalid or
|
|
2288
|
-
|
|
2421
|
+
PyegeriaAPIException
|
|
2289
2422
|
There is a problem adding the element properties to the metadata repository or
|
|
2290
|
-
|
|
2423
|
+
PyegeriaUnauthorizedException
|
|
2291
2424
|
the requesting user is not authorized to issue this request.
|
|
2292
2425
|
|
|
2293
2426
|
"""
|
|
2294
2427
|
|
|
2295
2428
|
loop = asyncio.get_event_loop()
|
|
2296
2429
|
response = loop.run_until_complete(
|
|
2297
|
-
self._async_find_all_data_fields(output_format,
|
|
2430
|
+
self._async_find_all_data_fields(output_format, report_spec))
|
|
2298
2431
|
return response
|
|
2299
2432
|
|
|
2300
2433
|
@dynamic_catch
|
|
2301
|
-
async def _async_find_data_fields(self, search_string: str,
|
|
2302
|
-
starts_with: bool = True, ends_with: bool = False,
|
|
2303
|
-
|
|
2304
|
-
|
|
2434
|
+
async def _async_find_data_fields(self, search_string: str,
|
|
2435
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
2436
|
+
ignore_case: bool = False,
|
|
2437
|
+
anchor_domain: Optional[str] = None,
|
|
2438
|
+
metadata_element_type: Optional[str] = None,
|
|
2439
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
2440
|
+
skip_relationships: Optional[list[str]] = None,
|
|
2441
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
2442
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
2443
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
2444
|
+
graph_query_depth: int = 3,
|
|
2445
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
2446
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
2447
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
2448
|
+
sequencing_property: Optional[str] = None,
|
|
2449
|
+
output_format: str = "JSON", report_spec: str | dict = None,
|
|
2450
|
+
start_from: int = 0, page_size: int = 100,
|
|
2451
|
+
property_names: Optional[list[str]] = None,
|
|
2452
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
2305
2453
|
""" Find the list of data class elements that contain the search string.
|
|
2306
2454
|
Async version.
|
|
2307
2455
|
|
|
2308
2456
|
Parameters
|
|
2309
2457
|
----------
|
|
2310
|
-
|
|
2458
|
+
search_string: str
|
|
2311
2459
|
- search string to filter on.
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2460
|
+
starts_with : bool, [default=True], optional
|
|
2461
|
+
Starts with the supplied string.
|
|
2462
|
+
ends_with : bool, [default=False], optional
|
|
2463
|
+
Ends with the supplied string
|
|
2464
|
+
ignore_case : bool, [default=False], optional
|
|
2465
|
+
Ignore case when searching
|
|
2466
|
+
anchor_domain: str, optional
|
|
2467
|
+
The anchor domain to search in.
|
|
2468
|
+
metadata_element_type: str, optional
|
|
2469
|
+
The type of metadata element to search for.
|
|
2470
|
+
metadata_element_subtypes: list[str], optional
|
|
2471
|
+
The subtypes of metadata element to search for.
|
|
2472
|
+
skip_relationships: list[str], optional
|
|
2473
|
+
The types of relationships to skip.
|
|
2474
|
+
include_only_relationships: list[str], optional
|
|
2475
|
+
The types of relationships to include.
|
|
2476
|
+
skip_classified_elements: list[str], optional
|
|
2477
|
+
The types of classified elements to skip.
|
|
2478
|
+
include_only_classified_elements: list[str], optional
|
|
2479
|
+
The types of classified elements to include.
|
|
2480
|
+
graph_query_depth: int, [default=3], optional
|
|
2481
|
+
The depth of the graph query.
|
|
2482
|
+
governance_zone_filter: list[str], optional
|
|
2483
|
+
The governance zones to search in.
|
|
2484
|
+
as_of_time: str, optional
|
|
2485
|
+
The time to search as of.
|
|
2486
|
+
effective_time: str, optional
|
|
2487
|
+
The effective time to search at.
|
|
2488
|
+
relationship_page_size: int, [default=0], optional
|
|
2489
|
+
The page size for relationships.
|
|
2490
|
+
limit_results_by_status: list[str], optional
|
|
2491
|
+
The statuses to limit results by.
|
|
2492
|
+
sequencing_order: str, optional
|
|
2493
|
+
The order to sequence results by.
|
|
2494
|
+
sequencing_property: str, optional
|
|
2495
|
+
The property to sequence results by.
|
|
2496
|
+
output_format: str, default = 'JSON'
|
|
2497
|
+
Type of output to produce:
|
|
2498
|
+
JSON - output standard json
|
|
2499
|
+
MD - output standard markdown with no preamble
|
|
2500
|
+
FORM - output markdown with a preamble for a form
|
|
2501
|
+
REPORT - output markdown with a preamble for a report
|
|
2502
|
+
report_spec: str | dict, optional
|
|
2503
|
+
The report specification to use.
|
|
2504
|
+
start_from: int, [default=0], optional
|
|
2505
|
+
The page number to start from.
|
|
2506
|
+
page_size: int, [default=100], optional
|
|
2507
|
+
The number of items to return in a single page.
|
|
2508
|
+
property_names: list[str], optional
|
|
2509
|
+
The names of properties to search for.
|
|
2510
|
+
body: dict, optional, default = None
|
|
2511
|
+
- additional optional specifications for the search.
|
|
2326
2512
|
|
|
2327
2513
|
Returns
|
|
2328
2514
|
-------
|
|
@@ -2331,48 +2517,115 @@ class DataDesigner(Client2):
|
|
|
2331
2517
|
|
|
2332
2518
|
Raises
|
|
2333
2519
|
------
|
|
2334
|
-
|
|
2520
|
+
PyegeriaInvalidParameterException
|
|
2335
2521
|
one of the parameters is null or invalid or
|
|
2336
|
-
|
|
2522
|
+
PyegeriaAPIException
|
|
2337
2523
|
There is a problem adding the element properties to the metadata repository or
|
|
2338
|
-
|
|
2524
|
+
PyegeriaUnauthorizedException
|
|
2339
2525
|
the requesting user is not authorized to issue this request.
|
|
2340
2526
|
|
|
2341
2527
|
"""
|
|
2342
2528
|
|
|
2343
2529
|
url = f"{base_path(self, self.view_server)}/data-fields/by-search-string"
|
|
2344
2530
|
|
|
2345
|
-
return await self._async_find_request(url, "DataField", self._generate_data_field_output,
|
|
2346
|
-
search_string, start_from=start_from, page_size=page_size,
|
|
2531
|
+
return await self._async_find_request(url, "DataField", self._generate_data_field_output, search_string,
|
|
2347
2532
|
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
|
2348
|
-
|
|
2349
|
-
|
|
2533
|
+
anchor_domain=anchor_domain,
|
|
2534
|
+
metadata_element_type=metadata_element_type,
|
|
2535
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
2536
|
+
skip_relationships=skip_relationships,
|
|
2537
|
+
include_only_relationships=include_only_relationships,
|
|
2538
|
+
skip_classified_elements=skip_classified_elements,
|
|
2539
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
2540
|
+
graph_query_depth=graph_query_depth,
|
|
2541
|
+
governance_zone_filter=governance_zone_filter,
|
|
2542
|
+
as_of_time=as_of_time, effective_time=effective_time,
|
|
2543
|
+
relationship_page_size=relationship_page_size,
|
|
2544
|
+
limit_results_by_status=limit_results_by_status,
|
|
2545
|
+
sequencing_order=sequencing_order,
|
|
2546
|
+
sequencing_property=sequencing_property,
|
|
2547
|
+
output_format=output_format, report_spec=report_spec,
|
|
2548
|
+
start_from=start_from, page_size=page_size,
|
|
2549
|
+
property_names=property_names, body=body)
|
|
2350
2550
|
|
|
2351
2551
|
@dynamic_catch
|
|
2352
|
-
def find_data_fields(self, search_string: str,
|
|
2353
|
-
starts_with: bool = True, ends_with: bool = False,
|
|
2354
|
-
|
|
2355
|
-
|
|
2552
|
+
def find_data_fields(self, search_string: str,
|
|
2553
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
2554
|
+
ignore_case: bool = False,
|
|
2555
|
+
anchor_domain: Optional[str] = None,
|
|
2556
|
+
metadata_element_type: Optional[str] = None,
|
|
2557
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
2558
|
+
skip_relationships: Optional[list[str]] = None,
|
|
2559
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
2560
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
2561
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
2562
|
+
graph_query_depth: int = 3,
|
|
2563
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
2564
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
2565
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
2566
|
+
sequencing_property: Optional[str] = None,
|
|
2567
|
+
output_format: str = "JSON", report_spec: str | dict = None,
|
|
2568
|
+
start_from: int = 0, page_size: int = 100,
|
|
2569
|
+
property_names: Optional[list[str]] = None,
|
|
2570
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
2356
2571
|
""" Retrieve the list of data fields elements that contain the search string filter.
|
|
2357
2572
|
|
|
2358
2573
|
Parameters
|
|
2359
2574
|
----------
|
|
2360
|
-
|
|
2575
|
+
search_string: str
|
|
2361
2576
|
- search string to filter on.
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2577
|
+
starts_with : bool, [default=True], optional
|
|
2578
|
+
Starts with the supplied string.
|
|
2579
|
+
ends_with : bool, [default=False], optional
|
|
2580
|
+
Ends with the supplied string
|
|
2581
|
+
ignore_case : bool, [default=False], optional
|
|
2582
|
+
Ignore case when searching
|
|
2583
|
+
anchor_domain: str, optional
|
|
2584
|
+
The anchor domain to search in.
|
|
2585
|
+
metadata_element_type: str, optional
|
|
2586
|
+
The type of metadata element to search for.
|
|
2587
|
+
metadata_element_subtypes: list[str], optional
|
|
2588
|
+
The subtypes of metadata element to search for.
|
|
2589
|
+
skip_relationships: list[str], optional
|
|
2590
|
+
The types of relationships to skip.
|
|
2591
|
+
include_only_relationships: list[str], optional
|
|
2592
|
+
The types of relationships to include.
|
|
2593
|
+
skip_classified_elements: list[str], optional
|
|
2594
|
+
The types of classified elements to skip.
|
|
2595
|
+
include_only_classified_elements: list[str], optional
|
|
2596
|
+
The types of classified elements to include.
|
|
2597
|
+
graph_query_depth: int, [default=3], optional
|
|
2598
|
+
The depth of the graph query.
|
|
2599
|
+
governance_zone_filter: list[str], optional
|
|
2600
|
+
The governance zones to search in.
|
|
2601
|
+
as_of_time: str, optional
|
|
2602
|
+
The time to search as of.
|
|
2603
|
+
effective_time: str, optional
|
|
2604
|
+
The effective time to search at.
|
|
2605
|
+
relationship_page_size: int, [default=0], optional
|
|
2606
|
+
The page size for relationships.
|
|
2607
|
+
limit_results_by_status: list[str], optional
|
|
2608
|
+
The statuses to limit results by.
|
|
2609
|
+
sequencing_order: str, optional
|
|
2610
|
+
The order to sequence results by.
|
|
2611
|
+
sequencing_property: str, optional
|
|
2612
|
+
The property to sequence results by.
|
|
2613
|
+
output_format: str, default = 'JSON'
|
|
2614
|
+
Type of output to produce:
|
|
2615
|
+
JSON - output standard json
|
|
2616
|
+
MD - output standard markdown with no preamble
|
|
2617
|
+
FORM - output markdown with a preamble for a form
|
|
2618
|
+
REPORT - output markdown with a preamble for a report
|
|
2619
|
+
report_spec: str | dict, optional
|
|
2620
|
+
The report specification to use.
|
|
2621
|
+
start_from: int, [default=0], optional
|
|
2622
|
+
The page number to start from.
|
|
2623
|
+
page_size: int, [default=100], optional
|
|
2624
|
+
The number of items to return in a single page.
|
|
2625
|
+
property_names: list[str], optional
|
|
2626
|
+
The names of properties to search for.
|
|
2627
|
+
body: dict, optional, default = None
|
|
2628
|
+
- additional optional specifications for the search.
|
|
2376
2629
|
|
|
2377
2630
|
Returns
|
|
2378
2631
|
-------
|
|
@@ -2381,11 +2634,11 @@ class DataDesigner(Client2):
|
|
|
2381
2634
|
|
|
2382
2635
|
Raises
|
|
2383
2636
|
------
|
|
2384
|
-
|
|
2637
|
+
PyegeriaInvalidParameterException
|
|
2385
2638
|
one of the parameters is null or invalid or
|
|
2386
|
-
|
|
2639
|
+
PyegeriaAPIException
|
|
2387
2640
|
There is a problem adding the element properties to the metadata repository or
|
|
2388
|
-
|
|
2641
|
+
PyegeriaUnauthorizedException
|
|
2389
2642
|
the requesting user is not authorized to issue this request.
|
|
2390
2643
|
|
|
2391
2644
|
|
|
@@ -2393,22 +2646,39 @@ class DataDesigner(Client2):
|
|
|
2393
2646
|
|
|
2394
2647
|
loop = asyncio.get_event_loop()
|
|
2395
2648
|
response = loop.run_until_complete(
|
|
2396
|
-
self._async_find_data_fields(search_string,
|
|
2397
|
-
|
|
2649
|
+
self._async_find_data_fields(search_string,
|
|
2650
|
+
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
|
2651
|
+
anchor_domain=anchor_domain,
|
|
2652
|
+
metadata_element_type=metadata_element_type,
|
|
2653
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
2654
|
+
skip_relationships=skip_relationships,
|
|
2655
|
+
include_only_relationships=include_only_relationships,
|
|
2656
|
+
skip_classified_elements=skip_classified_elements,
|
|
2657
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
2658
|
+
graph_query_depth=graph_query_depth,
|
|
2659
|
+
governance_zone_filter=governance_zone_filter,
|
|
2660
|
+
as_of_time=as_of_time, effective_time=effective_time,
|
|
2661
|
+
relationship_page_size=relationship_page_size,
|
|
2662
|
+
limit_results_by_status=limit_results_by_status,
|
|
2663
|
+
sequencing_order=sequencing_order,
|
|
2664
|
+
sequencing_property=sequencing_property,
|
|
2665
|
+
output_format=output_format, report_spec=report_spec,
|
|
2666
|
+
start_from=start_from, page_size=page_size,
|
|
2667
|
+
property_names=property_names, body=body))
|
|
2398
2668
|
return response
|
|
2399
2669
|
|
|
2400
2670
|
@dynamic_catch
|
|
2401
|
-
async def _async_get_data_fields_by_name(self, filter_string: str, classification_names: list[str] = None,
|
|
2671
|
+
async def _async_get_data_fields_by_name(self, filter_string: str, classification_names: Optional[list[str]] = None,
|
|
2402
2672
|
body: dict = None | FilterRequestBody, start_from: int = 0,
|
|
2403
2673
|
page_size: int = 0,
|
|
2404
2674
|
output_format: str = 'JSON',
|
|
2405
|
-
|
|
2675
|
+
report_spec: str | dict = None) -> list | str:
|
|
2406
2676
|
""" Get the list of data class metadata elements with a matching name to the search string filter.
|
|
2407
2677
|
Async version.
|
|
2408
2678
|
|
|
2409
2679
|
Parameters
|
|
2410
2680
|
----------
|
|
2411
|
-
|
|
2681
|
+
filter_string : str
|
|
2412
2682
|
- search string to filter on.
|
|
2413
2683
|
body: dict, optional
|
|
2414
2684
|
- a dictionary containing additional properties to use in the request.
|
|
@@ -2418,7 +2688,7 @@ class DataDesigner(Client2):
|
|
|
2418
2688
|
- maximum number of elements to return.
|
|
2419
2689
|
output_format: str, default = "DICT"
|
|
2420
2690
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
2421
|
-
|
|
2691
|
+
report_spec: str|dict, optional, default = None
|
|
2422
2692
|
- The desired output columns/field options.
|
|
2423
2693
|
|
|
2424
2694
|
Returns
|
|
@@ -2428,11 +2698,11 @@ class DataDesigner(Client2):
|
|
|
2428
2698
|
|
|
2429
2699
|
Raises
|
|
2430
2700
|
------
|
|
2431
|
-
|
|
2701
|
+
PyegeriaInvalidParameterException
|
|
2432
2702
|
one of the parameters is null or invalid or
|
|
2433
|
-
|
|
2703
|
+
PyegeriaAPIException
|
|
2434
2704
|
There is a problem adding the element properties to the metadata repository or
|
|
2435
|
-
|
|
2705
|
+
PyegeriaUnauthorizedException
|
|
2436
2706
|
the requesting user is not authorized to issue this request.
|
|
2437
2707
|
Notes
|
|
2438
2708
|
-----
|
|
@@ -2457,21 +2727,21 @@ class DataDesigner(Client2):
|
|
|
2457
2727
|
filter_string=filter_string,
|
|
2458
2728
|
classification_names=classification_names,
|
|
2459
2729
|
start_from=start_from, page_size=page_size,
|
|
2460
|
-
output_format=output_format,
|
|
2730
|
+
output_format=output_format, report_spec=report_spec,
|
|
2461
2731
|
body=body)
|
|
2462
2732
|
|
|
2463
2733
|
return response
|
|
2464
2734
|
|
|
2465
2735
|
@dynamic_catch
|
|
2466
|
-
def get_data_fields_by_name(self, filter_string: str, classification_names: list[str] = None, body: dict = None,
|
|
2736
|
+
def get_data_fields_by_name(self, filter_string: str, classification_names: Optional[list[str]] = None, body: dict = None,
|
|
2467
2737
|
start_from: int = 0,
|
|
2468
2738
|
page_size: int = max_paging_size, output_format: str = 'JSON',
|
|
2469
|
-
|
|
2739
|
+
report_spec: str | dict = None) -> list | str:
|
|
2470
2740
|
""" Get the list of data class elements with a matching name to the search string filter.
|
|
2471
2741
|
|
|
2472
2742
|
Parameters
|
|
2473
2743
|
----------
|
|
2474
|
-
|
|
2744
|
+
filter_string : str
|
|
2475
2745
|
- search string to filter on.
|
|
2476
2746
|
body: dict, optional
|
|
2477
2747
|
- a dictionary containing additional properties to use in the request.
|
|
@@ -2481,7 +2751,7 @@ class DataDesigner(Client2):
|
|
|
2481
2751
|
- maximum number of elements to return.
|
|
2482
2752
|
output_format: str, default = "DICT"
|
|
2483
2753
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
2484
|
-
|
|
2754
|
+
report_spec: str|dict, optional, default = None
|
|
2485
2755
|
- The desired output columns/field options.
|
|
2486
2756
|
|
|
2487
2757
|
Returns
|
|
@@ -2491,11 +2761,11 @@ class DataDesigner(Client2):
|
|
|
2491
2761
|
|
|
2492
2762
|
Raises
|
|
2493
2763
|
------
|
|
2494
|
-
|
|
2764
|
+
PyegeriaInvalidParameterException
|
|
2495
2765
|
one of the parameters is null or invalid or
|
|
2496
|
-
|
|
2766
|
+
PyegeriaAPIException
|
|
2497
2767
|
There is a problem adding the element properties to the metadata repository or
|
|
2498
|
-
|
|
2768
|
+
PyegeriaUnauthorizedException
|
|
2499
2769
|
the requesting user is not authorized to issue this request.
|
|
2500
2770
|
|
|
2501
2771
|
Notes
|
|
@@ -2517,15 +2787,15 @@ class DataDesigner(Client2):
|
|
|
2517
2787
|
|
|
2518
2788
|
loop = asyncio.get_event_loop()
|
|
2519
2789
|
response = loop.run_until_complete(
|
|
2520
|
-
self._async_get_data_fields_by_name(
|
|
2521
|
-
output_format,
|
|
2790
|
+
self._async_get_data_fields_by_name(filter_string, classification_names, body, start_from, page_size,
|
|
2791
|
+
output_format, report_spec))
|
|
2522
2792
|
return response
|
|
2523
2793
|
|
|
2524
2794
|
@dynamic_catch
|
|
2525
|
-
async def _async_get_data_field_by_guid(self, guid: str, element_type: str = None,
|
|
2526
|
-
body: dict | GetRequestBody = None,
|
|
2795
|
+
async def _async_get_data_field_by_guid(self, guid: str, element_type: Optional[str] = None,
|
|
2796
|
+
body: Optional[dict | GetRequestBody] = None,
|
|
2527
2797
|
output_format: str = 'JSON',
|
|
2528
|
-
|
|
2798
|
+
report_spec: str | dict = None) -> list | str:
|
|
2529
2799
|
""" Get the data class elements for the specified GUID.
|
|
2530
2800
|
Async version.
|
|
2531
2801
|
|
|
@@ -2537,7 +2807,7 @@ class DataDesigner(Client2):
|
|
|
2537
2807
|
- optional request body.
|
|
2538
2808
|
output_format: str, default = "DICT"
|
|
2539
2809
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
2540
|
-
|
|
2810
|
+
report_spec: str|dict, optional, default = None
|
|
2541
2811
|
- The desired output columns/field options.
|
|
2542
2812
|
|
|
2543
2813
|
Returns
|
|
@@ -2547,11 +2817,11 @@ class DataDesigner(Client2):
|
|
|
2547
2817
|
|
|
2548
2818
|
Raises
|
|
2549
2819
|
------
|
|
2550
|
-
|
|
2820
|
+
PyegeriaInvalidParameterException
|
|
2551
2821
|
one of the parameters is null or invalid or
|
|
2552
|
-
|
|
2822
|
+
PyegeriaAPIException
|
|
2553
2823
|
There is a problem adding the element properties to the metadata repository or
|
|
2554
|
-
|
|
2824
|
+
PyegeriaUnauthorizedException
|
|
2555
2825
|
the requesting user is not authorized to issue this request.
|
|
2556
2826
|
|
|
2557
2827
|
|
|
@@ -2573,14 +2843,14 @@ class DataDesigner(Client2):
|
|
|
2573
2843
|
type = element_type if element_type else "DataField"
|
|
2574
2844
|
response = await self._async_get_guid_request(url, _type=type,
|
|
2575
2845
|
_gen_output=self._generate_data_field_output,
|
|
2576
|
-
output_format=output_format,
|
|
2846
|
+
output_format=output_format, report_spec=report_spec,
|
|
2577
2847
|
body=body)
|
|
2578
2848
|
|
|
2579
2849
|
return response
|
|
2580
2850
|
|
|
2581
2851
|
@dynamic_catch
|
|
2582
|
-
def get_data_field_by_guid(self, guid: str, element_type: str = None, body: str | GetRequestBody = None,
|
|
2583
|
-
output_format: str = 'JSON',
|
|
2852
|
+
def get_data_field_by_guid(self, guid: str, element_type: Optional[str] = None, body: str | GetRequestBody = None,
|
|
2853
|
+
output_format: str = 'JSON', report_spec: str | dict = None) -> list | str:
|
|
2584
2854
|
""" Get the data structure metadata element with the specified unique identifier..
|
|
2585
2855
|
|
|
2586
2856
|
Parameters
|
|
@@ -2591,7 +2861,7 @@ class DataDesigner(Client2):
|
|
|
2591
2861
|
- optional request body.
|
|
2592
2862
|
output_format: str, default = "DICT"
|
|
2593
2863
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
2594
|
-
|
|
2864
|
+
report_spec: str|dict, optional, default = None
|
|
2595
2865
|
- The desired output columns/field options.
|
|
2596
2866
|
|
|
2597
2867
|
Returns
|
|
@@ -2601,11 +2871,11 @@ class DataDesigner(Client2):
|
|
|
2601
2871
|
|
|
2602
2872
|
Raises
|
|
2603
2873
|
------
|
|
2604
|
-
|
|
2874
|
+
PyegeriaInvalidParameterException
|
|
2605
2875
|
one of the parameters is null or invalid or
|
|
2606
|
-
|
|
2876
|
+
PyegeriaAPIException
|
|
2607
2877
|
There is a problem adding the element properties to the metadata repository or
|
|
2608
|
-
|
|
2878
|
+
PyegeriaUnauthorizedException
|
|
2609
2879
|
the requesting user is not authorized to issue this request.
|
|
2610
2880
|
|
|
2611
2881
|
Notes
|
|
@@ -2624,7 +2894,7 @@ class DataDesigner(Client2):
|
|
|
2624
2894
|
|
|
2625
2895
|
loop = asyncio.get_event_loop()
|
|
2626
2896
|
response = loop.run_until_complete(self._async_get_data_field_by_guid(guid, element_type,
|
|
2627
|
-
body, output_format,
|
|
2897
|
+
body, output_format, report_spec))
|
|
2628
2898
|
return response
|
|
2629
2899
|
|
|
2630
2900
|
###
|
|
@@ -2650,11 +2920,11 @@ class DataDesigner(Client2):
|
|
|
2650
2920
|
|
|
2651
2921
|
Raises
|
|
2652
2922
|
------
|
|
2653
|
-
|
|
2923
|
+
PyegeriaInvalidParameterException
|
|
2654
2924
|
one of the parameters is null or invalid or
|
|
2655
|
-
|
|
2925
|
+
PyegeriaAPIException
|
|
2656
2926
|
There is a problem adding the element properties to the metadata repository or
|
|
2657
|
-
|
|
2927
|
+
PyegeriaUnauthorizedException
|
|
2658
2928
|
the requesting user is not authorized to issue this request.
|
|
2659
2929
|
|
|
2660
2930
|
Note
|
|
@@ -2772,11 +3042,11 @@ class DataDesigner(Client2):
|
|
|
2772
3042
|
|
|
2773
3043
|
Raises
|
|
2774
3044
|
------
|
|
2775
|
-
|
|
3045
|
+
PyegeriaInvalidParameterException
|
|
2776
3046
|
one of the parameters is null or invalid or
|
|
2777
|
-
|
|
3047
|
+
PyegeriaAPIException
|
|
2778
3048
|
There is a problem adding the element properties to the metadata repository or
|
|
2779
|
-
|
|
3049
|
+
PyegeriaUnauthorizedException
|
|
2780
3050
|
the requesting user is not authorized to issue this request.
|
|
2781
3051
|
|
|
2782
3052
|
Note
|
|
@@ -2896,11 +3166,11 @@ class DataDesigner(Client2):
|
|
|
2896
3166
|
|
|
2897
3167
|
Raises
|
|
2898
3168
|
------
|
|
2899
|
-
|
|
3169
|
+
PyegeriaInvalidParameterException
|
|
2900
3170
|
one of the parameters is null or invalid or
|
|
2901
|
-
|
|
3171
|
+
PyegeriaAPIException
|
|
2902
3172
|
There is a problem adding the element properties to the metadata repository or
|
|
2903
|
-
|
|
3173
|
+
PyegeriaUnauthorizedException
|
|
2904
3174
|
the requesting user is not authorized to issue this request.
|
|
2905
3175
|
|
|
2906
3176
|
Note
|
|
@@ -2968,11 +3238,11 @@ class DataDesigner(Client2):
|
|
|
2968
3238
|
|
|
2969
3239
|
Raises
|
|
2970
3240
|
------
|
|
2971
|
-
|
|
3241
|
+
PyegeriaInvalidParameterException
|
|
2972
3242
|
one of the parameters is null or invalid or
|
|
2973
|
-
|
|
3243
|
+
PyegeriaAPIException
|
|
2974
3244
|
There is a problem adding the element properties to the metadata repository or
|
|
2975
|
-
|
|
3245
|
+
PyegeriaUnauthorizedException
|
|
2976
3246
|
the requesting user is not authorized to issue this request.
|
|
2977
3247
|
|
|
2978
3248
|
Note
|
|
@@ -3040,11 +3310,11 @@ class DataDesigner(Client2):
|
|
|
3040
3310
|
|
|
3041
3311
|
Raises
|
|
3042
3312
|
------
|
|
3043
|
-
|
|
3313
|
+
PyegeriaInvalidParameterException
|
|
3044
3314
|
one of the parameters is null or invalid or
|
|
3045
|
-
|
|
3315
|
+
PyegeriaAPIException
|
|
3046
3316
|
There is a problem adding the element properties to the metadata repository or
|
|
3047
|
-
|
|
3317
|
+
PyegeriaUnauthorizedException
|
|
3048
3318
|
the requesting user is not authorized to issue this request.
|
|
3049
3319
|
|
|
3050
3320
|
Note
|
|
@@ -3110,11 +3380,11 @@ class DataDesigner(Client2):
|
|
|
3110
3380
|
|
|
3111
3381
|
Raises
|
|
3112
3382
|
------
|
|
3113
|
-
|
|
3383
|
+
PyegeriaInvalidParameterException
|
|
3114
3384
|
one of the parameters is null or invalid or
|
|
3115
|
-
|
|
3385
|
+
PyegeriaAPIException
|
|
3116
3386
|
There is a problem adding the element properties to the metadata repository or
|
|
3117
|
-
|
|
3387
|
+
PyegeriaUnauthorizedException
|
|
3118
3388
|
the requesting user is not authorized to issue this request.
|
|
3119
3389
|
|
|
3120
3390
|
Note
|
|
@@ -3163,7 +3433,7 @@ class DataDesigner(Client2):
|
|
|
3163
3433
|
|
|
3164
3434
|
@dynamic_catch
|
|
3165
3435
|
async def _async_link_nested_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
|
|
3166
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
3436
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
3167
3437
|
"""
|
|
3168
3438
|
Connect two data classes to show that one is used by the other when it is validating (typically a complex
|
|
3169
3439
|
data item). Request body is optional. Async version.
|
|
@@ -3183,11 +3453,11 @@ class DataDesigner(Client2):
|
|
|
3183
3453
|
|
|
3184
3454
|
Raises
|
|
3185
3455
|
------
|
|
3186
|
-
|
|
3456
|
+
PyegeriaInvalidParameterException
|
|
3187
3457
|
one of the parameters is null or invalid or
|
|
3188
|
-
|
|
3458
|
+
PyegeriaAPIException
|
|
3189
3459
|
There is a problem adding the element properties to the metadata repository or
|
|
3190
|
-
|
|
3460
|
+
PyegeriaUnauthorizedException
|
|
3191
3461
|
the requesting user is not authorized to issue this request.
|
|
3192
3462
|
|
|
3193
3463
|
Note
|
|
@@ -3214,7 +3484,7 @@ class DataDesigner(Client2):
|
|
|
3214
3484
|
|
|
3215
3485
|
@dynamic_catch
|
|
3216
3486
|
def link_nested_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
|
|
3217
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
3487
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
3218
3488
|
"""
|
|
3219
3489
|
Connect a nested data class to a data class. Request body is optional.
|
|
3220
3490
|
|
|
@@ -3233,11 +3503,11 @@ class DataDesigner(Client2):
|
|
|
3233
3503
|
|
|
3234
3504
|
Raises
|
|
3235
3505
|
------
|
|
3236
|
-
|
|
3506
|
+
PyegeriaInvalidParameterException
|
|
3237
3507
|
one of the parameters is null or invalid or
|
|
3238
|
-
|
|
3508
|
+
PyegeriaAPIException
|
|
3239
3509
|
There is a problem adding the element properties to the metadata repository or
|
|
3240
|
-
|
|
3510
|
+
PyegeriaUnauthorizedException
|
|
3241
3511
|
the requesting user is not authorized to issue this request.
|
|
3242
3512
|
|
|
3243
3513
|
Note
|
|
@@ -3261,7 +3531,7 @@ class DataDesigner(Client2):
|
|
|
3261
3531
|
|
|
3262
3532
|
@dynamic_catch
|
|
3263
3533
|
async def _async_detach_nested_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
|
|
3264
|
-
body: dict |
|
|
3534
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None,
|
|
3265
3535
|
cascade_delete: bool = False) -> None:
|
|
3266
3536
|
"""
|
|
3267
3537
|
Detach two nested data classes from each other. Request body is optional. Async version.
|
|
@@ -3281,11 +3551,11 @@ class DataDesigner(Client2):
|
|
|
3281
3551
|
|
|
3282
3552
|
Raises
|
|
3283
3553
|
------
|
|
3284
|
-
|
|
3554
|
+
PyegeriaInvalidParameterException
|
|
3285
3555
|
one of the parameters is null or invalid or
|
|
3286
|
-
|
|
3556
|
+
PyegeriaAPIException
|
|
3287
3557
|
There is a problem adding the element properties to the metadata repository or
|
|
3288
|
-
|
|
3558
|
+
PyegeriaUnauthorizedException
|
|
3289
3559
|
the requesting user is not authorized to issue this request.
|
|
3290
3560
|
|
|
3291
3561
|
Note
|
|
@@ -3308,12 +3578,12 @@ class DataDesigner(Client2):
|
|
|
3308
3578
|
url = (f"{base_path(self, self.view_server)}/data-classes/{parent_data_class_guid}"
|
|
3309
3579
|
f"/nested-data-classes/{child_data_class_guid}/detach")
|
|
3310
3580
|
|
|
3311
|
-
await self.
|
|
3581
|
+
await self._async_delete_relationship_request(url, body, cascade_delete)
|
|
3312
3582
|
logger.info(f"Data Class {child_data_class_guid} detached from data structure {parent_data_class_guid}.")
|
|
3313
3583
|
|
|
3314
3584
|
@dynamic_catch
|
|
3315
3585
|
def detach_nested_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
|
|
3316
|
-
body: dict |
|
|
3586
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None, cascade_delete: bool = False) -> None:
|
|
3317
3587
|
"""
|
|
3318
3588
|
Detach two nested data classes from each other. Request body is optional.
|
|
3319
3589
|
|
|
@@ -3332,11 +3602,11 @@ class DataDesigner(Client2):
|
|
|
3332
3602
|
|
|
3333
3603
|
Raises
|
|
3334
3604
|
------
|
|
3335
|
-
|
|
3605
|
+
PyegeriaInvalidParameterException
|
|
3336
3606
|
one of the parameters is null or invalid or
|
|
3337
|
-
|
|
3607
|
+
PyegeriaAPIException
|
|
3338
3608
|
There is a problem adding the element properties to the metadata repository or
|
|
3339
|
-
|
|
3609
|
+
PyegeriaUnauthorizedException
|
|
3340
3610
|
the requesting user is not authorized to issue this request.
|
|
3341
3611
|
|
|
3342
3612
|
Note
|
|
@@ -3361,7 +3631,7 @@ class DataDesigner(Client2):
|
|
|
3361
3631
|
|
|
3362
3632
|
@dynamic_catch
|
|
3363
3633
|
async def _async_link_specialized_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
|
|
3364
|
-
body: dict | NewRelationshipRequestBody = None, ) -> None:
|
|
3634
|
+
body: Optional[dict | NewRelationshipRequestBody] = None, ) -> None:
|
|
3365
3635
|
"""
|
|
3366
3636
|
Connect two data classes to show that one provides a more specialist evaluation. Request body is optional.
|
|
3367
3637
|
Async version.
|
|
@@ -3381,11 +3651,11 @@ class DataDesigner(Client2):
|
|
|
3381
3651
|
|
|
3382
3652
|
Raises
|
|
3383
3653
|
------
|
|
3384
|
-
|
|
3654
|
+
PyegeriaInvalidParameterException
|
|
3385
3655
|
one of the parameters is null or invalid or
|
|
3386
|
-
|
|
3656
|
+
PyegeriaAPIException
|
|
3387
3657
|
There is a problem adding the element properties to the metadata repository or
|
|
3388
|
-
|
|
3658
|
+
PyegeriaUnauthorizedException
|
|
3389
3659
|
the requesting user is not authorized to issue this request.
|
|
3390
3660
|
|
|
3391
3661
|
Note
|
|
@@ -3412,7 +3682,7 @@ class DataDesigner(Client2):
|
|
|
3412
3682
|
|
|
3413
3683
|
@dynamic_catch
|
|
3414
3684
|
def link_specialized_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
|
|
3415
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
3685
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
3416
3686
|
"""
|
|
3417
3687
|
Connect two data classes to show that one provides a more specialist evaluation. Request body is optional.
|
|
3418
3688
|
|
|
@@ -3431,11 +3701,11 @@ class DataDesigner(Client2):
|
|
|
3431
3701
|
|
|
3432
3702
|
Raises
|
|
3433
3703
|
------
|
|
3434
|
-
|
|
3704
|
+
PyegeriaInvalidParameterException
|
|
3435
3705
|
one of the parameters is null or invalid or
|
|
3436
|
-
|
|
3706
|
+
PyegeriaAPIException
|
|
3437
3707
|
There is a problem adding the element properties to the metadata repository or
|
|
3438
|
-
|
|
3708
|
+
PyegeriaUnauthorizedException
|
|
3439
3709
|
the requesting user is not authorized to issue this request.
|
|
3440
3710
|
|
|
3441
3711
|
Note
|
|
@@ -3460,7 +3730,7 @@ class DataDesigner(Client2):
|
|
|
3460
3730
|
|
|
3461
3731
|
@dynamic_catch
|
|
3462
3732
|
async def _async_detach_specialized_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
|
|
3463
|
-
body: dict |
|
|
3733
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None,
|
|
3464
3734
|
cascade_delete: bool = False) -> None:
|
|
3465
3735
|
"""
|
|
3466
3736
|
Detach two data classes from each other. Request body is optional. Async version.
|
|
@@ -3480,11 +3750,11 @@ class DataDesigner(Client2):
|
|
|
3480
3750
|
|
|
3481
3751
|
Raises
|
|
3482
3752
|
------
|
|
3483
|
-
|
|
3753
|
+
PyegeriaInvalidParameterException
|
|
3484
3754
|
one of the parameters is null or invalid or
|
|
3485
|
-
|
|
3755
|
+
PyegeriaAPIException
|
|
3486
3756
|
There is a problem adding the element properties to the metadata repository or
|
|
3487
|
-
|
|
3757
|
+
PyegeriaUnauthorizedException
|
|
3488
3758
|
the requesting user is not authorized to issue this request.
|
|
3489
3759
|
|
|
3490
3760
|
Note
|
|
@@ -3507,12 +3777,12 @@ class DataDesigner(Client2):
|
|
|
3507
3777
|
url = (f"{base_path(self, self.view_server)}/data-classes/{parent_data_class_guid}"
|
|
3508
3778
|
f"/specialized-data-classes/{child_data_class_guid}/detach")
|
|
3509
3779
|
|
|
3510
|
-
await self.
|
|
3780
|
+
await self._async_delete_relationship_request(url, body, cascade_delete)
|
|
3511
3781
|
logger.info(f"Data field {child_data_class_guid} detached from data structure {parent_data_class_guid}.")
|
|
3512
3782
|
|
|
3513
3783
|
@dynamic_catch
|
|
3514
3784
|
def detach_specialized_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
|
|
3515
|
-
body: dict |
|
|
3785
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None, cascade_delete: bool = False) -> None:
|
|
3516
3786
|
"""
|
|
3517
3787
|
Detach two data classes from each other. Request body is optional.
|
|
3518
3788
|
|
|
@@ -3531,11 +3801,11 @@ class DataDesigner(Client2):
|
|
|
3531
3801
|
|
|
3532
3802
|
Raises
|
|
3533
3803
|
------
|
|
3534
|
-
|
|
3804
|
+
PyegeriaInvalidParameterException
|
|
3535
3805
|
one of the parameters is null or invalid or
|
|
3536
|
-
|
|
3806
|
+
PyegeriaAPIException
|
|
3537
3807
|
There is a problem adding the element properties to the metadata repository or
|
|
3538
|
-
|
|
3808
|
+
PyegeriaUnauthorizedException
|
|
3539
3809
|
the requesting user is not authorized to issue this request.
|
|
3540
3810
|
|
|
3541
3811
|
Note
|
|
@@ -3560,7 +3830,7 @@ class DataDesigner(Client2):
|
|
|
3560
3830
|
cascade_delete))
|
|
3561
3831
|
|
|
3562
3832
|
@dynamic_catch
|
|
3563
|
-
async def _async_delete_data_class(self, data_class_guid: str, body: dict |
|
|
3833
|
+
async def _async_delete_data_class(self, data_class_guid: str, body: Optional[dict | DeleteElementRequestBody] = None,
|
|
3564
3834
|
cascade_delete: bool = False) -> None:
|
|
3565
3835
|
"""
|
|
3566
3836
|
Delete a data class. Request body is optional. Async version.
|
|
@@ -3581,11 +3851,11 @@ class DataDesigner(Client2):
|
|
|
3581
3851
|
|
|
3582
3852
|
Raises
|
|
3583
3853
|
------
|
|
3584
|
-
|
|
3854
|
+
PyegeriaInvalidParameterException
|
|
3585
3855
|
one of the parameters is null or invalid or
|
|
3586
|
-
|
|
3856
|
+
PyegeriaAPIException
|
|
3587
3857
|
There is a problem adding the element properties to the metadata repository or
|
|
3588
|
-
|
|
3858
|
+
PyegeriaUnauthorizedException
|
|
3589
3859
|
the requesting user is not authorized to issue this request.
|
|
3590
3860
|
|
|
3591
3861
|
Note
|
|
@@ -3607,13 +3877,13 @@ class DataDesigner(Client2):
|
|
|
3607
3877
|
|
|
3608
3878
|
url = f"{base_path(self, self.view_server)}/data-classes/{data_class_guid}/delete"
|
|
3609
3879
|
|
|
3610
|
-
await self.
|
|
3880
|
+
await self._async_delete_element_request(url, body, cascade_delete)
|
|
3611
3881
|
logger.info(f"Data structure {data_class_guid} deleted.")
|
|
3612
3882
|
|
|
3613
3883
|
@dynamic_catch
|
|
3614
3884
|
def delete_data_class(self,
|
|
3615
3885
|
data_class_guid: str,
|
|
3616
|
-
body: dict |
|
|
3886
|
+
body: Optional[dict | DeleteElementRequestBody] = None,
|
|
3617
3887
|
cascade_delete: bool = False) -> None:
|
|
3618
3888
|
"""
|
|
3619
3889
|
Delete a data class. Request body is optional.
|
|
@@ -3634,11 +3904,11 @@ class DataDesigner(Client2):
|
|
|
3634
3904
|
|
|
3635
3905
|
Raises
|
|
3636
3906
|
------
|
|
3637
|
-
|
|
3907
|
+
PyegeriaInvalidParameterException
|
|
3638
3908
|
one of the parameters is null or invalid or
|
|
3639
|
-
|
|
3909
|
+
PyegeriaAPIException
|
|
3640
3910
|
There is a problem adding the element properties to the metadata repository or
|
|
3641
|
-
|
|
3911
|
+
PyegeriaUnauthorizedException
|
|
3642
3912
|
the requesting user is not authorized to issue this request.
|
|
3643
3913
|
|
|
3644
3914
|
Note
|
|
@@ -3663,7 +3933,7 @@ class DataDesigner(Client2):
|
|
|
3663
3933
|
@dynamic_catch
|
|
3664
3934
|
async def _async_find_all_data_classes(self,
|
|
3665
3935
|
output_format: str = 'JSON',
|
|
3666
|
-
|
|
3936
|
+
report_spec: str | dict = None) -> list | str:
|
|
3667
3937
|
""" Returns a list of all data classes. Async version.
|
|
3668
3938
|
|
|
3669
3939
|
Parameters
|
|
@@ -3674,7 +3944,7 @@ class DataDesigner(Client2):
|
|
|
3674
3944
|
- maximum number of elements to return.
|
|
3675
3945
|
output_format: str, default = "DICT"
|
|
3676
3946
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
3677
|
-
|
|
3947
|
+
report_spec: str|dict, optional, default = None
|
|
3678
3948
|
- The desired output columns/field options.
|
|
3679
3949
|
|
|
3680
3950
|
|
|
@@ -3685,11 +3955,11 @@ class DataDesigner(Client2):
|
|
|
3685
3955
|
|
|
3686
3956
|
Raises
|
|
3687
3957
|
------
|
|
3688
|
-
|
|
3958
|
+
PyegeriaInvalidParameterException
|
|
3689
3959
|
one of the parameters is null or invalid or
|
|
3690
|
-
|
|
3960
|
+
PyegeriaAPIException
|
|
3691
3961
|
There is a problem adding the element properties to the metadata repository or
|
|
3692
|
-
|
|
3962
|
+
PyegeriaUnauthorizedException
|
|
3693
3963
|
the requesting user is not authorized to issue this request.
|
|
3694
3964
|
|
|
3695
3965
|
"""
|
|
@@ -3697,11 +3967,11 @@ class DataDesigner(Client2):
|
|
|
3697
3967
|
url = f"{base_path(self, self.view_server)}/data-classes/by-search-string"
|
|
3698
3968
|
|
|
3699
3969
|
return self.find_data_classes(search_string="*", output_format=output_format,
|
|
3700
|
-
|
|
3970
|
+
report_spec=report_spec)
|
|
3701
3971
|
|
|
3702
3972
|
@dynamic_catch
|
|
3703
3973
|
def find_all_data_classes(self,
|
|
3704
|
-
output_format: str = 'JSON',
|
|
3974
|
+
output_format: str = 'JSON', report_spec: str | dict = None) -> list | str:
|
|
3705
3975
|
""" Returns a list of all data classes.
|
|
3706
3976
|
|
|
3707
3977
|
Parameters
|
|
@@ -3712,7 +3982,7 @@ class DataDesigner(Client2):
|
|
|
3712
3982
|
- maximum number of elements to return.
|
|
3713
3983
|
output_format: str, default = "DICT"
|
|
3714
3984
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
3715
|
-
|
|
3985
|
+
report_spec: str|dict, optional, default = None
|
|
3716
3986
|
- The desired output columns/field options.
|
|
3717
3987
|
|
|
3718
3988
|
Returns
|
|
@@ -3722,47 +3992,99 @@ class DataDesigner(Client2):
|
|
|
3722
3992
|
|
|
3723
3993
|
Raises
|
|
3724
3994
|
------
|
|
3725
|
-
|
|
3995
|
+
PyegeriaInvalidParameterException
|
|
3726
3996
|
one of the parameters is null or invalid or
|
|
3727
|
-
|
|
3997
|
+
PyegeriaAPIException
|
|
3728
3998
|
There is a problem adding the element properties to the metadata repository or
|
|
3729
|
-
|
|
3999
|
+
PyegeriaUnauthorizedException
|
|
3730
4000
|
the requesting user is not authorized to issue this request.
|
|
3731
4001
|
|
|
3732
4002
|
"""
|
|
3733
4003
|
|
|
3734
4004
|
loop = asyncio.get_event_loop()
|
|
3735
4005
|
response = loop.run_until_complete(
|
|
3736
|
-
self._async_find_all_data_classes(output_format,
|
|
4006
|
+
self._async_find_all_data_classes(output_format, report_spec))
|
|
3737
4007
|
return response
|
|
3738
4008
|
|
|
3739
4009
|
@dynamic_catch
|
|
3740
|
-
async def _async_find_data_classes(self, search_string: str,
|
|
3741
|
-
starts_with: bool = True, ends_with: bool = False,
|
|
3742
|
-
|
|
3743
|
-
|
|
4010
|
+
async def _async_find_data_classes(self, search_string: str,
|
|
4011
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
4012
|
+
ignore_case: bool = False,
|
|
4013
|
+
anchor_domain: Optional[str] = None,
|
|
4014
|
+
metadata_element_type: Optional[str] = None,
|
|
4015
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
4016
|
+
skip_relationships: Optional[list[str]] = None,
|
|
4017
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
4018
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
4019
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
4020
|
+
graph_query_depth: int = 3,
|
|
4021
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
4022
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
4023
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
4024
|
+
sequencing_property: Optional[str] = None,
|
|
4025
|
+
output_format: str = "JSON", report_spec: str | dict = None,
|
|
4026
|
+
start_from: int = 0, page_size: int = 100,
|
|
4027
|
+
property_names: Optional[list[str]] = None,
|
|
4028
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
3744
4029
|
""" Find the list of data class elements that contain the search string.
|
|
3745
4030
|
Async version.
|
|
3746
4031
|
|
|
3747
4032
|
Parameters
|
|
3748
4033
|
----------
|
|
3749
|
-
|
|
4034
|
+
search_string: str
|
|
3750
4035
|
- search string to filter on.
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
|
|
3755
|
-
|
|
3756
|
-
|
|
3757
|
-
|
|
3758
|
-
|
|
3759
|
-
|
|
3760
|
-
|
|
3761
|
-
|
|
3762
|
-
|
|
3763
|
-
|
|
3764
|
-
|
|
3765
|
-
|
|
4036
|
+
starts_with : bool, [default=True], optional
|
|
4037
|
+
Starts with the supplied string.
|
|
4038
|
+
ends_with : bool, [default=False], optional
|
|
4039
|
+
Ends with the supplied string
|
|
4040
|
+
ignore_case : bool, [default=False], optional
|
|
4041
|
+
Ignore case when searching
|
|
4042
|
+
anchor_domain: str, optional
|
|
4043
|
+
The anchor domain to search in.
|
|
4044
|
+
metadata_element_type: str, optional
|
|
4045
|
+
The type of metadata element to search for.
|
|
4046
|
+
metadata_element_subtypes: list[str], optional
|
|
4047
|
+
The subtypes of metadata element to search for.
|
|
4048
|
+
skip_relationships: list[str], optional
|
|
4049
|
+
The types of relationships to skip.
|
|
4050
|
+
include_only_relationships: list[str], optional
|
|
4051
|
+
The types of relationships to include.
|
|
4052
|
+
skip_classified_elements: list[str], optional
|
|
4053
|
+
The types of classified elements to skip.
|
|
4054
|
+
include_only_classified_elements: list[str], optional
|
|
4055
|
+
The types of classified elements to include.
|
|
4056
|
+
graph_query_depth: int, [default=3], optional
|
|
4057
|
+
The depth of the graph query.
|
|
4058
|
+
governance_zone_filter: list[str], optional
|
|
4059
|
+
The governance zones to search in.
|
|
4060
|
+
as_of_time: str, optional
|
|
4061
|
+
The time to search as of.
|
|
4062
|
+
effective_time: str, optional
|
|
4063
|
+
The effective time to search at.
|
|
4064
|
+
relationship_page_size: int, [default=0], optional
|
|
4065
|
+
The page size for relationships.
|
|
4066
|
+
limit_results_by_status: list[str], optional
|
|
4067
|
+
The statuses to limit results by.
|
|
4068
|
+
sequencing_order: str, optional
|
|
4069
|
+
The order to sequence results by.
|
|
4070
|
+
sequencing_property: str, optional
|
|
4071
|
+
The property to sequence results by.
|
|
4072
|
+
output_format: str, default = 'JSON'
|
|
4073
|
+
Type of output to produce:
|
|
4074
|
+
JSON - output standard json
|
|
4075
|
+
MD - output standard markdown with no preamble
|
|
4076
|
+
FORM - output markdown with a preamble for a form
|
|
4077
|
+
REPORT - output markdown with a preamble for a report
|
|
4078
|
+
report_spec: str | dict, optional
|
|
4079
|
+
The report specification to use.
|
|
4080
|
+
start_from: int, [default=0], optional
|
|
4081
|
+
The page number to start from.
|
|
4082
|
+
page_size: int, [default=100], optional
|
|
4083
|
+
The number of items to return in a single page.
|
|
4084
|
+
property_names: list[str], optional
|
|
4085
|
+
The names of properties to search for.
|
|
4086
|
+
body: dict, optional, default = None
|
|
4087
|
+
- additional optional specifications for the search.
|
|
3766
4088
|
|
|
3767
4089
|
Returns
|
|
3768
4090
|
-------
|
|
@@ -3771,48 +4093,115 @@ class DataDesigner(Client2):
|
|
|
3771
4093
|
|
|
3772
4094
|
Raises
|
|
3773
4095
|
------
|
|
3774
|
-
|
|
4096
|
+
PyegeriaInvalidParameterException
|
|
3775
4097
|
one of the parameters is null or invalid or
|
|
3776
|
-
|
|
4098
|
+
PyegeriaAPIException
|
|
3777
4099
|
There is a problem adding the element properties to the metadata repository or
|
|
3778
|
-
|
|
4100
|
+
PyegeriaUnauthorizedException
|
|
3779
4101
|
the requesting user is not authorized to issue this request.
|
|
3780
4102
|
|
|
3781
4103
|
"""
|
|
3782
4104
|
|
|
3783
4105
|
url = f"{base_path(self, self.view_server)}/data-classes/by-search-string"
|
|
3784
|
-
|
|
3785
|
-
|
|
4106
|
+
|
|
4107
|
+
return await self._async_find_request(url, "DataClass", self._generate_data_class_output, search_string,
|
|
3786
4108
|
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
|
3787
|
-
|
|
3788
|
-
|
|
4109
|
+
anchor_domain=anchor_domain,
|
|
4110
|
+
metadata_element_type=metadata_element_type,
|
|
4111
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
4112
|
+
skip_relationships=skip_relationships,
|
|
4113
|
+
include_only_relationships=include_only_relationships,
|
|
4114
|
+
skip_classified_elements=skip_classified_elements,
|
|
4115
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
4116
|
+
graph_query_depth=graph_query_depth,
|
|
4117
|
+
governance_zone_filter=governance_zone_filter,
|
|
4118
|
+
as_of_time=as_of_time, effective_time=effective_time,
|
|
4119
|
+
relationship_page_size=relationship_page_size,
|
|
4120
|
+
limit_results_by_status=limit_results_by_status,
|
|
4121
|
+
sequencing_order=sequencing_order,
|
|
4122
|
+
sequencing_property=sequencing_property,
|
|
4123
|
+
output_format=output_format, report_spec=report_spec,
|
|
4124
|
+
start_from=start_from, page_size=page_size,
|
|
4125
|
+
property_names=property_names, body=body)
|
|
3789
4126
|
|
|
3790
4127
|
@dynamic_catch
|
|
3791
|
-
def find_data_classes(self, search_string: str,
|
|
3792
|
-
starts_with: bool = True, ends_with: bool = False,
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
4128
|
+
def find_data_classes(self, search_string: str,
|
|
4129
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
4130
|
+
ignore_case: bool = False,
|
|
4131
|
+
anchor_domain: Optional[str] = None,
|
|
4132
|
+
metadata_element_type: Optional[str] = None,
|
|
4133
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
4134
|
+
skip_relationships: Optional[list[str]] = None,
|
|
4135
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
4136
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
4137
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
4138
|
+
graph_query_depth: int = 3,
|
|
4139
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
4140
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
4141
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
4142
|
+
sequencing_property: Optional[str] = None,
|
|
4143
|
+
output_format: str = "JSON", report_spec: str | dict = None,
|
|
4144
|
+
start_from: int = 0, page_size: int = 100,
|
|
4145
|
+
property_names: Optional[list[str]] = None,
|
|
4146
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
4147
|
+
""" Retrieve the list of data classes elements that contain the search string filter.
|
|
3796
4148
|
|
|
3797
4149
|
Parameters
|
|
3798
4150
|
----------
|
|
3799
|
-
|
|
4151
|
+
search_string: str
|
|
3800
4152
|
- search string to filter on.
|
|
3801
|
-
|
|
3802
|
-
|
|
3803
|
-
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
4153
|
+
starts_with : bool, [default=True], optional
|
|
4154
|
+
Starts with the supplied string.
|
|
4155
|
+
ends_with : bool, [default=False], optional
|
|
4156
|
+
Ends with the supplied string
|
|
4157
|
+
ignore_case : bool, [default=False], optional
|
|
4158
|
+
Ignore case when searching
|
|
4159
|
+
anchor_domain: str, optional
|
|
4160
|
+
The anchor domain to search in.
|
|
4161
|
+
metadata_element_type: str, optional
|
|
4162
|
+
The type of metadata element to search for.
|
|
4163
|
+
metadata_element_subtypes: list[str], optional
|
|
4164
|
+
The subtypes of metadata element to search for.
|
|
4165
|
+
skip_relationships: list[str], optional
|
|
4166
|
+
The types of relationships to skip.
|
|
4167
|
+
include_only_relationships: list[str], optional
|
|
4168
|
+
The types of relationships to include.
|
|
4169
|
+
skip_classified_elements: list[str], optional
|
|
4170
|
+
The types of classified elements to skip.
|
|
4171
|
+
include_only_classified_elements: list[str], optional
|
|
4172
|
+
The types of classified elements to include.
|
|
4173
|
+
graph_query_depth: int, [default=3], optional
|
|
4174
|
+
The depth of the graph query.
|
|
4175
|
+
governance_zone_filter: list[str], optional
|
|
4176
|
+
The governance zones to search in.
|
|
4177
|
+
as_of_time: str, optional
|
|
4178
|
+
The time to search as of.
|
|
4179
|
+
effective_time: str, optional
|
|
4180
|
+
The effective time to search at.
|
|
4181
|
+
relationship_page_size: int, [default=0], optional
|
|
4182
|
+
The page size for relationships.
|
|
4183
|
+
limit_results_by_status: list[str], optional
|
|
4184
|
+
The statuses to limit results by.
|
|
4185
|
+
sequencing_order: str, optional
|
|
4186
|
+
The order to sequence results by.
|
|
4187
|
+
sequencing_property: str, optional
|
|
4188
|
+
The property to sequence results by.
|
|
4189
|
+
output_format: str, default = 'JSON'
|
|
4190
|
+
Type of output to produce:
|
|
4191
|
+
JSON - output standard json
|
|
4192
|
+
MD - output standard markdown with no preamble
|
|
4193
|
+
FORM - output markdown with a preamble for a form
|
|
4194
|
+
REPORT - output markdown with a preamble for a report
|
|
4195
|
+
report_spec: str | dict, optional
|
|
4196
|
+
The report specification to use.
|
|
4197
|
+
start_from: int, [default=0], optional
|
|
4198
|
+
The page number to start from.
|
|
4199
|
+
page_size: int, [default=100], optional
|
|
4200
|
+
The number of items to return in a single page.
|
|
4201
|
+
property_names: list[str], optional
|
|
4202
|
+
The names of properties to search for.
|
|
4203
|
+
body: dict, optional, default = None
|
|
4204
|
+
- additional optional specifications for the search.
|
|
3816
4205
|
|
|
3817
4206
|
Returns
|
|
3818
4207
|
-------
|
|
@@ -3821,11 +4210,11 @@ class DataDesigner(Client2):
|
|
|
3821
4210
|
|
|
3822
4211
|
Raises
|
|
3823
4212
|
------
|
|
3824
|
-
|
|
4213
|
+
PyegeriaInvalidParameterException
|
|
3825
4214
|
one of the parameters is null or invalid or
|
|
3826
|
-
|
|
4215
|
+
PyegeriaAPIException
|
|
3827
4216
|
There is a problem adding the element properties to the metadata repository or
|
|
3828
|
-
|
|
4217
|
+
PyegeriaUnauthorizedException
|
|
3829
4218
|
the requesting user is not authorized to issue this request.
|
|
3830
4219
|
|
|
3831
4220
|
|
|
@@ -3833,22 +4222,39 @@ class DataDesigner(Client2):
|
|
|
3833
4222
|
|
|
3834
4223
|
loop = asyncio.get_event_loop()
|
|
3835
4224
|
response = loop.run_until_complete(
|
|
3836
|
-
self._async_find_data_classes(search_string,
|
|
3837
|
-
|
|
4225
|
+
self._async_find_data_classes(search_string,
|
|
4226
|
+
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
|
4227
|
+
anchor_domain=anchor_domain,
|
|
4228
|
+
metadata_element_type=metadata_element_type,
|
|
4229
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
4230
|
+
skip_relationships=skip_relationships,
|
|
4231
|
+
include_only_relationships=include_only_relationships,
|
|
4232
|
+
skip_classified_elements=skip_classified_elements,
|
|
4233
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
4234
|
+
graph_query_depth=graph_query_depth,
|
|
4235
|
+
governance_zone_filter=governance_zone_filter,
|
|
4236
|
+
as_of_time=as_of_time, effective_time=effective_time,
|
|
4237
|
+
relationship_page_size=relationship_page_size,
|
|
4238
|
+
limit_results_by_status=limit_results_by_status,
|
|
4239
|
+
sequencing_order=sequencing_order,
|
|
4240
|
+
sequencing_property=sequencing_property,
|
|
4241
|
+
output_format=output_format, report_spec=report_spec,
|
|
4242
|
+
start_from=start_from, page_size=page_size,
|
|
4243
|
+
property_names=property_names, body=body))
|
|
3838
4244
|
return response
|
|
3839
4245
|
|
|
3840
4246
|
@dynamic_catch
|
|
3841
4247
|
async def _async_get_data_classes_by_name(self, filter_string: str, classification_names: list[str],
|
|
3842
|
-
body: dict | FilterRequestBody = None, start_from: int = 0,
|
|
4248
|
+
body: Optional[dict | FilterRequestBody] = None, start_from: int = 0,
|
|
3843
4249
|
page_size: int = 0,
|
|
3844
4250
|
output_format: str = 'JSON',
|
|
3845
|
-
|
|
4251
|
+
report_spec: str | dict = None) -> list | str:
|
|
3846
4252
|
""" Get the list of data class metadata elements with a matching name to the search string filter.
|
|
3847
4253
|
Async version.
|
|
3848
4254
|
|
|
3849
4255
|
Parameters
|
|
3850
4256
|
----------
|
|
3851
|
-
|
|
4257
|
+
filter_string : str
|
|
3852
4258
|
- search string to filter on.
|
|
3853
4259
|
body: dict, optional
|
|
3854
4260
|
- a dictionary containing additional properties to use in the request.
|
|
@@ -3858,7 +4264,7 @@ class DataDesigner(Client2):
|
|
|
3858
4264
|
- maximum number of elements to return.
|
|
3859
4265
|
output_format: str, default = "DICT"
|
|
3860
4266
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
3861
|
-
|
|
4267
|
+
report_spec: str|dict, optional, default = None
|
|
3862
4268
|
- The desired output columns/field options.
|
|
3863
4269
|
|
|
3864
4270
|
Returns
|
|
@@ -3868,11 +4274,11 @@ class DataDesigner(Client2):
|
|
|
3868
4274
|
|
|
3869
4275
|
Raises
|
|
3870
4276
|
------
|
|
3871
|
-
|
|
4277
|
+
PyegeriaInvalidParameterException
|
|
3872
4278
|
one of the parameters is null or invalid or
|
|
3873
|
-
|
|
4279
|
+
PyegeriaAPIException
|
|
3874
4280
|
There is a problem adding the element properties to the metadata repository or
|
|
3875
|
-
|
|
4281
|
+
PyegeriaUnauthorizedException
|
|
3876
4282
|
the requesting user is not authorized to issue this request.
|
|
3877
4283
|
Notes
|
|
3878
4284
|
-----
|
|
@@ -3897,21 +4303,21 @@ class DataDesigner(Client2):
|
|
|
3897
4303
|
filter_string=filter_string,
|
|
3898
4304
|
classification_names=classification_names,
|
|
3899
4305
|
start_from=start_from, page_size=page_size,
|
|
3900
|
-
output_format=output_format,
|
|
4306
|
+
output_format=output_format, report_spec=report_spec,
|
|
3901
4307
|
body=body)
|
|
3902
4308
|
|
|
3903
4309
|
return response
|
|
3904
4310
|
|
|
3905
4311
|
@dynamic_catch
|
|
3906
|
-
def get_data_classes_by_name(self, filter_string: str, classification_names: list[str] = None,
|
|
3907
|
-
body: dict | FilterRequestBody = None, start_from: int = 0,
|
|
4312
|
+
def get_data_classes_by_name(self, filter_string: str, classification_names: Optional[list[str]] = None,
|
|
4313
|
+
body: Optional[dict | FilterRequestBody] = None, start_from: int = 0,
|
|
3908
4314
|
page_size: int = max_paging_size, output_format: str = 'JSON',
|
|
3909
|
-
|
|
4315
|
+
report_spec: str | dict = None) -> list | str:
|
|
3910
4316
|
""" Get the list of data class elements with a matching name to the search string filter.
|
|
3911
4317
|
|
|
3912
4318
|
Parameters
|
|
3913
4319
|
----------
|
|
3914
|
-
|
|
4320
|
+
filter_string : str
|
|
3915
4321
|
- search string to filter on.
|
|
3916
4322
|
body: dict, optional
|
|
3917
4323
|
- a dictionary containing additional properties to use in the request.
|
|
@@ -3921,7 +4327,7 @@ class DataDesigner(Client2):
|
|
|
3921
4327
|
- maximum number of elements to return.
|
|
3922
4328
|
output_format: str, default = "DICT"
|
|
3923
4329
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
3924
|
-
|
|
4330
|
+
report_spec: str|dict, optional, default = None
|
|
3925
4331
|
- The desired output columns/field options.
|
|
3926
4332
|
|
|
3927
4333
|
|
|
@@ -3932,11 +4338,11 @@ class DataDesigner(Client2):
|
|
|
3932
4338
|
|
|
3933
4339
|
Raises
|
|
3934
4340
|
------
|
|
3935
|
-
|
|
4341
|
+
PyegeriaInvalidParameterException
|
|
3936
4342
|
one of the parameters is null or invalid or
|
|
3937
|
-
|
|
4343
|
+
PyegeriaAPIException
|
|
3938
4344
|
There is a problem adding the element properties to the metadata repository or
|
|
3939
|
-
|
|
4345
|
+
PyegeriaUnauthorizedException
|
|
3940
4346
|
the requesting user is not authorized to issue this request.
|
|
3941
4347
|
|
|
3942
4348
|
Notes
|
|
@@ -3958,15 +4364,15 @@ class DataDesigner(Client2):
|
|
|
3958
4364
|
loop = asyncio.get_event_loop()
|
|
3959
4365
|
response = loop.run_until_complete(
|
|
3960
4366
|
self._async_get_data_classes_by_name(filter_string, classification_names, body,
|
|
3961
|
-
start_from, page_size, output_format,
|
|
4367
|
+
start_from, page_size, output_format, report_spec
|
|
3962
4368
|
))
|
|
3963
4369
|
return response
|
|
3964
4370
|
|
|
3965
4371
|
@dynamic_catch
|
|
3966
|
-
async def _async_get_data_class_by_guid(self, guid: str, element_type: str = None,
|
|
3967
|
-
body: dict | GetRequestBody = None,
|
|
4372
|
+
async def _async_get_data_class_by_guid(self, guid: str, element_type: Optional[str] = None,
|
|
4373
|
+
body: Optional[dict | GetRequestBody] = None,
|
|
3968
4374
|
output_format: str = 'JSON',
|
|
3969
|
-
|
|
4375
|
+
report_spec: str | dict = None) -> list | str:
|
|
3970
4376
|
""" Get the data class elements for the specified GUID.
|
|
3971
4377
|
Async version.
|
|
3972
4378
|
|
|
@@ -3978,7 +4384,7 @@ class DataDesigner(Client2):
|
|
|
3978
4384
|
- optional request body.
|
|
3979
4385
|
output_format: str, default = "DICT"
|
|
3980
4386
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
3981
|
-
|
|
4387
|
+
report_spec: str|dict, optional, default = None
|
|
3982
4388
|
- The desired output columns/field options.
|
|
3983
4389
|
|
|
3984
4390
|
Returns
|
|
@@ -3988,11 +4394,11 @@ class DataDesigner(Client2):
|
|
|
3988
4394
|
|
|
3989
4395
|
Raises
|
|
3990
4396
|
------
|
|
3991
|
-
|
|
4397
|
+
PyegeriaInvalidParameterException
|
|
3992
4398
|
one of the parameters is null or invalid or
|
|
3993
|
-
|
|
4399
|
+
PyegeriaAPIException
|
|
3994
4400
|
There is a problem adding the element properties to the metadata repository or
|
|
3995
|
-
|
|
4401
|
+
PyegeriaUnauthorizedException
|
|
3996
4402
|
the requesting user is not authorized to issue this request.
|
|
3997
4403
|
|
|
3998
4404
|
Notes
|
|
@@ -4014,14 +4420,14 @@ class DataDesigner(Client2):
|
|
|
4014
4420
|
|
|
4015
4421
|
response = await self._async_get_guid_request(url, _type=type,
|
|
4016
4422
|
_gen_output=self._generate_data_class_output,
|
|
4017
|
-
output_format=output_format,
|
|
4423
|
+
output_format=output_format, report_spec=report_spec,
|
|
4018
4424
|
body=body)
|
|
4019
4425
|
return response
|
|
4020
4426
|
|
|
4021
4427
|
@dynamic_catch
|
|
4022
|
-
def get_data_class_by_guid(self, guid: str, element_type: str = None, body: dict | FilterRequestBody = None,
|
|
4428
|
+
def get_data_class_by_guid(self, guid: str, element_type: Optional[str] = None, body: Optional[dict | FilterRequestBody] = None,
|
|
4023
4429
|
output_format: str = 'JSON',
|
|
4024
|
-
|
|
4430
|
+
report_spec: str | dict = None) -> list | str:
|
|
4025
4431
|
""" Get the data structure metadata element with the specified unique identifier..
|
|
4026
4432
|
|
|
4027
4433
|
Parameters
|
|
@@ -4032,7 +4438,7 @@ class DataDesigner(Client2):
|
|
|
4032
4438
|
- optional request body.
|
|
4033
4439
|
output_format: str, default = "DICT"
|
|
4034
4440
|
- output format of the data structure. Possible values: "DICT", "JSON", "MERMAID".
|
|
4035
|
-
|
|
4441
|
+
report_spec: str|dict, optional, default = None
|
|
4036
4442
|
- The desired output columns/field options.
|
|
4037
4443
|
|
|
4038
4444
|
Returns
|
|
@@ -4042,11 +4448,11 @@ class DataDesigner(Client2):
|
|
|
4042
4448
|
|
|
4043
4449
|
Raises
|
|
4044
4450
|
------
|
|
4045
|
-
|
|
4451
|
+
PyegeriaInvalidParameterException
|
|
4046
4452
|
one of the parameters is null or invalid or
|
|
4047
|
-
|
|
4453
|
+
PyegeriaAPIException
|
|
4048
4454
|
There is a problem adding the element properties to the metadata repository or
|
|
4049
|
-
|
|
4455
|
+
PyegeriaUnauthorizedException
|
|
4050
4456
|
the requesting user is not authorized to issue this request.
|
|
4051
4457
|
|
|
4052
4458
|
Notes
|
|
@@ -4065,7 +4471,7 @@ class DataDesigner(Client2):
|
|
|
4065
4471
|
|
|
4066
4472
|
loop = asyncio.get_event_loop()
|
|
4067
4473
|
response = loop.run_until_complete(
|
|
4068
|
-
self._async_get_data_class_by_guid(guid, element_type, body, output_format,
|
|
4474
|
+
self._async_get_data_class_by_guid(guid, element_type, body, output_format, report_spec))
|
|
4069
4475
|
return response
|
|
4070
4476
|
|
|
4071
4477
|
###
|
|
@@ -4075,7 +4481,7 @@ class DataDesigner(Client2):
|
|
|
4075
4481
|
#
|
|
4076
4482
|
@dynamic_catch
|
|
4077
4483
|
async def _async_link_data_class_definition(self, data_definition_guid: str, data_class_guid: str,
|
|
4078
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
4484
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
4079
4485
|
"""
|
|
4080
4486
|
Connect an element that is part of a data design to a data class to show that the data class should be used as
|
|
4081
4487
|
the specification for the data values when interpreting the data definition. Request body is optional.
|
|
@@ -4095,11 +4501,11 @@ class DataDesigner(Client2):
|
|
|
4095
4501
|
|
|
4096
4502
|
Raises
|
|
4097
4503
|
------
|
|
4098
|
-
|
|
4504
|
+
PyegeriaInvalidParameterException
|
|
4099
4505
|
one of the parameters is null or invalid or
|
|
4100
|
-
|
|
4506
|
+
PyegeriaAPIException
|
|
4101
4507
|
There is a problem adding the element properties to the metadata repository or
|
|
4102
|
-
|
|
4508
|
+
PyegeriaUnauthorizedException
|
|
4103
4509
|
the requesting user is not authorized to issue this request.
|
|
4104
4510
|
|
|
4105
4511
|
Note
|
|
@@ -4126,7 +4532,7 @@ class DataDesigner(Client2):
|
|
|
4126
4532
|
|
|
4127
4533
|
@dynamic_catch
|
|
4128
4534
|
def link_data_class_definition(self, data_definition_guid: str, data_class_guid: str,
|
|
4129
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
4535
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
4130
4536
|
"""
|
|
4131
4537
|
Connect an element that is part of a data design to a data class to show that the data class should be used as
|
|
4132
4538
|
the specification for the data values when interpreting the data definition. Request body is optional.
|
|
@@ -4146,11 +4552,11 @@ class DataDesigner(Client2):
|
|
|
4146
4552
|
|
|
4147
4553
|
Raises
|
|
4148
4554
|
------
|
|
4149
|
-
|
|
4555
|
+
PyegeriaInvalidParameterException
|
|
4150
4556
|
one of the parameters is null or invalid or
|
|
4151
|
-
|
|
4557
|
+
PyegeriaAPIException
|
|
4152
4558
|
There is a problem adding the element properties to the metadata repository or
|
|
4153
|
-
|
|
4559
|
+
PyegeriaUnauthorizedException
|
|
4154
4560
|
the requesting user is not authorized to issue this request.
|
|
4155
4561
|
|
|
4156
4562
|
Note
|
|
@@ -4174,7 +4580,7 @@ class DataDesigner(Client2):
|
|
|
4174
4580
|
|
|
4175
4581
|
@dynamic_catch
|
|
4176
4582
|
async def _async_detach_data_class_definition(self, data_definition_guid: str, data_class_guid: str,
|
|
4177
|
-
body: dict |
|
|
4583
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None,
|
|
4178
4584
|
cascade_delete: bool = False) -> None:
|
|
4179
4585
|
"""
|
|
4180
4586
|
Detach a data definition from a data class. Request body is optional. Async version.
|
|
@@ -4194,11 +4600,11 @@ class DataDesigner(Client2):
|
|
|
4194
4600
|
|
|
4195
4601
|
Raises
|
|
4196
4602
|
------
|
|
4197
|
-
|
|
4603
|
+
PyegeriaInvalidParameterException
|
|
4198
4604
|
one of the parameters is null or invalid or
|
|
4199
|
-
|
|
4605
|
+
PyegeriaAPIException
|
|
4200
4606
|
There is a problem adding the element properties to the metadata repository or
|
|
4201
|
-
|
|
4607
|
+
PyegeriaUnauthorizedException
|
|
4202
4608
|
the requesting user is not authorized to issue this request.
|
|
4203
4609
|
|
|
4204
4610
|
Note
|
|
@@ -4221,12 +4627,12 @@ class DataDesigner(Client2):
|
|
|
4221
4627
|
url = (f"{base_path(self, self.view_server)}/data-definitions/{data_definition_guid}"
|
|
4222
4628
|
f"/data-class-definition/{data_class_guid}/detach")
|
|
4223
4629
|
|
|
4224
|
-
await self.
|
|
4630
|
+
await self._async_delete_relationship_request(url, body, cascade_delete)
|
|
4225
4631
|
logger.info(f"Data class {data_class_guid} detached from data definition {data_definition_guid}.")
|
|
4226
4632
|
|
|
4227
4633
|
@dynamic_catch
|
|
4228
4634
|
def detach_data_class_definition(self, data_definition_guid: str, data_class_guid: str,
|
|
4229
|
-
body: dict |
|
|
4635
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None, cascade_delete: bool = False) -> None:
|
|
4230
4636
|
"""
|
|
4231
4637
|
Detach a data definition from a data class. Request body is optional.
|
|
4232
4638
|
|
|
@@ -4245,11 +4651,11 @@ class DataDesigner(Client2):
|
|
|
4245
4651
|
|
|
4246
4652
|
Raises
|
|
4247
4653
|
------
|
|
4248
|
-
|
|
4654
|
+
PyegeriaInvalidParameterException
|
|
4249
4655
|
one of the parameters is null or invalid or
|
|
4250
|
-
|
|
4656
|
+
PyegeriaAPIException
|
|
4251
4657
|
There is a problem adding the element properties to the metadata repository or
|
|
4252
|
-
|
|
4658
|
+
PyegeriaUnauthorizedException
|
|
4253
4659
|
the requesting user is not authorized to issue this request.
|
|
4254
4660
|
|
|
4255
4661
|
Note
|
|
@@ -4275,7 +4681,7 @@ class DataDesigner(Client2):
|
|
|
4275
4681
|
|
|
4276
4682
|
@dynamic_catch
|
|
4277
4683
|
async def _async_link_semantic_definition(self, data_definition_guid: str, glossary_term_guid: str,
|
|
4278
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
4684
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
4279
4685
|
"""
|
|
4280
4686
|
Connect an element that is part of a data design to a glossary term to show that the term should be used as
|
|
4281
4687
|
the semantic definition for the data values when interpreting the data definition. Request body is optional.
|
|
@@ -4296,11 +4702,11 @@ class DataDesigner(Client2):
|
|
|
4296
4702
|
|
|
4297
4703
|
Raises
|
|
4298
4704
|
------
|
|
4299
|
-
|
|
4705
|
+
PyegeriaInvalidParameterException
|
|
4300
4706
|
one of the parameters is null or invalid or
|
|
4301
|
-
|
|
4707
|
+
PyegeriaAPIException
|
|
4302
4708
|
There is a problem adding the element properties to the metadata repository or
|
|
4303
|
-
|
|
4709
|
+
PyegeriaUnauthorizedException
|
|
4304
4710
|
the requesting user is not authorized to issue this request.
|
|
4305
4711
|
|
|
4306
4712
|
Note
|
|
@@ -4327,7 +4733,7 @@ class DataDesigner(Client2):
|
|
|
4327
4733
|
|
|
4328
4734
|
@dynamic_catch
|
|
4329
4735
|
def link_semantic_definition(self, data_definition_guid: str, glossary_term_guid: str,
|
|
4330
|
-
body: dict | NewRelationshipRequestBody = None) -> None:
|
|
4736
|
+
body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
4331
4737
|
"""
|
|
4332
4738
|
Connect an element that is part of a data design to a glossary term to show that the term should be used as
|
|
4333
4739
|
the semantic definition for the data values when interpreting the data definition. Request body is optional.
|
|
@@ -4348,11 +4754,11 @@ class DataDesigner(Client2):
|
|
|
4348
4754
|
|
|
4349
4755
|
Raises
|
|
4350
4756
|
------
|
|
4351
|
-
|
|
4757
|
+
PyegeriaInvalidParameterException
|
|
4352
4758
|
one of the parameters is null or invalid or
|
|
4353
|
-
|
|
4759
|
+
PyegeriaAPIException
|
|
4354
4760
|
There is a problem adding the element properties to the metadata repository or
|
|
4355
|
-
|
|
4761
|
+
PyegeriaUnauthorizedException
|
|
4356
4762
|
the requesting user is not authorized to issue this request.
|
|
4357
4763
|
|
|
4358
4764
|
Note
|
|
@@ -4376,7 +4782,7 @@ class DataDesigner(Client2):
|
|
|
4376
4782
|
|
|
4377
4783
|
@dynamic_catch
|
|
4378
4784
|
async def _async_detach_semantic_definition(self, data_definition_guid: str, glossary_term_guid: str,
|
|
4379
|
-
body: dict |
|
|
4785
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None,
|
|
4380
4786
|
cascade_delete: bool = False) -> None:
|
|
4381
4787
|
"""
|
|
4382
4788
|
Detach a data definition from a glossary term. Request body is optional. Async version.
|
|
@@ -4396,11 +4802,11 @@ class DataDesigner(Client2):
|
|
|
4396
4802
|
|
|
4397
4803
|
Raises
|
|
4398
4804
|
------
|
|
4399
|
-
|
|
4805
|
+
PyegeriaInvalidParameterException
|
|
4400
4806
|
one of the parameters is null or invalid or
|
|
4401
|
-
|
|
4807
|
+
PyegeriaAPIException
|
|
4402
4808
|
There is a problem adding the element properties to the metadata repository or
|
|
4403
|
-
|
|
4809
|
+
PyegeriaUnauthorizedException
|
|
4404
4810
|
the requesting user is not authorized to issue this request.
|
|
4405
4811
|
|
|
4406
4812
|
Note
|
|
@@ -4422,12 +4828,12 @@ class DataDesigner(Client2):
|
|
|
4422
4828
|
|
|
4423
4829
|
url = (f"{base_path(self, self.view_server)}/data-definitions/{data_definition_guid}"
|
|
4424
4830
|
f"/semantic-definition/{glossary_term_guid}/detach")
|
|
4425
|
-
await self.
|
|
4831
|
+
await self._async_delete_relationship_request(url, body, cascade_delete)
|
|
4426
4832
|
logger.info(f"Data definition {data_definition_guid} detached from term {glossary_term_guid}.")
|
|
4427
4833
|
|
|
4428
4834
|
@dynamic_catch
|
|
4429
4835
|
def detach_semantic_definition(self, data_definition_guid: str, glossary_term_guid: str,
|
|
4430
|
-
body: dict |
|
|
4836
|
+
body: Optional[dict | DeleteRelationshipRequestBody] = None, cascade_delete: bool = False) -> None:
|
|
4431
4837
|
"""
|
|
4432
4838
|
Detach a data definition from a glossary term. Request body is optional.
|
|
4433
4839
|
|
|
@@ -4446,11 +4852,11 @@ class DataDesigner(Client2):
|
|
|
4446
4852
|
|
|
4447
4853
|
Raises
|
|
4448
4854
|
------
|
|
4449
|
-
|
|
4855
|
+
PyegeriaInvalidParameterException
|
|
4450
4856
|
one of the parameters is null or invalid or
|
|
4451
|
-
|
|
4857
|
+
PyegeriaAPIException
|
|
4452
4858
|
There is a problem adding the element properties to the metadata repository or
|
|
4453
|
-
|
|
4859
|
+
PyegeriaUnauthorizedException
|
|
4454
4860
|
the requesting user is not authorized to issue this request.
|
|
4455
4861
|
|
|
4456
4862
|
Note
|
|
@@ -4477,7 +4883,7 @@ class DataDesigner(Client2):
|
|
|
4477
4883
|
|
|
4478
4884
|
|
|
4479
4885
|
async def _async_link_certification_type_to_data_structure(self, certification_type_guid: str,
|
|
4480
|
-
data_structure_guid: str, body: dict | NewRelationshipRequestBody = None) -> None:
|
|
4886
|
+
data_structure_guid: str, body: Optional[dict | NewRelationshipRequestBody] = None) -> None:
|
|
4481
4887
|
"""
|
|
4482
4888
|
Connect a certification type to a data structure to guide the survey action service (that checks the data
|
|
4483
4889
|
quality of a data resource as part of certifying it with the supplied certification type) to the definition
|
|
@@ -4501,11 +4907,11 @@ class DataDesigner(Client2):
|
|
|
4501
4907
|
|
|
4502
4908
|
Raises
|
|
4503
4909
|
------
|
|
4504
|
-
|
|
4910
|
+
PyegeriaInvalidParameterException
|
|
4505
4911
|
one of the parameters is null or invalid or
|
|
4506
|
-
|
|
4912
|
+
PyegeriaAPIException
|
|
4507
4913
|
There is a problem adding the element properties to the metadata repository or
|
|
4508
|
-
|
|
4914
|
+
PyegeriaUnauthorizedException
|
|
4509
4915
|
the requesting user is not authorized to issue this request.
|
|
4510
4916
|
|
|
4511
4917
|
Note
|
|
@@ -4554,11 +4960,11 @@ class DataDesigner(Client2):
|
|
|
4554
4960
|
|
|
4555
4961
|
Raises
|
|
4556
4962
|
------
|
|
4557
|
-
|
|
4963
|
+
PyegeriaInvalidParameterException
|
|
4558
4964
|
one of the parameters is null or invalid or
|
|
4559
|
-
|
|
4965
|
+
PyegeriaAPIException
|
|
4560
4966
|
There is a problem adding the element properties to the metadata repository or
|
|
4561
|
-
|
|
4967
|
+
PyegeriaUnauthorizedException
|
|
4562
4968
|
the requesting user is not authorized to issue this request.
|
|
4563
4969
|
|
|
4564
4970
|
Note
|
|
@@ -4582,7 +4988,7 @@ class DataDesigner(Client2):
|
|
|
4582
4988
|
self._async_link_certification_type_to_data_structure(certification_type_guid, data_structure_guid, body))
|
|
4583
4989
|
|
|
4584
4990
|
async def _async_detach_certification_type_from_data_structure(self, certification_type_guid: str,
|
|
4585
|
-
data_structure_guid: str, body: dict |
|
|
4991
|
+
data_structure_guid: str, body: Optional[dict | DeleteRelationshipRequestBody] = None, cascade_delete: bool = False) -> None:
|
|
4586
4992
|
"""
|
|
4587
4993
|
Detach a data structure from a certification type. Request body is optional. Async version.
|
|
4588
4994
|
|
|
@@ -4601,11 +5007,11 @@ class DataDesigner(Client2):
|
|
|
4601
5007
|
|
|
4602
5008
|
Raises
|
|
4603
5009
|
------
|
|
4604
|
-
|
|
5010
|
+
PyegeriaInvalidParameterException
|
|
4605
5011
|
one of the parameters is null or invalid or
|
|
4606
|
-
|
|
5012
|
+
PyegeriaAPIException
|
|
4607
5013
|
There is a problem adding the element properties to the metadata repository or
|
|
4608
|
-
|
|
5014
|
+
PyegeriaUnauthorizedException
|
|
4609
5015
|
the requesting user is not authorized to issue this request.
|
|
4610
5016
|
|
|
4611
5017
|
Note
|
|
@@ -4627,12 +5033,12 @@ class DataDesigner(Client2):
|
|
|
4627
5033
|
url = (f"{base_path(self, self.view_server)}/certification-stypes/{certification_type_guid}"
|
|
4628
5034
|
f"/data-structure-definition/{data_structure_guid}/detach")
|
|
4629
5035
|
|
|
4630
|
-
await self.
|
|
5036
|
+
await self._async_delete_relationship_request(url, body, cascade_delete)
|
|
4631
5037
|
logger.info(f"Certification type {certification_type_guid} detached from data structure {data_structure_guid}.")
|
|
4632
5038
|
|
|
4633
5039
|
|
|
4634
5040
|
def detach_certification_type_from_data_structure(self, certification_type_guid: str, data_structure_guid: str,
|
|
4635
|
-
body: dict |
|
|
5041
|
+
body: dict | DeleteRelationshipRequestBody= None, cascade_delete: bool = False) -> None:
|
|
4636
5042
|
"""
|
|
4637
5043
|
Detach a data structure from a certification type. Request body is optional.
|
|
4638
5044
|
|
|
@@ -4651,11 +5057,11 @@ class DataDesigner(Client2):
|
|
|
4651
5057
|
|
|
4652
5058
|
Raises
|
|
4653
5059
|
------
|
|
4654
|
-
|
|
5060
|
+
PyegeriaInvalidParameterException
|
|
4655
5061
|
one of the parameters is null or invalid or
|
|
4656
|
-
|
|
5062
|
+
PyegeriaAPIException
|
|
4657
5063
|
There is a problem adding the element properties to the metadata repository or
|
|
4658
|
-
|
|
5064
|
+
PyegeriaUnauthorizedException
|
|
4659
5065
|
the requesting user is not authorized to issue this request.
|
|
4660
5066
|
|
|
4661
5067
|
Note
|
|
@@ -4682,120 +5088,163 @@ class DataDesigner(Client2):
|
|
|
4682
5088
|
|
|
4683
5089
|
|
|
4684
5090
|
|
|
4685
|
-
def _extract_data_structure_properties(self, element: dict) -> dict:
|
|
4686
|
-
"""
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
|
|
4692
|
-
|
|
4693
|
-
|
|
4694
|
-
|
|
4695
|
-
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
|
|
4702
|
-
|
|
4703
|
-
|
|
4704
|
-
|
|
4705
|
-
|
|
4706
|
-
|
|
4707
|
-
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
|
|
4711
|
-
|
|
4712
|
-
|
|
4713
|
-
|
|
4714
|
-
|
|
4715
|
-
|
|
4716
|
-
|
|
4717
|
-
|
|
4718
|
-
|
|
4719
|
-
|
|
4720
|
-
|
|
4721
|
-
|
|
4722
|
-
|
|
4723
|
-
|
|
4724
|
-
|
|
4725
|
-
|
|
4726
|
-
|
|
4727
|
-
|
|
4728
|
-
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
|
|
4744
|
-
|
|
4745
|
-
|
|
4746
|
-
|
|
4747
|
-
|
|
4748
|
-
|
|
4749
|
-
|
|
4750
|
-
|
|
4751
|
-
|
|
4752
|
-
|
|
4753
|
-
|
|
4754
|
-
|
|
4755
|
-
|
|
4756
|
-
|
|
4757
|
-
|
|
4758
|
-
|
|
4759
|
-
|
|
4760
|
-
|
|
4761
|
-
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
|
|
4777
|
-
|
|
4778
|
-
|
|
4779
|
-
|
|
4780
|
-
|
|
4781
|
-
|
|
4782
|
-
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4788
|
-
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
5091
|
+
def _extract_data_structure_properties(self, element: dict, columns_struct: dict) -> dict:
|
|
5092
|
+
"""Extractor for Data Structure elements with related overlay.
|
|
5093
|
+
|
|
5094
|
+
Pattern:
|
|
5095
|
+
- Populate common columns via populate_common_columns.
|
|
5096
|
+
- Derive related properties using get_data_rel_elements_dict from the element body.
|
|
5097
|
+
- Overlay values into matching columns' 'value' fields, handling formats as list or dict.
|
|
5098
|
+
- Return the enriched columns_struct.
|
|
5099
|
+
"""
|
|
5100
|
+
col_data = populate_common_columns(element, columns_struct)
|
|
5101
|
+
|
|
5102
|
+
try:
|
|
5103
|
+
related_map = self.get_data_rel_elements_dict(element)
|
|
5104
|
+
except Exception:
|
|
5105
|
+
related_map = {}
|
|
5106
|
+
|
|
5107
|
+
if isinstance(related_map, dict) and related_map:
|
|
5108
|
+
try:
|
|
5109
|
+
formats = col_data.get("formats") if isinstance(col_data, dict) else None
|
|
5110
|
+
if isinstance(formats, list):
|
|
5111
|
+
targets = formats
|
|
5112
|
+
elif isinstance(formats, dict):
|
|
5113
|
+
inner = formats.get("formats") if isinstance(formats.get("formats"), (dict, list)) else None
|
|
5114
|
+
if isinstance(inner, list):
|
|
5115
|
+
targets = inner
|
|
5116
|
+
elif isinstance(inner, dict):
|
|
5117
|
+
targets = [inner]
|
|
5118
|
+
else:
|
|
5119
|
+
targets = [formats]
|
|
5120
|
+
else:
|
|
5121
|
+
targets = []
|
|
5122
|
+
|
|
5123
|
+
if targets:
|
|
5124
|
+
for fmt in targets:
|
|
5125
|
+
cols = fmt.get("attributes", []) if isinstance(fmt, dict) else []
|
|
5126
|
+
for col in cols:
|
|
5127
|
+
key = col.get("key") if isinstance(col, dict) else None
|
|
5128
|
+
if key and key in related_map:
|
|
5129
|
+
col["value"] = related_map.get(key)
|
|
5130
|
+
else:
|
|
5131
|
+
cols = col_data.get("attributes", []) if isinstance(col_data, dict) else []
|
|
5132
|
+
for col in cols:
|
|
5133
|
+
key = col.get("key") if isinstance(col, dict) else None
|
|
5134
|
+
if key and key in related_map:
|
|
5135
|
+
col["value"] = related_map.get(key)
|
|
5136
|
+
except Exception:
|
|
5137
|
+
pass
|
|
5138
|
+
|
|
5139
|
+
return col_data
|
|
5140
|
+
|
|
5141
|
+
|
|
5142
|
+
def _extract_data_class_properties(self, element: dict,columns_struct: dict) -> dict:
|
|
5143
|
+
"""Extractor for Data Class elements with related overlay, mirroring Data Field pattern."""
|
|
5144
|
+
col_data = populate_common_columns(element, columns_struct)
|
|
5145
|
+
|
|
5146
|
+
try:
|
|
5147
|
+
related_map = self.get_data_rel_elements_dict(element)
|
|
5148
|
+
except Exception:
|
|
5149
|
+
related_map = {}
|
|
5150
|
+
|
|
5151
|
+
if isinstance(related_map, dict) and related_map:
|
|
5152
|
+
try:
|
|
5153
|
+
formats = col_data.get("formats") if isinstance(col_data, dict) else None
|
|
5154
|
+
if isinstance(formats, list):
|
|
5155
|
+
targets = formats
|
|
5156
|
+
elif isinstance(formats, dict):
|
|
5157
|
+
inner = formats.get("formats") if isinstance(formats.get("formats"), (dict, list)) else None
|
|
5158
|
+
if isinstance(inner, list):
|
|
5159
|
+
targets = inner
|
|
5160
|
+
elif isinstance(inner, dict):
|
|
5161
|
+
targets = [inner]
|
|
5162
|
+
else:
|
|
5163
|
+
targets = [formats]
|
|
5164
|
+
else:
|
|
5165
|
+
targets = []
|
|
5166
|
+
|
|
5167
|
+
if targets:
|
|
5168
|
+
for fmt in targets:
|
|
5169
|
+
cols = fmt.get("attributes", []) if isinstance(fmt, dict) else []
|
|
5170
|
+
for col in cols:
|
|
5171
|
+
key = col.get("key") if isinstance(col, dict) else None
|
|
5172
|
+
if key and key in related_map:
|
|
5173
|
+
col["value"] = related_map.get(key)
|
|
5174
|
+
else:
|
|
5175
|
+
cols = col_data.get("attributes", []) if isinstance(col_data, dict) else []
|
|
5176
|
+
for col in cols:
|
|
5177
|
+
key = col.get("key") if isinstance(col, dict) else None
|
|
5178
|
+
if key and key in related_map:
|
|
5179
|
+
col["value"] = related_map.get(key)
|
|
5180
|
+
except Exception:
|
|
5181
|
+
pass
|
|
5182
|
+
|
|
5183
|
+
return col_data
|
|
5184
|
+
|
|
5185
|
+
def _extract_data_field_properties(self, element: dict, columns_struct: dict) -> dict:
|
|
5186
|
+
"""Extractor for Data Field elements.
|
|
5187
|
+
|
|
5188
|
+
Steps:
|
|
5189
|
+
- Populate base/referenceable/common properties into columns_struct via populate_common_columns.
|
|
5190
|
+
- Derive related properties using get_data_rel_elements_dict from the element body.
|
|
5191
|
+
- For each column in columns_struct, if its 'key' matches a key from the related dict, set its 'value'.
|
|
5192
|
+
- Return the enriched columns_struct.
|
|
5193
|
+
"""
|
|
5194
|
+
# 1) Populate common columns first (header, properties, basic relationships, mermaid)
|
|
5195
|
+
col_data = populate_common_columns(element, columns_struct)
|
|
5196
|
+
|
|
5197
|
+
# 2) Build a map of related properties/elements from the body. The Data Designer methods
|
|
5198
|
+
# return a body that may include keys like assignedMeanings, otherRelatedElements,
|
|
5199
|
+
# memberOfCollections, memberDataFields, assignedDataClasses, nestedDataClasses, etc.
|
|
5200
|
+
try:
|
|
5201
|
+
related_map = self.get_data_rel_elements_dict(element)
|
|
5202
|
+
except Exception:
|
|
5203
|
+
related_map = {}
|
|
5204
|
+
|
|
5205
|
+
if isinstance(related_map, dict) and related_map:
|
|
5206
|
+
# 3) Walk the configured columns and overlay values when the key matches an entry from related_map
|
|
5207
|
+
try:
|
|
5208
|
+
formats = col_data.get("formats") if isinstance(col_data, dict) else None
|
|
5209
|
+
if isinstance(formats, list):
|
|
5210
|
+
targets = formats
|
|
5211
|
+
elif isinstance(formats, dict):
|
|
5212
|
+
# Handle dict variant. It may be a single format dict or a wrapper containing 'formats'.
|
|
5213
|
+
# Examples seen:
|
|
5214
|
+
# { 'attributes': [...] }
|
|
5215
|
+
# { 'types': 'ALL', 'attributes': [...] }
|
|
5216
|
+
# { 'formats': { 'attributes': [...] } }
|
|
5217
|
+
inner = formats.get("formats") if isinstance(formats.get("formats"), dict | list) else None
|
|
5218
|
+
if isinstance(inner, list):
|
|
5219
|
+
targets = inner
|
|
5220
|
+
elif isinstance(inner, dict):
|
|
5221
|
+
targets = [inner]
|
|
5222
|
+
else:
|
|
5223
|
+
targets = [formats]
|
|
5224
|
+
else:
|
|
5225
|
+
targets = []
|
|
5226
|
+
|
|
5227
|
+
if targets:
|
|
5228
|
+
for fmt in targets:
|
|
5229
|
+
cols = fmt.get("attributes", []) if isinstance(fmt, dict) else []
|
|
5230
|
+
for col in cols:
|
|
5231
|
+
key = col.get("key") if isinstance(col, dict) else None
|
|
5232
|
+
if key and key in related_map:
|
|
5233
|
+
col["value"] = related_map.get(key)
|
|
5234
|
+
else:
|
|
5235
|
+
# If attributes are on the top-level (non-standard), attempt to handle gracefully
|
|
5236
|
+
cols = col_data.get("attributes", []) if isinstance(col_data, dict) else []
|
|
5237
|
+
for col in cols:
|
|
5238
|
+
key = col.get("key") if isinstance(col, dict) else None
|
|
5239
|
+
if key and key in related_map:
|
|
5240
|
+
col["value"] = related_map.get(key)
|
|
5241
|
+
except Exception:
|
|
5242
|
+
# Do not fail rendering due to overlay issues; keep the base columns
|
|
5243
|
+
pass
|
|
5244
|
+
|
|
5245
|
+
return col_data
|
|
5246
|
+
|
|
5247
|
+
def _generate_basic_structured_output(self, elements: dict, filter_string: str, type_name: str = None ,output_format: str = 'DICT',
|
|
4799
5248
|
columns_struct: dict = None) -> str | list:
|
|
4800
5249
|
"""
|
|
4801
5250
|
Generate output in the specified format for the given elements.
|
|
@@ -4837,9 +5286,9 @@ class DataDesigner(Client2):
|
|
|
4837
5286
|
columns_struct,
|
|
4838
5287
|
)
|
|
4839
5288
|
|
|
4840
|
-
def _generate_data_structure_output(self, elements: dict | list[dict],
|
|
5289
|
+
def _generate_data_structure_output(self, elements: dict | list[dict], filter_string: Optional[str] = None, type: Optional[str] = None,
|
|
4841
5290
|
output_format: str = "DICT",
|
|
4842
|
-
|
|
5291
|
+
report_spec: str | dict = None) -> str | list:
|
|
4843
5292
|
"""
|
|
4844
5293
|
Generate output for data structures in the specified format.
|
|
4845
5294
|
|
|
@@ -4852,14 +5301,14 @@ class DataDesigner(Client2):
|
|
|
4852
5301
|
Formatted output as string or list of dictionaries
|
|
4853
5302
|
"""
|
|
4854
5303
|
entity_type = "Data Structure"
|
|
4855
|
-
if
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
if
|
|
4859
|
-
if isinstance(
|
|
4860
|
-
output_formats =
|
|
4861
|
-
|
|
4862
|
-
output_formats =
|
|
5304
|
+
if report_spec is None:
|
|
5305
|
+
report_spec = select_report_spec(entity_type, output_format)
|
|
5306
|
+
|
|
5307
|
+
if report_spec:
|
|
5308
|
+
if isinstance(report_spec, str):
|
|
5309
|
+
output_formats = select_report_spec(report_spec, output_format)
|
|
5310
|
+
elif isinstance(report_spec, dict):
|
|
5311
|
+
output_formats = get_report_spec_match(report_spec, output_format)
|
|
4863
5312
|
else:
|
|
4864
5313
|
output_formats = None
|
|
4865
5314
|
logger.trace(f"Executing _generate_data_structure_output for {entity_type}: {output_formats}")
|
|
@@ -4872,8 +5321,8 @@ class DataDesigner(Client2):
|
|
|
4872
5321
|
output_formats,
|
|
4873
5322
|
)
|
|
4874
5323
|
|
|
4875
|
-
def _generate_data_class_output(self, elements: dict | list[dict],
|
|
4876
|
-
|
|
5324
|
+
def _generate_data_class_output(self, elements: dict | list[dict], filter_string: Optional[str] = None, type: Optional[str] = None, output_format: str = "DICT",
|
|
5325
|
+
report_spec: str | dict = None) -> str | list:
|
|
4877
5326
|
"""
|
|
4878
5327
|
Generate output for data classes in the specified format.
|
|
4879
5328
|
|
|
@@ -4881,20 +5330,20 @@ class DataDesigner(Client2):
|
|
|
4881
5330
|
elements: Dictionary or list of dictionaries containing data class elements
|
|
4882
5331
|
filter: The search string used to find the elements
|
|
4883
5332
|
output_format: The desired output format (MD, FORM, REPORT, LIST, DICT, MERMAID, HTML)
|
|
4884
|
-
|
|
5333
|
+
report_spec: Optional output format set
|
|
4885
5334
|
- Option column/attribute selection and definition.
|
|
4886
5335
|
Returns:
|
|
4887
5336
|
Formatted output as either a string or list of dictionaries
|
|
4888
5337
|
"""
|
|
4889
5338
|
entity_type = "Data Class"
|
|
4890
|
-
if
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
if
|
|
4894
|
-
if isinstance(
|
|
4895
|
-
output_formats =
|
|
4896
|
-
if isinstance(
|
|
4897
|
-
output_formats =
|
|
5339
|
+
if report_spec is None:
|
|
5340
|
+
report_spec = select_report_spec(entity_type, output_format)
|
|
5341
|
+
|
|
5342
|
+
if report_spec:
|
|
5343
|
+
if isinstance(report_spec, str):
|
|
5344
|
+
output_formats = select_report_spec(report_spec, output_format)
|
|
5345
|
+
if isinstance(report_spec, dict):
|
|
5346
|
+
output_formats = get_report_spec_match(report_spec, output_format)
|
|
4898
5347
|
else:
|
|
4899
5348
|
output_formats = None
|
|
4900
5349
|
logger.trace(f"Executing _generate_data_class_output for {entity_type}: {output_formats}")
|
|
@@ -4907,8 +5356,8 @@ class DataDesigner(Client2):
|
|
|
4907
5356
|
output_formats,
|
|
4908
5357
|
)
|
|
4909
5358
|
|
|
4910
|
-
def _generate_data_field_output(self, elements: dict | list[dict],
|
|
4911
|
-
|
|
5359
|
+
def _generate_data_field_output(self, elements: dict | list[dict], filter_string: Optional[str] = None, type: Optional[str] = None, output_format: str = "DICT",
|
|
5360
|
+
report_spec: str | dict = None) -> str | list:
|
|
4912
5361
|
"""
|
|
4913
5362
|
Generate output for data fields in the specified format.
|
|
4914
5363
|
|
|
@@ -4916,21 +5365,21 @@ class DataDesigner(Client2):
|
|
|
4916
5365
|
elements: Dictionary or list of dictionaries containing data field elements
|
|
4917
5366
|
filter: The search string used to find the elements
|
|
4918
5367
|
output_format: The desired output format (MD, FORM, REPORT, LIST, DICT, MERMAID, HTML)
|
|
4919
|
-
|
|
5368
|
+
report_spec: str|dict, Optional, default = None
|
|
4920
5369
|
- Option column/attribute selection and definition.
|
|
4921
5370
|
|
|
4922
5371
|
Returns:
|
|
4923
5372
|
Formatted output as a string or list of dictionaries
|
|
4924
5373
|
"""
|
|
4925
|
-
entity_type = "Data
|
|
4926
|
-
if
|
|
4927
|
-
|
|
5374
|
+
entity_type = "Data-Fields"
|
|
5375
|
+
if report_spec is None:
|
|
5376
|
+
report_spec = select_report_spec(entity_type, output_format)
|
|
4928
5377
|
|
|
4929
|
-
if
|
|
4930
|
-
if isinstance(
|
|
4931
|
-
output_formats =
|
|
4932
|
-
if isinstance(
|
|
4933
|
-
output_formats =
|
|
5378
|
+
if report_spec:
|
|
5379
|
+
if isinstance(report_spec, str):
|
|
5380
|
+
output_formats = select_report_spec(report_spec, output_format)
|
|
5381
|
+
if isinstance(report_spec, dict):
|
|
5382
|
+
output_formats = get_report_spec_match(report_spec, output_format)
|
|
4934
5383
|
else:
|
|
4935
5384
|
output_formats = None
|
|
4936
5385
|
logger.trace(f"Executing _generate_data_field_output for {entity_type}: {output_formats}")
|
|
@@ -4943,6 +5392,12 @@ class DataDesigner(Client2):
|
|
|
4943
5392
|
output_formats,
|
|
4944
5393
|
)
|
|
4945
5394
|
|
|
5395
|
+
def _extract_additional_data_struct_properties(self, element, columns_struct):
|
|
5396
|
+
return None
|
|
5397
|
+
def _extract_additional_data_field_properties(self, element, columns_struct):
|
|
5398
|
+
return None
|
|
5399
|
+
def _extract_additional_data_class_properties(self, element, columns_struct):
|
|
5400
|
+
return None
|
|
4946
5401
|
|
|
4947
5402
|
if __name__ == "__main__":
|
|
4948
5403
|
print("Data Designer")
|