pyegeria 5.4.7.6__tar.gz → 5.4.7.8__tar.gz

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.

Files changed (253) hide show
  1. {pyegeria-5.4.7.6/pyegeria.egg-info → pyegeria-5.4.7.8}/PKG-INFO +1 -1
  2. pyegeria-5.4.7.6/commands/cat/list_format_set.py → pyegeria-5.4.7.8/commands/cat/run_report.py +4 -4
  3. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cli/egeria.py +5 -5
  4. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cli/egeria_cat.py +18 -15
  5. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/gov_server_actions.py +6 -5
  6. {pyegeria-5.4.7.6/commands/my → pyegeria-5.4.7.8/commands/tech}/__init__.py +0 -2
  7. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/dr_egeria.py +2 -2
  8. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_commands/ext_ref_commands.py +9 -3
  9. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_commands/solution_architect_commands.py +21 -23
  10. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/common_md_proc_utils.py +7 -0
  11. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/common_md_utils.py +2 -2
  12. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/__init__.py +0 -2
  13. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/_client_new.py +4 -4
  14. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/_output_formats.py +54 -3
  15. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/automated_curation.py +71 -66
  16. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/collection_manager.py +1 -1
  17. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/config.py +3 -3
  18. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/external_references.py +1 -1
  19. pyegeria-5.4.7.8/pyegeria/feedback_manager.py +4573 -0
  20. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/format_set_executor.py +16 -1
  21. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/mcp_server.py +1 -5
  22. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/mermaid_utilities.py +1 -1
  23. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/output_formatter.py +8 -6
  24. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/solution_architect.py +208 -147
  25. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8/pyegeria.egg-info}/PKG-INFO +1 -1
  26. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria.egg-info/SOURCES.txt +2 -1
  27. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria.egg-info/entry_points.txt +1 -1
  28. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyproject.toml +2 -2
  29. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_automated_curation_omvs.py +12 -2
  30. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_external_references.py +63 -138
  31. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_feedback_manager_omvs.py +15 -8
  32. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_solution_architect_omvs.py +78 -24
  33. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/LICENSE +0 -0
  34. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/MANIFEST.in +0 -0
  35. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/README.md +0 -0
  36. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/__init__.py +0 -0
  37. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/Dr-Egeria_md-orig.py +0 -0
  38. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/__init__.py +0 -0
  39. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/dr_egeria_command_help.py +0 -0
  40. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/dr_egeria_jupyter.py +0 -0
  41. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/dr_egeria_md.py +0 -0
  42. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/exp_list_glossaries.py +0 -0
  43. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/get_asset_graph.py +0 -0
  44. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/get_collection.py +0 -0
  45. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/get_project_dependencies.py +0 -0
  46. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/get_project_structure.py +0 -0
  47. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/get_tech_type_elements.py +0 -0
  48. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/glossary_actions.py +0 -0
  49. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_assets.py +0 -0
  50. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_cert_types.py +0 -0
  51. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_collections.py +0 -0
  52. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_data_designer.py +0 -0
  53. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_data_structures_full.py +0 -0
  54. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_deployed_catalogs.py +0 -0
  55. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_deployed_database_schemas.py +0 -0
  56. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_deployed_databases.py +0 -0
  57. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_deployed_servers.py +0 -0
  58. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_glossaries.py +0 -0
  59. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_projects.py +0 -0
  60. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_tech_type_elements.py +0 -0
  61. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_tech_types.py +0 -0
  62. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_terms.py +0 -0
  63. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_todos.py +0 -0
  64. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cat/list_user_ids.py +0 -0
  65. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cli/__init__.py +0 -0
  66. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cli/egeria_login_tui.py +0 -0
  67. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cli/egeria_my.py +0 -0
  68. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cli/egeria_ops.py +0 -0
  69. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cli/egeria_tech.py +0 -0
  70. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/cli/ops_config.py +0 -0
  71. {pyegeria-5.4.7.6/commands/tech → pyegeria-5.4.7.8/commands/my}/__init__.py +0 -0
  72. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/my/list_my_profile.py +0 -0
  73. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/my/list_my_roles.py +0 -0
  74. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/my/monitor_my_todos.py +0 -0
  75. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/my/monitor_open_todos.py +0 -0
  76. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/my/todo_actions.py +0 -0
  77. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/__init__.py +0 -0
  78. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/list_archives.py +0 -0
  79. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/list_catalog_targets.py +0 -0
  80. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/load_archive.py +0 -0
  81. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/monitor_asset_events.py +0 -0
  82. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/monitor_engine_activity.py +0 -0
  83. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/monitor_engine_activity_c.py +0 -0
  84. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/monitor_gov_eng_status.py +0 -0
  85. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/monitor_integ_daemon_status.py +0 -0
  86. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/monitor_platform_status.py +0 -0
  87. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/monitor_server_startup.py +0 -0
  88. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/monitor_server_status.py +0 -0
  89. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/orig_monitor_server_list.py +0 -0
  90. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/orig_monitor_server_status.py +0 -0
  91. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/refresh_integration_daemon.py +0 -0
  92. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/restart_integration_daemon.py +0 -0
  93. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/table_integ_daemon_status.py +0 -0
  94. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/ops/x_engine_actions.py +0 -0
  95. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/generic_actions.py +0 -0
  96. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/get_element_info.py +0 -0
  97. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/get_guid_info.py +0 -0
  98. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/get_tech_details.py +0 -0
  99. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/get_tech_type_template.py +0 -0
  100. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_all_om_type_elements.py +0 -0
  101. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_all_om_type_elements_x.py +0 -0
  102. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_all_related_elements.py +0 -0
  103. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_anchored_elements.py +0 -0
  104. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_asset_types.py +0 -0
  105. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_elements_by_classification_by_property_value.py +0 -0
  106. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_elements_by_property_value.py +0 -0
  107. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_elements_by_property_value_x.py +0 -0
  108. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_elements_for_classification.py +0 -0
  109. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_gov_action_processes.py +0 -0
  110. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_information_supply_chains.py +0 -0
  111. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_registered_services.py +0 -0
  112. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_related_elements_with_prop_value.py +0 -0
  113. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_related_specification.py +0 -0
  114. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_relationship_types.py +0 -0
  115. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_relationships.py +0 -0
  116. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_solution_blueprints.py +0 -0
  117. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_solution_components.py +0 -0
  118. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_solution_roles.py +0 -0
  119. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_tech_templates.py +0 -0
  120. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/list_valid_metadata_values.py +0 -0
  121. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/table_tech_templates.py +0 -0
  122. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/commands/tech/x_list_related_elements.py +0 -0
  123. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/README.md +0 -0
  124. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/__init__.py +0 -0
  125. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_cocoMDS1.py +0 -0
  126. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_cocoMDS2.py +0 -0
  127. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_cocoMDS3.py +0 -0
  128. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_cocoMDS4.py +0 -0
  129. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_cocoMDS5.py +0 -0
  130. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_cocoMDS6.py +0 -0
  131. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_cocoMDSx.py +0 -0
  132. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_cocoView1.py +0 -0
  133. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_coco_core.py +0 -0
  134. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_coco_datalake.py +0 -0
  135. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_exchangeDL01.py +0 -0
  136. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_governDL01.py +0 -0
  137. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_monitorDev01.py +0 -0
  138. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/config_monitorGov01.py +0 -0
  139. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Coco_config/globals.py +0 -0
  140. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/GeoSpatial Products Example.py +0 -0
  141. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Jupyter Notebooks/P-egeria-server-config.ipynb +0 -0
  142. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Jupyter Notebooks/README.md +0 -0
  143. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Jupyter Notebooks/common/P-environment-check.ipynb +0 -0
  144. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Jupyter Notebooks/common/__init__.py +0 -0
  145. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Jupyter Notebooks/common/common-functions.ipynb +0 -0
  146. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Jupyter Notebooks/common/environment-check.ipynb +0 -0
  147. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Jupyter Notebooks/common/globals.ipynb +0 -0
  148. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Jupyter Notebooks/common/globals.py +0 -0
  149. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/Jupyter Notebooks/common/orig_globals.py +0 -0
  150. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/format_sets/all_format_sets.json +0 -0
  151. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/format_sets/custom_format_sets.json +0 -0
  152. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/format_sets/subset_format_sets.json +0 -0
  153. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/format_sets_save_load_example.py +0 -0
  154. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/examples/output_formats_example.py +0 -0
  155. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/__init__.py +0 -0
  156. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/data/commands-working.json +0 -0
  157. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/data/commands.json +0 -0
  158. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/data/generated_format_sets.json +0 -0
  159. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/data/generated_format_sets.py +0 -0
  160. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_commands/__init__.py +0 -0
  161. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_commands/data_designer_commands.py +0 -0
  162. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_commands/glossary_commands.py +0 -0
  163. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_commands/governance_officer_commands.py +0 -0
  164. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_commands/product_manager_commands.py +0 -0
  165. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_commands/project_commands.py +0 -0
  166. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_commands/view_commands.py +0 -0
  167. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/__init__.py +0 -0
  168. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/determine_width.py +0 -0
  169. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/extraction_utils.py +0 -0
  170. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/gen_format_sets.py +0 -0
  171. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/generate_dr_help.py +0 -0
  172. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/generate_md_cmd_templates.py +0 -0
  173. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/generate_md_templates.py +0 -0
  174. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/md_processing_constants.py +0 -0
  175. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/md_processing/md_processing_utils/message_constants.py +0 -0
  176. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/_client.py +0 -0
  177. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/_deprecated_gov_engine.py +0 -0
  178. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/_exceptions.py +0 -0
  179. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/_exceptions_new.py +0 -0
  180. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/_globals.py +0 -0
  181. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/_output_format_models.py +0 -0
  182. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/_validators.py +0 -0
  183. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/asset_catalog_omvs.py +0 -0
  184. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/classification_manager.py +0 -0
  185. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/classification_manager_omvs.py +0 -0
  186. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/collection_models.py +0 -0
  187. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/core_omag_server_config.py +0 -0
  188. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/create_tech_guid_lists.py +0 -0
  189. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/data_designer.py +0 -0
  190. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/egeria_cat_client.py +0 -0
  191. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/egeria_client.py +0 -0
  192. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/egeria_config_client.py +0 -0
  193. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/egeria_my_client.py +0 -0
  194. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/egeria_tech_client.py +0 -0
  195. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/feedback_manager_omvs.py +0 -0
  196. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/full_omag_server_config.py +0 -0
  197. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/glossary_manager.py +0 -0
  198. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/governance_officer.py +0 -0
  199. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/load_config.py +0 -0
  200. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/logging_configuration.py +0 -0
  201. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/mcp_adapter.py +0 -0
  202. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/md_processing_utils.py +0 -0
  203. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/md_processing_utils_orig.py +0 -0
  204. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/metadata_explorer_omvs.py +0 -0
  205. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/models.py +0 -0
  206. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/my_profile_omvs.py +0 -0
  207. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/platform_services.py +0 -0
  208. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/project_manager.py +0 -0
  209. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/reference_data.py +0 -0
  210. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/registered_info.py +0 -0
  211. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/runtime_manager_omvs.py +0 -0
  212. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/server_operations.py +0 -0
  213. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/template_manager_omvs.py +0 -0
  214. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/utils.py +0 -0
  215. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/valid_metadata_omvs.py +0 -0
  216. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria/x_action_author_omvs.py +0 -0
  217. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria.egg-info/dependency_links.txt +0 -0
  218. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria.egg-info/requires.txt +0 -0
  219. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/pyegeria.egg-info/top_level.txt +0 -0
  220. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/setup.cfg +0 -0
  221. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_asset_catalog_omvs.py +0 -0
  222. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_classification_manager_omvs.py +0 -0
  223. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_client.py +0 -0
  224. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_collection_manager_omvs.py +0 -0
  225. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_config.py +0 -0
  226. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_config_unit.py +0 -0
  227. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_core_omag_server_config.py +0 -0
  228. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_data_designer.py +0 -0
  229. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_dr_egeria_command_help_modes.py +0 -0
  230. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_egeria_cat_client.py +0 -0
  231. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_egeria_client.py +0 -0
  232. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_egeria_my_client.py +0 -0
  233. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_env_settings.py +0 -0
  234. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_format_set_dict.py +0 -0
  235. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_full_omag_server_config.py +0 -0
  236. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_glossary_manager_omvs.py +0 -0
  237. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_governance_officer_omvs.py +0 -0
  238. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_load_config.py +0 -0
  239. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_mcp_adapter.py +0 -0
  240. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_metadata_explorer_omvs.py +0 -0
  241. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_my_profile_omvs.py +0 -0
  242. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_output_format_models_unit.py +0 -0
  243. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_output_format_sets_unit.py +0 -0
  244. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_output_formats.py +0 -0
  245. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_platform_services.py +0 -0
  246. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_project_manager_omvs.py +0 -0
  247. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_reference_data.py +0 -0
  248. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_registered_info.py +0 -0
  249. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_root_path.py +0 -0
  250. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_runtime_manager.py +0 -0
  251. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_server_operations.py +0 -0
  252. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_utils.py +0 -0
  253. {pyegeria-5.4.7.6 → pyegeria-5.4.7.8}/tests/test_valid_metadata_omvs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyegeria
