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,47 +3,28 @@ This file contains glossary-related object_action functions for processing Egeri
3
3
  """
4
4
 
5
5
  import json
6
- import os
7
- import re
8
6
  from typing import List, Optional
9
7
  from loguru import logger
10
8
  from rich import print
11
- from rich.console import Console
12
9
  from rich.markdown import Markdown
13
10
 
14
11
  from md_processing.md_processing_utils.common_md_proc_utils import (parse_upsert_command, parse_view_command,
15
12
  sync_collection_memberships)
16
- from md_processing.md_processing_utils.common_md_utils import update_element_dictionary, setup_log, set_update_body, \
17
- set_element_status_request_body, set_prop_body, set_delete_request_body, set_rel_request_body, set_peer_gov_def_request_body, \
18
- set_rel_request_body, set_create_body, set_collection_classifications, set_product_body
19
-
20
- from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, update_a_command)
21
- from md_processing.md_processing_utils.md_processing_constants import (load_commands, ERROR)
22
- from pyegeria import DEBUG_LEVEL, body_slimmer, to_pascal_case, PyegeriaException, print_basic_exception, print_exception_table
23
- from pyegeria.egeria_tech_client import EgeriaTech
13
+ from md_processing.md_processing_utils.common_md_utils import set_update_body, \
14
+ set_element_prop_body, set_rel_request_body, set_create_body, set_object_classifications, set_rel_prop_body
24
15
 
16
+ from pyegeria import PyegeriaException, print_basic_exception
25
17
 
18
+ from md_processing.md_processing_utils.common_md_utils import (debug_level, print_msg, get_element_dictionary, update_element_dictionary,
19
+ )
20
+ from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, update_a_command)
26
21
 
27
- from md_processing.md_processing_utils.common_md_utils import (debug_level, print_msg, set_debug_level,
28
- get_element_dictionary, update_element_dictionary,
29
- setup_log)
30
- from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, extract_command,
31
- process_simple_attribute, process_element_identifiers,
32
- update_a_command, extract_attribute,
33
- get_element_by_name, process_name_list)
34
- from md_processing.md_processing_utils.md_processing_constants import (GLOSSARY_NAME_LABELS, TERM_NAME_LABELS,
35
- TERM_RELATIONSHPS, PARENT_CATEGORY_LABELS,
36
- CATEGORY_NAME_LABELS, ALWAYS, ERROR, INFO,
37
- WARNING, pre_command, EXISTS_REQUIRED,
38
- OUTPUT_LABELS, SEARCH_LABELS, GUID_LABELS,
39
- ELEMENT_OUTPUT_FORMATS, command_seperator)
40
- from pyegeria import body_slimmer
41
- from pyegeria._globals import (NO_GLOSSARIES_FOUND, NO_ELEMENTS_FOUND, NO_CATEGORIES_FOUND)
42
22
  from pyegeria.egeria_tech_client import EgeriaTech
23
+ from pyegeria.core.utils import make_format_set_name_from_type, body_slimmer
24
+
43
25
 
44
26
  # EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "170"))
45
27
  # console = Console(width=EGERIA_WIDTH)
46
- setup_log()
47
28
 
48
29
  def update_term_categories(egeria_client: EgeriaTech, term_guid: str, categories_exist: bool,
49
30
  categories_list: List[str]) -> None:
@@ -158,7 +139,7 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directi
158
139
  obj = "Glossary"
159
140
  # Set the property body for a glossary collection
160
141
  #
161
- prop_body = set_prop_body(obj, qualified_name, attributes)
142
+ prop_body = set_element_prop_body(obj, qualified_name, attributes)
162
143
  prop_body["languager"] = attributes.get('Language', {}).get('value', None)
163
144
  prop_body["usage"] = attributes.get('Usage', {}).get('value', None)
164
145
 
@@ -187,7 +168,7 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directi
187
168
  'guid': guid, 'display_name': display_name
188
169
  })
189
170
  return egeria_client.get_collection_by_guid(guid, element_type='Glossary',
190
- output_format='MD', output_format_set = "DrE-Glossary")
171
+ output_format='MD', report_spec = "DrE-Glossary")
191
172
 
192
173
 
193
174
  elif object_action == "Create":
@@ -201,7 +182,7 @@ def process_glossary_upsert_command(egeria_client: EgeriaTech, txt: str, directi
201
182
  body = set_create_body(object_type,attributes)
202
183
 
203
184
  # if this is a root or folder (maybe more in the future), then make sure that the classification is set.
204
- body["initialClassifications"] = set_collection_classifications(object_type, attributes, ["Taxonomy", "CanonicalVocabulary"])
185
+ body["initialClassifications"] = set_object_classifications(object_type, attributes, ["Taxonomy", "CanonicalVocabulary"])
205
186
  if object_type == "Taxonomy":
206
187
  body["initialClassifications"]['Taxonomy']['organizingPrinciple'] = attributes.get('Organizing Principle', {}).get('value', None)
207
188
  elif object_type == "CanonicalVocabulary":
@@ -529,18 +510,24 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
529
510
  obj = "GlossaryTerm"
530
511
  # Set the property body for a glossary collection
531
512
  #
532
- prop_body = set_prop_body(obj, qualified_name, attributes)
513
+ prop_body = set_element_prop_body(obj, qualified_name, attributes)
533
514
  prop_body["aliases"] = attributes.get('Aliases', {}).get('value', None)
534
515
  prop_body["summary"] = attributes.get('Summary', {}).get('value', None)
535
516
  prop_body["examples"] = attributes.get('Examples', {}).get('value', None)
536
517
  prop_body["abbreviation"] = attributes.get('Abbreviation', {}).get('value', None)
537
518
  prop_body["usage"] = attributes.get('Usage', {}).get('value', None)
538
519
  prop_body["user_defined_status"] = attributes.get('UserDefinedStatus', {}).get('value', None)
539
- to_be_collection_guids = [attributes.get("Glossary", {}).get("guid_list", {}),
520
+ to_be_collection_guids = [attributes.get("Glossary", {}).get("guid", {}),
540
521
  attributes.get("Folder", {}).get("guid_list", {})]
522
+ glossary_guid = attributes.get("Glossary", {}).get('guid', None)
523
+ anchor_scope_guid = attributes.get("Anchor Scope", {}).get('guid', None)
524
+
525
+
541
526
  get_method = egeria_client.get_term_by_guid
542
527
  collection_types = ["Glossary", "Folder"]
543
528
 
529
+ output_set = make_format_set_name_from_type(object_type)
530
+
544
531
  if object_action == "Update":
545
532
  if not exists:
546
533
  msg = (f" Element `{display_name}` does not exist! Updating result document with Create "
@@ -561,7 +548,7 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
561
548
  egeria_client.update_term_status(guid, status)
562
549
  get_method = egeria_client.get_term_by_guid
563
550
  collection_types = ["Glossary", "Folder"]
564
- to_be_collection_guids = [attributes.get("Glossary",{}).get("guid_list",{}), attributes.get("Folder",{}).get("guid_list",{})]
551
+
565
552
  sync_collection_memberships(egeria_client, guid, get_method, collection_types,
566
553
  to_be_collection_guids, merge_update)
567
554
  logger.success(f"Updated {object_type} `{display_name}` with GUID {guid}\n\n___")
@@ -569,7 +556,7 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
569
556
  'guid': guid, 'display_name': display_name
570
557
  })
571
558
  return egeria_client.get_term_by_guid(guid, element_type='GlossaryTerm',
572
- output_format='MD', output_format_set="DrE-Term")
559
+ output_format='MD', report_spec=output_set)
573
560
 
574
561
 
575
562
  elif object_action == "Create":
@@ -585,6 +572,9 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
585
572
  # if this is a root or folder (maybe more in the future), then make sure that the classification is set.
586
573
 
587
574
  body["properties"] = prop_body
575
+ # If the anchor scope is not already set and a glossary is specified
576
+ if anchor_scope_guid is None and glossary_guid:
577
+ body["anchorScopeGUID"] = glossary_guid
588
578
 
589
579
  guid = egeria_client.create_glossary_term(body = body)
590
580
  if guid:
@@ -595,7 +585,7 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
595
585
  })
596
586
  msg = f"Created Element `{display_name}` with GUID {guid}\n\n___"
597
587
  logger.success(msg)
598
- return egeria_client.get_collection_by_guid(guid, obj, output_format='MD')
588
+ return egeria_client.get_term_by_guid(guid, obj, output_format='MD', report_spec=output_set)
599
589
  else:
600
590
  msg = f"Failed to create element `{display_name}` with GUID {guid}\n\n___"
601
591
  logger.error(msg)
@@ -609,460 +599,86 @@ def process_term_upsert_command(egeria_client: EgeriaTech, txt: str, directive:
609
599
  logger.error(f"Error performing {command}: {e}")
610
600
  else:
611
601
  return None
612
- def process_create_term_term_relationship_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
613
- pass
614
- # """ Relate two terms through the specified relationship. ."""
615
- # set_debug_level(directive)
616
- # valid = True
617
- # command = extract_command(txt)
618
- # print(Markdown(f"# {command}\n"))
619
- #
620
- # object_type = command.split(' ')[1].strip()
621
- # object_action = command.split(' ')[0].strip()
622
- # term1_guid = None
623
- # term2_guid = None
624
- #
625
- # term_relationship = process_simple_attribute(txt, ["Term Relationship", "Relationship Type"], "ERROR")
626
- # if term_relationship not in TERM_RELATIONSHPS:
627
- # valid = False
628
- #
629
- # print(Markdown(
630
- # f"{pre_command} `{command}` for term relationship: `{term_relationship}` with directive: `{directive}` "))
631
- #
632
- # term1_q_name, term1_guid, term1_valid, term1_exists = process_element_identifiers(egeria_client, object_type,
633
- # ["Term 1 Name", "Term 1"], txt,
634
- # "Exists Required", None)
635
- #
636
- # term2_q_name, term2_guid, term2_valid, term2_exists = process_element_identifiers(egeria_client, object_type,
637
- # ["Term 2 Name", "Term 2"], txt,
638
- # "Exists Required", None)
639
- #
640
- # request_display = (f"\n\t* Term 1 Qualified Name: {term1_q_name}\n\t* Term 2 Qualified Name {term2_q_name}\n\t"
641
- # f"* Term Relationship: {term_relationship}")
642
- #
643
- # if not (term1_valid and term2_valid and term1_exists and term2_exists):
644
- # valid = False
645
- #
646
- # if directive == "display":
647
- # print(request_display)
648
- # return None
649
- # elif directive == "validate":
650
- # print(request_display)
651
- # return str(valid)
652
- # elif directive == "process":
653
- # try:
654
- # print(request_display)
655
- # if not valid: # First validate the term before we process it
656
- # return None
657
- # egeria_client.add_relationship_between_terms(term1_guid, term2_guid, term_relationship)
658
- # print_msg(ALWAYS, f"Relationship `{term_relationship}` created", debug_level)
659
- # update_md = (f"\n\n# Update Term-Term Relationship\n\n## Term 1 Name:\n\n{term1_q_name}"
660
- # f"\n\n## Term 2 Name\n\n{term2_q_name}\n\n## Term Relationship:\n\n{term_relationship}")
661
- # return update_md
662
- #
663
- #
664
- # except Exception as e:
665
- # print(f"{ERROR}Error performing {command}: {e}")
666
- # console.print_exception(show_locals=True)
667
- # return None
668
- # else:
669
- # return None
602
+
603
+ def process_link_term_term_relationship_command(egeria_client: EgeriaTech, txt: str,
604
+ directive: str = "display") -> Optional[str]:
605
+ """ Relate two terms through the specified relationship. ."""
606
+ command, object_type, object_action = extract_command_plus(txt)
607
+ print(Markdown(f"# {command}\n"))
608
+
609
+ parsed_output = parse_view_command(egeria_client, object_type, object_action, txt, directive)
610
+
611
+ print(Markdown(parsed_output['display']))
612
+
613
+ logger.debug(json.dumps(parsed_output, indent=4))
614
+
615
+ attributes = parsed_output['attributes']
616
+ term1_guid = attributes.get('Term 1', {}).get('guid', None)
617
+ term1_qname = attributes.get('Term 1', {}).get('qualified_name', None)
618
+ term2_guid = attributes.get('Term 2', {}).get('guid', None)
619
+ term2_qname = attributes.get('Term 2', {}).get('qualified_name', None)
620
+ relationship = attributes.get('Relationship', {}).get('value', None)
621
+ expression = attributes.get('Expression', {}).get('value', None)
622
+ confidence = attributes.get('Confidence', {}).get('value', None)
623
+ status = attributes.get('Status', {}).get('value', None)
624
+ steward = attributes.get('Steward', {}).get('value', None)
625
+ source = attributes.get('Source', {}).get('value', None)
626
+
627
+
628
+
629
+ valid = parsed_output['valid']
630
+ exists = term1_guid is not None and term2_guid is not None
631
+
632
+ if not (valid and exists):
633
+ valid = False
634
+
635
+ if directive == "display":
636
+ return None
637
+ elif directive == "validate":
638
+ if valid:
639
+ print(Markdown(f"==> Validation of {command} completed successfully!\n"))
640
+ else:
641
+ msg = f"Validation failed for object_action `{command}`\n"
642
+ return valid
643
+
644
+ elif directive == "process":
645
+ prop_body = set_rel_prop_body("GlossaryTerm", attributes)
646
+ prop_body['expression'] = expression
647
+ prop_body['confidence'] = confidence
648
+ prop_body['status'] = status
649
+ prop_body['steward'] = steward
650
+ prop_body['source'] = source
651
+
652
+ try:
653
+
654
+ if not valid: # First validate the term before we process it
655
+ return None
656
+
657
+ if object_action == "Link":
658
+ if not exists:
659
+ msg = f" Term `{term1_guid}` or {term2_guid} does not exist! "
660
+ logger.error(msg)
661
+ return None
662
+ else:
663
+ print(Markdown(
664
+ f"==> Validation of {command} completed successfully! Proceeding to apply the changes.\n"))
665
+ body = set_rel_request_body(relationship, prop_body)
666
+ body['properties'] = prop_body
667
+ body = body_slimmer(body)
668
+ # todo removing body for now since don't know relationship properties class
669
+ egeria_client.add_relationship_between_terms(term1_guid, term2_guid, relationship)
670
+ logger.success(f"Created `{relationship}` relationship between `{term1_qname}` and `{term2_qname}`\n\n___")
671
+ update_md = (f"\n\n# Update Term-Term Relationship\n\n## Term 1 Name:\n\n{term1_qname}"
672
+ f"\n\n## Term 2 Name\n\n{term2_qname}\n\n## Term Relationship:\n\n{relationship}")
673
+ return update_md
674
+
675
+
676
+ except Exception as e:
677
+ print(f"Error performing {command}: {e}")
678
+ print_basic_exception(e)
679
+ return None
680
+ return None
681
+ else:
682
+ return None
670
683
 
671
684
 
672
- def process_term_list_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
673
- pass
674
- # """ List terms as a markdown table. Filter based on optional search string. """
675
- # set_debug_level(directive)
676
- # valid = True
677
- # command = extract_command(txt)
678
- # print(Markdown(f"# {command}\n"))
679
- #
680
- # search_string = process_simple_attribute(txt, SEARCH_LABELS)
681
- # if search_string is None:
682
- # search_string = '*'
683
- # print(Markdown(f"{pre_command} `{command}` with search string:`{search_string}` with directive: `{directive}`"))
684
- #
685
- # glossary = process_simple_attribute(txt, ['Glossary', 'In Glossary', "Glossary Name"])
686
- # if glossary is not None:
687
- # _, glossary_guid, _, glossary_exists = get_element_by_name(egeria_client, "Glossary", glossary)
688
- # msg = f"Found glossary `{glossary}` with GUID {glossary_guid}"
689
- # print_msg(INFO, msg, debug_level)
690
- # else:
691
- # glossary_guid = None
692
- # msg = f"No glossary found"
693
- # print_msg(INFO, msg, debug_level)
694
- #
695
- # output_format = process_simple_attribute(txt, OUTPUT_LABELS)
696
- # if output_format is None:
697
- # output_format = "LIST"
698
- # elif output_format not in ELEMENT_OUTPUT_FORMATS:
699
- # valid = False
700
- # print_msg(ERROR, f"Invalid output format: `{output_format}`", debug_level)
701
- #
702
- # request_display = (f"\n\t* Search String: {search_string}\n\t* Glossary: {glossary}\n\t* Output Format: "
703
- # f"{output_format}\n")
704
- #
705
- # if directive == "display":
706
- # print(Markdown(request_display))
707
- # return None
708
- # elif directive == "validate":
709
- # print(Markdown(request_display))
710
- # return valid
711
- # elif directive == "process":
712
- # try:
713
- # print(Markdown(request_display))
714
- # if not valid: # First validate the term before we process it
715
- # return None
716
- #
717
- # term_list_md = f"\n# Term List for search string: `{search_string}`\n\n"
718
- # if output_format == "DICT":
719
- # struct = egeria_client.find_glossary_terms(search_string, glossary_guid, output_format=output_format)
720
- # term_list_md += f"```{json.dumps(struct, indent=4)}```\n"
721
- # else:
722
- # term_list_md += egeria_client.find_glossary_terms(search_string, glossary_guid,
723
- # output_format=output_format)
724
- # print_msg("ALWAYS", f"Wrote Term List for search string: `{search_string}`", debug_level)
725
- #
726
- # return term_list_md
727
- #
728
- # md_table = egeria_client.find_glossary_terms(search_string, glossary_guid, output_format=output_format)
729
- #
730
- # print_msg("ALWAYS", f"Wrote Term list for search string `{search_string}`", debug_level)
731
- # return md_table
732
- #
733
- # except Exception as e:
734
- # print(f"{ERROR}Error performing {command}: {e}")
735
- # console.print_exception(show_locals=True)
736
- # return None
737
- # else:
738
- # return None
739
- #
740
- #
741
- def process_category_list_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
742
- pass
743
- # """ List terms as a markdown table. Filter based on optional search string. """
744
- # set_debug_level(directive)
745
- # valid = True
746
- # command = extract_command(txt)
747
- # print(Markdown(f"# {command}\n"))
748
- #
749
- # search_string = process_simple_attribute(txt, SEARCH_LABELS, "INFO")
750
- # if search_string is None:
751
- # search_string = '*'
752
- # print(Markdown(f"{pre_command} `{command}` with search string:`{search_string}` with directive: `{directive}`"))
753
- #
754
- # output_format = process_simple_attribute(txt, OUTPUT_LABELS, "INFO")
755
- # if output_format is None:
756
- # output_format = "LIST"
757
- # elif output_format not in ELEMENT_OUTPUT_FORMATS:
758
- # valid = False
759
- # print_msg(ERROR, f"Invalid output format: `{output_format}`", debug_level)
760
- #
761
- # request_display = f"\n\t* Search String: {search_string}\n\t* Output Format: {output_format}\n"
762
- #
763
- # if directive == "display":
764
- # print(Markdown(request_display))
765
- # return None
766
- # elif directive == "validate":
767
- # print(Markdown(request_display))
768
- # return valid
769
- # elif directive == "process":
770
- # try:
771
- # print(Markdown(request_display))
772
- # if not valid: # First validate the term before we process it
773
- # return None
774
- #
775
- # cat_list_md = f"\n# Category List for search string: `{search_string}`\n\n"
776
- # if output_format == "DICT":
777
- # struct = egeria_client.find_glossary_categories(search_string, output_format=output_format)
778
- # cat_list_md += f"```{json.dumps(struct, indent=4)}```\n"
779
- # else:
780
- # cat_list_md += egeria_client.find_glossary_categories(search_string, output_format=output_format)
781
- # print_msg("ALWAYS", f"Wrote Category List for search string: `{search_string}`", debug_level)
782
- #
783
- # return cat_list_md
784
- #
785
- # except Exception as e:
786
- # print(f"{ERROR}Error performing {command}: {e}")
787
- # console.print_exception(show_locals=True)
788
- # return None
789
- # else:
790
- #
791
- # return None
792
- #
793
- #
794
- def process_glossary_structure_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
795
- pass
796
- # """ List terms as a markdown table. Filter based on optional search string. """
797
- # set_debug_level(directive)
798
- # valid = True
799
- # command = extract_command(txt)
800
- # print(Markdown(f"# {command}\n"))
801
- #
802
- # known_glossary_guid = ""
803
- #
804
- # glossary_name = process_simple_attribute(txt, GLOSSARY_NAME_LABELS, "ERROR")
805
- #
806
- # _, known_glossary_guid, valid, _ = process_element_identifiers(egeria_client, "Glossary", GLOSSARY_NAME_LABELS, txt,
807
- # EXISTS_REQUIRED, None)
808
- #
809
- # print(Markdown(f"{pre_command} `{command}` for glossary:`{glossary_name}` with directive: `{directive}`"))
810
- #
811
- # output_format = process_simple_attribute(txt, OUTPUT_LABELS, "INFO")
812
- # if output_format is None:
813
- # output_format = "MD"
814
- # elif output_format not in ["DICT", "LIST", "MD"]:
815
- # valid = False
816
- # print_msg(ERROR, f"Invalid output format: `{output_format}`", debug_level)
817
- #
818
- # request_display = f"\n\t* Glossary name: {glossary_name}\n\t* Output Format: {output_format}\n"
819
- #
820
- # if directive == "display":
821
- # print(Markdown(request_display))
822
- # return None
823
- # elif directive == "validate":
824
- # print(Markdown(request_display))
825
- # return str(valid)
826
- # elif directive == "process":
827
- # try:
828
- # print(Markdown(request_display))
829
- # if not valid: # First validate the term before we process it
830
- # return None
831
- #
832
- # glossary_structure_md = f"\n# Glossary Structure for `{glossary_name}`\n\n"
833
- # if output_format == "DICT":
834
- # struct = egeria_client.get_glossary_category_structure(known_glossary_guid, output_format=output_format)
835
- # glossary_structure_md += f"```{json.dumps(struct, indent=4)}```\n"
836
- # else:
837
- # glossary_structure_md += egeria_client.get_glossary_category_structure(known_glossary_guid,
838
- # output_format=output_format)
839
- # print_msg("ALWAYS", f"Wrote Glossary Structure for glossary: `{glossary_name}`", debug_level)
840
- #
841
- # return glossary_structure_md
842
- #
843
- # except Exception as e:
844
- # print(f"{ERROR}Error performing {command}: {e}")
845
- # console.print_exception(show_locals=True)
846
- # return None
847
- # else:
848
- # return None
849
- #
850
- #
851
- def process_glossary_list_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
852
- pass
853
- # """ List terms as a markdown table. Filter based on optional search string. """
854
- # set_debug_level(directive)
855
- # valid = True
856
- # command = extract_command(txt)
857
- # print(Markdown(f"# {command}\n"))
858
- #
859
- # search_string = process_simple_attribute(txt, SEARCH_LABELS, "INFO")
860
- # if search_string is None:
861
- # search_string = '*'
862
- # print(Markdown(f"{pre_command} `{command}` with search string:`{search_string}` with directive: `{directive}`"))
863
- # if search_string is None:
864
- # search_string = '*'
865
- #
866
- # output_format = process_simple_attribute(txt, OUTPUT_LABELS, "INFO")
867
- # if output_format is None:
868
- # output_format = "LIST"
869
- # elif output_format not in ELEMENT_OUTPUT_FORMATS:
870
- # valid = False
871
- # print_msg(ERROR, f"Invalid output format: `{output_format}`", debug_level)
872
- #
873
- # request_display = f"\n\t* Search String: {search_string}\n\t* Output Format: {output_format}\n"
874
- #
875
- # if directive == "display":
876
- # print(request_display)
877
- # return None
878
- # elif directive == "validate":
879
- # print(request_display)
880
- # return valid
881
- # elif directive == "process":
882
- # try:
883
- # print(request_display)
884
- # if not valid: # First validate the term before we process it
885
- # return None
886
- #
887
- # glossary_list_md = f"\n# Glossary List for `{search_string}`\n\n"
888
- # if output_format == "DICT":
889
- # struct = egeria_client.find_glossaries(search_string, output_format=output_format)
890
- # glossary_list_md += f"```{json.dumps(struct, indent=4)}```\n"
891
- # else:
892
- # glossary_list_md += egeria_client.find_glossaries(search_string, output_format=output_format)
893
- # print_msg("ALWAYS", f"Wrote Glossary List for search string: `{search_string}`", debug_level)
894
- #
895
- # return glossary_list_md
896
- #
897
- # except Exception as e:
898
- # print(f"{ERROR}Error performing {command}: {e}")
899
- # console.print_exception(show_locals=True)
900
- # return None
901
- # else:
902
- # return None
903
- #
904
- #
905
- def process_term_details_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
906
- pass
907
- # """ List terms as a markdown table. Filter based on optional search string. """
908
- # set_debug_level(directive)
909
- # valid = True
910
- # command = extract_command(txt)
911
- # print(Markdown(f"# {command}\n"))
912
- # object_type = command.split(' ')[1].strip()
913
- # object_action = command.split(' ')[0].strip()
914
- #
915
- # term_identifier = process_simple_attribute(txt, TERM_NAME_LABELS, "ERROR")
916
- #
917
- # print(Markdown(f"{pre_command} `{command}` for term:`{term_identifier}` with directive: `{directive}`"))
918
- #
919
- # output_format = process_simple_attribute(txt, OUTPUT_LABELS, "INFO")
920
- # if output_format is None:
921
- # output_format = "REPORT"
922
- # else:
923
- # output_format = output_format.upper()
924
- #
925
- # if output_format not in ["DICT", "REPORT"]:
926
- # valid = False
927
- # print_msg(ERROR, f"Invalid output format: `{output_format}`", debug_level)
928
- #
929
- # request_display = f"\n\t* Term Identifier: {term_identifier}\n\t* Output Format {output_format}"
930
- #
931
- # if directive == "display":
932
- # print(request_display)
933
- # return None
934
- # elif directive == "validate":
935
- # print(request_display)
936
- # return valid
937
- # elif directive == "process":
938
- # try:
939
- # print(request_display)
940
- # if not valid: # First validate the term before we process it
941
- # return None
942
- # output = egeria_client.get_term_details(term_identifier, output_format=output_format)
943
- # if output_format == "DICT":
944
- # output = f"```{json.dumps(output, indent=4)}```"
945
- # print_msg("ALWAYS", f"Wrote Term Details for term: `{term_identifier}`", debug_level)
946
- #
947
- # return output
948
- #
949
- # except Exception as e:
950
- # print(f"{ERROR}Error performing {command}: {e}")
951
- # console.print_exception(show_locals=True)
952
- # return None
953
- # else:
954
- # return None
955
- #
956
- #
957
- def process_term_history_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
958
- pass
959
- # """ List terms as a markdown table. Filter based on optional search string. """
960
- # set_debug_level(directive)
961
- # valid = True
962
- # command = extract_command(txt)
963
- # print(Markdown(f"# {command}\n"))
964
- # object_type = command.split(' ')[1].strip()
965
- # object_action = command.split(' ')[0].strip()
966
- #
967
- # element_labels = TERM_NAME_LABELS
968
- # element_labels.append('Display Name')
969
- #
970
- # term_name = process_simple_attribute(txt, element_labels, "ERROR")
971
- #
972
- # known_q_name, known_guid, valid, term_exists = process_element_identifiers(egeria_client, object_type,
973
- # element_labels, txt, object_action, )
974
- #
975
- # print(Markdown(f"{pre_command} `{command}` for term:`{term_name}` with directive: `{directive}`"))
976
- #
977
- # output_format = process_simple_attribute(txt, OUTPUT_LABELS, "INFO")
978
- # if output_format is None:
979
- # output_format = "LIST"
980
- # elif output_format not in ["DICT", "LIST"]:
981
- # valid = False
982
- # print_msg(ERROR, f"Invalid output format: `{output_format}`", debug_level)
983
- #
984
- # request_display = f"\n\t* Term Name: {term_name}\n\t* Output Format {output_format}\n\t* GUID: {known_guid}\n"
985
- #
986
- # if directive == "display":
987
- # print(request_display)
988
- # return None
989
- # elif directive == "validate":
990
- # print(request_display)
991
- # return valid
992
- # elif directive == "process":
993
- # try:
994
- # print(request_display)
995
- # if not valid: # First validate the term before we process it
996
- # return None
997
- # term_history_md = f"\n# Term History for `{term_name}`\n\n"
998
- # if output_format == "DICT":
999
- # struct = egeria_client.list_term_revision_history(known_guid, output_format=output_format)
1000
- # term_history_md += f"```{json.dumps(struct, indent=4)}```\n"
1001
- # else:
1002
- # term_history_md += egeria_client.list_full_term_history(known_guid, output_format)
1003
- # print_msg("ALWAYS", f"Wrote Term History for term `{term_name}`", debug_level)
1004
- #
1005
- # return term_history_md
1006
- #
1007
- # except Exception as e:
1008
- # print(f"{ERROR}Error performing {command}: {e}")
1009
- # console.print_exception(show_locals=True)
1010
- # return None
1011
- # else:
1012
- # return None
1013
- #
1014
- #
1015
- def process_term_revision_history_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[str]:
1016
- pass
1017
- # """ List term revision history as a markdown table or list."""
1018
- # set_debug_level(directive)
1019
- # valid = True
1020
- # command = extract_command(txt)
1021
- # print(Markdown(f"# {command}\n"))
1022
- # object_type = command.split(' ')[1].strip()
1023
- # object_action = command.split(' ')[0].strip()
1024
- # known_q_name = None
1025
- # known_guid = None
1026
- #
1027
- # element_labels = TERM_NAME_LABELS
1028
- #
1029
- # term_name = process_simple_attribute(txt, element_labels, "ERROR")
1030
- # print(Markdown(f"{pre_command} `{command}` for term: `{term_name}` with directive: `{directive}` "))
1031
- #
1032
- # known_q_name, known_guid, valid, _ = process_element_identifiers(egeria_client, object_type, element_labels, txt,
1033
- # object_action, )
1034
- # output_format = process_simple_attribute(txt, ['Output Format', 'Format'], 'INFO')
1035
- # if output_format is None:
1036
- # output_format = "LIST"
1037
- # elif output_format not in ["DICT", "LIST", "MD"]:
1038
- # valid = False
1039
- # print_msg(ERROR, f"Invalid output format: `{output_format}`", debug_level)
1040
- #
1041
- # request_display = f"\n\t* Term Name: {term_name}\n\t* Output Format: {output_format}\n"
1042
- #
1043
- # if directive == "display":
1044
- # print(request_display)
1045
- # return None
1046
- # elif directive == "validate":
1047
- # print(request_display)
1048
- # return str(valid)
1049
- # elif directive == "process":
1050
- # try:
1051
- # print(request_display)
1052
- # if not valid: # First validate the term before we process it
1053
- # return None
1054
- # term_history_md = f"\n# Term Revision History for `{term_name}`\n\n"
1055
- # if output_format == "DICT":
1056
- # struct = egeria_client.list_term_revision_history(known_guid, output_format)
1057
- # term_history_md += f"```{json.dumps(struct, indent=4)}```\n"
1058
- # else:
1059
- # term_history_md += egeria_client.list_term_revision_history(known_guid, output_format)
1060
- # print_msg("ALWAYS", f"Wrote Term Revision History for term `{term_name}`", debug_level)
1061
- # return term_history_md
1062
- #
1063
- # except Exception as e:
1064
- # print(f"{ERROR}Error performing {command}: {e}")
1065
- # console.print_exception(show_locals=True)
1066
- # return None
1067
- # else:
1068
- # return None