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
@@ -18,50 +18,34 @@ import time
18
18
  from rich import box
19
19
  from rich.console import Console
20
20
  from rich.live import Live
21
- from rich.markdown import Markdown
22
21
  from rich.table import Table
23
22
 
24
23
  from pyegeria import (
25
- AutomatedCuration,
26
- InvalidParameterException,
27
- PropertyServerException,
28
- UserNotAuthorizedException,
29
- print_exception_response,
24
+ EgeriaTech,
25
+ PyegeriaException,
26
+ print_basic_exception,
27
+ settings,
28
+ config_logging
30
29
  )
31
30
 
32
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
33
- EGERIA_KAFKA_ENDPOINT = os.environ.get("EGERIA_KAFKA_ENDPOINT", "localhost:9092")
34
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
35
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
36
- EGERIA_VIEW_SERVER_URL = os.environ.get(
37
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
38
- )
39
- EGERIA_ENGINE_HOST = os.environ.get("EGERIA_ENGINE_HOST", "engine-host")
40
- EGERIA_ENGINE_HOST_URL = os.environ.get(
41
- "EGERIA_ENGINE_HOST_URL", "https://localhost:9443"
42
- )
43
- EGERIA_INTEGRATION_DAEMON = os.environ.get(
44
- "EGERIA_INTEGRATION_DAEMON", "integration_daemon"
45
- )
46
- EGERIA_ADMIN_USER = os.environ.get("EGERIA_ADMIN_USER", "garygeeke")
47
- EGERIA_ADMIN_PASSWORD = os.environ.get("EGERIA_ADMIN_PASSWORD", "secret")
31
+
48
32
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
49
33
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
50
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
51
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
52
34
 
53
- disable_ssl_warnings = True
35
+ app_config = settings.Environment
36
+ config_logging()
37
+ console = Console(width = app_config.console_width)
54
38
 
55
39
 