3
- Version: 5.4.7.6
3
+ Version: 5.4.7.8
4
4
  Summary: A python client for Egeria
5
5
  Author-email: Dan Wolfson <dan.wolfson@pdr-associates.com>
6
6
  License-Expression: Apache-2.0
@@ -361,11 +361,11 @@ def main():
361
361
  # First, parse just the format-set argument to determine which other arguments to add
362
362
  logger.enable("pyegeria")
363
363
  initial_parser = argparse.ArgumentParser(add_help=False)
364
- initial_parser.add_argument("--format-set", help="Name of the output format set", required=True)
364
+ initial_parser.add_argument("--report", help="Name of the output format set", required=True)
365
365
  initial_args, _ = initial_parser.parse_known_args()
366
366
 
367
367
  # Get the format set to determine parameters
368
- format_set_name = initial_args.format_set
368
+ format_set_name = initial_args.report
369
369
  format_set = select_output_format_set(format_set_name, "ANY")
370
370
 
371
371
  # Check if the format set exists
@@ -379,7 +379,7 @@ def main():
379
379
 
380
380
  # Create the full parser with all arguments
381
381
  parser = argparse.ArgumentParser(description="Execute an action from an output format set")
382
- parser.add_argument("--format-set", help="Name of the output format set", required=True)
382
+ parser.add_argument("--report", help="Name of the output format set", required=True)
383
383
  parser.add_argument("--server", help="Name of the server to connect to")
