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
commands/cat/get_asset_graph.py
CHANGED
|
@@ -3,293 +3,60 @@
|
|
|
3
3
|
SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
Copyright Contributors to the ODPi Egeria project.
|
|
5
5
|
|
|
6
|
-
Display
|
|
6
|
+
Display Asset Graph Information using generic functions.
|
|
7
7
|
"""
|
|
8
|
+
from __future__ import annotations
|
|
8
9
|
import argparse
|
|
9
10
|
import os
|
|
10
|
-
import sys
|
|
11
11
|
|
|
12
|
-
from rich import print
|
|
13
12
|
from rich.console import Console
|
|
14
|
-
from rich.markdown import Markdown
|
|
15
|
-
from rich.panel import Panel
|
|
16
13
|
from rich.prompt import Prompt
|
|
17
|
-
from rich.tree import Tree
|
|
18
14
|
|
|
15
|
+
from commands.cat.run_report import list_generic
|
|
16
|
+
from pyegeria.core.config import settings
|
|
19
17
|
from pyegeria import (
|
|
20
|
-
|
|
21
|
-
InvalidParameterException,
|
|
22
|
-
PropertyServerException,
|
|
23
|
-
UserNotAuthorizedException,
|
|
18
|
+
PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table, PyegeriaException
|
|
24
19
|
)
|
|
25
20
|
|
|
26
|
-
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
|
27
|
-
EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
|
|
28
|
-
EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
|
|
29
|
-
EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
|
|
30
|
-
EGERIA_VIEW_SERVER_URL = os.environ.get(
|
|
31
|
-
"EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
|
|
32
|
-
)
|
|
33
|
-
EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
|
|
34
|
-
EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
|
|
35
|
-
"EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
|
|
36
|
-
)
|
|
37
|
-
EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
|
|
38
|
-
EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
|
|
39
21
|
EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
|
40
22
|
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
|
41
|
-
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
|
42
|
-
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
|
|
43
23
|
|
|
44
|
-
|
|
24
|
+
|
|
25
|
+
app_config = settings.Environment
|
|
45
26
|
|
|
46
27
|
guid_list = []
|
|
47
28
|
|
|
48
|
-
console = Console(width=
|
|
29
|
+
console = Console(width=app_config.console_width, force_terminal=(not app_config.egeria_jupyter))
|
|
49
30
|
|
|
50
31
|
|
|
51
32
|
def asset_viewer(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
33
|
+
output_format: str = "TABLE",
|
|
34
|
+
asset_guid: str = None,
|
|
35
|
+
view_server: str = app_config.egeria_view_server,
|
|
36
|
+
view_url: str = app_config.egeria_view_server_url,
|
|
37
|
+
user: str = EGERIA_USER,
|
|
38
|
+
user_pass: str = EGERIA_USER_PASSWORD,
|
|
39
|
+
jupyter: bool = app_config.egeria_jupyter,
|
|
40
|
+
width: int = app_config.console_width,
|
|
41
|
+
prompt_missing: bool = False,
|
|
42
|
+
write_file: bool = False,
|
|
43
|
+
render_table: bool = False,
|
|
44
|
+
table_caption: str | None = None,
|
|
45
|
+
use_pager: bool = True,
|
|
59
46
|
):
|
|
60
|
-
def build_classifications(classification: dict) -> Markdown:
|
|
61
|
-
class_md = ""
|
|
62
|
-
for c in classification:
|
|
63
|
-
c_type = c["classificationName"]
|
|
64
|
-
if c_type == "Anchors":
|
|
65
|
-
continue
|
|
66
|
-
class_md += f"\n* Classification: {c_type}\n"
|
|
67
|
-
class_props = c.get("classificationProperties", "---")
|
|
68
|
-
if type(class_props) is dict:
|
|
69
|
-
for prop in class_props.keys():
|
|
70
|
-
class_md += f"\t* {prop}: {class_props[prop]}\n"
|
|
71
|
-
if class_md == "":
|
|
72
|
-
output = None
|
|
73
|
-
else:
|
|
74
|
-
output = class_md
|
|
75
|
-
return output
|
|
76
|
-
|
|
77
|
-
def build_nested_elements(nested_element: dict) -> Markdown:
|
|
78
|
-
ne_md = " "
|
|
79
|
-
ne_header = nested_element["elementHeader"]
|
|
80
|
-
ne_created_by = ne_header["versions"]["createdBy"]
|
|
81
|
-
ne_created_at = ne_header["versions"]["createTime"]
|
|
82
|
-
ne_guid = ne_header["guid"]
|
|
83
|
-
guid_list.append(ne_guid)
|
|
84
|
-
|
|
85
|
-
ne_type = ne_header["type"]["typeName"]
|
|
86
|
-
ne_classifications = ne_header["classifications"]
|
|
87
|
-
ne_class_md = build_classifications(ne_classifications)
|
|
88
|
-
# ne_class_md = " " if ne_class_md is None else ne_class_md
|
|
89
|
-
ne_props = nested_element.get("properties", "---")
|
|
90
|
-
ne_prop_md = "\n"
|
|
91
|
-
if type(ne_props) is dict:
|
|
92
|
-
for prop in ne_props.keys():
|
|
93
|
-
ne_prop_md += f"\t* {prop}: {ne_props[prop]}\n"
|
|
94
|
-
ne_md = (
|
|
95
|
-
f"Nested Element of Type: {ne_type} with GUID: {ne_guid} \n "
|
|
96
|
-
f"* created by {ne_created_by} at time {ne_created_at}\n"
|
|
97
|
-
f"\n* Properties:\n{ne_prop_md}\n"
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
if ne_class_md is not None:
|
|
101
|
-
ne_md += f"* {ne_class_md}"
|
|
102
|
-
|
|
103
|
-
output = Markdown(ne_md)
|
|
104
|
-
return output
|
|
105
|
-
|
|
106
47
|
try:
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
# if type(asset_info) is str:
|
|
112
|
-
# print("\n No Assets Found - Exiting\n")
|
|
113
|
-
# sys.exit(1)
|
|
114
|
-
#
|
|
115
|
-
# asset_guid = asset_info[0]['guid']
|
|
116
|
-
|
|
117
|
-
guid_list.append(asset_guid)
|
|
118
|
-
|
|
119
|
-
asset_graph = a_client.get_asset_graph(asset_guid)
|
|
120
|
-
if type(asset_graph) is not dict:
|
|
121
|
-
print(f"\n No Asset found for {asset_guid}")
|
|
122
|
-
sys.exit(1)
|
|
123
|
-
|
|
124
|
-
# print(f"\n{json.dumps(asset_graph, indent =2)}\n")
|
|
125
|
-
|
|
126
|
-
asset_display_name = asset_graph["properties"].get("displayName", "---")
|
|
127
|
-
asset_display_description = asset_graph["properties"].get(
|
|
128
|
-
"displayDescription", "---"
|
|
129
|
-
)
|
|
130
|
-
asset_name = asset_graph["properties"].get("name", "---")
|
|
131
|
-
asset_resource_name = asset_graph["properties"].get("resourceName", "---")
|
|
132
|
-
asset_resource_description = asset_graph["properties"].get(
|
|
133
|
-
"resourceDescription", "---"
|
|
134
|
-
)
|
|
135
|
-
qualified_name = asset_graph["properties"].get("qualifiedName", "---")
|
|
136
|
-
|
|
137
|
-
tree = Tree(
|
|
138
|
-
f"{asset_name} ({asset_guid})",
|
|
139
|
-
style="bold bright_white on black",
|
|
140
|
-
guide_style="bold bright_blue",
|
|
141
|
-
)
|
|
142
|
-
style = ""
|
|
143
|
-
asset_elements = asset_graph["elementHeader"]
|
|
144
|
-
asset_type = asset_elements["type"]["typeName"]
|
|
145
|
-
asset_deployed_imp_type = asset_graph["properties"].get(
|
|
146
|
-
"deployedImplementationType", "---"
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
asset_origin = asset_elements["origin"]["homeMetadataCollectionName"]
|
|
150
|
-
asset_creation = asset_elements["versions"]["createTime"]
|
|
151
|
-
asset_created_by = asset_elements["versions"]["createdBy"]
|
|
152
|
-
asset_classifications = asset_elements["classifications"]
|
|
153
|
-
asset_nested_elements = asset_graph.get("anchoredElements", "----")
|
|
154
|
-
asset_relationships = asset_graph["relationships"]
|
|
155
|
-
asset_class_md = build_classifications(asset_classifications)
|
|
48
|
+
list_generic(report_spec="Asset-Graph", output_format=output_format, view_server=view_server,
|
|
49
|
+
view_url=view_url, user=user, user_pass=user_pass, params={"asset_guid": asset_guid},
|
|
50
|
+
render_table=render_table, write_file = write_file, table_caption=table_caption, use_pager=use_pager,
|
|
51
|
+
width=width, jupyter=jupyter, prompt_missing=prompt_missing)
|
|
156
52
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
add_prop_md = "\n* Additional Properties:\n"
|
|
162
|
-
for prop in additional_properties:
|
|
163
|
-
add_prop_md = (
|
|
164
|
-
f"{add_prop_md}\n\t* {prop}: {additional_properties[prop]}\n"
|
|
165
|
-
)
|
|
166
|
-
else:
|
|
167
|
-
add_prop_md = ""
|
|
53
|
+
except PyegeriaAPIException as e:
|
|
54
|
+
if e.response_egeria_msg_id == "OMAG-REPOSITORY-HANDLER-404-001":
|
|
55
|
+
print(e.response_egeria_msg)
|
|
56
|
+
return
|
|
168
57
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
prop_md = "\n* Extended Properties:\n"
|
|
172
|
-
for prop in extended_properties:
|
|
173
|
-
prop_md = f"{prop_md}\n\t* {prop}: {extended_properties[prop]}\n"
|
|
174
|
-
else:
|
|
175
|
-
prop_md = ""
|
|
176
|
-
core_md = (
|
|
177
|
-
f"**Type: {asset_type} Created by: {asset_created_by} on {asset_creation}**\n"
|
|
178
|
-
f"* Deployed Implementation Type: {asset_deployed_imp_type}\n"
|
|
179
|
-
f"* Name: {asset_name}\n "
|
|
180
|
-
f"* Asset Resource Name: {asset_resource_name}\n"
|
|
181
|
-
f"* Asset Resource Description: {asset_resource_description}\n "
|
|
182
|
-
f"* Asset Display Name: {asset_display_name}\n"
|
|
183
|
-
f"* Asset Display Description: {asset_display_description}\n "
|
|
184
|
-
f"* Qualified Name: {qualified_name}\n "
|
|
185
|
-
f"* Asset Origin: {asset_origin}\n"
|
|
186
|
-
f" {prop_md}\n"
|
|
187
|
-
f" {add_prop_md}\n"
|
|
188
|
-
)
|
|
189
|
-
core_md = Markdown(core_md)
|
|
190
|
-
|
|
191
|
-
p1 = Panel.fit(core_md, style="bold bright_white")
|
|
192
|
-
l2 = tree.add(p1)
|
|
193
|
-
if asset_class_md is not None:
|
|
194
|
-
p2 = Panel.fit(
|
|
195
|
-
Markdown(asset_class_md),
|
|
196
|
-
style="bold bright_white",
|
|
197
|
-
title="Classifications",
|
|
198
|
-
)
|
|
199
|
-
l2 = tree.add(p2)
|
|
200
|
-
|
|
201
|
-
#
|
|
202
|
-
# Nested Assets
|
|
203
|
-
#
|
|
204
|
-
if type(asset_nested_elements) is list:
|
|
205
|
-
l2 = tree.add("Nested Elements", style="bold white")
|
|
206
|
-
for el in asset_nested_elements:
|
|
207
|
-
asset_ne_md = build_nested_elements(el)
|
|
208
|
-
p3 = Panel.fit(
|
|
209
|
-
asset_ne_md, style="bold bright_white", title="Nested Elements"
|
|
210
|
-
)
|
|
211
|
-
l2.add(p3)
|
|
212
|
-
|
|
213
|
-
#
|
|
214
|
-
# Now work on the Relationships
|
|
215
|
-
#
|
|
216
|
-
for relationship in asset_relationships:
|
|
217
|
-
# Find the end guids - if one isn't in our list then display
|
|
218
|
-
rel_end1 = relationship["end1"]
|
|
219
|
-
rel_end1_type = rel_end1["type"]["typeName"]
|
|
220
|
-
rel_end1_guid = rel_end1["guid"]
|
|
221
|
-
rel_end1_unique_name = rel_end1.get("uniqueName", "---")
|
|
222
|
-
|
|
223
|
-
rel_end2 = relationship["end2"]
|
|
224
|
-
rel_end2_type = rel_end2["type"]["typeName"]
|
|
225
|
-
rel_end2_guid = rel_end2["guid"]
|
|
226
|
-
rel_end2_unique_name = rel_end2.get("uniqueName", "---")
|
|
227
|
-
|
|
228
|
-
if (rel_end1_guid not in guid_list) or (rel_end2_guid not in guid_list):
|
|
229
|
-
# rel_end1_class_md = build_classifications(rel_end1["classifications"])
|
|
230
|
-
# rel_end2_class_md = build_classifications(rel_end2["classifications"])
|
|
231
|
-
|
|
232
|
-
relationship_guid = relationship["guid"]
|
|
233
|
-
relationship_type = relationship["type"]["typeName"]
|
|
234
|
-
relationship_created_by = relationship["versions"]["createdBy"]
|
|
235
|
-
relationship_creation_time = relationship["versions"]["createTime"]
|
|
236
|
-
relationship_properties = relationship.get("properties", "--- ")
|
|
237
|
-
relationship_md = (
|
|
238
|
-
f"Relationship Type {relationship_type}\n"
|
|
239
|
-
f"* GUID: {relationship_guid}\n* Created by: {relationship_created_by} \n"
|
|
240
|
-
f"* Creation Time: {relationship_creation_time}\n"
|
|
241
|
-
f"* Properties: {relationship_properties}\n"
|
|
242
|
-
)
|
|
243
|
-
|
|
244
|
-
rel_md = (
|
|
245
|
-
f"* Relationship Type: {relationship_type}\n"
|
|
246
|
-
f"* Relationship GUID: {relationship_guid}\n"
|
|
247
|
-
f"* Created by: {relationship_created_by} at time {relationship_creation_time}\n"
|
|
248
|
-
)
|
|
249
|
-
rel_end1_md = (
|
|
250
|
-
f"* End1:\n"
|
|
251
|
-
f"\t* Type: {rel_end1_type}\n"
|
|
252
|
-
f"\t* GUID: {rel_end1_guid}\n"
|
|
253
|
-
f"\t* Unique Name: {rel_end1_unique_name}\n"
|
|
254
|
-
)
|
|
255
|
-
|
|
256
|
-
# if rel_end1_class_md is not None:
|
|
257
|
-
# rel_end1_md = rel_end1_class_md + rel_end1_md
|
|
258
|
-
|
|
259
|
-
rel_end2_md = (
|
|
260
|
-
f"* End2:\n"
|
|
261
|
-
f"\t* Type: {rel_end2_type}\n"
|
|
262
|
-
f"\t* GUID: {rel_end2_guid}\n"
|
|
263
|
-
f"\t* Unique Name: {rel_end2_unique_name}\n"
|
|
264
|
-
)
|
|
265
|
-
|
|
266
|
-
# if rel_end2_class_md is not None:
|
|
267
|
-
# rel_end1_md = rel_end2_class_md + rel_end1_md
|
|
268
|
-
#
|
|
269
|
-
# for prop in relationship_properties.keys():
|
|
270
|
-
# relationship_md += f"* {prop}: {relationship_properties[prop]}\n"
|
|
271
|
-
|
|
272
|
-
relationship_md += rel_end1_md + rel_end2_md
|
|
273
|
-
|
|
274
|
-
relationship_panel = Panel.fit(
|
|
275
|
-
Markdown(relationship_md),
|
|
276
|
-
style="bold bright_white",
|
|
277
|
-
title="Asset Relationships",
|
|
278
|
-
)
|
|
279
|
-
tree.add(relationship_panel)
|
|
280
|
-
with console.screen():
|
|
281
|
-
print("\n\n")
|
|
282
|
-
print(tree)
|
|
283
|
-
|
|
284
|
-
except (
|
|
285
|
-
InvalidParameterException,
|
|
286
|
-
PropertyServerException,
|
|
287
|
-
UserNotAuthorizedException,
|
|
288
|
-
) as e:
|
|
289
|
-
console.print_exception()
|
|
290
|
-
console.print(
|
|
291
|
-
"\n\n ======> Most likely the GUID you provided is either incorrect or not an asset\n[red bold]"
|
|
292
|
-
)
|
|
58
|
+
except (PyegeriaException, PyegeriaClientException) as e:
|
|
59
|
+
print_basic_exception(e)
|
|
293
60
|
|
|
294
61
|
|
|
295
62
|
def main():
|
|
@@ -301,13 +68,16 @@ def main():
|
|
|
301
68
|
parser.add_argument("--password", help="User Password")
|
|
302
69
|
args = parser.parse_args()
|
|
303
70
|
|
|
304
|
-
server = args.server if args.server is not None else
|
|
305
|
-
url = args.url if args.url is not None else
|
|
71
|
+
server = args.server if args.server is not None else app_config.egeria_view_server
|
|
72
|
+
url = args.url if args.url is not None else app_config.egeria_view_server_url
|
|
306
73
|
userid = args.userid if args.userid is not None else EGERIA_USER
|
|
307
74
|
user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
|
|
308
75
|
try:
|
|
309
76
|
asset_guid = Prompt.ask("Enter the Asset GUID to view:", default="")
|
|
310
|
-
|
|
77
|
+
output_format = Prompt.ask("Enter the output format:", default="TABLE")
|
|
78
|
+
asset_viewer(output_format, asset_guid, server, url, userid,
|
|
79
|
+
user_pass, prompt_missing=True, write_file=True, render_table=True,
|
|
80
|
+
table_caption="Asset Graph")
|
|
311
81
|
except KeyboardInterrupt as e:
|
|
312
82
|
# console.print_exception()
|
|
313
83
|
pass
|
|
@@ -18,11 +18,9 @@ from rich.tree import Tree
|
|
|
18
18
|
|
|
19
19
|
from pyegeria import (
|
|
20
20
|
CollectionManager,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
)
|
|
25
|
-
from pyegeria._exceptions import print_exception_response
|
|
21
|
+
NO_ELEMENTS_FOUND,
|
|
22
|
+
PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table
|
|
23
|
+
)
|
|
26
24
|
|
|
27
25
|
disable_ssl_warnings = True
|
|
28
26
|
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
|
@@ -74,9 +72,9 @@ def collection_viewer(
|
|
|
74
72
|
)
|
|
75
73
|
text_guid = Text(f"* GUID: {member['guid']}", "green")
|
|
76
74
|
text_collection_type = Text(
|
|
77
|
-
f"* Collection Type: {member
|
|
75
|
+
f"* Collection Type: {member.get('typeName','')}"
|
|
78
76
|
)
|
|
79
|
-
text_description = Text(f"* Description: {member
|
|
77
|
+
text_description = Text(f"* Description: {member.get('description','')}")
|
|
80
78
|
p = Panel.fit(
|
|
81
79
|
f"{text_collection_name}[green]\n{text_qualified_name}\n{text_guid}\n"
|
|
82
80
|
f"{text_collection_type}\n{text_description}"
|
|
@@ -94,9 +92,7 @@ def collection_viewer(
|
|
|
94
92
|
)
|
|
95
93
|
walk_collection_hierarchy(branch, collection_client, member["guid"])
|
|
96
94
|
else:
|
|
97
|
-
tt = tree.add(
|
|
98
|
-
f"[bold magenta on black]No collections found in {root_collection_name}"
|
|
99
|
-
)
|
|
95
|
+
tt = tree.add("[bold magenta on black]No Members found")
|
|
100
96
|
|
|
101
97
|
try:
|
|
102
98
|
tree = Tree(f"[bold bright green]{root}", guide_style="bold bright_blue")
|
|
@@ -106,15 +102,11 @@ def collection_viewer(
|
|
|
106
102
|
walk_collection_hierarchy(tree, c_client, None, root)
|
|
107
103
|
print(tree)
|
|
108
104
|
|
|
109
|
-
except (
|
|
110
|
-
|
|
111
|
-
PropertyServerException,
|
|
112
|
-
UserNotAuthorizedException,
|
|
113
|
-
) as e:
|
|
114
|
-
if e.exception_error_message_parameters[1] == NO_ELEMENTS_FOUND:
|
|
105
|
+
except (PyegeriaAPIException, PyegeriaClientException) as e:
|
|
106
|
+
if hasattr(e, 'exception_error_message_parameters') and len(e.exception_error_message_parameters) > 1 and e.exception_error_message_parameters[1] == NO_ELEMENTS_FOUND:
|
|
115
107
|
print("The collection was not found.")
|
|
116
108
|
else:
|
|
117
|
-
|
|
109
|
+
print_basic_exception(e)
|
|
118
110
|
finally:
|
|
119
111
|
c_client.close_session()
|
|
120
112
|
|
|
@@ -136,7 +128,7 @@ def main():
|
|
|
136
128
|
try:
|
|
137
129
|
root_collection = Prompt.ask(
|
|
138
130
|
"Enter the Root Collection to start from:",
|
|
139
|
-
default="
|
|
131
|
+
default="GeoSpatial-Root",
|
|
140
132
|
)
|
|
141
133
|
collection_viewer(root_collection, server, url, userid, user_pass)
|
|
142
134
|
except KeyboardInterrupt:
|
|
@@ -10,6 +10,7 @@ A simple viewer for project dependencies - provide the root and we display the d
|
|
|
10
10
|
import argparse
|
|
11
11
|
import os
|
|
12
12
|
|
|
13
|
+
from pydantic import ValidationError
|
|
13
14
|
from rich import print
|
|
14
15
|
from rich.console import Console
|
|
15
16
|
from rich.markdown import Markdown
|
|
@@ -18,12 +19,11 @@ from rich.prompt import Prompt
|
|
|
18
19
|
from rich.tree import Tree
|
|
19
20
|
|
|
20
21
|
from pyegeria import (
|
|
21
|
-
InvalidParameterException,
|
|
22
22
|
ProjectManager,
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
PyegeriaAPIException, PyegeriaClientException,
|
|
24
|
+
print_basic_exception,
|
|
25
|
+
print_validation_error,
|
|
25
26
|
)
|
|
26
|
-
from pyegeria._exceptions import print_exception_response
|
|
27
27
|
|
|
28
28
|
disable_ssl_warnings = True
|
|
29
29
|
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
|
@@ -72,7 +72,7 @@ def project_dependency_viewer(
|
|
|
72
72
|
proj_type = proj_props.get("typeName", "---")
|
|
73
73
|
proj_unique = proj_props.get("qualifiedName", "---")
|
|
74
74
|
proj_identifier = proj_props.get("identifier", "---")
|
|
75
|
-
proj_name = proj_props.get("
|
|
75
|
+
proj_name = proj_props.get("displayName", "---")
|
|
76
76
|
proj_desc = proj_props.get("description", "---")
|
|
77
77
|
proj_status = proj_props.get("projectStatus", "---")
|
|
78
78
|
proj_priority = proj_props.get("priority", "---")
|
|
@@ -90,12 +90,12 @@ def project_dependency_viewer(
|
|
|
90
90
|
else:
|
|
91
91
|
return
|
|
92
92
|
|
|
93
|
-
team = project_client.get_project_team(proj_guid)
|
|
93
|
+
team = project_client.get_project_team(proj_guid,"")
|
|
94
94
|
member_md = ""
|
|
95
95
|
if type(team) is list:
|
|
96
96
|
for member in team:
|
|
97
|
-
member_guid = member["
|
|
98
|
-
member_unique = member["
|
|
97
|
+
member_guid = member["elementHeader"]["guid"]
|
|
98
|
+
member_unique = member["properties"]["qualifiedName"]
|
|
99
99
|
member_md += f"* Member Unique Name: {member_unique}\n* Member GUID: {member_guid}"
|
|
100
100
|
proj_props_md += f"\n### Team Members\n {member_md}"
|
|
101
101
|
|
|
@@ -131,12 +131,12 @@ def project_dependency_viewer(
|
|
|
131
131
|
walk_project_hierarchy(p_client, root, tree, root=True)
|
|
132
132
|
print(tree)
|
|
133
133
|
|
|
134
|
-
except (
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
except (PyegeriaAPIException, PyegeriaClientException) as e:
|
|
135
|
+
print_basic_exception(e)
|
|
136
|
+
except ValidationError as e:
|
|
137
|
+
print_validation_error(e)
|
|
138
|
+
except Exception as e:
|
|
139
|
+
print_basic_exception(e)
|
|
140
140
|
|
|
141
141
|
|
|
142
142
|
def main():
|
|
@@ -10,6 +10,7 @@ A simple viewer for project structure - provide the root and we display the hier
|
|
|
10
10
|
import argparse
|
|
11
11
|
import os
|
|
12
12
|
|
|
13
|
+
from pydantic import ValidationError
|
|
13
14
|
from rich import print
|
|
14
15
|
from rich.console import Console
|
|
15
16
|
from rich.markdown import Markdown
|
|
@@ -18,12 +19,9 @@ from rich.prompt import Prompt
|
|
|
18
19
|
from rich.tree import Tree
|
|
19
20
|
|
|
20
21
|
from pyegeria import (
|
|
21
|
-
InvalidParameterException,
|
|
22
22
|
ProjectManager,
|
|
23
|
-
|
|
24
|
-
UserNotAuthorizedException,
|
|
23
|
+
PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table, print_validation_error
|
|
25
24
|
)
|
|
26
|
-
from pyegeria._exceptions import print_exception_response
|
|
27
25
|
|
|
28
26
|
disable_ssl_warnings = True
|
|
29
27
|
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
|
@@ -72,7 +70,7 @@ def project_structure_viewer(
|
|
|
72
70
|
proj_type = proj_props.get("typeName", "---")
|
|
73
71
|
proj_unique = proj_props.get("qualifiedName", "---")
|
|
74
72
|
proj_identifier = proj_props.get("identifier", "---")
|
|
75
|
-
proj_name = proj_props.get("
|
|
73
|
+
proj_name = proj_props.get("displayName", "---")
|
|
76
74
|
proj_desc = proj_props.get("description", "---")
|
|
77
75
|
proj_status = proj_props.get("projectStatus", "---")
|
|
78
76
|
proj_priority = proj_props.get("priority", "---")
|
|
@@ -90,12 +88,12 @@ def project_structure_viewer(
|
|
|
90
88
|
else:
|
|
91
89
|
return
|
|
92
90
|
|
|
93
|
-
team = project_client.get_project_team(proj_guid)
|
|
91
|
+
team = project_client.get_project_team(proj_guid,"")
|
|
94
92
|
member_md = ""
|
|
95
93
|
if type(team) is list:
|
|
96
94
|
for member in team:
|
|
97
|
-
member_guid = member["
|
|
98
|
-
member_unique = member["
|
|
95
|
+
member_guid = member["elementHeader"]["guid"]
|
|
96
|
+
member_unique = member["properties"]["qualifiedName"]
|
|
99
97
|
member_md += f"* Member Unique Name: {member_unique}\n* Member GUID: {member_guid}"
|
|
100
98
|
proj_props_md += f"\n### Team Members\n {member_md}"
|
|
101
99
|
|
|
@@ -131,12 +129,15 @@ def project_structure_viewer(
|
|
|
131
129
|
walk_project_hierarchy(p_client, root, tree, root=True)
|
|
132
130
|
print(tree)
|
|
133
131
|
|
|
134
|
-
except (
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
132
|
+
except (PyegeriaAPIException, PyegeriaClientException) as e:
|
|
133
|
+
print_basic_exception(e)
|
|
134
|
+
|
|
135
|
+
except ValidationError as e:
|
|
136
|
+
print_validation_error(e)
|
|
137
|
+
|
|
138
|
+
except Exception as e:
|
|
139
|
+
console.print_exception()
|
|
140
|
+
|
|
140
141
|
|
|
141
142
|
|
|
142
143
|
def main():
|