pyegeria 5.4.4.8__py3-none-any.whl → 5.4.6__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.
Files changed (211) hide show
  1. commands/cat/dr_egeria_command_help.py +0 -0
  2. commands/cat/exp_list_glossaries.py +0 -0
  3. commands/cat/get_collection.py +0 -0
  4. commands/cat/get_project_dependencies.py +0 -0
  5. commands/cat/get_project_structure.py +0 -0
  6. commands/cat/list_assets.py +0 -0
  7. commands/cat/list_cert_types.py +0 -0
  8. commands/cat/list_collections.py +0 -0
  9. commands/cat/list_data_designer.py +0 -0
  10. commands/cat/list_data_structures_full.py +0 -0
  11. commands/cat/list_deployed_servers.py +0 -0
  12. commands/cat/list_glossaries.py +0 -0
  13. commands/cat/list_projects.py +0 -0
  14. commands/cat/list_tech_types.py +0 -0
  15. commands/cat/list_terms.py +0 -0
  16. commands/cat/list_todos.py +0 -0
  17. commands/cli/egeria.py +0 -0
  18. commands/my/list_my_profile.py +0 -0
  19. commands/my/list_my_roles.py +0 -0
  20. commands/my/monitor_my_todos.py +0 -0
  21. commands/my/monitor_open_todos.py +0 -0
  22. commands/ops/list_archives.py +0 -0
  23. commands/ops/list_catalog_targets.py +0 -0
  24. commands/ops/monitor_asset_events.py +0 -0
  25. commands/ops/monitor_engine_activity.py +0 -0
  26. commands/ops/monitor_engine_activity_c.py +0 -0
  27. commands/ops/monitor_gov_eng_status.py +0 -0
  28. commands/ops/monitor_integ_daemon_status.py +0 -0
  29. commands/ops/monitor_platform_status.py +0 -0
  30. commands/ops/monitor_server_startup.py +0 -0
  31. commands/ops/monitor_server_status.py +0 -0
  32. commands/ops/orig_monitor_server_list.py +0 -0
  33. commands/ops/orig_monitor_server_status.py +0 -0
  34. commands/ops/table_integ_daemon_status.py +0 -0
  35. commands/tech/get_guid_info.py +0 -0
  36. commands/tech/get_tech_details.py +0 -0
  37. commands/tech/list_anchored_elements.py +0 -0
  38. commands/tech/list_asset_types.py +0 -0
  39. commands/tech/list_gov_action_processes.py +0 -0
  40. commands/tech/list_information_supply_chains.py +0 -0
  41. commands/tech/list_registered_services.py +0 -0
  42. commands/tech/list_relationship_types.py +0 -0
  43. commands/tech/list_relationships.py +0 -0
  44. commands/tech/list_solution_blueprints.py +0 -0
  45. commands/tech/list_solution_components.py +0 -0
  46. commands/tech/list_solution_roles.py +0 -0
  47. commands/tech/list_valid_metadata_values.py +0 -0
  48. md_processing/__init__.py +2 -0
  49. md_processing/dr_egeria.py +7 -4
  50. md_processing/md_commands/data_designer_commands.py +8 -3
  51. md_processing/md_commands/product_manager_commands.py +115 -12
  52. md_processing/md_commands/view_commands.py +3 -0
  53. md_processing/md_processing_utils/md_processing_constants.py +2 -1
  54. pyegeria/__init__.py +1 -0
  55. pyegeria/_client_new.py +1 -1
  56. pyegeria/_output_formats.py +50 -8
  57. pyegeria/automated_curation.py +122 -15
  58. pyegeria/collection_manager.py +28 -2
  59. pyegeria/data_designer.py +3 -3
  60. pyegeria/format_set_executor.py +159 -0
  61. pyegeria/mcp_adapter.py +110 -0
  62. pyegeria/mcp_server.py +176 -0
  63. pyegeria/project_manager.py +1 -1
  64. pyegeria/reference_data.py +1 -1
  65. pyegeria/x_action_author_omvs.py +1 -1
  66. {pyegeria-5.4.4.8.dist-info → pyegeria-5.4.6.dist-info}/METADATA +26 -29
  67. pyegeria-5.4.6.dist-info/RECORD +174 -0
  68. {pyegeria-5.4.4.8.dist-info → pyegeria-5.4.6.dist-info}/WHEEL +2 -1
  69. pyegeria-5.4.6.dist-info/entry_points.txt +105 -0
  70. pyegeria-5.4.6.dist-info/top_level.txt +3 -0
  71. commands/README.md +0 -47
  72. commands/cat/README.md +0 -16
  73. commands/cat/debug_log.2025-09-14_11-03-29_316193.log.zip +0 -0
  74. commands/cat/debug_log.2025-09-15_19-06-37_086464.log.zip +0 -0
  75. commands/cat/debug_log.2025-09-20_11-10-54_418109.log.zip +0 -0
  76. commands/cli/debug_log +0 -0
  77. commands/cli/txt_custom_v2.tcss +0 -19
  78. commands/doc/README.md +0 -145
  79. commands/doc/Visual Command Reference/README.md +0 -511
  80. commands/doc/Visual Command Reference/cat/show/assets/asset-graph 2024-11-20 at 15.56.42.png +0 -0
  81. commands/doc/Visual Command Reference/cat/show/assets/assets-in-domain 2024-11-20 at 15.49.55@2x.png +0 -0
  82. commands/doc/Visual Command Reference/cat/show/assets/elements-of-type 2024-11-20 at 16.01.35.png +0 -0
  83. commands/doc/Visual Command Reference/cat/show/assets/tech-type-elements 2024-11-20 at 16.05.05.png +0 -0
  84. commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs 2024-12-17 at 15.43.27@2x.png +0 -0
  85. commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs-2024-11-20 at 16.17.43@2x.png +0 -0
  86. commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-11-25 at 20.14.50@2x.png +0 -0
  87. commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-12-17 at 15.48.38@2x.png +0 -0
  88. commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-11-25 at 20.21.25@2x.png +0 -0
  89. commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-12-17 at 15.52.16@2x.png +0 -0
  90. commands/doc/Visual Command Reference/cat/show/deployed-data/deployed_databases 2024-12-16 at 16.40.31@2x.png +0 -0
  91. commands/doc/Visual Command Reference/cat/show/glossary/list-glossaries 2024-11-25 at 20.30.02.png +0 -0
  92. commands/doc/Visual Command Reference/cat/show/glossary/list-terms 2024-11-25 at 20.32.11.png +0 -0
  93. commands/doc/Visual Command Reference/cat/show/info/asset-types 2024-11-25 at 20.34.19@2x.png +0 -0
  94. commands/doc/Visual Command Reference/cat/show/info/certification-types 2024-11-25 at 20.37.07.png +0 -0
  95. commands/doc/Visual Command Reference/cat/show/info/collection-graph 2024-12-12 at 11.33.18@2x.png +0 -0
  96. commands/doc/Visual Command Reference/cat/show/info/list-collections 2024-12-10 at 14.25.51@2x.png +0 -0
  97. commands/doc/Visual Command Reference/cat/show/info/list-todos 2024-12-12 at 11.46.30@2x.png +0 -0
  98. commands/doc/Visual Command Reference/cat/show/info/list-user-ids 2024-12-12 at 11.51.09@2x.png +0 -0
  99. commands/doc/Visual Command Reference/cat/show/info/tech-types 2024-12-12 at 11.37.20@2x.png +0 -0
  100. commands/doc/Visual Command Reference/cat/show/projects/project_dependencies 2024-12-14 at 16.24.39@2x.png +0 -0
  101. commands/doc/Visual Command Reference/cat/show/projects/project_structure 2024-12-14 at 16.21.35@2x.png +0 -0
  102. commands/doc/Visual Command Reference/cat/show/projects/projects 2024-12-14 at 16.18.10@2x.png +0 -0
  103. commands/doc/Visual Command Reference/hey_egeria tui 2024-12-16 at 16.58.22@2x.png +0 -0
  104. commands/doc/Visual Command Reference/my/show/my_profile 2024-12-14 at 16.29.27@2x.png +0 -0
  105. commands/doc/Visual Command Reference/my/show/my_roles 2024-12-14 at 16.32.10@2x.png +0 -0
  106. commands/doc/Visual Command Reference/my/show/my_todos 2024-12-15 at 16.24.13@2x.png +0 -0
  107. commands/doc/Visual Command Reference/my/show/open_todos 2024-12-14 at 16.36.12@2x.png +0 -0
  108. commands/doc/Visual Command Reference/ops/show/engines/list_engine_activity compressed 2024-12-15 at 16.48.48@2x.png +0 -0
  109. commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity 2024-12-15 at 16.32.55@2x.png +0 -0
  110. commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity compressed 2024-12-15 at 16.38.29@2x.png +0 -0
  111. commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_status 2024-12-15 at 16.51.26.jpeg +0 -0
  112. commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_daemon_status 2024-12-15 at 16.57.12@2x.png +0 -0
  113. commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_targets 2024-12-15 at 17.02.19@2x.png +0 -0
  114. commands/doc/Visual Command Reference/ops/show/platforms/monitor_platform_status 2024-12-15 at 19.53.18@2x.png +0 -0
  115. commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status 2024-12-15 at 19.59.39@2x.png +0 -0
  116. commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status full 2024-12-15 at 20.01.57@2x.png +0 -0
  117. commands/doc/Visual Command Reference/ops/show/servers/monitor_startup_servers 2024-12-15 at 19.56.07@2x.png +0 -0
  118. commands/doc/Visual Command Reference/tech/show/elements/get_anchored_elements 2024-12-15 at 21.25.41@2x.png +0 -0
  119. commands/doc/Visual Command Reference/tech/show/elements/get_elements_of_om_type 2024-12-16 at 14.39.59@2x.png +0 -0
  120. commands/doc/Visual Command Reference/tech/show/elements/info_for_guid 2024-12-16 at 11.35.29@2x.png +0 -0
  121. commands/doc/Visual Command Reference/tech/show/elements/list_elements_by_om-type 2024-12-16 at 14.24.18@2x.png +0 -0
  122. 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
  123. 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
  124. commands/doc/Visual Command Reference/tech/show/elements/related_elements 2024-12-16 at 14.55.01@2x.png +0 -0
  125. commands/doc/Visual Command Reference/tech/show/elements/show_related_specifications 2024-12-16 at 15.04.55@2x.png +0 -0
  126. commands/doc/Visual Command Reference/tech/show/tech-info/asset_types 2024-12-16 at 15.10.16@2x.png +0 -0
  127. commands/doc/Visual Command Reference/tech/show/tech-info/detailed_governance_action_processes 2024-12-16 at 15.16.26@2x.png +0 -0
  128. commands/doc/Visual Command Reference/tech/show/tech-info/governance_action_processes 2024-12-16 at 15.13.01@2x.png +0 -0
  129. commands/doc/Visual Command Reference/tech/show/tech-info/registered_services 2024-12-16 at 16.44.54@2x.png +0 -0
  130. commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-16 at 16.20.34@2x.png +0 -0
  131. commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-19 at 10.51.54@2x.png +0 -0
  132. commands/doc/Visual Command Reference/tech/show/tech-info/valid_metadata_values 2024-12-16 at 15.31.56@2x.png +0 -0
  133. 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
  134. commands/doc/Visual Command Reference/tech/show/tech-types/list_technology_types 2024-12-16 at 15.39.20@2x.png +0 -0
  135. commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_details 2024-12-16 at 15.37.21@2x.png +0 -0
  136. commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_templates 2024-12-16 at 16.11.48@2x.png +0 -0
  137. commands/doc/glossary/basic-glossary-tui.md +0 -109
  138. commands/doc/glossary/images/delete-glossary-step1 2024-11-06 at 15.47.23@2x.png +0 -0
  139. commands/doc/glossary/images/delete-glossary-step2 2024-11-06 at 15.51.29@2x.png +0 -0
  140. commands/doc/glossary/images/delete-glossary-step3 2024-11-06 at 15.53.19@2x.png +0 -0
  141. commands/doc/glossary/images/delete-glossary-step4 2024-11-06 at 15.55.11@2x.png +0 -0
  142. commands/doc/glossary/images/out-create-glossary example 2024-11-05 at 20.38.04@2x.png +0 -0
  143. commands/doc/glossary/images/out-create-term 2024-11-06 at 20.48.29.png +0 -0
  144. commands/doc/glossary/images/out-delete-term 2024-11-07 at 03.57.25.png +0 -0
  145. commands/doc/glossary/images/out-display-terms-for-glossary-test 2024-11-06 at 20.51.28.png +0 -0
  146. commands/doc/glossary/images/out-export-example 2024-11-07 at 09.54.57.png +0 -0
  147. commands/doc/glossary/images/out-exported-terms 2024-11-06 at 21.06.32.png +0 -0
  148. commands/doc/glossary/images/out-glossary-list example 2024-11-05 at 20.41.02@2x.png +0 -0
  149. commands/doc/glossary/images/out-import-terms 2024-11-07 at 08.15.18.png +0 -0
  150. commands/doc/glossary/images/out-list-all-terms 2024-11-06 at 16.22.20@2x.png +0 -0
  151. commands/doc/glossary/images/out-list-terms-for-example 2024-11-06 at 16.40.12.png +0 -0
  152. commands/doc/glossary/images/out-list-terms-second 2024-11-06 at 16.45.13.png +0 -0
  153. commands/doc/glossary/images/out-pipx install pyegeria 2024-11-10 at 18.12.21.png +0 -0
  154. commands/doc/glossary/images/out-server-status-full 2024-11-10 at 18.25.14.png +0 -0
  155. commands/doc/glossary/images/out-servers-status 2024-11-10 at 18.15.42.png +0 -0
  156. commands/doc/glossary/images/out-upsert-import 2024-11-07 at 19.37.00.png +0 -0
  157. commands/doc/glossary/images/tui-2024-11-10 at 18.26.29.png +0 -0
  158. commands/doc/glossary/images/tui-create-glossary example 2024-11-05 at 20.34.24@2x.png +0 -0
  159. commands/doc/glossary/images/tui-create-term 2024-11-06 at 20.46.35.png +0 -0
  160. commands/doc/glossary/images/tui-delete-term 2024-11-07 at 03.51.57.png +0 -0
  161. commands/doc/glossary/images/tui-display-terms-for-example 2024-11-06 at 20.56.49.png +0 -0
  162. commands/doc/glossary/images/tui-export-example 2024-11-07 at 09.52.59.png +0 -0
  163. commands/doc/glossary/images/tui-hey-egeria 2024-11-10 at 18.31.01.png +0 -0
  164. commands/doc/glossary/images/tui-import-upsert-example 2024-11-07 at 10.08.37.png +0 -0
  165. commands/doc/glossary/images/tui-list-terms-second 2024-11-06 at 16.46.34.png +0 -0
  166. commands/doc/glossary/images/tui-load-archive.png +0 -0
  167. commands/doc/glossary/images/tui-server-status-full 2024-11-10 at 19.14.36.png +0 -0
  168. commands/doc/glossary/images/tui-show-glossaries 2024-11-07 at 20.00.05.png +0 -0
  169. commands/doc/glossary/images/tui-show-glossary-terms 2024-11-05 at 19.37.53@2x.png +0 -0
  170. commands/doc/glossary/images/tui-upsert 2024-11-07 at 11.49.04.png +0 -0
  171. commands/doc/glossary/images/upsert-example.om-terms 2024-11-07 at 11.44.05.png +0 -0
  172. commands/doc/hey_egeria: a pyegeria command line interface/README.md +0 -346
  173. commands/doc/hey_egeria: a pyegeria command line interface/images/CleanShot 2024-11-18 at 21.32.03@2x.png +0 -0
  174. commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731421782704.png +0 -0
  175. commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731422134920.png +0 -0
  176. commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria 2024-11-12 at 20.38.43.png +0 -0
  177. commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria cat 2024-11-12 at 21.41.43.png +0 -0
  178. commands/doc/hey_egeria: a pyegeria command line interface/images/out-integ-status-list 2024-11-12 at 16.45.26.png +0 -0
  179. 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
  180. commands/doc/hey_egeria: a pyegeria command line interface/images/out-server-status 2024-11-10 at 18.15.42@2x.png +0 -0
  181. 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
  182. commands/doc/hey_egeria: a pyegeria command line interface/images/short-cut commands 2024-11-12 at 22.22.13.png +0 -0
  183. commands/doc/hey_egeria: a pyegeria command line interface/images/tui-hey-egeria.png +0 -0
  184. commands/doc/hey_egeria: a pyegeria command line interface/images/tui-integration-status-paging.png +0 -0
  185. commands/doc/hey_egeria: a pyegeria command line interface/images/tui-load-archive 2024-11-10 at 19.19.09@2x.png +0 -0
  186. 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
  187. commands/doc/hey_egeria: a pyegeria command line interface/images/tui-show-server-status-full 2024-11-10.png +0 -0
  188. commands/doc/hey_egeria: a pyegeria command line interface/images/tui-status-paging 2024-11-12 at 16.26.14@2x.png +0 -0
  189. commands/my/README.md +0 -17
  190. commands/ops/README.md +0 -24
  191. commands/tech/README.md +0 -24
  192. md_processing/.obsidian/app.json +0 -1
  193. md_processing/.obsidian/appearance.json +0 -1
  194. md_processing/.obsidian/community-plugins.json +0 -1
  195. md_processing/.obsidian/core-plugins.json +0 -33
  196. md_processing/.obsidian/workspace.json +0 -167
  197. md_processing/data/commands-working.json +0 -34850
  198. md_processing/data/commands.json +0 -51697
  199. md_processing/data/generated_format_sets.json +0 -4137
  200. md_processing/dr-egeria-outbox/DataStruct-DrE-2025-09-19-22-35-57.md +0 -46
  201. md_processing/dr-egeria-outbox/Digital Products-2025-09-21-16-52-50.md +0 -51
  202. md_processing/dr-egeria-outbox/Digital-Product-Catalog-2025-09-21-16-55-19.md +0 -77
  203. md_processing/dr_egeria_inbox/glossary_creation_experiment.ipynb +0 -341
  204. md_processing/md_processing_utils/debug_log +0 -84
  205. md_processing/md_processing_utils/dr-egeria-help-2025-09-09T11:10:03.md +0 -3305
  206. md_processing/md_processing_utils/dr-egeria-help-2025-09-10T14:49:49.md +0 -3460
  207. md_processing/md_processing_utils/dr-egeria-help-2025-09-10T14:57:46.md +0 -472
  208. pyegeria/README.md +0 -35
  209. pyegeria-5.4.4.8.dist-info/RECORD +0 -308
  210. pyegeria-5.4.4.8.dist-info/entry_points.txt +0 -105
  211. {pyegeria-5.4.4.8.dist-info → pyegeria-5.4.6.dist-info/licenses}/LICENSE +0 -0
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
File without changes
File without changes
File without changes
commands/cli/egeria.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
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
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
@@ -12,8 +12,8 @@ from .md_commands.project_commands import process_link_project_dependency_comman
12
12
 