384
384
  parser.add_argument("--url", help="URL Platform to connect to")
385
385
  parser.add_argument("--userid", help="User Id")
@@ -412,7 +412,7 @@ def main():
412
412
  print(f"root path: {app_config.pyegeria_root}, config_file: {app_config.pyegeria_config_file}")
413
413
  userid = args.userid if args.userid is not None else EGERIA_USER
414
414
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
415
- format_set_name = args.format_set
415
+ format_set_name = args.report
416
416
  output_format = args.output_format
417
417
 
418
418
  logger.info(f"view server @ {url}")
@@ -18,7 +18,7 @@ from loguru import logger
18
18
 
19
19
  from pyegeria import config_logging, settings
20
20
 
21
- from commands.cat.list_format_set import execute_format_set_action
21
+ from commands.cat.run_report import execute_format_set_action
22
22
  from commands.cat.get_asset_graph import asset_viewer
23
23
  from commands.cat.get_collection import collection_viewer
24
24
  from commands.cat.get_project_dependencies import project_dependency_viewer
@@ -1041,17 +1041,17 @@ def show_cat_info(ctx):
1041
1041
  """Group of md_commands to show information about various Egeria objects"""
1042
1042
  pass
1043
1043
 
1044
- @show_cat_info.command("list-output-set")
1045
- @click.option("--format-set", help="Format set to output")
1044
+ @show_cat_info.command("Run Report")
1045
+ @click.option("--report", help="Report to output", default="Digital-Products")
1046
1046
  @click.option("--output-format", default = "TABLE", help="Output format type")