56
- def display_engine_activity_c(
40
+ def display_engine_activity(
57
41
  row_limit: int = 0,
58
- view_server: str = EGERIA_VIEW_SERVER,
59
- view_url: str = EGERIA_VIEW_SERVER_URL,
42
+ view_server: str = app_config.egeria_view_server,
43
+ view_url: str = app_config.egeria_view_server_url,
60
44
  user: str = EGERIA_USER,
61
45
  user_pass: str = EGERIA_USER_PASSWORD,
62
46
  paging: bool = True,
63
- jupyter: bool = EGERIA_JUPYTER,
64
- width: int = EGERIA_WIDTH,
47
+ jupyter: bool = app_config.egeria_jupyter,
48
+ width: int = app_config.console_width,
65
49
  ):
66
50
  """Display governance engine activity as a table.
67
51
 
@@ -84,7 +68,7 @@ def display_engine_activity_c(
84
68
  width : int
85
69
  The width of the console for table printing.
86
70
  """
87
- g_client = AutomatedCuration(view_server, view_url, user, user_pwd=user_pass)
71
+ g_client = EgeriaTech(view_server, view_url, user, user_pwd=user_pass)
88
72
  token = g_client.create_egeria_bearer_token()
89
73
 
90
74
  def generate_table() -> Table:
@@ -102,15 +86,17 @@ def display_engine_activity_c(
102
86
  expand=True,
103
87
  )
104
88
  table.add_column("Requested Time")
105
- table.add_column("Core Info")
106
- table.add_column("Target Elements")
107
-
89
+ table.add_column("Start Time")
90
+ table.add_column("Action GUID", no_wrap=True)
91
+ table.add_column("Engine Name")
92
+ table.add_column("Request Type")
108
93
  table.add_column("Action Status")
94
+ table.add_column("Target Element")
109
95
  table.add_column("Completion Time")
110
- table.add_column("Core Results")
111
- # table.add_column("Completion Message")
96
+ table.add_column("Process Name")
97
+ table.add_column("Completion Message")
112
98
 
113
- action_status = g_client.get_engine_actions()
99
+ action_status = g_client.get_active_engine_actions()
114
100
 
115
101
  if type(action_status) is str:
116
102
  requested_time = " "
@@ -133,10 +119,9 @@ def display_engine_activity_c(
133
119
  if row_limit > 0 and row_count >= row_limit:
134
120
  break
135
121
  row_count += 1
136
- requested_time = action.get("requestedTime", " ")[:-10]
137
- start_time = action.get("startTime", " ")[:-10]
138
- completion_time = action.get("completionTime", " ")[:-10]
139
- completion_guards = action.get("completionGuards", " ")
122
+ requested_time = action.get("requestedTime", " ")
123
+ start_time = action.get("startTime", " ")
124
+ completion_time = action.get("completionTime", " ")
140
125
 
141
126
  engine_name = action["governanceEngineName"]
142
127
  request_type = action["requestType"]
@@ -148,57 +133,42 @@ def display_engine_activity_c(
148
133
  "ACTIVATING",
149
134
  ):
150
135
  action_status = f"[yellow]{action['actionStatus']}"
151
- elif action["actionStatus"] in ("IN_PROGRESS", "ACTIONED"):
136
+ elif action["actionStatus"] in ("IN_PROGRESS", "COMPLETED"):
152
137
  action_status = f"[green]{action['actionStatus']}"
153
138
  else:
154
139
  action_status = f"[red]{action['actionStatus']}"
155
140
 
156
- request_parameters_md = " "
157
- request_parameters = action.get("requestParameters", "Empty")
158
- if type(request_parameters) is dict:
159
- for key, value in request_parameters.items():
160
- request_parameters_md += f"\t* {key}: {value}\n"
161
-
162
141
  targets = action.get("actionTargetElements", "Empty")
163
142
  if type(targets) is list:
143
+ tgt_tab = Table()
144
+ tgt_tab.add_column("name")
145
+ tgt_tab.add_column("guid", no_wrap=True)
146
+ tgt_tab.add_column("type_name")
164
147
  targets_md = ""
165
148
  for target in targets:
166
149
  t_name = target["actionTargetName"]
167
150
  t_guid = target["actionTargetGUID"]
168
151
  t_type = target["targetElement"]["type"]["typeName"]
169
- targets_md += (
170
- f"* Target Name: {t_name}\n"
171
- f" * Target GUID: {t_guid}\n"
172
- f" * Target Type: {t_type}\n"
173
- )
174
-
152
+ tgt_tab.add_row(t_name, t_guid, t_type)
175
153
  # target_element = json.dumps(target[0]["targetElement"]["elementProperties"]["propertiesAsStrings"])
176
- target_element = Markdown(f"{targets_md} ---\n")
154
+ target_element = tgt_tab
177
155
  else:
178
156
  target_element = " "
179
157
 
180
- process_name = action.get("processName", "Null")
158
+ process_name = action.get("processName", " ")
181
159
  completion_message = action.get("completionMessage", " ")
182
- core_results_md = (
183
- f"* Completion Guards: {completion_guards}\n"
184
- f"* Completion Message: {completion_message}"
185
- )
186
- core_results_out = Markdown(core_results_md)
187
- core_info_md = (
188
- f"* Start Time: {start_time}\n* Engine Name: {engine_name}\n* GUID: {action_guid}\n"
189
- f"* Request Type: {request_type}\n"
190
- f"* Process Name: {process_name}\n"
191
- f"---\n"
192
- f"* Request Parameters: \n{request_parameters_md}\n"
193
- )
194
- core_info_out = Markdown(core_info_md)
160
+
195
161
  table.add_row(
196
162
  requested_time,
197
- core_info_out,
198
- target_element,
163
+ start_time,
164
+ action_guid,
165
+ engine_name,
166
+ request_type,
199
167
  action_status,
168
+ target_element,
200
169
  completion_time,
201
- core_results_out,
170
+ process_name,
171
+ completion_message,
202
172
  )
203
173
  else:
204
174
  print("Egeria integration daemon not running")
@@ -223,11 +193,9 @@ def display_engine_activity_c(
223
193
  live.update(generate_table())
224
194
 
225
195
  except (
226
- InvalidParameterException,
227
- PropertyServerException,
228
- UserNotAuthorizedException,
196
+ PyegeriaException
229
197
  ) as e:
230
- print_exception_response(e)
198
+ print_basic_exception(e)
231
199
  except KeyboardInterrupt:
232
200
  pass
233
201
  finally:
@@ -246,12 +214,13 @@ def main_live():
246
214
 
247
215
  args = parser.parse_args()
248
216
 
249
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
250
- url = args.url if args.url is not None else EGERIA_VIEW_SERVER_URL
217
+ server = args.server if args.server is not None else app_config.egeria_view_server
218
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
251
219
  userid = args.userid if args.userid is not None else EGERIA_USER
252
220
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
253
221
  rowlimit = int(args.rowlimit) if args.rowlimit is not None else 0
254
- display_engine_activity_c(
222
+
223
+ display_engine_activity(
255
224
  rowlimit, server, url, user=userid, user_pass=user_pass, paging=False
256
225
  )
257
226
 
@@ -268,13 +237,13 @@ def main_paging():
268
237
 
269
238
  args = parser.parse_args()
270
239
 
271
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
272
- url = args.url if args.url is not None else EGERIA_VIEW_SERVER_URL
240
+ server = args.server if args.server is not None else app_config.egeria_view_server
241
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
273
242
  userid = args.userid if args.userid is not None else EGERIA_USER
274
243
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
275
244
  rowlimit = int(args.rowlimit) if args.rowlimit is not None else 0
276
245
 
277
- display_engine_activity_c(
246
+ display_engine_activity(
278
247
  rowlimit, server, url, user=userid, user_pass=user_pass, paging=True
279
248
  )
280
249
 
@@ -11,44 +11,23 @@ A simple status display for the Integration Daemon.
11
11
  import argparse
12
12
  import os
13
13
  import time
14
- from typing import Union
15
14
 
16
- import nest_asyncio
17
15
  from rich import box
18
16
  from rich.console import Console
19
17
  from rich.live import Live
20
18
  from rich.prompt import Prompt
21
19
  from rich.table import Table
22
- from textual.widgets import DataTable
23
-
24
- from pyegeria import AutomatedCuration, EgeriaTech
25
- from pyegeria._exceptions import (
26
- InvalidParameterException,
27
- PropertyServerException,
28
- UserNotAuthorizedException,
29
- print_exception_response,
30
- )
31
-
32
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
33
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
34
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
35
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
36
- EGERIA_VIEW_SERVER_URL = os.environ.get(
37
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
38
- )
39
- EGERIA_INTEGRATION_DAEMON = os.environ.get(
40
- "EGERIA_INTEGRATION_DAEMON", "integration-daemon"
41
- )
42
- EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
43
- "EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
44
- )
20
+
21
+ from pyegeria import EgeriaTech, PyegeriaException, settings, config_logging, \
22
+ PyegeriaClientException, print_basic_exception
23
+
45
24
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
46
25
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
47
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
48
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", 200))
49
26
 
50
27
  disable_ssl_warnings = True
51
-
28
+ app_config = settings.Environment
29
+ settings.Logging.console_logging_level = "ERROR"
30
+ config_logging()
52
31
 
53
32
  def display_integration_daemon_status(
54
33
  search_list: list[str] = ["*"],
@@ -58,13 +37,15 @@ def display_integration_daemon_status(
58
37
  integ_url: str = os.environ.get(
59
38
  "EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
60
39
  ),
61
- view_server: str = os.environ.get("EGERIA_VIEW_SERVER", "view-server"),
62
- view_url: str = os.environ.get("EGERIA_VIEW_SERVER_URL", "https://localhost:9443"),
63
- user: str = os.environ.get("EGERIA_USER"),
64
- user_pass: str = os.environ.get("EGERIA_USER_PASSWORD"),
40
+ view_server: str = app_config.egeria_view_server,
41
+ view_url: str = app_config.egeria_view_server_url,
42
+ user: str = EGERIA_USER,
43
+ user_pass: str = EGERIA_USER_PASSWORD,
44
+
45
+ width: int = app_config.console_width,
65
46
  paging: bool = False,
66
- jupyter: bool = os.environ.get("EGERIA_JUPYTER", "False"),
67
- width: int = EGERIA_WIDTH,
47
+
48
+ jupyter: bool = app_config.egeria_jupyter,
68
49
  sort: bool = True,
69
50
  ) -> None:
70
51
  """Display the status of connectors running on the specified Integration Daemon OMAG Server.
@@ -134,7 +115,6 @@ def display_integration_daemon_status(
134
115
  table.add_column("Target Element", min_width=20)
135
116
  table.add_column("Exception Message", min_width=10)
136
117
 
137
- # server_guid = s_client.get_guid_for_name(integ_server)
138
118
 
139
119
  token = s_client.refresh_egeria_bearer_token()
140
120
  daemon_status = s_client.get_server_report(None, integ_server)
@@ -159,22 +139,24 @@ def display_integration_daemon_status(
159
139
  last_refresh_time = connector.get("lastRefreshTime", "---")[:-10]
160
140
  refresh_interval = str(connector.get("minMinutesBetweenRefresh", "---"))
161
141
  exception_msg = connector.get("failingExceptionMessage", " ")
142
+ tgt_tab="---"
162
143
  if connector_guid != "---":
163
144
  targets = s_client.get_catalog_targets(connector_guid)
164
145
  tgt_tab = Table()
165
146
  tgt_tab.add_column("Target")
166
- tgt_tab.add_column("UniqueName")
167
- tgt_tab.add_column("Relationship GUID", no_wrap=True)
147
+ tgt_tab.add_column("Display Name")
168
148
 
169
149
  if type(targets) == list:
170
150
  targets_md = True
171
151
  for target in targets:
172
- t_name = target["catalogTargetName"]
152
+ t_name = target['relatedBy']['relationshipProperties'].get("catalogTargetName",None)
173
153
  # t_sync = target["permittedSynchronization"]
174
- t_unique_name = target["catalogTargetElement"]["uniqueName"]
175
- t_rel_guid = target["relationshipGUID"]
176
- # targets_m += f"* Target Name: __{t_name}__\n* Sync: {t_sync}\n* Unique Name: {t_unique_name}\n\n"
177
- tgt_tab.add_row(t_name, t_unique_name, t_rel_guid)
154
+ if t_name:
155
+ t_unique_name = target["properties"].get("displayName","---")
156
+ else:
157
+ t_unique_name = "---"
158
+
159
+ tgt_tab.add_row(t_name, t_unique_name)
178
160
  # targets_md = Markdown(targets_m)
179
161
  else:
180
162
  targets_md = False
@@ -220,13 +202,11 @@ def display_integration_daemon_status(
220
202
  live.update(generate_table(search_list))
221
203
 
222
204
  except (
223
- InvalidParameterException,
224
- PropertyServerException,
225
- UserNotAuthorizedException,
205
+ PyegeriaException, PyegeriaClientException,
226
206
  ) as e:
227
- print_exception_response(e)
207
+ print_basic_exception(e)
228
208
 
229
- except KeyboardInterrupt:
209
+ except KeyboardInterrupt as e:
230
210
  pass
231
211
 
232
212
  finally:
@@ -249,15 +229,15 @@ def main_live(paging: bool = False) -> None:
249
229
  integ_server = (
250
230
  args.integ_server
251
231
  if args.integ_server is not None
252
- else EGERIA_INTEGRATION_DAEMON
232
+ else app_config.egeria_integration_daemon
253
233
  )
254
234
  integ_url = (
255
- args.integ_url if args.integ_url is not None else EGERIA_INTEGRATION_DAEMON_URL
235
+ args.integ_url if args.integ_url is not None else app_config.egeria_integration_daemon_url
256
236
  )
257
237
  view_server = (
258
- args.view_server if args.view_server is not None else EGERIA_VIEW_SERVER
238
+ args.view_server if args.view_server is not None else app_config.egeria_view_server
259
239
  )
260
- view_url = args.view_url if args.view_url is not None else EGERIA_VIEW_SERVER_URL
240
+ view_url = args.view_url if args.view_url is not None else app_config.egeria_view_server_url
261
241
  userid = args.userid if args.userid is not None else EGERIA_USER
262
242
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
263
243
 
@@ -293,15 +273,15 @@ def main_paging(paging: bool = True) -> None:
293
273
  integ_server = (
294
274
  args.integ_server
295
275
  if args.integ_server is not None
296
- else EGERIA_INTEGRATION_DAEMON
276
+ else app_config.egeria_integration_daemon
297
277
  )
298
278
  integ_url = (
299
- args.integ_url if args.integ_url is not None else EGERIA_INTEGRATION_DAEMON_URL
279
+ args.integ_url if args.integ_url is not None else app_config.egeria_integration_daemon_url
300
280
  )
301
281
  view_server = (
302
- args.view_server if args.view_server is not None else EGERIA_VIEW_SERVER
282
+ args.view_server if args.view_server is not None else app_config.egeria_view_server
303
283
  )
304
- view_url = args.view_url if args.view_url is not None else EGERIA_VIEW_SERVER_URL
284
+ view_url = args.view_url if args.view_url is not None else app_config.egeria_view_server_url
305
285
  userid = args.userid if args.userid is not None else EGERIA_USER
306
286
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
307
287
  search_list = Prompt.ask(
@@ -14,51 +14,39 @@ import json
14
14
  import os
15
15
  import sys
16
16
  import time
17
-
17
+ from datetime import datetime
18
18
  from rich import box
19
19
  from rich.console import Console
20
20
  from rich.live import Live
21
+ from rich.markdown import Markdown
21
22
  from rich.table import Table
22
23
 
23
24
  from pyegeria import (
24
- AutomatedCuration,
25
- InvalidParameterException,
26
- PropertyServerException,
27
- UserNotAuthorizedException,
28
- print_exception_response,
25
+ EgeriaTech,
26
+ PyegeriaException,
27
+ print_basic_exception,
28
+ settings,
29
+ config_logging
29
30
  )
30
31
 
31
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
32
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
33
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
34
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
35
- EGERIA_VIEW_SERVER_URL = os.environ.get(
36
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
37
- )
38
- EGERIA_ENGINE_HOST = os.environ.get("INTEGRATION_ENGINE_HOST", "engine-host")
39
- EGERIA_ENGINE_HOST_URL = os.environ.get(
40
- "INTEGRATION_ENGINE_HOST_URL", "https://localhost:9443"
41
- )
42
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
43
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
44
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
32
+
45
33
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
46
34
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
47
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
48
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
49
35
 
50
- disable_ssl_warnings = True
36
+ app_config = settings.Environment
37
+ config_logging()
38
+ console = Console(width = app_config.console_width)
51
39
 
52
40
 
53
- def display_engine_activity(
41
+ def display_engine_activity_c(
54
42
  row_limit: int = 0,
55
- view_server: str = EGERIA_VIEW_SERVER,
56
- view_url: str = EGERIA_VIEW_SERVER_URL,
43
+ view_server: str = app_config.egeria_view_server,
44
+ view_url: str = app_config.egeria_view_server_url,
57
45
  user: str = EGERIA_USER,
58
46
  user_pass: str = EGERIA_USER_PASSWORD,
59
47
  paging: bool = True,
60
- jupyter: bool = EGERIA_JUPYTER,
61
- width: int = EGERIA_WIDTH,
48
+ jupyter: bool = app_config.egeria_jupyter,
49
+ width: int = app_config.console_width,
62
50
  ):
63
51
  """Display governance engine activity as a table.
64
52
 
@@ -81,7 +69,7 @@ def display_engine_activity(
81
69
  width : int
82
70
  The width of the console for table printing.
83
71
  """
84
- g_client = AutomatedCuration(view_server, view_url, user, user_pwd=user_pass)
72
+ g_client = EgeriaTech(view_server, view_url, user, user_pwd=user_pass)
85
73
  token = g_client.create_egeria_bearer_token()
86
74
 
87
75
  def generate_table() -> Table:
@@ -99,17 +87,15 @@ def display_engine_activity(
99
87
  expand=True,
100
88
  )
101
89
  table.add_column("Requested Time")
102
- table.add_column("Start Time")
103
- table.add_column("Action GUID", no_wrap=True)
104
- table.add_column("Engine Name")
105
- table.add_column("Request Type")
90
+ table.add_column("Core Info")
91
+ table.add_column("Target Elements")
92
+
106
93
  table.add_column("Action Status")
107
- table.add_column("Target Element")
108
94
  table.add_column("Completion Time")
109
- table.add_column("Process Name")
110
- table.add_column("Completion Message")
95
+ table.add_column("Core Results")
96
+ # table.add_column("Completion Message")
111
97
 
112
- action_status = g_client.get_engine_actions()
98
+ action_status = g_client.find_engine_actions()
113
99
 
114
100
  if type(action_status) is str:
115
101
  requested_time = " "
@@ -124,7 +110,7 @@ def display_engine_activity(
124
110
  elif type(action_status) is list:
125
111
  sorted_action_status = sorted(
126
112
  action_status,
127
- key=lambda i: i.get("requestedTime", time.asctime()),
113
+ key=lambda i: i.get("requestedTime", datetime.now().isoformat()),
128
114
  reverse=True,
129
115
  )
130
116
  row_count = 0
@@ -132,56 +118,75 @@ def display_engine_activity(
132
118
  if row_limit > 0 and row_count >= row_limit:
133
119
  break
134
120
  row_count += 1
135
- requested_time = action.get("requestedTime", " ")
136
- start_time = action.get("startTime", " ")
137
- completion_time = action.get("completionTime", " ")
121
+ requested_time = action['properties'].get("requestedStartTime", " ")[:-10]
122
+ start_time = action['properties'].get("startTime", " ")[:-10]
123
+ completion_time = action['properties'].get("completionTime", " ")[:-10]
124
+ completion_guards = action['properties'].get("completionGuards", " ")
138
125
 
139
- engine_name = action["governanceEngineName"]
140
- request_type = action["requestType"]
126
+ engine_name = action['properties'].get("executorEngineName",'---')
127
+ request_type = action['properties'].get("requestType",'---')
141
128
  action_guid = action["elementHeader"]["guid"]
142
- if action["actionStatus"] in (
129
+ activity_status = action['properties'].get("activityStatus",'---')
130
+ if activity_status in (
143
131
  "REQUESTED",
144
132
  "APPROVED",
145
133
  "WAITING",
146
134
  "ACTIVATING",
147
135
  ):
148
- action_status = f"[yellow]{action['actionStatus']}"
149
- elif action["actionStatus"] in ("IN_PROGRESS", "ACTIONED"):
150
- action_status = f"[green]{action['actionStatus']}"
136
+ action_status = f"[yellow]{activity_status}"
137
+ elif activity_status in ("IN_PROGRESS", "COMPLETED"):
138
+ action_status = f"[green]{activity_status}"
151
139
  else:
152
- action_status = f"[red]{action['actionStatus']}"
153
-
154
- targets = action.get("actionTargetElements", "Empty")
140
+ action_status = f"[red]{activity_status}"
141
+
142
+ request_parameters_md = " "
143
+ request_parameters = action['properties'].get("requestParameters", "Empty")
144
+ if type(request_parameters) is dict:
145
+ for key, value in request_parameters.items():
146
+ request_parameters_md += f"\t* {key}: {value}\n"
147
+ #
148
+ # Discuss
149
+ #
150
+ targets = action['properties'].get("actionTargetElements", "Empty")
155
151
  if type(targets) is list:
156
- tgt_tab = Table()
157
- tgt_tab.add_column("name")
158
- tgt_tab.add_column("guid", no_wrap=True)
159
- tgt_tab.add_column("type_name")
160
152
  targets_md = ""
161
153
  for target in targets:
162
154
  t_name = target["actionTargetName"]
163
155
  t_guid = target["actionTargetGUID"]
164
156
  t_type = target["targetElement"]["type"]["typeName"]
165
- tgt_tab.add_row(t_name, t_guid, t_type)
157
+ targets_md += (
158
+ f"* Target Name: {t_name}\n"
159
+ f" * Target GUID: {t_guid}\n"
160
+ f" * Target Type: {t_type}\n"
161
+ )
162
+
166
163
  # target_element = json.dumps(target[0]["targetElement"]["elementProperties"]["propertiesAsStrings"])
167
- target_element = tgt_tab
164
+ target_element = Markdown(f"{targets_md} ---\n")
168
165
  else:
169
166
  target_element = " "
170
167
 
171
- process_name = action.get("processName", " ")
172
- completion_message = action.get("completionMessage", " ")
173
-
168
+ process_name = action['properties'].get("processName", "Null")
169
+ completion_message = action['properties'].get("completionMessage", " ")
170
+ core_results_md = (
171
+ f"* Completion Guards: {completion_guards}\n"
172
+ f"* Completion Message: {completion_message}"
173
+ )
174
+ core_results_out = Markdown(core_results_md)
175
+ core_info_md = (
176
+ f"* Start Time: {start_time}\n* Engine Name: {engine_name}\n* GUID: {action_guid}\n"
177
+ f"* Request Type: {request_type}\n"
178
+ f"* Process Name: {process_name}\n"
179
+ f"---\n"
180
+ f"* Request Parameters: \n{request_parameters_md}\n"
181
+ )
182
+ core_info_out = Markdown(core_info_md)
174
183
  table.add_row(
175
184
  requested_time,
176
- start_time,
177
- action_guid,
178
- engine_name,
179
- request_type,
180
- action_status,
185
+ core_info_out,
181
186
  target_element,
187
+ action_status,
182
188
  completion_time,
183
- process_name,
184
- completion_message,
189
+ core_results_out,
185
190
  )
186
191
  else:
187
192
  print("Egeria integration daemon not running")
@@ -206,11 +211,9 @@ def display_engine_activity(
206
211
  live.update(generate_table())
207
212
 
208
213
  except (
209
- InvalidParameterException,
210
- PropertyServerException,
211
- UserNotAuthorizedException,
214
+ PyegeriaException
212
215
  ) as e:
213
- print_exception_response(e)
216
+ print_basic_exception(e)
214
217
  except KeyboardInterrupt:
215
218
  pass
216
219
  finally:
@@ -229,13 +232,12 @@ def main_live():
229
232
 
230
233
  args = parser.parse_args()
231
234
 
232
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
233
- url = args.url if args.url is not None else EGERIA_VIEW_SERVER_URL
235
+ server = args.server if args.server is not None else app_config.egeria_view_server
236
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
234
237
  userid = args.userid if args.userid is not None else EGERIA_USER
235
238
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
236
239
  rowlimit = int(args.rowlimit) if args.rowlimit is not None else 0
237
-
238
- display_engine_activity(
240
+ display_engine_activity_c(
239
241
  rowlimit, server, url, user=userid, user_pass=user_pass, paging=False
240
242
  )
241
243
 
@@ -252,13 +254,13 @@ def main_paging():
252
254
 
253
255
  args = parser.parse_args()
254
256
 
255
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
256
- url = args.url if args.url is not None else EGERIA_VIEW_SERVER_URL
257
+ server = args.server if args.server is not None else app_config.egeria_view_server
258
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
257
259
  userid = args.userid if args.userid is not None else EGERIA_USER
258
260
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
259
261
  rowlimit = int(args.rowlimit) if args.rowlimit is not None else 0
260
262
 
261
- display_engine_activity(
263
+ display_engine_activity_c(
262
264
  rowlimit, server, url, user=userid, user_pass=user_pass, paging=True
263
265
  )
264
266