pyegeria 5.4.5__py3-none-any.whl → 5.4.7__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.
- commands/cat/dr_egeria_command_help.py +0 -0
- commands/cat/exp_list_glossaries.py +0 -0
- commands/cat/get_collection.py +0 -0
- commands/cat/get_project_dependencies.py +0 -0
- commands/cat/get_project_structure.py +0 -0
- commands/cat/list_assets.py +0 -0
- commands/cat/list_cert_types.py +0 -0
- commands/cat/list_collections.py +0 -0
- commands/cat/list_data_designer.py +0 -0
- commands/cat/list_data_structures_full.py +0 -0
- commands/cat/list_deployed_servers.py +0 -0
- commands/cat/list_glossaries.py +0 -0
- commands/cat/list_projects.py +0 -0
- commands/cat/list_tech_types.py +0 -0
- commands/cat/list_terms.py +0 -0
- commands/cat/list_todos.py +0 -0
- commands/cli/egeria.py +0 -0
- commands/my/list_my_profile.py +0 -0
- commands/my/list_my_roles.py +0 -0
- commands/my/monitor_my_todos.py +0 -0
- commands/my/monitor_open_todos.py +0 -0
- commands/ops/list_archives.py +0 -0
- commands/ops/list_catalog_targets.py +0 -0
- commands/ops/monitor_asset_events.py +0 -0
- commands/ops/monitor_engine_activity.py +0 -0
- commands/ops/monitor_engine_activity_c.py +0 -0
- commands/ops/monitor_gov_eng_status.py +0 -0
- commands/ops/monitor_integ_daemon_status.py +0 -0
- commands/ops/monitor_platform_status.py +0 -0
- commands/ops/monitor_server_startup.py +0 -0
- commands/ops/monitor_server_status.py +0 -0
- commands/ops/orig_monitor_server_list.py +0 -0
- commands/ops/orig_monitor_server_status.py +0 -0
- commands/ops/table_integ_daemon_status.py +0 -0
- commands/tech/get_guid_info.py +0 -0
- commands/tech/get_tech_details.py +0 -0
- commands/tech/list_anchored_elements.py +0 -0
- commands/tech/list_asset_types.py +0 -0
- commands/tech/list_gov_action_processes.py +0 -0
- commands/tech/list_information_supply_chains.py +0 -0
- commands/tech/list_registered_services.py +0 -0
- commands/tech/list_relationship_types.py +0 -0
- commands/tech/list_relationships.py +0 -0
- commands/tech/list_solution_blueprints.py +0 -0
- commands/tech/list_solution_components.py +0 -0
- commands/tech/list_solution_roles.py +0 -0
- commands/tech/list_valid_metadata_values.py +0 -0
- md_processing/__init__.py +2 -0
- md_processing/dr_egeria.py +5 -2
- md_processing/md_commands/data_designer_commands.py +6 -1
- md_processing/md_commands/product_manager_commands.py +101 -1
- md_processing/md_processing_utils/md_processing_constants.py +2 -1
- pyegeria/__init__.py +1 -0
- pyegeria/_client_new.py +1 -1
- pyegeria/_output_formats.py +43 -7
- pyegeria/automated_curation.py +122 -15
- pyegeria/data_designer.py +3 -3
- pyegeria/format_set_executor.py +159 -0
- pyegeria/mcp_adapter.py +110 -0
- pyegeria/mcp_server.py +172 -0
- pyegeria/project_manager.py +1 -1
- pyegeria/reference_data.py +1 -1
- pyegeria/x_action_author_omvs.py +1 -1
- {pyegeria-5.4.5.dist-info → pyegeria-5.4.7.dist-info}/METADATA +26 -29
- pyegeria-5.4.7.dist-info/RECORD +174 -0
- {pyegeria-5.4.5.dist-info → pyegeria-5.4.7.dist-info}/WHEEL +2 -1
- pyegeria-5.4.7.dist-info/entry_points.txt +105 -0
- pyegeria-5.4.7.dist-info/top_level.txt +3 -0
- commands/README.md +0 -47
- commands/cat/README.md +0 -16
- commands/cat/debug_log.2025-09-14_11-03-29_316193.log.zip +0 -0
- commands/cat/debug_log.2025-09-15_19-06-37_086464.log.zip +0 -0
- commands/cat/debug_log.2025-09-20_11-10-54_418109.log.zip +0 -0
- commands/cat/debug_log.2025-09-21_11-59-27_391328.log.zip +0 -0
- commands/cli/debug_log +0 -0
- commands/cli/txt_custom_v2.tcss +0 -19
- commands/doc/README.md +0 -145
- commands/doc/Visual Command Reference/README.md +0 -511
- commands/doc/Visual Command Reference/cat/show/assets/asset-graph 2024-11-20 at 15.56.42.png +0 -0
- commands/doc/Visual Command Reference/cat/show/assets/assets-in-domain 2024-11-20 at 15.49.55@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/assets/elements-of-type 2024-11-20 at 16.01.35.png +0 -0
- commands/doc/Visual Command Reference/cat/show/assets/tech-type-elements 2024-11-20 at 16.05.05.png +0 -0
- commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs 2024-12-17 at 15.43.27@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs-2024-11-20 at 16.17.43@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-11-25 at 20.14.50@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-12-17 at 15.48.38@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-11-25 at 20.21.25@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-12-17 at 15.52.16@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/deployed-data/deployed_databases 2024-12-16 at 16.40.31@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/glossary/list-glossaries 2024-11-25 at 20.30.02.png +0 -0
- commands/doc/Visual Command Reference/cat/show/glossary/list-terms 2024-11-25 at 20.32.11.png +0 -0
- commands/doc/Visual Command Reference/cat/show/info/asset-types 2024-11-25 at 20.34.19@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/info/certification-types 2024-11-25 at 20.37.07.png +0 -0
- commands/doc/Visual Command Reference/cat/show/info/collection-graph 2024-12-12 at 11.33.18@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/info/list-collections 2024-12-10 at 14.25.51@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/info/list-todos 2024-12-12 at 11.46.30@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/info/list-user-ids 2024-12-12 at 11.51.09@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/info/tech-types 2024-12-12 at 11.37.20@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/projects/project_dependencies 2024-12-14 at 16.24.39@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/projects/project_structure 2024-12-14 at 16.21.35@2x.png +0 -0
- commands/doc/Visual Command Reference/cat/show/projects/projects 2024-12-14 at 16.18.10@2x.png +0 -0
- commands/doc/Visual Command Reference/hey_egeria tui 2024-12-16 at 16.58.22@2x.png +0 -0
- commands/doc/Visual Command Reference/my/show/my_profile 2024-12-14 at 16.29.27@2x.png +0 -0
- commands/doc/Visual Command Reference/my/show/my_roles 2024-12-14 at 16.32.10@2x.png +0 -0
- commands/doc/Visual Command Reference/my/show/my_todos 2024-12-15 at 16.24.13@2x.png +0 -0
- commands/doc/Visual Command Reference/my/show/open_todos 2024-12-14 at 16.36.12@2x.png +0 -0
- commands/doc/Visual Command Reference/ops/show/engines/list_engine_activity compressed 2024-12-15 at 16.48.48@2x.png +0 -0
- commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity 2024-12-15 at 16.32.55@2x.png +0 -0
- commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity compressed 2024-12-15 at 16.38.29@2x.png +0 -0
- commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_status 2024-12-15 at 16.51.26.jpeg +0 -0
- commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_daemon_status 2024-12-15 at 16.57.12@2x.png +0 -0
- commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_targets 2024-12-15 at 17.02.19@2x.png +0 -0
- commands/doc/Visual Command Reference/ops/show/platforms/monitor_platform_status 2024-12-15 at 19.53.18@2x.png +0 -0
- commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status 2024-12-15 at 19.59.39@2x.png +0 -0
- commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status full 2024-12-15 at 20.01.57@2x.png +0 -0
- commands/doc/Visual Command Reference/ops/show/servers/monitor_startup_servers 2024-12-15 at 19.56.07@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/elements/get_anchored_elements 2024-12-15 at 21.25.41@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/elements/get_elements_of_om_type 2024-12-16 at 14.39.59@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/elements/info_for_guid 2024-12-16 at 11.35.29@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/elements/list_elements_by_om-type 2024-12-16 at 14.24.18@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/elements/list_elements_by_om-type extended 2024-12-16 at 14.28.46@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/elements/list_elements_of_om_type_by_classification 2024-12-16 at 14.35.26@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/elements/related_elements 2024-12-16 at 14.55.01@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/elements/show_related_specifications 2024-12-16 at 15.04.55@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-info/asset_types 2024-12-16 at 15.10.16@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-info/detailed_governance_action_processes 2024-12-16 at 15.16.26@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-info/governance_action_processes 2024-12-16 at 15.13.01@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-info/registered_services 2024-12-16 at 16.44.54@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-16 at 16.20.34@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-19 at 10.51.54@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-info/valid_metadata_values 2024-12-16 at 15.31.56@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-types/list_tech_type_template_specs 2024-12-16 at 16.03.22@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-types/list_technology_types 2024-12-16 at 15.39.20@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_details 2024-12-16 at 15.37.21@2x.png +0 -0
- commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_templates 2024-12-16 at 16.11.48@2x.png +0 -0
- commands/doc/glossary/basic-glossary-tui.md +0 -109
- commands/doc/glossary/images/delete-glossary-step1 2024-11-06 at 15.47.23@2x.png +0 -0
- commands/doc/glossary/images/delete-glossary-step2 2024-11-06 at 15.51.29@2x.png +0 -0
- commands/doc/glossary/images/delete-glossary-step3 2024-11-06 at 15.53.19@2x.png +0 -0
- commands/doc/glossary/images/delete-glossary-step4 2024-11-06 at 15.55.11@2x.png +0 -0
- commands/doc/glossary/images/out-create-glossary example 2024-11-05 at 20.38.04@2x.png +0 -0
- commands/doc/glossary/images/out-create-term 2024-11-06 at 20.48.29.png +0 -0
- commands/doc/glossary/images/out-delete-term 2024-11-07 at 03.57.25.png +0 -0
- commands/doc/glossary/images/out-display-terms-for-glossary-test 2024-11-06 at 20.51.28.png +0 -0
- commands/doc/glossary/images/out-export-example 2024-11-07 at 09.54.57.png +0 -0
- commands/doc/glossary/images/out-exported-terms 2024-11-06 at 21.06.32.png +0 -0
- commands/doc/glossary/images/out-glossary-list example 2024-11-05 at 20.41.02@2x.png +0 -0
- commands/doc/glossary/images/out-import-terms 2024-11-07 at 08.15.18.png +0 -0
- commands/doc/glossary/images/out-list-all-terms 2024-11-06 at 16.22.20@2x.png +0 -0
- commands/doc/glossary/images/out-list-terms-for-example 2024-11-06 at 16.40.12.png +0 -0
- commands/doc/glossary/images/out-list-terms-second 2024-11-06 at 16.45.13.png +0 -0
- commands/doc/glossary/images/out-pipx install pyegeria 2024-11-10 at 18.12.21.png +0 -0
- commands/doc/glossary/images/out-server-status-full 2024-11-10 at 18.25.14.png +0 -0
- commands/doc/glossary/images/out-servers-status 2024-11-10 at 18.15.42.png +0 -0
- commands/doc/glossary/images/out-upsert-import 2024-11-07 at 19.37.00.png +0 -0
- commands/doc/glossary/images/tui-2024-11-10 at 18.26.29.png +0 -0
- commands/doc/glossary/images/tui-create-glossary example 2024-11-05 at 20.34.24@2x.png +0 -0
- commands/doc/glossary/images/tui-create-term 2024-11-06 at 20.46.35.png +0 -0
- commands/doc/glossary/images/tui-delete-term 2024-11-07 at 03.51.57.png +0 -0
- commands/doc/glossary/images/tui-display-terms-for-example 2024-11-06 at 20.56.49.png +0 -0
- commands/doc/glossary/images/tui-export-example 2024-11-07 at 09.52.59.png +0 -0
- commands/doc/glossary/images/tui-hey-egeria 2024-11-10 at 18.31.01.png +0 -0
- commands/doc/glossary/images/tui-import-upsert-example 2024-11-07 at 10.08.37.png +0 -0
- commands/doc/glossary/images/tui-list-terms-second 2024-11-06 at 16.46.34.png +0 -0
- commands/doc/glossary/images/tui-load-archive.png +0 -0
- commands/doc/glossary/images/tui-server-status-full 2024-11-10 at 19.14.36.png +0 -0
- commands/doc/glossary/images/tui-show-glossaries 2024-11-07 at 20.00.05.png +0 -0
- commands/doc/glossary/images/tui-show-glossary-terms 2024-11-05 at 19.37.53@2x.png +0 -0
- commands/doc/glossary/images/tui-upsert 2024-11-07 at 11.49.04.png +0 -0
- commands/doc/glossary/images/upsert-example.om-terms 2024-11-07 at 11.44.05.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/README.md +0 -346
- commands/doc/hey_egeria: a pyegeria command line interface/images/CleanShot 2024-11-18 at 21.32.03@2x.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731421782704.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731422134920.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria 2024-11-12 at 20.38.43.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria cat 2024-11-12 at 21.41.43.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/out-integ-status-list 2024-11-12 at 16.45.26.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/out-integ-status-live 2024-11-12 at 16.44.12@2x.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/out-server-status 2024-11-10 at 18.15.42@2x.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/out-server-status-full 2024-11-10 at 18.25.14@2x.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/short-cut commands 2024-11-12 at 22.22.13.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/tui-hey-egeria.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/tui-integration-status-paging.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/tui-load-archive 2024-11-10 at 19.19.09@2x.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/tui-show-server-status 2024-11-10 at 18.52.01@2x.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/tui-show-server-status-full 2024-11-10.png +0 -0
- commands/doc/hey_egeria: a pyegeria command line interface/images/tui-status-paging 2024-11-12 at 16.26.14@2x.png +0 -0
- commands/my/README.md +0 -17
- commands/ops/README.md +0 -24
- commands/tech/README.md +0 -24
- md_processing/.obsidian/app.json +0 -1
- md_processing/.obsidian/appearance.json +0 -1
- md_processing/.obsidian/community-plugins.json +0 -1
- md_processing/.obsidian/core-plugins.json +0 -33
- md_processing/.obsidian/workspace.json +0 -167
- md_processing/data/commands-working.json +0 -34850
- md_processing/data/commands.json +0 -51697
- md_processing/data/generated_format_sets.json +0 -4137
- md_processing/dr_egeria_inbox/glossary_creation_experiment.ipynb +0 -341
- md_processing/md_processing_utils/debug_log +0 -84
- md_processing/md_processing_utils/dr-egeria-help-2025-09-09T11:10:03.md +0 -3305
- md_processing/md_processing_utils/dr-egeria-help-2025-09-10T14:49:49.md +0 -3460
- md_processing/md_processing_utils/dr-egeria-help-2025-09-10T14:57:46.md +0 -472
- pyegeria/README.md +0 -35
- pyegeria-5.4.5.dist-info/RECORD +0 -306
- pyegeria-5.4.5.dist-info/entry_points.txt +0 -105
- {pyegeria-5.4.5.dist-info → pyegeria-5.4.7.dist-info/licenses}/LICENSE +0 -0
File without changes
|
File without changes
|
commands/cat/get_collection.py
CHANGED
File without changes
|
File without changes
|
File without changes
|
commands/cat/list_assets.py
CHANGED
File without changes
|
commands/cat/list_cert_types.py
CHANGED
File without changes
|
commands/cat/list_collections.py
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
commands/cat/list_glossaries.py
CHANGED
File without changes
|
commands/cat/list_projects.py
CHANGED
File without changes
|
commands/cat/list_tech_types.py
CHANGED
File without changes
|
commands/cat/list_terms.py
CHANGED
File without changes
|
commands/cat/list_todos.py
CHANGED
File without changes
|
commands/cli/egeria.py
CHANGED
File without changes
|
commands/my/list_my_profile.py
CHANGED
File without changes
|
commands/my/list_my_roles.py
CHANGED
File without changes
|
commands/my/monitor_my_todos.py
CHANGED
File without changes
|
File without changes
|
commands/ops/list_archives.py
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
commands/tech/get_guid_info.py
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
md_processing/__init__.py
CHANGED
@@ -16,6 +16,7 @@ from md_processing.md_commands.product_manager_commands import (process_digital_
|
|
16
16
|
process_product_dependency_command,
|
17
17
|
process_attach_collection_command,
|
18
18
|
process_attach_subscriber_command,
|
19
|
+
process_csv_element_upsert_command,
|
19
20
|
)
|
20
21
|
|
21
22
|
from md_processing.md_commands.solution_architect_commands import (process_blueprint_upsert_command,
|
@@ -41,6 +42,7 @@ from md_processing.md_commands.ext_ref_commands import (process_external_referen
|
|
41
42
|
process_link_to_media_reference_command,
|
42
43
|
process_link_to_external_reference_command,
|
43
44
|
process_link_to_cited_document_command,
|
45
|
+
|
44
46
|
)
|
45
47
|
|
46
48
|
# Re-export all functions from the original md_processing_utils.py to maintain backward compatibility
|
md_processing/dr_egeria.py
CHANGED
@@ -23,7 +23,7 @@ from md_processing import (extract_command, process_glossary_upsert_command, pro
|
|
23
23
|
process_provenance_command, get_current_datetime_string,
|
24
24
|
process_project_upsert_command, command_list, process_blueprint_upsert_command,
|
25
25
|
process_solution_component_upsert_command, process_component_link_unlink_command,
|
26
|
-
|
26
|
+
process_csv_element_upsert_command,
|
27
27
|
process_link_term_term_relationship_command,
|
28
28
|
process_information_supply_chain_upsert_command,
|
29
29
|
process_information_supply_chain_link_unlink_command, process_sol_arch_list_command,
|
@@ -202,6 +202,9 @@ def process_md_file(input_file: str, output_folder:str, directive: str, server:
|
|
202
202
|
"Create Product Subscription", "Update Agreement", "Update Data Sharing Agreement",
|
203
203
|
"Update Digital Subscription", "Update Product Subscription"]:
|
204
204
|
result = process_agreement_upsert_command(client, current_block, directive)
|
205
|
+
elif potential_command in ["Create CSV File"]:
|
206
|
+
result = process_csv_element_upsert_command(client, current_block, directive)
|
207
|
+
|
205
208
|
elif potential_command in SIMPLE_COLLECTIONS:
|
206
209
|
result = process_collection_upsert_command(client, current_block, directive)
|
207
210
|
elif potential_command in GOV_COM_LIST:
|
@@ -296,7 +299,7 @@ def process_md_file(input_file: str, output_folder:str, directive: str, server:
|
|
296
299
|
process_current_block(current_block)
|
297
300
|
|
298
301
|
# Join the final output list into a single string
|
299
|
-
final_output = "\n".join(final_output)
|
302
|
+
final_output = "\n".join(final_output) if isinstance(final_output, list) else final_output
|
300
303
|
|
301
304
|
try:
|
302
305
|
if updated:
|
@@ -265,7 +265,7 @@ def process_collection_upsert_command(egeria_client: EgeriaTech, txt: str, direc
|
|
265
265
|
})
|
266
266
|
msg = f"\nCreated Element `{display_name}` with GUID {guid}\n\n___"
|
267
267
|
# todo - add the source member asset to the product manager
|
268
|
-
#
|
268
|
+
# create_elem_from_template
|
269
269
|
# add this guid to the product collection
|
270
270
|
logger.success(msg)
|
271
271
|
return egeria_client.get_collection_by_guid(guid, obj, output_format='MD', output_format_set=output_set)
|
@@ -631,6 +631,106 @@ def process_agreement_upsert_command(egeria_client: EgeriaTech, txt: str, direct
|
|
631
631
|
|
632
632
|
|
633
633
|
|
634
|
+
@logger.catch
|
635
|
+
def process_csv_element_upsert_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
|
636
|
+
"""
|
637
|
+
Processes a create CSV element command by extracting key attributes and calling the pyegeria
|
638
|
+
api that creates a csv element from template.
|
639
|
+
|
640
|
+
:param txt: A string representing the input cell to be processed for
|
641
|
+
extracting glossary-related attributes.
|
642
|
+
:param directive: an optional string indicating the directive to be used - display, validate or execute
|
643
|
+
:return: A string summarizing the outcome of the processing.
|
644
|
+
"""
|
645
|
+
command, object_type, object_action = extract_command_plus(txt)
|
646
|
+
print(Markdown(f"# {command}\n"))
|
647
|
+
|
648
|
+
parsed_output = parse_upsert_command(egeria_client, object_type, object_action, txt, directive)
|
649
|
+
if not parsed_output:
|
650
|
+
logger.error(f"No output for `{object_action}`")
|
651
|
+
return None
|
652
|
+
|
653
|
+
valid = parsed_output['valid']
|
654
|
+
exists = parsed_output['exists']
|
655
|
+
|
656
|
+
qualified_name = parsed_output.get('qualified_name', None)
|
657
|
+
guid = parsed_output.get('guid', None)
|
658
|
+
|
659
|
+
print(Markdown(parsed_output['display']))
|
660
|
+
|
661
|
+
logger.debug(json.dumps(parsed_output, indent=4))
|
662
|
+
|
663
|
+
attributes = parsed_output['attributes']
|
664
|
+
|
665
|
+
display_name = attributes['Display Name'].get('value', None)
|
666
|
+
status = attributes.get('Status', {}).get('value', None)
|
667
|
+
output_set = make_format_set_name_from_type(object_type)
|
668
|
+
|
669
|
+
file_name = attributes.get('File Name', {}).get('value', None)
|
670
|
+
file_type = attributes.get('File Type', {}).get('value', None)
|
671
|
+
file_path = attributes.get('File Path', {}).get('value', None)
|
672
|
+
file_encoding = attributes.get('File Encoding', {}).get('value', 'UTF-8')
|
673
|
+
file_extension = attributes.get('File Extension', {}).get('value', 'csv')
|
674
|
+
file_system_name = attributes.get('File System Name', {}).get('value', None)
|
675
|
+
version_identifier = attributes.get('Version Identifier', {}).get('value', None)
|
676
|
+
description = attributes.get('Description', {}).get('value', None)
|
677
|
+
|
678
|
+
if directive == "display":
|
679
|
+
|
680
|
+
return None
|
681
|
+
elif directive == "validate":
|
682
|
+
if valid:
|
683
|
+
print(Markdown(f"==> Validation of {command} completed successfully!\n"))
|
684
|
+
else:
|
685
|
+
msg = f"Validation failed for object_action `{command}`\n"
|
686
|
+
return valid
|
687
|
+
|
688
|
+
elif directive == "process":
|
689
|
+
try:
|
690
|
+
|
691
|
+
if object_action == "Create":
|
692
|
+
if valid is False and exists:
|
693
|
+
msg = (f" Element `{display_name}` already exists and result document updated changing "
|
694
|
+
f"`Create` to `Update` in processed output\n\n___")
|
695
|
+
logger.error(msg)
|
696
|
+
return update_a_command(txt, object_action, object_type, qualified_name, guid)
|
697
|
+
|
698
|
+
else:
|
699
|
+
guid = egeria_client.get_create_csv_data_file_element_from_template(
|
700
|
+
file_name, file_type, file_path, version_identifier, file_encoding, file_extension, file_system_name, description)
|
701
|
+
|
702
|
+
if guid:
|
703
|
+
update_element_dictionary(qualified_name, {
|
704
|
+
'guid': guid, 'display_name': display_name
|
705
|
+
})
|
706
|
+
msg = f"Created Element `{display_name}` with GUID {guid}\n\n___"
|
707
|
+
logger.success(msg)
|
708
|
+
output_md = (f"# Create CSV File\n\n## Display Name:\n\n {display_name}\n\n"
|
709
|
+
f"## File Type:\n\n {file_type}\n\n## File Path:\n\n {file_path}\n\n"
|
710
|
+
f"## File Encoding:\n\n {file_encoding}\n\n## File Extension:\n\n {file_extension}\n\n"
|
711
|
+
f"## File System Name:\n\n {file_system_name}\n\n## Version Identifier:\n\n {version_identifier}\n\n"
|
712
|
+
f"## Description:\n\n {description}\n\n"
|
713
|
+
f"## Qualified Name\n\n {qualified_name}\n\n"
|
714
|
+
f"## GUID:\n\n {guid}\n\n"
|
715
|
+
)
|
716
|
+
return output_md
|
717
|
+
else:
|
718
|
+
msg = f"Failed to create element `{display_name}` with GUID {guid}\n\n___"
|
719
|
+
logger.error(msg)
|
720
|
+
return None
|
721
|
+
else:
|
722
|
+
logger.error(f"Currently only the Create action is supported for this command: {command}")
|
723
|
+
|
724
|
+
except PyegeriaException as e:
|
725
|
+
logger.error(f"Pyegeria error performing {command}: {e}")
|
726
|
+
print_exception_table(e)
|
727
|
+
return None
|
728
|
+
except Exception as e:
|
729
|
+
logger.error(f"Error performing {command}: {e}")
|
730
|
+
else:
|
731
|
+
logger.error(f"Invalid directive `{directive}`")
|
732
|
+
return None
|
733
|
+
|
634
734
|
|
635
735
|
|
636
736
|
def process_link_agreement_item_command(egeria_client: EgeriaTech, txt: str,
|
@@ -242,7 +242,8 @@ command_list = ["Provenance", "Create Glossary", "Update Glossary", "Create Term
|
|
242
242
|
"Link Governance Drivers", "Detach Governance Drivers",
|
243
243
|
"Link Governance Policies", "Detach Governance Policies",
|
244
244
|
"Link Governance Controls", "Detach Governance Controls",
|
245
|
-
"Link Governed By", "Attach Governed By", "Detach Governed By"
|
245
|
+
"Link Governed By", "Attach Governed By", "Detach Governed By",
|
246
|
+
"Create CSV File"
|
246
247
|
|
247
248
|
]
|
248
249
|
command_list.extend(LIST_COMMANDS)
|
pyegeria/__init__.py
CHANGED
@@ -68,6 +68,7 @@ from .x_action_author_omvs import ActionAuthor
|
|
68
68
|
from .template_manager_omvs import TemplateManager
|
69
69
|
from .data_designer import DataDesigner
|
70
70
|
from ._output_formats import select_output_format_set
|
71
|
+
from .mcp_adapter import list_reports, describe_report, run_report
|
71
72
|
#
|
72
73
|
global template_guids, integration_guids
|
73
74
|
|
pyegeria/_client_new.py
CHANGED
@@ -1081,7 +1081,7 @@ class Client2:
|
|
1081
1081
|
logger.info(response.json())
|
1082
1082
|
return response.json().get("guid", "NO_GUID_RETURNED")
|
1083
1083
|
|
1084
|
-
async def
|
1084
|
+
async def _async_create_element_from_template(self, url: str, body: dict | TemplateRequestBody = None) -> str:
|
1085
1085
|
validated_body = self.validate_new_element_from_template_request(body)
|
1086
1086
|
json_body = validated_body.model_dump_json(indent=2, exclude_none=True)
|
1087
1087
|
logger.info(json_body)
|
pyegeria/_output_formats.py
CHANGED
@@ -2179,15 +2179,16 @@ output_format_sets = combine_format_set_dicts(base_output_format_sets, generated
|
|
2179
2179
|
|
2180
2180
|
def select_output_format_set(kind: str, output_type: str) -> dict | None:
|
2181
2181
|
"""
|
2182
|
-
|
2183
|
-
If output_type = `ANY` that indicates this is just a test to see of the output format set exists.
|
2182
|
+
Retrieve the appropriate output set configuration dictionary based on `kind` and `output_type`.
|
2184
2183
|
|
2185
|
-
|
2186
|
-
|
2187
|
-
|
2184
|
+
Intent of special output_type values:
|
2185
|
+
- "ANY": Discovery-only. Resolve the FormatSet (including aliases), action, and metadata, but DO NOT
|
2186
|
+
resolve a concrete format. Callers typically use this to check existence or to later pick a specific type
|
2187
|
+
via get_output_format_type_match(...).
|
2188
2188
|
|
2189
|
-
|
2190
|
-
|
2189
|
+
:param kind: The kind of output set (e.g., "Referenceable", "Collections"). Aliases are supported.
|
2190
|
+
:param output_type: The desired output format type (e.g., "DICT", "LIST", "REPORT"), or "ANY".
|
2191
|
+
:return: The matched output set dictionary or None if no match is found.
|
2191
2192
|
"""
|
2192
2193
|
# Normalize the output type to uppercase for consistency
|
2193
2194
|
output_type = output_type.upper()
|
@@ -2256,6 +2257,41 @@ def output_format_set_list() -> list[str]:
|
|
2256
2257
|
return list(output_format_sets.keys())
|
2257
2258
|
|
2258
2259
|
|
2260
|
+
def list_mcp_format_sets() -> dict:
|
2261
|
+
"""
|
2262
|
+
Returns only those format set names that can be safely exposed as MCP tools.
|
2263
|
+
A format set is eligible if it has a DICT format or an ALL catch-all format.
|
2264
|
+
|
2265
|
+
This allows MCP to prefer machine-consumable outputs and avoid side effects.
|
2266
|
+
"""
|
2267
|
+
# eligible: list[str] = []
|
2268
|
+
# for name, fs in output_format_sets.items():
|
2269
|
+
# try:
|
2270
|
+
# # fs is a FormatSet
|
2271
|
+
# has_dict = any("DICT" in f.types for f in fs.formats)
|
2272
|
+
# has_all = any("ALL" in f.types for f in fs.formats)
|
2273
|
+
# if has_dict or has_all:
|
2274
|
+
# eligible.append(name)
|
2275
|
+
# except Exception:
|
2276
|
+
# # Defensive: skip malformed entries
|
2277
|
+
# continue
|
2278
|
+
# return sorted(eligible)
|
2279
|
+
return {
|
2280
|
+
name: {
|
2281
|
+
"description": fs.description,
|
2282
|
+
"target_type": fs.target_type,
|
2283
|
+
"required_params": ", ".join(fs.action.required_params) or "",
|
2284
|
+
"optional_params": ", ".join(fs.action.optional_params) or "",
|
2285
|
+
}
|
2286
|
+
for name, fs in sorted(output_format_sets.items())
|
2287
|
+
if fs and fs.action and any(
|
2288
|
+
format_type in ["DICT", "ALL"]
|
2289
|
+
for format_obj in fs.formats
|
2290
|
+
for format_type in format_obj.types
|
2291
|
+
)
|
2292
|
+
}
|
2293
|
+
|
2294
|
+
|
2259
2295
|
def get_output_format_set_heading(format_set: str) -> str:
|
2260
2296
|
"""
|
2261
2297
|
Gets the heading of a format set.
|
pyegeria/automated_curation.py
CHANGED
@@ -54,7 +54,7 @@ class AutomatedCuration(Client2):
|
|
54
54
|
Client2.__init__(self, view_server, platform_url, user_id, user_pwd, token=token)
|
55
55
|
self.curation_command_root = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/automated-curation"
|
56
56
|
|
57
|
-
async def
|
57
|
+
async def _async_create_elem_from_template(self, body: dict) -> str:
|
58
58
|
"""Create a new metadata element from a template. Async version.
|
59
59
|
Parameters
|
60
60
|
----------
|
@@ -99,9 +99,9 @@ class AutomatedCuration(Client2):
|
|
99
99
|
"""
|
100
100
|
|
101
101
|
url = f"{self.curation_command_root}/catalog-templates/new-element"
|
102
|
-
return await self.
|
102
|
+
return await self._async_create_element_from_template(url, body)
|
103
103
|
|
104
|
-
def
|
104
|
+
def create_elem_from_template(self, body: dict) -> str:
|
105
105
|
"""Create a new metadata element from a template. Async version.
|
106
106
|
Parameters
|
107
107
|
----------
|
@@ -147,10 +147,11 @@ class AutomatedCuration(Client2):
|
|
147
147
|
"""
|
148
148
|
loop = asyncio.get_event_loop()
|
149
149
|
response = loop.run_until_complete(
|
150
|
-
self.
|
150
|
+
self._async_create_elem_from_template(body)
|
151
151
|
)
|
152
152
|
return response
|
153
153
|
|
154
|
+
|
154
155
|
async def _async_create_kafka_server_element_from_template(
|
155
156
|
self,
|
156
157
|
kafka_server: str,
|
@@ -194,7 +195,7 @@ class AutomatedCuration(Client2):
|
|
194
195
|
},
|
195
196
|
}
|
196
197
|
body_s = body_slimmer(body)
|
197
|
-
return await self.
|
198
|
+
return await self._async_create_elem_from_template(body_s)
|
198
199
|
|
199
200
|
def create_kafka_server_element_from_template(
|
200
201
|
self,
|
@@ -289,7 +290,7 @@ class AutomatedCuration(Client2):
|
|
289
290
|
},
|
290
291
|
}
|
291
292
|
body_s = body_slimmer(body)
|
292
|
-
return await self.
|
293
|
+
return await self._async_create_elem_from_template(body_s)
|
293
294
|
|
294
295
|
def create_csv_data_file_element_from_template(
|
295
296
|
self,
|
@@ -337,6 +338,112 @@ class AutomatedCuration(Client2):
|
|
337
338
|
)
|
338
339
|
return response
|
339
340
|
|
341
|
+
async def _async_get_create_csv_data_file_element_from_template(
|
342
|
+
self,
|
343
|
+
file_name: str,
|
344
|
+
file_type: str,
|
345
|
+
file_path_name: str,
|
346
|
+
version_identifier: str,
|
347
|
+
file_encoding: str = "UTF-8",
|
348
|
+
file_extension: str = "csv",
|
349
|
+
file_system_name: str = None,
|
350
|
+
description: str = None,
|
351
|
+
) -> str:
|
352
|
+
"""Create a CSV file element from a template if it doesn't exist. If it does exist,
|
353
|
+
the guid will be returned. Async version.
|
354
|
+
|
355
|
+
Parameters
|
356
|
+
----------
|
357
|
+
file_name : str
|
358
|
+
The name of the Kafka server.
|
359
|
+
file_type : str
|
360
|
+
The host name of the Kafka server.
|
361
|
+
file_path_name : str
|
362
|
+
The port number of the Kafka server.
|
363
|
+
version_identifier : str
|
364
|
+
The version identifier of the CSV file..
|
365
|
+
file_encoding: str, opt, default UTF-8
|
366
|
+
The encoding of the CSV file.
|
367
|
+
file_extension: str, opt, default is CSV
|
368
|
+
File extension of the CSV file.
|
369
|
+
file_system_name: str, opt
|
370
|
+
Name of the file system the CSV file is hosted on.
|
371
|
+
description: str, opt
|
372
|
+
A description of the CSV file..
|
373
|
+
|
374
|
+
|
375
|
+
Returns
|
376
|
+
-------
|
377
|
+
str
|
378
|
+
The GUID of the CSV File element.
|
379
|
+
"""
|
380
|
+
template_guid = await self._async_get_template_guid_for_technology_type("CSV Data File")
|
381
|
+
body = {
|
382
|
+
"class": "TemplateRequestBody",
|
383
|
+
"templateGUID": template_guid,
|
384
|
+
"isOwnAnchor": True,
|
385
|
+
"allowRetrieve" : True,
|
386
|
+
"placeholderPropertyValues": {
|
387
|
+
"fileName": file_name,
|
388
|
+
"fileType": file_type,
|
389
|
+
"filePathName": file_path_name,
|
390
|
+
"versionIdentifier": version_identifier,
|
391
|
+
"fileEncoding": file_encoding,
|
392
|
+
"fileExtension": file_extension,
|
393
|
+
"fileSystemName": file_system_name,
|
394
|
+
"description": description
|
395
|
+
},
|
396
|
+
}
|
397
|
+
body_s = body_slimmer(body)
|
398
|
+
return await self._async_create_elem_from_template(body_s)
|
399
|
+
|
400
|
+
def get_create_csv_data_file_element_from_template(
|
401
|
+
self,
|
402
|
+
file_name: str,
|
403
|
+
file_type: str,
|
404
|
+
file_path_name: str,
|
405
|
+
version_identifier: str,
|
406
|
+
file_encoding: str = "UTF-8",
|
407
|
+
file_extension: str = "csv",
|
408
|
+
file_system_name: str = None,
|
409
|
+
description: str = None,
|
410
|
+
) -> str:
|
411
|
+
"""Create a CSV file element from a template if it doesn't exist. If it does exist,
|
412
|
+
the guid will be returned.
|
413
|
+
|
414
|
+
Parameters
|
415
|
+
----------
|
416
|
+
file_name : str
|
417
|
+
The name of the Kafka server.
|
418
|
+
file_type : str
|
419
|
+
The host name of the Kafka server.
|
420
|
+
file_path_name : str
|
421
|
+
The port number of the Kafka server.
|
422
|
+
version_identifier : str
|
423
|
+
The version identifier of the CSV file..
|
424
|
+
file_encoding: str, opt, default UTF-8
|
425
|
+
The encoding of the CSV file.
|
426
|
+
file_extension: str, opt, default is CSV
|
427
|
+
File extension of the CSV file.
|
428
|
+
file_system_name: str, opt
|
429
|
+
Name of the file system the CSV file is hosted on.
|
430
|
+
description: str, opt
|
431
|
+
A description of the CSV file..
|
432
|
+
|
433
|
+
Returns
|
434
|
+
-------
|
435
|
+
str
|
436
|
+
The GUID of the CSV File element.
|
437
|
+
"""
|
438
|
+
loop = asyncio.get_event_loop()
|
439
|
+
response = loop.run_until_complete(
|
440
|
+
self._async_get_create_csv_data_file_element_from_template(
|
441
|
+
file_name, file_type, file_path_name, version_identifier,
|
442
|
+
file_encoding, file_extension, file_system_name, description
|
443
|
+
)
|
444
|
+
)
|
445
|
+
return response
|
446
|
+
|
340
447
|
async def _async_create_postgres_server_element_from_template(
|
341
448
|
self,
|
342
449
|
postgres_server: str,
|
@@ -391,7 +498,7 @@ class AutomatedCuration(Client2):
|
|
391
498
|
},
|
392
499
|
}
|
393
500
|
body_s = body_slimmer(body)
|
394
|
-
return await self.
|
501
|
+
return await self._async_create_elem_from_template(body_s)
|
395
502
|
|
396
503
|
def create_postgres_server_element_from_template(
|
397
504
|
self,
|
@@ -490,7 +597,7 @@ class AutomatedCuration(Client2):
|
|
490
597
|
},
|
491
598
|
}
|
492
599
|
body_s = body_slimmer(body)
|
493
|
-
response = await self.
|
600
|
+
response = await self._async_create_elem_from_template(body_s)
|
494
601
|
return str(response)
|
495
602
|
|
496
603
|
def create_postgres_database_element_from_template(
|
@@ -592,7 +699,7 @@ class AutomatedCuration(Client2):
|
|
592
699
|
},
|
593
700
|
}
|
594
701
|
body_s = body_slimmer(body)
|
595
|
-
response = await self.
|
702
|
+
response = await self._async_create_elem_from_template(body_s)
|
596
703
|
return str(response)
|
597
704
|
|
598
705
|
def create_folder_element_from_template(
|
@@ -687,7 +794,7 @@ class AutomatedCuration(Client2):
|
|
687
794
|
},
|
688
795
|
}
|
689
796
|
body_s = body_slimmer(body)
|
690
|
-
response = await self.
|
797
|
+
response = await self._async_create_elem_from_template(body_s)
|
691
798
|
return str(response)
|
692
799
|
|
693
800
|
def create_uc_server_element_from_template(
|
@@ -776,7 +883,7 @@ class AutomatedCuration(Client2):
|
|
776
883
|
},
|
777
884
|
}
|
778
885
|
body_s = body_slimmer(body)
|
779
|
-
response = await self.
|
886
|
+
response = await self._async_create_elem_from_template(body_s)
|
780
887
|
return str(response)
|
781
888
|
|
782
889
|
def create_uc_catalog_element_from_template(
|
@@ -866,7 +973,7 @@ class AutomatedCuration(Client2):
|
|
866
973
|
},
|
867
974
|
}
|
868
975
|
body_s = body_slimmer(body)
|
869
|
-
response = await self.
|
976
|
+
response = await self._async_create_elem_from_template(body_s)
|
870
977
|
return str(response)
|
871
978
|
|
872
979
|
def create_uc_schema_element_from_template(
|
@@ -977,7 +1084,7 @@ class AutomatedCuration(Client2):
|
|
977
1084
|
},
|
978
1085
|
}
|
979
1086
|
body_s = body_slimmer(body)
|
980
|
-
response = await self.
|
1087
|
+
response = await self._async_create_elem_from_template(body_s)
|
981
1088
|
return str(response)
|
982
1089
|
|
983
1090
|
def create_uc_table_element_from_template(
|
@@ -1097,7 +1204,7 @@ class AutomatedCuration(Client2):
|
|
1097
1204
|
},
|
1098
1205
|
}
|
1099
1206
|
body_s = body_slimmer(body)
|
1100
|
-
response = await self.
|
1207
|
+
response = await self._async_create_elem_from_template(body_s)
|
1101
1208
|
return str(response)
|
1102
1209
|
|
1103
1210
|
def create_uc_function_element_from_template(
|
@@ -1214,7 +1321,7 @@ class AutomatedCuration(Client2):
|
|
1214
1321
|
},
|
1215
1322
|
}
|
1216
1323
|
body_s = body_slimmer(body)
|
1217
|
-
response = await self.
|
1324
|
+
response = await self._async_create_elem_from_template(body_s)
|
1218
1325
|
return str(response)
|
1219
1326
|
|
1220
1327
|
def create_uc_volume_element_from_template(
|