1047
1047
  @click.option('--search-string', default="*", help="Search string")
1048
1048
  @click.pass_context
1049
- def show_format_set(ctx, format_set, output_format, search_string):
1049
+ def show_format_set(ctx, report, output_format, search_string):
1050
1050
  """Dynamically generate output based on a format set"""
1051
1051
  c = ctx.obj
1052
1052
  logger.info(f"Hey Egeria: view server @ {c.view_server_url}")
1053
1053
  execute_format_set_action(
1054
- format_set, c.view_server, c.view_server_url,
1054
+ report, c.view_server, c.view_server_url,
1055
1055
  c.userid, c.password, output_format, search_string = search_string
1056
1056
  )
1057
1057
 
@@ -14,8 +14,9 @@ import os
14
14
  import click
15
15
  from trogon import tui
16
16
  from pyegeria import settings
17
+ from loguru import logger
17
18
 
18
- from commands.cat.list_format_set import execute_format_set_action
19
+ from commands.cat.run_report import execute_format_set_action
19
20
  from commands.cat.dr_egeria_md import process_markdown_file
20
21
  from commands.cat.get_asset_graph import asset_viewer
21
22
  from commands.cat.get_collection import collection_viewer
@@ -64,7 +65,7 @@ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
64
65
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
65
66
  app_settings = settings
66
67
 
67
- app_config = app_settings["Environment"]
68
+ app_config = app_settings.Environment
68
69
  # config_logging()
69
70
 
70
71
 
@@ -76,7 +77,7 @@ app_config = app_settings["Environment"]
76
77
  @click.group()
77
78
  @click.option(
78
79
  "--server",
79
- default=app_config['Egeria Metadata Store'],
80
+ default=app_config.egeria_metadata_store,
80
81
  help="Egeria metadata store to work with",
81
82
  )
