pyegeria 5.4.0.28__py3-none-any.whl → 5.5.3.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyegeria might be problematic. Click here for more details.

Files changed (433) hide show
  1. commands/__init__.py +24 -0
  2. commands/cat/Dr-Egeria_md-orig.py +2 -2
  3. commands/cat/collection_actions.py +197 -0
  4. commands/cat/dr_egeria_command_help.py +137 -38
  5. commands/cat/dr_egeria_jupyter.py +7 -7
  6. commands/cat/dr_egeria_md.py +10 -267
  7. commands/cat/exp_list_glossaries.py +11 -14
  8. commands/cat/get_asset_graph.py +37 -267
  9. commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
  10. commands/cat/get_project_dependencies.py +14 -14
  11. commands/cat/get_project_structure.py +15 -14
  12. commands/cat/get_tech_type_elements.py +16 -116
  13. commands/cat/glossary_actions.py +145 -298
  14. commands/cat/list_assets.py +3 -11
  15. commands/cat/list_cert_types.py +17 -63
  16. commands/cat/list_collections.py +17 -139
  17. commands/cat/list_deployed_catalogs.py +15 -27
  18. commands/cat/list_deployed_database_schemas.py +27 -43
  19. commands/cat/list_deployed_databases.py +16 -31
  20. commands/cat/list_deployed_servers.py +35 -54
  21. commands/cat/list_glossaries.py +18 -17
  22. commands/cat/list_projects.py +10 -12
  23. commands/cat/list_tech_type_elements.py +21 -37
  24. commands/cat/list_tech_types.py +13 -25
  25. commands/cat/list_terms.py +38 -79
  26. commands/cat/list_todos.py +4 -11
  27. commands/cat/list_user_ids.py +3 -10
  28. commands/cat/my_reports.py +559 -0
  29. commands/cat/run_report.py +394 -0
  30. commands/cat/{list_format_set.py → run_report_orig.py} +136 -44
  31. commands/cli/egeria.py +182 -219
  32. commands/cli/egeria_cat.py +32 -59
  33. commands/cli/egeria_my.py +13 -0
  34. commands/cli/egeria_ops.py +69 -74
  35. commands/cli/egeria_tech.py +17 -93
  36. commands/{cat → deprecated}/list_data_designer.py +2 -4
  37. commands/{cat → deprecated}/list_data_structures_full.py +3 -6
  38. commands/deprecated/old_get_asset_graph.py +315 -0
  39. commands/my/__init__.py +0 -2
  40. commands/my/list_my_profile.py +27 -34
  41. commands/my/list_my_roles.py +1 -7
  42. commands/my/monitor_my_todos.py +1 -7
  43. commands/my/monitor_open_todos.py +6 -7
  44. commands/my/todo_actions.py +4 -5
  45. commands/ops/__init__.py +0 -2
  46. commands/ops/gov_server_actions.py +17 -21
  47. commands/ops/list_archives.py +17 -38
  48. commands/ops/list_catalog_targets.py +33 -40
  49. commands/ops/load_archive.py +14 -11
  50. commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
  51. commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
  52. commands/ops/monitor_engine_activity.py +79 -77
  53. commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
  54. commands/ops/monitor_platform_status.py +38 -50
  55. commands/ops/monitor_server_startup.py +6 -11
  56. commands/ops/monitor_server_status.py +7 -11
  57. commands/ops/orig_monitor_server_list.py +8 -8
  58. commands/ops/orig_monitor_server_status.py +1 -5
  59. commands/ops/refresh_integration_daemon.py +5 -5
  60. commands/ops/restart_integration_daemon.py +5 -5
  61. commands/ops/table_integ_daemon_status.py +6 -6
  62. commands/ops/x_engine_actions.py +7 -7
  63. commands/tech/__init__.py +0 -2
  64. commands/tech/{generic_actions.py → element_actions.py} +6 -11
  65. commands/tech/get_element_info.py +20 -29
  66. commands/tech/get_guid_info.py +23 -42
  67. commands/tech/get_tech_details.py +20 -35
  68. commands/tech/get_tech_type_template.py +28 -39
  69. commands/tech/list_all_om_type_elements.py +24 -30
  70. commands/tech/list_all_om_type_elements_x.py +22 -28
  71. commands/tech/list_all_related_elements.py +19 -28
  72. commands/tech/list_anchored_elements.py +22 -30
  73. commands/tech/list_asset_types.py +19 -24
  74. commands/tech/list_elements_by_classification_by_property_value.py +26 -32
  75. commands/tech/list_elements_by_property_value.py +19 -25
  76. commands/tech/list_elements_by_property_value_x.py +20 -28
  77. commands/tech/list_elements_for_classification.py +28 -41
  78. commands/tech/list_gov_action_processes.py +16 -27
  79. commands/tech/list_information_supply_chains.py +22 -30
  80. commands/tech/list_registered_services.py +14 -26
  81. commands/tech/list_related_elements_with_prop_value.py +15 -25
  82. commands/tech/list_related_specification.py +1 -4
  83. commands/tech/list_relationship_types.py +15 -25
  84. commands/tech/list_relationships.py +20 -36
  85. commands/tech/list_solution_blueprints.py +28 -33
  86. commands/tech/list_solution_components.py +23 -29
  87. commands/tech/list_solution_roles.py +21 -32
  88. commands/tech/list_tech_templates.py +51 -54
  89. commands/tech/list_valid_metadata_values.py +5 -9
  90. commands/tech/table_tech_templates.py +2 -6
  91. commands/tech/x_list_related_elements.py +1 -4
  92. examples/GeoSpatial Products Example.py +524 -0
  93. examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
  94. examples/Jupyter Notebooks/README.md +2 -0
  95. examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
  96. examples/Jupyter Notebooks/common/__init__.py +14 -0
  97. examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
  98. examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
  99. examples/Jupyter Notebooks/common/globals.ipynb +184 -0
  100. examples/Jupyter Notebooks/common/globals.py +154 -0
  101. examples/Jupyter Notebooks/common/orig_globals.py +152 -0
  102. examples/format_sets/all_format_sets.json +910 -0
  103. examples/format_sets/custom_format_sets.json +268 -0
  104. examples/format_sets/subset_format_sets.json +187 -0
  105. examples/format_sets_save_load_example.py +291 -0
  106. examples/jacquard_data_sets.py +129 -0
  107. examples/output_formats_example.py +193 -0
  108. examples/test_jacquard_data_sets.py +54 -0
  109. examples/test_jacquard_data_sets_scenarios.py +94 -0
  110. md_processing/__init__.py +33 -24
  111. md_processing/command_dispatcher.py +33 -0
  112. md_processing/command_mapping.py +221 -0
  113. md_processing/data/commands/commands_data_designer.json +537 -0
  114. md_processing/data/commands/commands_external_reference.json +733 -0
  115. md_processing/data/commands/commands_feedback.json +155 -0
  116. md_processing/data/commands/commands_general.json +204 -0
  117. md_processing/data/commands/commands_glossary.json +218 -0
  118. md_processing/data/commands/commands_governance.json +3678 -0
  119. md_processing/data/commands/commands_product_manager.json +865 -0
  120. md_processing/data/commands/commands_project.json +642 -0
  121. md_processing/data/commands/commands_solution_architect.json +366 -0
  122. md_processing/data/commands.json +6489 -30060
  123. md_processing/data/{commands-working.json → commands_working.json} +9304 -13513
  124. md_processing/data/gened_report_specs.py +6584 -0
  125. md_processing/data/generated_format_sets.json +6533 -0
  126. md_processing/data/generated_format_sets_old.json +4137 -0
  127. md_processing/data/generated_format_sets_old.py +45 -0
  128. md_processing/dr_egeria.py +182 -0
  129. md_processing/md_commands/data_designer_commands.py +195 -583
  130. md_processing/md_commands/ext_ref_commands.py +530 -0
  131. md_processing/md_commands/feedback_commands.py +726 -0
  132. md_processing/md_commands/glossary_commands.py +106 -490
  133. md_processing/md_commands/governance_officer_commands.py +129 -18
  134. md_processing/md_commands/product_manager_commands.py +362 -115
  135. md_processing/md_commands/project_commands.py +351 -134
  136. md_processing/md_commands/solution_architect_commands.py +276 -232
  137. md_processing/md_commands/view_commands.py +295 -0
  138. md_processing/md_processing_utils/common_md_proc_utils.py +258 -166
  139. md_processing/md_processing_utils/common_md_utils.py +138 -43
  140. md_processing/md_processing_utils/determine_width.py +103 -0
  141. md_processing/md_processing_utils/extraction_utils.py +100 -39
  142. md_processing/md_processing_utils/gen_report_specs.py +643 -0
  143. md_processing/md_processing_utils/generate_dr_help.py +61 -33
  144. md_processing/md_processing_utils/generate_md_cmd_templates.py +20 -19
  145. md_processing/md_processing_utils/generate_md_templates.py +3 -12
  146. md_processing/md_processing_utils/md_processing_constants.py +1053 -72
  147. pyegeria/__init__.py +203 -158
  148. pyegeria/core/__init__.py +40 -0
  149. pyegeria/core/_base_platform_client.py +574 -0
  150. pyegeria/core/_base_server_client.py +573 -0
  151. pyegeria/{_exceptions_new.py → core/_exceptions.py} +62 -30
  152. pyegeria/{_globals.py → core/_globals.py} +14 -3
  153. pyegeria/core/_server_client.py +6073 -0
  154. pyegeria/{_validators.py → core/_validators.py} +7 -8
  155. pyegeria/core/config.py +654 -0
  156. pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
  157. pyegeria/core/load_config.py +37 -0
  158. pyegeria/{logging_configuration.py → core/logging_configuration.py} +1 -1
  159. pyegeria/core/mcp_adapter.py +144 -0
  160. pyegeria/core/mcp_server.py +212 -0
  161. pyegeria/core/utils.py +405 -0
  162. pyegeria/{_client.py → deprecated/_client.py} +24 -25
  163. pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
  164. pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1987 -1877
  165. pyegeria/{output_formatter.py → deprecated/output_formatter_with_machine_keys.py} +298 -45
  166. pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +155 -171
  167. pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
  168. pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
  169. pyegeria/egeria_cat_client.py +26 -70
  170. pyegeria/egeria_client.py +130 -93
  171. pyegeria/egeria_config_client.py +40 -46
  172. pyegeria/egeria_tech_client.py +141 -54
  173. pyegeria/models/__init__.py +150 -0
  174. pyegeria/{models.py → models/models.py} +156 -20
  175. pyegeria/omvs/__init__.py +84 -0
  176. pyegeria/omvs/action_author.py +342 -0
  177. pyegeria/omvs/actor_manager.py +5980 -0
  178. pyegeria/omvs/asset_catalog.py +842 -0
  179. pyegeria/omvs/asset_maker.py +2736 -0
  180. pyegeria/omvs/automated_curation.py +4403 -0
  181. pyegeria/omvs/classification_manager.py +11213 -0
  182. pyegeria/{collection_manager.py → omvs/collection_manager.py} +1334 -1160
  183. pyegeria/omvs/community_matters_omvs.py +468 -0
  184. pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
  185. pyegeria/{data_designer.py → omvs/data_designer.py} +1115 -660
  186. pyegeria/omvs/data_discovery.py +869 -0
  187. pyegeria/omvs/data_engineer.py +372 -0
  188. pyegeria/omvs/digital_business.py +1133 -0
  189. pyegeria/omvs/external_links.py +1752 -0
  190. pyegeria/omvs/feedback_manager.py +834 -0
  191. pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
  192. pyegeria/{glossary_manager.py → omvs/glossary_manager.py} +857 -519
  193. pyegeria/{governance_officer.py → omvs/governance_officer.py} +964 -468
  194. pyegeria/omvs/lineage_linker.py +314 -0
  195. pyegeria/omvs/location_arena.py +1525 -0
  196. pyegeria/omvs/metadata_expert.py +668 -0
  197. pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
  198. pyegeria/omvs/my_profile.py +1042 -0
  199. pyegeria/omvs/notification_manager.py +358 -0
  200. pyegeria/omvs/people_organizer.py +394 -0
  201. pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
  202. pyegeria/omvs/product_manager.py +1825 -0
  203. pyegeria/omvs/project_manager.py +1907 -0
  204. pyegeria/omvs/reference_data.py +1140 -0
  205. pyegeria/omvs/registered_info.py +334 -0
  206. pyegeria/omvs/runtime_manager.py +2817 -0
  207. pyegeria/omvs/schema_maker.py +446 -0
  208. pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
  209. pyegeria/{solution_architect_omvs.py → omvs/solution_architect.py} +1886 -1505
  210. pyegeria/omvs/specification_properties.py +37 -0
  211. pyegeria/omvs/subject_area.py +1042 -0
  212. pyegeria/omvs/template_manager_omvs.py +236 -0
  213. pyegeria/omvs/time_keeper.py +1761 -0
  214. pyegeria/omvs/valid_metadata.py +3221 -0
  215. pyegeria/omvs/valid_metadata_lists.py +37 -0
  216. pyegeria/omvs/valid_type_lists.py +37 -0
  217. pyegeria/view/__init__.py +28 -0
  218. pyegeria/{_output_format_models.py → view/_output_format_models.py} +160 -24
  219. pyegeria/view/_output_formats.py +14 -0
  220. pyegeria/view/base_report_formats.py +2719 -0
  221. pyegeria/view/dr_egeria_reports.py +56 -0
  222. pyegeria/view/format_set_executor.py +397 -0
  223. pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
  224. pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
  225. pyegeria/view/output_formatter.py +1297 -0
  226. pyegeria-5.5.3.3.dist-info/METADATA +218 -0
  227. pyegeria-5.5.3.3.dist-info/RECORD +241 -0
  228. {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
  229. pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
  230. pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
  231. commands/cat/.DS_Store +0 -0
  232. commands/cat/.env +0 -8
  233. commands/cat/README.md +0 -16
  234. commands/cat/debug_log +0 -1126
  235. commands/cat/debug_log.2025-08-18_11-34-38_088636.zip +0 -0
  236. commands/cat/list_categories.py +0 -192
  237. commands/cat/logs/pyegeria.log +0 -4
  238. commands/cli/debug_log +0 -0
  239. commands/cli/debug_log.log +0 -0
  240. commands/cli/txt_custom_v2.tcss +0 -19
  241. commands/my/README.md +0 -17
  242. commands/ops/README.md +0 -24
  243. commands/ops/logs/pyegeria.log +0 -0
  244. commands/ops/monitor_asset_events.py +0 -108
  245. commands/tech/README.md +0 -24
  246. md_processing/.DS_Store +0 -0
  247. md_processing/dr-egeria-outbox/Collections-2025-08-12-13-30-37.md +0 -163
  248. md_processing/dr-egeria-outbox/Collections-2025-08-12-13-35-58.md +0 -474
  249. md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +0 -8
  250. md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +0 -873
  251. md_processing/dr_egeria_inbox/arch_test.md +0 -57
  252. md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +0 -254
  253. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +0 -696
  254. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +0 -254
  255. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +0 -298
  256. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +0 -608
  257. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +0 -94
  258. md_processing/dr_egeria_inbox/archive/freddie_intro.md +0 -284
  259. md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +0 -275
  260. md_processing/dr_egeria_inbox/archive/test-term.md +0 -110
  261. md_processing/dr_egeria_inbox/cat_test.md +0 -100
  262. md_processing/dr_egeria_inbox/collections.md +0 -39
  263. md_processing/dr_egeria_inbox/data_designer_debug.log +0 -6
  264. md_processing/dr_egeria_inbox/data_designer_out.md +0 -60
  265. md_processing/dr_egeria_inbox/data_designer_search_test.md +0 -11
  266. md_processing/dr_egeria_inbox/data_field.md +0 -54
  267. md_processing/dr_egeria_inbox/data_spec.md +0 -77
  268. md_processing/dr_egeria_inbox/data_spec_test.md +0 -2406
  269. md_processing/dr_egeria_inbox/data_test.md +0 -179
  270. md_processing/dr_egeria_inbox/data_test2.md +0 -429
  271. md_processing/dr_egeria_inbox/data_test3.md +0 -462
  272. md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +0 -124
  273. md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +0 -168
  274. md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +0 -280
  275. md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +0 -318
  276. md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +0 -1073
  277. md_processing/dr_egeria_inbox/dr_egeria_isc1.md +0 -44
  278. md_processing/dr_egeria_inbox/generated_help_report.md +0 -9
  279. md_processing/dr_egeria_inbox/glossary_creation_experiment.ipynb +0 -341
  280. md_processing/dr_egeria_inbox/glossary_list.md +0 -5
  281. md_processing/dr_egeria_inbox/glossary_search_test.md +0 -40
  282. md_processing/dr_egeria_inbox/glossary_test1.md +0 -324
  283. md_processing/dr_egeria_inbox/gov_def.md +0 -482
  284. md_processing/dr_egeria_inbox/gov_def2.md +0 -447
  285. md_processing/dr_egeria_inbox/img.png +0 -0
  286. md_processing/dr_egeria_inbox/product.md +0 -211
  287. md_processing/dr_egeria_inbox/rel.md +0 -8
  288. md_processing/dr_egeria_inbox/sb.md +0 -119
  289. md_processing/dr_egeria_inbox/solution-components.md +0 -136
  290. md_processing/dr_egeria_inbox/solution_blueprints.md +0 -118
  291. md_processing/dr_egeria_inbox/synonym_test.md +0 -42
  292. md_processing/dr_egeria_inbox/t2.md +0 -268
  293. md_processing/dr_egeria_outbox/.obsidian/app.json +0 -1
  294. md_processing/dr_egeria_outbox/.obsidian/appearance.json +0 -1
  295. md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +0 -6
  296. md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +0 -31
  297. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +0 -10
  298. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +0 -4459
  299. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +0 -10
  300. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +0 -3
  301. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +0 -153
  302. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +0 -11
  303. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +0 -1
  304. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +0 -500
  305. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +0 -12
  306. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +0 -1
  307. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +0 -37
  308. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +0 -11
  309. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +0 -220
  310. md_processing/dr_egeria_outbox/.obsidian/types.json +0 -28
  311. md_processing/dr_egeria_outbox/.obsidian/workspace.json +0 -220
  312. md_processing/dr_egeria_outbox/Untitled.canvas +0 -1
  313. md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:22-dr_egeria_intro_part1.md +0 -312
  314. md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:23-dr_egeria_intro_part1.md +0 -265
  315. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:06-dr_egeria_intro_part1.md +0 -230
  316. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:30-dr_egeria_intro_part1.md +0 -296
  317. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:31-dr_egeria_intro_part1.md +0 -253
  318. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:08-dr_egeria_intro_part2.md +0 -343
  319. md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:12-dr_egeria_intro_part2.md +0 -343
  320. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:05-product.md +0 -426
  321. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:56-product.md +0 -212
  322. md_processing/dr_egeria_outbox/monday/processed-2025-08-19 09:43-product.md +0 -201
  323. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 14:55-product.md +0 -77
  324. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:05-product.md +0 -75
  325. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:11-product.md +0 -74
  326. md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 20:40-collections.md +0 -49
  327. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +0 -719
  328. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +0 -41
  329. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +0 -33
  330. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +0 -192
  331. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +0 -486
  332. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +0 -486
  333. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +0 -486
  334. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +0 -486
  335. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +0 -486
  336. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +0 -486
  337. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +0 -486
  338. md_processing/dr_egeria_outbox/tuesday/processed-2025-07-16 19:15-gov_def2.md +0 -527
  339. md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 12:08-gov_def2.md +0 -527
  340. md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 14:27-gov_def2.md +0 -485
  341. md_processing/dr_egeria_outbox/tuesday/processed-2025-08-19 10:55-product.md +0 -209
  342. md_processing/family_docs/Data Designer/Create_Data_Class.md +0 -164
  343. md_processing/family_docs/Data Designer/Create_Data_Dictionary.md +0 -30
  344. md_processing/family_docs/Data Designer/Create_Data_Field.md +0 -162
  345. md_processing/family_docs/Data Designer/Create_Data_Specification.md +0 -36
  346. md_processing/family_docs/Data Designer/Create_Data_Structure.md +0 -38
  347. md_processing/family_docs/Data Designer/View_Data_Classes.md +0 -78
  348. md_processing/family_docs/Data Designer/View_Data_Dictionaries.md +0 -78
  349. md_processing/family_docs/Data Designer/View_Data_Fields.md +0 -78
  350. md_processing/family_docs/Data Designer/View_Data_Specifications.md +0 -78
  351. md_processing/family_docs/Data Designer/View_Data_Structures.md +0 -78
  352. md_processing/family_docs/Data Designer.md +0 -842
  353. md_processing/family_docs/Digital Product Manager/Add_Member->Collection.md +0 -42
  354. md_processing/family_docs/Digital Product Manager/Attach_Collection->Resource.md +0 -36
  355. md_processing/family_docs/Digital Product Manager/Create_Agreement.md +0 -96
  356. md_processing/family_docs/Digital Product Manager/Create_Data_Sharing_Agreement.md +0 -72
  357. md_processing/family_docs/Digital Product Manager/Create_DigitalSubscription.md +0 -102
  358. md_processing/family_docs/Digital Product Manager/Create_Digital_Product.md +0 -134
  359. md_processing/family_docs/Digital Product Manager/Link_Agreement_Items.md +0 -60
  360. md_processing/family_docs/Digital Product Manager/Link_Contracts.md +0 -26
  361. md_processing/family_docs/Digital Product Manager/Link_Digital_Product_-_Digital_Product.md +0 -30
  362. md_processing/family_docs/Digital Product Manager/Link_Subscribers.md +0 -48
  363. md_processing/family_docs/Digital Product Manager.md +0 -668
  364. md_processing/family_docs/Glossary/Attach_Category_Parent.md +0 -18
  365. md_processing/family_docs/Glossary/Attach_Term-Term_Relationship.md +0 -26
  366. md_processing/family_docs/Glossary/Create_Category.md +0 -38
  367. md_processing/family_docs/Glossary/Create_Glossary.md +0 -42
  368. md_processing/family_docs/Glossary/Create_Term.md +0 -70
  369. md_processing/family_docs/Glossary.md +0 -206
  370. md_processing/family_docs/Governance Officer/Create_Business_Imperative.md +0 -106
  371. md_processing/family_docs/Governance Officer/Create_Certification_Type.md +0 -112
  372. md_processing/family_docs/Governance Officer/Create_Governance_Approach.md +0 -114
  373. md_processing/family_docs/Governance Officer/Create_Governance_Obligation.md +0 -114
  374. md_processing/family_docs/Governance Officer/Create_Governance_Principle.md +0 -114
  375. md_processing/family_docs/Governance Officer/Create_Governance_Procedure.md +0 -128
  376. md_processing/family_docs/Governance Officer/Create_Governance_Process.md +0 -122
  377. md_processing/family_docs/Governance Officer/Create_Governance_Processing_Purpose.md +0 -106
  378. md_processing/family_docs/Governance Officer/Create_Governance_Responsibility.md +0 -122
  379. md_processing/family_docs/Governance Officer/Create_Governance_Rule.md +0 -122
  380. md_processing/family_docs/Governance Officer/Create_Governance_Strategy.md +0 -106
  381. md_processing/family_docs/Governance Officer/Create_License_Type.md +0 -112
  382. md_processing/family_docs/Governance Officer/Create_Naming_Standard_Rule.md +0 -122
  383. md_processing/family_docs/Governance Officer/Create_Regulation_Article.md +0 -106
  384. md_processing/family_docs/Governance Officer/Create_Regulation_Definition.md +0 -118
  385. md_processing/family_docs/Governance Officer/Create_Security_Access_Control.md +0 -114
  386. md_processing/family_docs/Governance Officer/Create_Security_Group.md +0 -120
  387. md_processing/family_docs/Governance Officer/Create_Service_Level_Objectives.md +0 -122
  388. md_processing/family_docs/Governance Officer/Create_Threat_Definition.md +0 -106
  389. md_processing/family_docs/Governance Officer/Link_Governance_Controls.md +0 -32
  390. md_processing/family_docs/Governance Officer/Link_Governance_Drivers.md +0 -32
  391. md_processing/family_docs/Governance Officer/Link_Governance_Policies.md +0 -32
  392. md_processing/family_docs/Governance Officer/View_Governance_Definitions.md +0 -82
  393. md_processing/family_docs/Governance Officer.md +0 -2412
  394. md_processing/family_docs/Solution Architect/Create_Information_Supply_Chain.md +0 -70
  395. md_processing/family_docs/Solution Architect/Create_Solution_Blueprint.md +0 -44
  396. md_processing/family_docs/Solution Architect/Create_Solution_Component.md +0 -96
  397. md_processing/family_docs/Solution Architect/Create_Solution_Role.md +0 -66
  398. md_processing/family_docs/Solution Architect/Link_Information_Supply_Chain_Peers.md +0 -32
  399. md_processing/family_docs/Solution Architect/Link_Solution_Component_Peers.md +0 -32
  400. md_processing/family_docs/Solution Architect/View_Information_Supply_Chains.md +0 -32
  401. md_processing/family_docs/Solution Architect/View_Solution_Blueprints.md +0 -32
  402. md_processing/family_docs/Solution Architect/View_Solution_Components.md +0 -32
  403. md_processing/family_docs/Solution Architect/View_Solution_Roles.md +0 -32
  404. md_processing/family_docs/Solution Architect.md +0 -490
  405. md_processing/md_processing_utils/debug_log +0 -574
  406. md_processing/md_processing_utils/debug_log.log +0 -0
  407. md_processing/md_processing_utils/dr-egeria-help-2025-07-17T17:22:09.md +0 -2065
  408. md_processing/md_processing_utils/generated_help_terms.md +0 -842
  409. pyegeria/.DS_Store +0 -0
  410. pyegeria/README.md +0 -35
  411. pyegeria/_client_new.py +0 -1102
  412. pyegeria/_output_formats.py +0 -730
  413. pyegeria/asset_catalog_omvs.py +0 -864
  414. pyegeria/automated_curation_omvs.py +0 -3765
  415. pyegeria/config.py +0 -523
  416. pyegeria/egeria_my_client.py +0 -91
  417. pyegeria/feedback_manager_omvs.py +0 -4573
  418. pyegeria/load_config_orig.py +0 -218
  419. pyegeria/md_processing_helpers.py +0 -58
  420. pyegeria/md_processing_utils_orig.py +0 -1103
  421. pyegeria/metadata_explorer_omvs.py +0 -2326
  422. pyegeria/my_profile_omvs.py +0 -1022
  423. pyegeria/project_manager.py +0 -1591
  424. pyegeria/registered_info.py +0 -167
  425. pyegeria/template_manager_omvs.py +0 -1414
  426. pyegeria/utils.py +0 -256
  427. pyegeria-5.4.0.28.dist-info/METADATA +0 -77
  428. pyegeria-5.4.0.28.dist-info/RECORD +0 -343
  429. pyegeria-5.4.0.28.dist-info/entry_points.txt +0 -105
  430. /commands/cat/debug_log.log → /pyegeria/deprecated/__init__.py +0 -0
  431. /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
  432. /pyegeria/{collection_models.py → models/collection_models.py} +0 -0
  433. {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
@@ -3,7 +3,7 @@
3
3
  SPDX-License-Identifier: Apache-2.0
4
4
  Copyright Contributors to the ODPi Egeria project.
5
5
 
6
- A command that takes an output format set name, looks up the format set using select_output_format_set,
6
+ A command that takes an output format set name, looks up the format set using select_report_spec,
7
7
  and invokes the specified function with parameters filled from command line arguments.
8
8
 
9
9
  This command works with any format set defined in output_formatter.py that has an "action" property.
@@ -12,7 +12,7 @@ and prompts for any required parameters that aren't provided on the command line
12
12
 
13
13
  Features:
14
14
  - Works with any format set that has an "action" property
15
- - Dynamically adds command-line arguments based on the format set's user_params
15
+ - Dynamically adds command-line arguments based on the format set's required/optional parameters
16
16
  - Prompts for required parameters if not provided
17
17
  - Supports multiple output formats (TABLE, DICT, FORM, REPORT, HTML, LIST)
18
18
  - Handles both instance methods and standalone functions
@@ -40,23 +40,23 @@ import os
40
40
  import time
41
41
 
42
42
  from loguru import logger
43
+ from pydantic import ValidationError
43
44
  from rich import box
44
45
  from rich.console import Console
45
46
  from rich.markdown import Markdown
46
47
  from rich.prompt import Prompt
47
48
  from rich.table import Table
48
- from rich.text import Text
49
- import pydevd_pycharm
50
49
 
51
50
  from pyegeria import (
52
51
  EgeriaTech,
53
52
  CollectionManager,
54
- NO_ELEMENTS_FOUND, GovernanceOfficer,
55
- )
56
- from pyegeria.config import settings
57
- from pyegeria.logging_configuration import config_logging
58
- from pyegeria._output_formats import (select_output_format_set, get_output_format_set_heading, get_output_format_set_description)
59
- from pyegeria._exceptions_new import PyegeriaException, print_exception_response
53
+ NO_ELEMENTS_FOUND, GovernanceOfficer, GlossaryManager, print_validation_error,
54
+ )
55
+ from pyegeria.core.config import settings
56
+ from pyegeria.omvs.external_links import ExternalReferences
57
+ from pyegeria.core.logging_configuration import config_logging
58
+ from pyegeria.view.base_report_formats import (select_report_format)
59
+ from pyegeria.core._exceptions import PyegeriaException, print_exception_response
60
60
 
61
61
  # pydevd_pycharm.settrace('host.docker.internal', # Use 'host.docker.internal' to connect to the host machine
62
62
  # port=5678, # Port to communicate with PyCharm
@@ -117,7 +117,7 @@ def execute_format_set_action(
117
117
  # Get the output format set
118
118
  # logger.info(f"Entering execute_format_set_action, format set name: {format_set_name}, search_string: {kwargs.get('search_string',"meow")}")
119
119
  # logger.info(json.dumps(kwargs, indent=2))
120
- format_set = select_output_format_set(format_set_name, output_format)
120
+ format_set = select_report_format(format_set_name, output_format)
121
121
  if not format_set:
122
122
  print(f"Error: Output format set '{format_set_name}' does not have a format compatible with output format '{output_format}'.")
123
123
  return
@@ -130,23 +130,102 @@ def execute_format_set_action(
130
130
  # Extract the function and parameters from the action property (now a dict)
131
131
  action = format_set["action"]
132
132
  func = action.get("function")
133
- user_params = action.get("user_params", [])
133
+ required_params = action.get("required_params", action.get("user_params", []))
134
+ optional_params = action.get("optional_params", [])
134
135
  spec_params = action.get("spec_params", {})
135
136
 
136
- # Create a params dictionary from user_params and spec_params
137
+ # Create a params dictionary from required/optional and spec_params
137
138
  params = {}
138
- for param in user_params:
139
+ for param in required_params:
139
140
  if param in kwargs and kwargs[param]:
140
141
  params[param] = kwargs[param]
141
- # print(f"Found value '{kwargs[param]}' for parameter '{param}'.")
142
142
  elif param not in kwargs and param not in spec_params:
143
143
  print(f"Warning: Required parameter '{param}' not provided for format set '{format_set_name}'.")
144
+ for param in optional_params:
145
+ if param in kwargs and kwargs[param]:
146
+ params[param] = kwargs[param]
144
147
 
145
148
  # Add spec_params to params
146
149
  params.update(spec_params)
147
150
 
148
- params['output_format'] = output_format
149
- params['output_format_set'] = format_set_name
151
+ # Delegate execution to exec_report_spec for canonical behavior
152
+ from pyegeria.view.format_set_executor import exec_report_spec
153
+ ofmt = (output_format or "TABLE").upper()
154
+ mapped = "DICT" if ofmt == "TABLE" else ofmt
155
+ res = exec_report_spec(
156
+ format_set_name,
157
+ output_format=mapped,
158
+ params=params,
159
+ view_server=view_server,
160
+ view_url=view_url,
161
+ user=user,
162
+ user_pass=user_pass,
163
+ )
164
+
165
+ # Handle TABLE rendering locally
166
+ if ofmt == "TABLE":
167
+ if res.get("kind") != "json":
168
+ print("No results or unexpected response:", res)
169
+ return
170
+ data = res.get("data")
171
+ # Render basic table
172
+ table = Table(
173
+ title=f"{format_set_name} @ {time.asctime()}",
174
+ style="bright_white on black",
175
+ header_style="bright_white on dark_blue",
176
+ title_style="bold white on black",
177
+ caption_style="white on black",
178
+ show_lines=True,
179
+ box=box.ROUNDED,
180
+ caption=f"View Server '{view_server}' @ Platform - {view_url}",
181
+ expand=True,
182
+ )
183
+ rows = data if isinstance(data, list) else [data]
184
+ if rows and isinstance(rows[0], dict):
185
+ cols = list(rows[0].keys())
186
+ for c in cols:
187
+ table.add_column(str(c), justify="left", style="cyan")
188
+ for r in rows:
189
+ table.add_row(*[str(r.get(c, "")) for c in cols])
190
+ else:
191
+ table.add_column("Value")
192
+ for r in rows:
193
+ table.add_row(str(r))
194
+ # Optional header
195
+ from pyegeria.view.base_report_formats import get_report_format_heading, get_report_format_description
196
+ heading = get_report_format_heading(format_set_name)
197
+ desc = get_report_format_description(format_set_name)
198
+ if heading and desc:
199
+ console.print(Markdown(f"# {heading}\n{desc}\n"))
200
+ console.print(table)
201
+ return
202
+
203
+ # For non-table formats, write to file based on MIME/kind
204
+ kind = res.get("kind")
205
+ mime = res.get("mime")
206
+ out_dir = os.path.join(app_config.pyegeria_root, app_config.dr_egeria_outbox)
207
+ ts = time.strftime('%Y-%m-%d-%H-%M-%S')
208
+ safe_name = "".join(c for c in format_set_name if c.isalnum() or c in ("-","_","+","."," ")).strip().replace(" ", "_")
209
+
210
+ if kind == "text":
211
+ content = res.get("content", "")
212
+ ext = ".html" if mime == "text/html" else ".md"
213
+ elif kind == "json":
214
+ content = json.dumps(res.get("data"), indent=2)
215
+ ext = ".json"
216
+ else:
217
+ content = json.dumps(res, indent=2, default=str)
218
+ ext = ".txt"
219
+
220
+ file_name = f"{safe_name}-{ts}{ext}"
221
+ full_file_path = os.path.join(out_dir, file_name)
222
+ os.makedirs(os.path.dirname(full_file_path), exist_ok=True)
223
+ with open(full_file_path, "w", encoding="utf-8") as f:
224
+ f.write(content)
225
+ print(f"\n==> Output written to {full_file_path}")
226
+ if ext == ".html":
227
+ print(f"\n==> Web link: [{file_name}]({app_config.pyegeria_publishing_root}/{file_name})")
228
+ return
150
229
 
151
230
  # Determine the appropriate client class based on the format set name or function
152
231
  client_class = None
@@ -159,6 +238,10 @@ def execute_format_set_action(
159
238
  client_class = CollectionManager
160
239
  elif class_name == "GovernanceOfficer":
161
240
  client_class = GovernanceOfficer
241
+ elif class_name == "GlossaryManager":
242
+ client_class = GlossaryManager
243
+ elif class_name == "ExternalReference":
244
+ client_class = ExternalReferences
162
245
  else:
163
246
  client_class = EgeriaTech
164
247
 
@@ -194,8 +277,8 @@ def execute_format_set_action(
194
277
  client.create_egeria_bearer_token()
195
278
 
196
279
  # Get heading and description information
197
- heading = get_output_format_set_heading(format_set_name)
198
- desc = get_output_format_set_description(format_set_name)
280
+ heading = get_report_format_heading(format_set_name)
281
+ desc = get_report_format_description(format_set_name)
199
282
  preamble = f"# {heading}\n{desc}\n\n" if heading and desc else ""
200
283
 
201
284
  try:
@@ -221,12 +304,16 @@ def execute_format_set_action(
221
304
  # Call the function with the parameters
222
305
  print(f"\n==> Calling function: {func} with parameters:{params}")
223
306
  try:
224
- if isinstance(func, type(client.find_collections)): # It's a method of the client
307
+ if callable(func):
225
308
  # Call the function as an instance method of the client
226
309
  output = func(**params)
227
310
  else:
228
311
  # For standalone functions, call with client as first argument
229
312
  output = func(client, **params)
313
+ except ValidationError as e:
314
+ print_validation_error(e)
315
+ return
316
+
230
317
  except TypeError as e:
231
318
  # Handle parameter mismatch errors
232
319
  print(f"Error calling function: {e}")
@@ -251,7 +338,7 @@ def execute_format_set_action(
251
338
  return
252
339
  else:
253
340
  # For TABLE output, add output_format to params
254
- params['output_format'] = "DICT"
341
+ params['output_format'] = "TABLE"
255
342
  print(f"\n==> Calling function: {func} with parameters:{params}")
256
343
  # Call the function and create a table
257
344
  try:
@@ -295,9 +382,9 @@ def execute_format_set_action(
295
382
  return
296
383
 
297
384
  # Sort the results by display_name if available
298
- if "display_name" in result[0]:
385
+ if result[0].get("display_name", None):
299
386
  sorted_results = sorted(result, key=lambda k: k.get("display_name", ""))
300
- elif "Display Name" in result[0]:
387
+ elif result[0].get("Display Name", None):
301
388
  sorted_results = sorted(result, key=lambda k: k.get("Display Name", ""))
302
389
  else:
303
390
  sorted_results = result
@@ -305,7 +392,10 @@ def execute_format_set_action(
305
392
  # Add columns dynamically based on the first result
306
393
  column_headings = list(sorted_results[0].keys())
307
394
  for heading in column_headings:
308
- table.add_column(heading, justify="left", style="cyan")
395
+ if heading == "Usage":
396
+ table.add_column(heading, justify="left", style="cyan")
397
+ else:
398
+ table.add_column(heading, justify="left", style="cyan")
309
399
 
310
400
  # Add rows
311
401
  for item in sorted_results:
@@ -342,25 +432,25 @@ def main():
342
432
  # First, parse just the format-set argument to determine which other arguments to add
343
433
  logger.enable("pyegeria")
344
434
  initial_parser = argparse.ArgumentParser(add_help=False)
345
- initial_parser.add_argument("--format-set", help="Name of the output format set", required=True)
435
+ initial_parser.add_argument("--report", help="Name of the report spec", required=True)
346
436
  initial_args, _ = initial_parser.parse_known_args()
347
437
 
348
- # Get the format set to determine user_params
349
- format_set_name = initial_args.format_set
350
- format_set = select_output_format_set(format_set_name, "ANY")
438
+ # Get the format set to determine parameters
439
+ format_set_name = initial_args.report
440
+ format_set = select_report_format(format_set_name, "ANY")
351
441
 
352
442
  # Check if the format set exists
353
443
  if not format_set:
354
- print(f"Error: Format set for '{format_set_name}' not found.")
355
- print("Available format sets:")
356
- from pyegeria._output_formats import output_format_set_list
357
- for name in output_format_set_list():
444
+ print(f"Error: Report Spec for '{format_set_name}' not found.")
445
+ print("Available Report Specs:")
446
+ from pyegeria.view.base_report_formats import report_spec_list
447
+ for name in report_spec_list():
358
448
  print(f" - {name}")
359
449
  return
360
450
 
361
451
  # Create the full parser with all arguments
362
- parser = argparse.ArgumentParser(description="Execute an action from an output format set")
363
- parser.add_argument("--format-set", help="Name of the output format set", required=True)
452
+ parser = argparse.ArgumentParser(description="Execute an action from Report Spec")
453
+ parser.add_argument("--report", help="Name of the report spec", required=True)
364
454
  parser.add_argument("--server", help="Name of the server to connect to")
365
455
  parser.add_argument("--url", help="URL Platform to connect to")
366
456
  parser.add_argument("--userid", help="User Id")
@@ -370,16 +460,18 @@ def main():
370
460
 
371
461
 
372
462
 
373
- # Add arguments based on the format set's user_params
374
- user_params = []
463
+ # Add arguments based on the format set's required/optional params
464
+ required_params = []
465
+ optional_params = []
375
466
  if "action" in format_set:
376
467
  action = format_set["action"]
377
- user_params = action.get("user_params", [])
468
+ required_params = action.get("required_params", action.get("user_params", []))
469
+ optional_params = action.get("optional_params", [])
378
470
 
379
- for param in user_params:
471
+ for param in sorted(set(required_params + optional_params)):
380
472
  parser.add_argument(f"--{param.replace('_', '-')}", help=f"{param.replace('_', ' ')} parameter")
381
473
  else:
382
- print(f"Error: Format set '{format_set_name}' does not have an action property.")
474
+ print(f"Error: Report Spec '{format_set_name}' does not have an action property.")
383
475
  return
384
476
 
385
477
  args = parser.parse_args()
@@ -391,13 +483,13 @@ def main():
391
483
  print(f"root path: {app_config.pyegeria_root}, config_file: {app_config.pyegeria_config_file}")
392
484
  userid = args.userid if args.userid is not None else EGERIA_USER
393
485
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
394
- format_set_name = args.format_set
486
+ format_set_name = args.report
395
487
  output_format = args.output_format
396
488
 
397
489
  logger.info(f"view server @ {url}")
398
- # Collect all user parameters from args
490
+ # Collect all parameters from args
399
491
  kwargs = {}
400
- for param in user_params:
492
+ for param in sorted(set(required_params + optional_params)):
401
493
  arg_name = param.replace('_', '-')
402
494
  if hasattr(args, arg_name) and getattr(args, arg_name) is not None:
403
495
  kwargs[param] = getattr(args, arg_name)
@@ -406,7 +498,7 @@ def main():
406
498
 
407
499
  try:
408
500
  # If a required parameter is not provided, prompt for it
409
- for param in user_params:
501
+ for param in required_params:
410
502
  if param not in kwargs:
411
503
  default_value = "*" if param == "search_string" else ""
412
504
  prompt_text = f"Enter {param.replace('_', ' ')}:"
@@ -414,7 +506,7 @@ def main():
414
506
  prompt_text += f" (default: {default_value})"
415
507
  value = Prompt.ask(prompt_text, default=default_value).strip()
416
508
  kwargs[param] = value
417
- print(f"Using format set {format_set_name} and output format {output_format} with parameters: {kwargs} ")
509
+ print(f"Using Report Spec {format_set_name} and output format {output_format} with parameters: {kwargs} ")
418
510
  execute_format_set_action(
419
511
  format_set_name=format_set_name,
420
512
  view_server=server,