13
13
  log_format = "{time} | {level} | {function} | {line} | {message} | {extra}"
14
14
  logger.remove()
15
- logger.add(sys.stderr, level="INFO", format=log_format, colorize=True)
16
- logger.add("debug_log.log", rotation="1 day", retention="1 week", compression="zip", level="TRACE", format=log_format,
15
+ logger.add(sys.stderr, level="ERROR", format=log_format, colorize=True)
16
+ logger.add("debug_log.log", rotation="1 day", retention="1 week", compression="zip", level="INFO", format=log_format,
17
17
  colorize=True)
18
18
 
19
19
  from rich import print
@@ -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:
@@ -1,6 +1,11 @@
1
- """
1
+ """PDX-License-Identifier: Apache-2.0
2
+ Copyright Contributors to the ODPi Egeria project.
3
+
2
4
  This file contains term-related object_action functions for processing Egeria Markdown
5
+
6
+
3
7
  """
8
+
4
9
  import json
5
10
  import os
6
11
  import sys
@@ -453,7 +458,7 @@ def process_data_spec_upsert_command(egeria_client: EgeriaTech, txt: str, direct
453
458
  in_data_spec_valid = attributes.get('In Data Specification', {}).get('valid', None)
454
459
  in_data_spec_exists = attributes.get('In Data Specification', {}).get('exists', None)
455
460
  output_set = make_format_set_name_from_type(object_type)
456
-
461
+ object_type = "DataSpec"
457
462
  print(Markdown(parsed_output['display']))
458
463
 
459
464
  if directive == "display":
@@ -482,7 +487,7 @@ def process_data_spec_upsert_command(egeria_client: EgeriaTech, txt: str, direct
482
487
  f"==> Validation of {command} completed successfully! Proceeding to apply the changes.\n"))
483
488
 
484
489
  body = set_update_body(object_type, attributes)
485
- body['properties'] = set_element_prop_body("Data Spec", qualified_name, attributes)
490
+ body['properties'] = set_element_prop_body(object_type, qualified_name, attributes)
486
491
 
487
492
  egeria_client.update_collection(guid, body)
488
493
  if status:
@@ -174,16 +174,29 @@ def process_collection_upsert_command(egeria_client: EgeriaTech, txt: str, direc
174
174
 
175
175
  guid = parsed_output.get('guid', None)
176
176
 
177
- print(Markdown(parsed_output['display']))
177
+
178
178
 
179
179
  logger.debug(json.dumps(parsed_output, indent=4))
180
180
 
181
181
  attributes = parsed_output['attributes']
182
182
 
183
183
  display_name = attributes['Display Name'].get('value', None)
184
+ version = attributes['Version Identifier'].get('value', None)
184
185
  status = attributes.get('Status', {}).get('value', None)
185
186
  output_set = make_format_set_name_from_type(object_type)
187
+ if object_type in ["Root Collection", "Folder"]:
188
+ obj = "Collection"
189
+ if object_type == "Folder":
190
+ qn_prefix = "Folder"
191
+ elif object_type == "Root Collection":
192
+ qn_prefix = "Root"
193
+
194
+ qualified_name = egeria_client.__create_qualified_name__(qn_prefix, display_name, LOCAL_QUALIFIER,
195
+ version_identifier=version)
186
196
 
197
+ else:
198
+ obj = object_type
199
+ print(Markdown(parsed_output['display']))
187
200
 
188
201
  if directive == "display":
189
202
 
@@ -197,17 +210,7 @@ def process_collection_upsert_command(egeria_client: EgeriaTech, txt: str, direc
197
210
 
198
211
  elif directive == "process":
199
212
  try:
200
- if object_type in ["Root Collection", "Folder"]:
201
- obj = "Collection"
202
- if object_type == "Folder":
203
- qn_prefix = "Folder"
204
- elif object_type == "Root Collection":
205
- qn_prefix = "Root"
206
213
 
207
- qualified_name = egeria_client.__create_qualified_name__(qn_prefix, element_name, LOCAL_QUALIFIER, version_identifier=version)
208
-
209
- else:
210
- obj = object_type
211
214
 
212
215
  if object_action == "Update":
213
216
  if not exists:
@@ -262,7 +265,7 @@ def process_collection_upsert_command(egeria_client: EgeriaTech, txt: str, direc
262
265
  })
263
266
  msg = f"\nCreated Element `{display_name}` with GUID {guid}\n\n___"
264
267
  # todo - add the source member asset to the product manager
265
- # create_element_from_template
268
+ # create_elem_from_template
266
269
  # add this guid to the product collection
267
270
  logger.success(msg)
268
271
  return egeria_client.get_collection_by_guid(guid, obj, output_format='MD', output_format_set=output_set)
@@ -628,6 +631,106 @@ def process_agreement_upsert_command(egeria_client: EgeriaTech, txt: str, direct
628
631
 
629
632
 
630
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
+
631
734
 
632
735
 
633
736
  def process_link_agreement_item_command(egeria_client: EgeriaTech, txt: str,
@@ -230,6 +230,9 @@ def process_output_command(egeria_client: EgeriaTech, txt: str, directive: str =
230
230
  print(Markdown(f"# {command}\n"))
231
231
 
232
232
  parsed_output = parse_view_command(egeria_client, object_type, object_action, txt, directive)
233
+ if parsed_output is None:
234
+ logger.error(f"No valid output found for command '{command}'.")
235
+ return None
233
236
 
234
237
  attributes = parsed_output['attributes']
235
238
 
@@ -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 _async_create_elem_from_template(self, url: str, body: dict | TemplateRequestBody = None) -> str:
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)
@@ -581,6 +581,9 @@ base_output_format_sets = FormatSetDict({
581
581
  Column(name='Members', key='members', format=True),
582
582
  Column(name='Uses Products', key='uses_digital_products'),
583
583
  Column(name='Used by Products', key='used_by_digital_products'),
584
+ Column(name='Product Manager', key='assigned_actors'),
585
+ Column(name='License', key='governed_by'),
586
+ Column(name='Solution Blueprint', key='solution_designs'),
584
587
  ]),
585
588
  Format(
586
589
  types=[ "REPORT", "HTML"],
@@ -595,6 +598,9 @@ base_output_format_sets = FormatSetDict({
595
598
  Column(name='Members', key='members', format=True),
596
599
  Column(name='Uses Products', key='uses_digital_products'),
597
600
  Column(name='Used by Products', key='used_by_digital_products'),
601
+ Column(name='Product Manager', key='assigned_actors'),
602
+ Column(name='License', key='governed_by'),
603
+ Column(name='Solution Blueprint', key='solution_designs'),
598
604
  Column(name="Mermaid",key = "mermaid")
599
605
  ],
600
606
  )
@@ -1163,7 +1169,7 @@ generated_format_sets = FormatSetDict({
1163
1169
  'metadata_element_types': ['DataDictionary']})),
1164
1170
  'Data-Field-DrE': FormatSet(target_type='Data-Field-DrE', heading='Data-Field-DrE Attributes',
1165
1171
  description='Auto-generated format for Data Field (Create).', formats=[
1166
- Format(types=['ALL'], columns=[Column(name='Display Name', key='display_name'),
1172
+ Format(types=['ALL', 'MD'], columns=[Column(name='Display Name', key='display_name'),
1167
1173
  Column(name='Description', key='description'),
1168
1174
  Column(name='Category', key='category'),
1169
1175
  Column(name='Status', key='element_status'),
@@ -2173,15 +2179,16 @@ output_format_sets = combine_format_set_dicts(base_output_format_sets, generated
2173
2179
 
2174
2180
  def select_output_format_set(kind: str, output_type: str) -> dict | None:
2175
2181
  """
2176
- This function retrieves the appropriate output set configuration dictionary based on the `kind` and `output_type`.
2177
- 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`.
2178
2183
 
2179
- :param kind: The kind of output set (e.g., "Referenceable", "Collections").
2180
- :param output_type: The desired output format type (e.g., "DICT", "LIST", "REPORT").
2181
- :return: The matched output set dictionary or None if no match is found.
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(...).
2182
2188
 
2183
- Returns:
2184
- dict | None:
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.
2185
2192
  """
2186
2193
  # Normalize the output type to uppercase for consistency
2187
2194
  output_type = output_type.upper()
@@ -2250,6 +2257,41 @@ def output_format_set_list() -> list[str]:
2250
2257
  return list(output_format_sets.keys())
2251
2258
 
2252
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
+
2253
2295
  def get_output_format_set_heading(format_set: str) -> str:
2254
2296
  """
2255
2297
  Gets the heading of a format set.