82
83
  @click.option(
@@ -123,9 +124,11 @@ app_config = app_settings["Environment"]
123
124
  @click.option(
124
125
  "--password",
125
126
  default=EGERIA_USER_PASSWORD,
126
- help="Egeria user password",
127
+ help="Egeria user password"
127
128
  )
129
+
128
130
  @click.option("--timeout", default=60, help="Number of seconds to wait")
131
+
129
132
  @click.option(
130
133
  "--jupyter",
131
134
  is_flag=True,
@@ -135,18 +138,18 @@ app_config = app_settings["Environment"]
135
138
  )
136
139
  @click.option(
137
140
  "--width",
138
- default=app_config.console__width,
141
+ default=app_config.console_width,
139
142
  type=int,
140
143
  help="Screen width, in characters, to use",
141
144
  )
142
145
  @click.option(
143
- "--home_glossary_guid",
144
- default=app_settings.User_Profile.home_glossary_guid,
146
+ "--home_glossary_name",
147
+ default=app_settings.User_Profile.egeria_home_glossary_name,
145
148
  help="Glossary name to use as the home glossary",
146
149
  )
147
150
  @click.option(
148
151
  "--glossary_path",
149
- default=app_config.egeria_platform_glossary_path,
152
+ default=app_config.egeria_glossary_path,
150
153
  help="Path to glossary import/export files",
151
154
  )
152
155
 
@@ -183,7 +186,7 @@ def cli(
183
186
  timeout,
184
187
  jupyter,
185
188
  width,
186
- home_glossary_guid,
189
+ home_glossary_name,
187
190
  glossary_path,
188
191
  root_path,
189
192
  inbox_path,
@@ -204,7 +207,7 @@ def cli(
204
207
  timeout,
205
208
  jupyter,
206
209
  width,
207
- home_glossary_guid,
210
+ home_glossary_name,
208
211
  glossary_path,
209
212
  root_path,
210
213
  inbox_path,
@@ -227,17 +230,17 @@ def info(ctx):
227
230
  pass
228
231
 
229
232
 
230
- @info.command("list-output-set")
231
- @click.option("--format-set", help="Format set to output")
233
+ @info.command("Run Report")
234
+ @click.option("--report", help="Report to output", default="Digital-Products")
232
235
  @click.option("--output-format", default = "TABLE", help="Output format type")
233
236
  @click.option('--search-string', default="*", help="Search string")
234
237
  @click.pass_context
235
- def show_format_set(ctx, format_set, output_format, search_string):
238
+ def show_format_set(ctx, report, output_format, search_string):
236
239
  """Dynamically generate output based on a format set"""
237
240
  c = ctx.obj
238
-
241
+ logger.info(f"Hey Egeria: view server @ {c.view_server_url}")
239
242
  execute_format_set_action(
240
- format_set, c.view_server, c.view_server_url,
243
+ report, c.view_server, c.view_server_url,
241
244
  c.userid, c.password, output_format, search_string = search_string
242
245
  )
243
246
 
@@ -14,7 +14,7 @@ import click
14
14
  from rich import print, print_json
15
15
  from rich.console import Console
16
16
 
17
- from pyegeria import INTEGRATION_GUIDS, AutomatedCuration, EgeriaTech
17
+ from pyegeria import AutomatedCuration, EgeriaTech
18
18
  from pyegeria._exceptions import (
19
19
  InvalidParameterException,
20
20
  PropertyServerException,
@@ -36,17 +36,18 @@ def add_catalog_target(
36
36
  ) -> str:
37
37
  """Add catalog targets to the specified integration connector"""
38
38
  try:
39
- if integration_connector not in INTEGRATION_GUIDS.keys():
40
- click.echo("Integration connector is not known")
41
-
42
39
  c = ctx.obj
43
40
  a_client = AutomatedCuration(
44
41
  c.view_server, c.view_server_url, c.userid, c.password
45
42
  )
46
43
  token = a_client.create_egeria_bearer_token()
47
44
 
45
+ integ_connector_guid = a_client.get_connector_guid(integration_connector)
46
+ if not integ_connector_guid or c.catalog_targets == 'No connector found':
47
+ raise InvalidParameterException('No Connector found')
48
+
48
49
  guid = a_client.add_catalog_target(
49
- INTEGRATION_GUIDS[integration_connector],
50
+ integ_connector_guid,
50
51
  metadata_element_guid,
51
52
  catalog_target_name,
52
53
  )
@@ -4,8 +4,6 @@ Copyright Contributors to the ODPi Egeria project.
4
4
 
5
5
  """
6
6
  from pyegeria import (
7
- INTEGRATION_GUIDS,
8
- TEMPLATE_GUIDS,
9
7
  default_time_out,
10
8
  disable_ssl_warnings,
11
9
  enable_ssl_check,
@@ -258,7 +258,7 @@ def process_md_file(input_file: str, output_folder:str, directive: str, server:
258
258
  print(f"\n==>\tErrors found while processing command: \'{potential_command}\'\n"
259
259
  f"\tPlease correct and try again. \n")
260
260
  final_output.append(current_block)
261
- final_output.append('\n___\n')
261
+ final_output.append('\n____\n')
262
262
  else:
263
263
  # If there is no object_action, append the block as-is
264
264
  final_output.append(current_block)
@@ -278,7 +278,7 @@ def process_md_file(input_file: str, output_folder:str, directive: str, server:
278
278
  in_h1_block = True
279
279
 
280
280
  # Handle the end of a block (line starts with `---`)
281
- elif line.startswith("___"):
281
+ elif line.startswith("___") or line.startswith("---"):
282
282
  if in_h1_block:
283
283
  # Process the current block when it ends with `---`
284
284
  current_block += f"\n{line}"
@@ -100,13 +100,15 @@ def process_external_reference_upsert_command(egeria_client: EgeriaTech, txt: st
100
100
  prop_body["copyright"] = attributes.get('Copyright', {}).get('value', None)
101
101
  prop_body["attribution"] = attributes.get('Attribution', {}).get('value', None)
102
102
 
103
- if object_type == "RelatedMedia":
103
+ if object_type in ["RelatedMedia", "Related Media"]:
104
+ object_type = "RelatedMedia"
104
105
  prop_body["class"] = "RelatedProperties"
105
106
  prop_body["mediaType"] = attributes.get('Media Type', {}).get('value', None)
106
107
  prop_body["mediaTypeOtherId"] = attributes.get('Media Type Other ID', {}).get('value', None)
107
108
  prop_body["defaultMediaUsage"]= attributes.get('Default Media Usage', {}).get('value', None)
108
109
  prop_body["defaultMediaUsageOtherId"] = attributes.get('Default Media Usage Other ID', {}).get('value', None)
109
- elif object_type == "CitedDocument":
110
+ elif object_type in ["CitedDocument", "Cited Document"]:
111
+ object_type = "CitedDocument"
110
112
  prop_body["class"] = "CitedDocumentProperties"
111
113
  prop_body["numberOfPages"] = attributes.get('Number of Pages', {}).get('value', None)
112
114
  prop_body["pageRange"] = attributes.get('Page Range', {}).get('value', None)
@@ -119,7 +121,8 @@ def process_external_reference_upsert_command(egeria_client: EgeriaTech, txt: st
119
121
  prop_body["publicationCity"] = attributes.get('Publication City', {}).get('value', None)
120
122
  prop_body["publicationYear"] = attributes.get('Publication Year', {}).get('value', None)
121
123
  prop_body["publicationNumbers"]= attributes.get('Publication Numbers', {}).get('value', None)
122
-
124
+ elif object_type in ["ExternalReference", "External Reference"]:
125
+ object_type = "ExternalReference"
123
126
 
124
127
 
125
128
  if object_action == "Update":
@@ -147,6 +150,7 @@ def process_external_reference_upsert_command(egeria_client: EgeriaTech, txt: st
147
150
  # egeria_client.update_external_reference_status(guid, status)
148
151
 
149
152
  logger.success(f"Updated {object_type} `{display_name}` with GUID {guid}\n\n___")
153
+ print(Markdown(f"Updated {object_type} `{display_name}` with GUID {guid}\n\n___"))
150
154
  update_element_dictionary(qualified_name, {
151
155
  'guid': guid, 'display_name': display_name
152
156
  })
@@ -182,11 +186,13 @@ def process_external_reference_upsert_command(egeria_client: EgeriaTech, txt: st
182
186
  })
183
187
  msg = f"Created Element `{display_name}` with GUID {guid}\n\n___"
184
188
  logger.success(msg)
189
+ print(Markdown(msg))
185
190
  return egeria_client.get_external_reference_by_guid(guid, element_type=object_type,
186
191
  output_format='MD',
187
192
  output_format_set=output_set)
188
193
  else:
189
194
  msg = f"Failed to create element `{display_name}` with GUID {guid}\n\n___"
195
+ print(Markdown(msg))
190
196
  logger.error(msg)
191
197
  return None
192
198
 
@@ -155,7 +155,7 @@ def sync_component_related_elements(egeria_client: EgeriaTech, object_type: str,
155
155
  logger.trace(f"supply_chains_to_add: {list(supply_chains_to_add)}")
156
156
  if len(supply_chains_to_add) > 0:
157
157
  body = {
158
- "class": "RelationshipRequestBody",
158
+ "class": "NewRelationshipRequestBody",
159
159
  "properties": {
160
160
  "class": "ImplementedByProperties",
161
161
  "description": "a blank description to satisfy the Egeria gods"
@@ -188,7 +188,7 @@ def sync_component_related_elements(egeria_client: EgeriaTech, object_type: str,
188
188
 
189
189
  if supply_chain_guids:
190
190
  body = {
191
- "class": "RelationshipRequestBody",
191
+ "class": "NewRelationshipRequestBody",
192
192
  "properties": {
193
193
  "class": "ImplementedByProperties",
194
194
  "description": "a blank description to satisfy the Egeria gods"
@@ -307,6 +307,7 @@ def process_blueprint_upsert_command(egeria_client: EgeriaTech, txt: str, direct
307
307
  msg = (f" Element `{display_name}` does not exist! Updating result document with Create "
308
308
  f"object_action\n")
309
309
  logger.error(msg)
310
+ print(Markdown(msg))
310
311
  return update_a_command(txt, object_action, object_type, qualified_name, guid)
311
312
  elif not valid:
312
313
  return None
@@ -324,19 +325,11 @@ def process_blueprint_upsert_command(egeria_client: EgeriaTech, txt: str, direct
324
325
  update_element_dictionary(qualified_name, {
325
326
  'guid': guid, 'display_name': display_name
326
327
  })
327
- logger.info(msg)
328
328
  logger.success(msg)
329
- return egeria_client.find_solution_blueprints(qualified_name, output_format='MD')
330
-
331
- egeria_client.update_solution_blueprint(guid, body, replace_all_props)
332
- logger.success(f"==> Updated {object_type} `{display_name}` with GUID {guid}\n\n")
333
- update_element_dictionary(qualified_name, {
334
- 'guid': guid, 'display_name': display_name
335
- })
336
- sync_blueprint_related_elements(egeria_client, object_type, component_guids, guid, qualified_name,
337
- display_name, replace_all_props)
338
- logger.success(f"===> Updated {object_type} `{display_name}` related elements\n\n")
339
- return egeria_client.find_solution_blueprints(qualified_name, output_format='MD')
329
+ sync_blueprint_related_elements(egeria_client, object_type, component_guids, guid, qualified_name,
330
+ display_name, replace_all_props)
331
+ logger.success(f"===> Updated {object_type} `{display_name}` related elements\n\n")
332
+ return egeria_client.get_solution_blueprints_by_name(qualified_name, output_format='MD', output_format_set = "Solution-Blueprint-DrE")
340
333
 
341
334
 
342
335
  elif object_action == "Create":
@@ -346,10 +339,12 @@ def process_blueprint_upsert_command(egeria_client: EgeriaTech, txt: str, direct
346
339
  msg = (f" Data Specification `{display_name}` already exists and result document updated changing "
347
340
  f"`Create` to `Update` in processed output\n\n___")
348
341
  logger.error(msg)
342
+ print(Markdown(msg))
349
343
  return update_a_command(txt, object_action, object_type, qualified_name, guid)
350
344
 
351
345
  elif not valid:
352
346
  msg = (f"==>{object_type} `{display_name}` is not valid and can't be created")
347
+ print(Markdown(msg))
353
348
  logger.error(msg)
354
349
  return
355
350
 
@@ -366,10 +361,12 @@ def process_blueprint_upsert_command(egeria_client: EgeriaTech, txt: str, direct
366
361
  'guid': guid, 'display_name': display_name
367
362
  })
368
363
  msg = f"Created Element `{display_name}` with GUID {guid}\n\n___"
364
+ print(Markdown(msg))
369
365
  logger.success(msg)
370
- return egeria_client.find_solution_blueprints(qualified_name, output_format='MD')
366
+ return egeria_client.get_solution_blueprint_by_guid(guid, output_format='MD', output_format_set = "Solution-Blueprint-DrE")
371
367
  else:
372
368
  msg = f"Failed to create element `{display_name}` with GUID {guid}\n\n___"
369
+ print(Markdown(msg))
373
370
  logger.error(msg)
374
371
  return None
375
372
 
@@ -488,9 +485,10 @@ def process_solution_component_upsert_command(egeria_client: EgeriaTech, txt: st
488
485
  "class": "UpdateElementRequestBody",
489
486
  "externalSourceGUID": external_source_guid,
490
487
  "externalSourceName": external_source_name,
491
- "effectiveTime": effective_time, "forLineage": False,
488
+ "effectiveTime": effective_time,
489
+ "mergeUpdate": merge_update,
490
+ "forLineage": False,
492
491
  "forDuplicateProcessing": False,
493
- "parentAtEnd1": parent_at_end1,
494
492
  "properties": {
495
493
  "class": "SolutionComponentProperties",
496
494
  "qualifiedName": qualified_name,
@@ -505,7 +503,7 @@ def process_solution_component_upsert_command(egeria_client: EgeriaTech, txt: st
505
503
  }
506
504
  })
507
505
 
508
- egeria_client.update_solution_component(guid, body, not merge_update)
506
+ egeria_client.update_solution_component(guid, body)
509
507
  logger.success(f"==>Updated {object_type} `{display_name}` with GUID {guid}\n")
510
508
  update_element_dictionary(qualified_name, {
511
509
  'guid': guid, 'display_name': display_name
@@ -517,7 +515,7 @@ def process_solution_component_upsert_command(egeria_client: EgeriaTech, txt: st
517
515
  display_name,
518
516
  merge_update)
519
517
  logger.success(f"==>Updated {object_type} `{display_name}` with related elements")
520
- return egeria_client.get_solution_component_by_guid(guid, output_format='MD')
518
+ return egeria_client.get_solution_component_by_guid(guid, output_format='MD', output_format_set = "Solution-Component-DrE")
521
519
 
522
520
 
523
521
  elif object_action == "Create":
@@ -704,7 +702,7 @@ def process_component_link_unlink_command(egeria_client: EgeriaTech, txt: str,
704
702
  return
705
703
  else:
706
704
  body = {
707
- "class": "RelationshipRequestBody",
705
+ "class": "NewRelationshipRequestBody",
708
706
  "effectiveTime": effective_time,
709
707
  "forLineage": False,
710
708
  "forDuplicateProcessing": False,
@@ -717,13 +715,13 @@ def process_component_link_unlink_command(egeria_client: EgeriaTech, txt: str,
717
715
  }
718
716
  }
719
717
 
720
- egeria_client.link_solution_linking_wire(component1, component2, None)
718
+ egeria_client.link_solution_linking_wire(component1, component2, body)
721
719
  msg = f"==>Created {object_type} link named `{label}`\n"
722
720
  logger.success(msg)
721
+ print(Markdown(msg))
723
722
  out = parsed_output['display'].replace('Link', 'Detach', 1)
724
723
  return out
725
724
 
726
-
727
725
  except Exception as e:
728
726
  logger.error(f"Error performing {command}: {e}")
729
727
  return None
@@ -1006,7 +1004,7 @@ def process_information_supply_chain_link_unlink_command(egeria_client: EgeriaTe
1006
1004
  return
1007
1005
  else:
1008
1006
  body = {
1009
- "class": "RelationshipRequestBody",
1007
+ "class": "NewRelationshipRequestBody",
1010
1008
  "effectiveTime": effective_time,
1011
1009
  "forLineage": False,
1012
1010
  "forDuplicateProcessing": False,
@@ -186,6 +186,9 @@ def parse_upsert_command(egeria_client: EgeriaTech, object_type: str, object_act
186
186
 
187
187
  elif style == 'GUID':
188
188
  parsed_attributes[key] = proc_simple_attribute(txt, object_action, labels, if_missing)
189
+ g = parsed_attributes[key].get('value', None)
190
+ if g and ("___" not in g and "---" not in g):
191
+ parsed_output['guid'] = parsed_attributes[key]['value']
189
192
  elif style == 'Ordered Int':
190
193
  parsed_attributes[key] = proc_simple_attribute(txt, object_action, labels, if_missing)
191
194
  elif style == 'Simple Int':
@@ -536,6 +539,10 @@ def proc_simple_attribute(txt: str, action: str, labels: set, if_missing: str =
536
539
 
537
540
  # attribute = default_value if attribute is None else attribute.replace('\n', '')
538
541
  attribute = default_value if attribute is None else attribute
542
+ if isinstance(attribute, str):
543
+ attribute = re.sub(r'\n+', '\n', attribute)
544
+ attribute = None if attribute.startswith('___') or attribute.startswith('---') else attribute
545
+
539
546
 
540
547
  if attribute is None:
541
548
  if if_missing == INFO or if_missing == WARNING:
@@ -51,7 +51,7 @@ GOVERNANCE_CONTROLS = ["Governance Control", "Governance Rule", "Service Level O
51
51
  ALL_GOVERNANCE_DEFINITIONS = GENERAL_GOVERNANCE_DEFINITIONS + GOVERNANCE_CONTROLS + ["Governance Strategy", "Regulation",
52
52
  "Security Group", "GovernanceMetric",
53
53
  "Naming Standard Rule", "TermsAndConditions", "Certification Type", "License Type"]
54
-
54
+ console = Console(width=EGERIA_WIDTH)
55
55
  debug_level = DEBUG_LEVEL
56
56
  global COMMAND_DEFINITIONS
57
57
 
@@ -521,7 +521,7 @@ def set_classifications(object_type: str, attributes: dict)->dict:
521
521
  classifications = attributes.get('Classifications', {}).get('name_list', None)
522
522
  body = None
523
523
  if classifications:
524
- body = {classification: {} for classification in classifications} if cclassifications else {}
524
+ body = {classification: {} for classification in classifications} if classifications else {}
525
525
  return body
526
526
 
527
527
  def set_object_classifications(object_type: str, attributes: dict, obj_types: list[str])->dict:
@@ -72,8 +72,6 @@ from ._output_formats import select_output_format_set
72
72
  from .mcp_adapter import list_reports, describe_report, run_report, _async_run_report, _execute_egeria_call_blocking
73
73
 
74
74
  #
75
- global template_guids, integration_guids
76
-
77
75
  # 2/12/25
78
76
 
79
77
  def __getattr__(name):
@@ -166,7 +166,7 @@ class Client2:
166
166
 
167
167
  try:
168
168
  result = self.check_connection()
169
- logger.info(f"client initialized, platform origin is: {result}")
169
+ logger.debug(f"client initialized, platform origin is: {result}")
170
170
  except PyegeriaConnectionException as e:
171
171
  raise
172
172
 
@@ -399,10 +399,10 @@ class Client2:
399
399
  response = await self._async_make_request("GET", origin_url, is_json=False)
400
400
  if response.status_code == 200:
401
401
  text = response.text.strip()
402
- logger.success(f"Got response from {origin_url}\n Response: {text}")
402
+ logger.debug(f"Got response from {origin_url}\n Response: {text}")
403
403
  return text
404
404
  else:
405
- logger.info(f"Got response from {origin_url}\n status_code: {response.status_code}")
405
+ logger.debug(f"Got response from {origin_url}\n status_code: {response.status_code}")
406
406
  return ""
407
407
 
408
408
 
@@ -1565,7 +1565,7 @@ class Client2:
1565
1565
  json_body = validated_body.model_dump_json(indent=2, exclude_none=True)
1566
1566
 
1567
1567
  response = await self._async_make_request("POST", url, json_body)
1568
- elements = response.json().get("element", NO_ELEMENTS_FOUND)
1568
+ elements = response.json().get("elements", NO_ELEMENTS_FOUND)
1569
1569
  if type(elements) is str:
1570
1570
  logger.info(NO_ELEMENTS_FOUND)
1571
1571
  return NO_ELEMENTS_FOUND
@@ -191,7 +191,6 @@ GLOSSARY_COLUMNS = COMMON_COLUMNS + [
191
191
  ]
192
192
 
193
193
  COLLECTIONS_COLUMNS = COMMON_COLUMNS + [
194
- Column(name='Type Name', key='type_name'),
195
194
  Column(name='Classifications', key='classifications'),
196
195
  Column(name="Created By", key='created_by'),
197
196
  Column(name="Create Time", key='create_time'),
@@ -298,6 +297,26 @@ base_output_format_sets = FormatSetDict({
298
297
  )
299
298
  ],
300
299
  ),
300
+ "TechTypeDetail": FormatSet(
301
+ target_type="TechTypeDetail",
302
+ heading="Technology Type Details",
303
+ description="Details of a Technology Type Valid Value.",
304
+ annotations={}, # No specific annotations
305
+ formats=[
306
+ Format(
307
+ types=["ALL"],
308
+ columns= [
309
+ Column(name='Display Name', key='display_name'),
310
+ Column(name="Qualified Name", key='qualified_name'),
311
+ Column(name="GUID", key='guid'),
312
+ Column(name="Description", key='description'),
313
+ Column(name="Catalog Template Placeholders", key='catalog_template_specs'),
314
+ Column(name="Reference URL", key='ref_url'),
315
+ ],
316
+ )
317
+ ],
318
+ ),
319
+
301
320
  "ExternalReference": FormatSet(
302
321
  target_type="External Reference",
303
322
  heading="External Reference Attributes",
@@ -531,6 +550,38 @@ base_output_format_sets = FormatSetDict({
531
550
  spec_params={"output_format": "DICT"},
532
551
  )
533
552
  ),
553
+ "Solution-Blueprint": FormatSet(
554
+ target_type="SolutionBlueprint",
555
+ heading="Solution Blueprint Report",
556
+ description="Details of a Solution Blueprint.",
557
+ aliases=[],
558
+ annotations={"Wikilinks": ["[[Solution-Blueprint]]"]},
559
+ formats=[
560
+ Format(
561
+ types=["DICT", "TABLE", "LIST", "MD", "FORM"],
562
+ columns=COLLECTIONS_MEMBERS_COLUMNS
563
+ ),
564
+ Format(
565
+ types=["REPORT", "HTML"],
566
+ columns=COLLECTIONS_MEMBERS_COLUMNS + [
567
+ Column(name="GUID", key='GUID'),
568
+ Column(name="Mermaid", key='mermaid'),
569
+ Column(name="Solution Blueprint Mermaid Graph", key='solutionBlueprintMermaidGraph'),
570
+ ]),
571
+ Format(
572
+ types=["MERMAID"],
573
+ columns= [
574
+ Column(name="Mermaid", key='mermaid'),
575
+ Column(name="Solution Blueprint Mermaid Graph", key='solutionBlueprintMermaidGraph'),
576
+ ])
577
+ ],
578
+ action=ActionParameter(
579
+ function="SolutionArchitect.find_solution_blueprints",
580
+ required_params=["search_string"],
581
+ optional_params=OPTIONAL_PARAMS,
582
+ spec_params={},
583
+ ),
584
+ ),
534
585
  "Digital-Product-Catalog": FormatSet(
535
586
  target_type="DigitalProductCatalog",
536
587
  heading="Catalogs for Digital Products",
@@ -2122,9 +2173,9 @@ generated_format_sets = FormatSetDict({
2122
2173
  Column(name='Category', key='category'),
2123
2174
  Column(name='Description', key='description'),
2124
2175
  Column(name='Status', key='element_status'),
2125
- Column(name='Solution Component Type', key='soln_comp_type'),
2176
+ Column(name='Solution Component Type', key='solution_component_type'),
2126
2177
  Column(name='Planned Deployed Implementation Type',
2127
- key='planned_deployed_impl_type'),
2178
+ key='planned_deployed_implementation_type'),
2128
2179
  Column(name='Initial Status', key='initial_status'),
2129
2180
  Column(name='In Solution Components', key='in_components'),
2130
2181
  Column(name='In Solution Blueprints', key='solution_blueprints'),