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,293 +3,60 @@
3
3
  SPDX-License-Identifier: Apache-2.0
4
4
  Copyright Contributors to the ODPi Egeria project.
5
5
 
6
- Display the status of cataloged platforms and servers.
6
+ Display Asset Graph Information using generic functions.
7
7
  """
8
+ from __future__ import annotations
8
9
  import argparse
9
10
  import os
10
- import sys
11
11
 
12
- from rich import print
13
12
  from rich.console import Console
14
- from rich.markdown import Markdown
15
- from rich.panel import Panel
16
13
  from rich.prompt import Prompt
17
- from rich.tree import Tree
18
14
 
15
+ from commands.cat.run_report import list_generic
16
+ from pyegeria.core.config import settings
19
17
  from pyegeria import (
20
- AssetCatalog,
21
- InvalidParameterException,
22
- PropertyServerException,
23
- UserNotAuthorizedException,
18
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table, PyegeriaException
24
19
  )
25
20
 
26
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
27
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
28
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
29
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
30
- EGERIA_VIEW_SERVER_URL = os.environ.get(
31
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
32
- )
33
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
34
- EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
35
- "EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
36
- )
37
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
38
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
39
21
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
40
22
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
41
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
42
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
43
23
 
44
- disable_ssl_warnings = True
24
+
25
+ app_config = settings.Environment
45
26
 
46
27
  guid_list = []
47
28
 
48
- console = Console(width=EGERIA_WIDTH, force_terminal=(not EGERIA_JUPYTER))
29
+ console = Console(width=app_config.console_width, force_terminal=(not app_config.egeria_jupyter))
49
30
 
50
31
 
51
32
  def asset_viewer(
52
- asset_guid: str,
53
- server_name: str,
54
- platform_url: str,
55
- user: str,
56
- user_pass: str,
57
- jupyter: bool = EGERIA_JUPYTER,
58
- width: int = EGERIA_WIDTH,
33
+ output_format: str = "TABLE",
34
+ asset_guid: str = None,
35
+ view_server: str = app_config.egeria_view_server,
36
+ view_url: str = app_config.egeria_view_server_url,
37
+ user: str = EGERIA_USER,
38
+ user_pass: str = EGERIA_USER_PASSWORD,
39
+ jupyter: bool = app_config.egeria_jupyter,
40
+ width: int = app_config.console_width,
41
+ prompt_missing: bool = False,
42
+ write_file: bool = False,
43
+ render_table: bool = False,
44
+ table_caption: str | None = None,
45
+ use_pager: bool = True,
59
46
  ):
60
- def build_classifications(classification: dict) -> Markdown:
61
- class_md = ""
62
- for c in classification:
63
- c_type = c["classificationName"]
64
- if c_type == "Anchors":
65
- continue
66
- class_md += f"\n* Classification: {c_type}\n"
67
- class_props = c.get("classificationProperties", "---")
68
- if type(class_props) is dict:
69
- for prop in class_props.keys():
70
- class_md += f"\t* {prop}: {class_props[prop]}\n"
71
- if class_md == "":
72
- output = None
73
- else:
74
- output = class_md
75
- return output
76
-
77
- def build_nested_elements(nested_element: dict) -> Markdown:
78
- ne_md = " "
79
- ne_header = nested_element["elementHeader"]
80
- ne_created_by = ne_header["versions"]["createdBy"]
81
- ne_created_at = ne_header["versions"]["createTime"]
82
- ne_guid = ne_header["guid"]
83
- guid_list.append(ne_guid)
84
-
85
- ne_type = ne_header["type"]["typeName"]
86
- ne_classifications = ne_header["classifications"]
87
- ne_class_md = build_classifications(ne_classifications)
88
- # ne_class_md = " " if ne_class_md is None else ne_class_md
89
- ne_props = nested_element.get("properties", "---")
90
- ne_prop_md = "\n"
91
- if type(ne_props) is dict:
92
- for prop in ne_props.keys():
93
- ne_prop_md += f"\t* {prop}: {ne_props[prop]}\n"
94
- ne_md = (
95
- f"Nested Element of Type: {ne_type} with GUID: {ne_guid} \n "
96
- f"* created by {ne_created_by} at time {ne_created_at}\n"
97
- f"\n* Properties:\n{ne_prop_md}\n"
98
- )
99
-
100
- if ne_class_md is not None:
101
- ne_md += f"* {ne_class_md}"
102
-
103
- output = Markdown(ne_md)
104
- return output
105
-
106
47
  try:
107
- a_client = AssetCatalog(server_name, platform_url, user_id=user)
108
-
109
- token = a_client.create_egeria_bearer_token(user, user_pass)
110
- # asset_info = a_client.find_assets_in_domain(asset_name)
111
- # if type(asset_info) is str:
112
- # print("\n No Assets Found - Exiting\n")
113
- # sys.exit(1)
114
- #
115
- # asset_guid = asset_info[0]['guid']
116
-
117
- guid_list.append(asset_guid)
118
-
119
- asset_graph = a_client.get_asset_graph(asset_guid)
120
- if type(asset_graph) is not dict:
121
- print(f"\n No Asset found for {asset_guid}")
122
- sys.exit(1)
123
-
124
- # print(f"\n{json.dumps(asset_graph, indent =2)}\n")
125
-
126
- asset_display_name = asset_graph["properties"].get("displayName", "---")
127
- asset_display_description = asset_graph["properties"].get(
128
- "displayDescription", "---"
129
- )
130
- asset_name = asset_graph["properties"].get("name", "---")
131
- asset_resource_name = asset_graph["properties"].get("resourceName", "---")
132
- asset_resource_description = asset_graph["properties"].get(
133
- "resourceDescription", "---"
134
- )
135
- qualified_name = asset_graph["properties"].get("qualifiedName", "---")
136
-
137
- tree = Tree(
138
- f"{asset_name} ({asset_guid})",
139
- style="bold bright_white on black",
140
- guide_style="bold bright_blue",
141
- )
142
- style = ""
143
- asset_elements = asset_graph["elementHeader"]
144
- asset_type = asset_elements["type"]["typeName"]
145
- asset_deployed_imp_type = asset_graph["properties"].get(
146
- "deployedImplementationType", "---"
147
- )
148
-
149
- asset_origin = asset_elements["origin"]["homeMetadataCollectionName"]
150
- asset_creation = asset_elements["versions"]["createTime"]
151
- asset_created_by = asset_elements["versions"]["createdBy"]
152
- asset_classifications = asset_elements["classifications"]
153
- asset_nested_elements = asset_graph.get("anchoredElements", "----")
154
- asset_relationships = asset_graph["relationships"]
155
- asset_class_md = build_classifications(asset_classifications)
48
+ list_generic(report_spec="Asset-Graph", output_format=output_format, view_server=view_server,
49
+ view_url=view_url, user=user, user_pass=user_pass, params={"asset_guid": asset_guid},
50
+ render_table=render_table, write_file = write_file, table_caption=table_caption, use_pager=use_pager,
51
+ width=width, jupyter=jupyter, prompt_missing=prompt_missing)
156
52
 
157
- additional_properties = asset_graph["properties"].get(
158
- "additionalProperties", None
159
- )
160
- if additional_properties is not None:
161
- add_prop_md = "\n* Additional Properties:\n"
162
- for prop in additional_properties:
163
- add_prop_md = (
164
- f"{add_prop_md}\n\t* {prop}: {additional_properties[prop]}\n"
165
- )
166
- else:
167
- add_prop_md = ""
53
+ except PyegeriaAPIException as e:
54
+ if e.response_egeria_msg_id == "OMAG-REPOSITORY-HANDLER-404-001":
55
+ print(e.response_egeria_msg)
56
+ return
168
57
 
169
- extended_properties = asset_graph["properties"].get("extendedProperties", None)
170
- if extended_properties is not None:
171
- prop_md = "\n* Extended Properties:\n"
172
- for prop in extended_properties:
173
- prop_md = f"{prop_md}\n\t* {prop}: {extended_properties[prop]}\n"
174
- else:
175
- prop_md = ""
176
- core_md = (
177
- f"**Type: {asset_type} Created by: {asset_created_by} on {asset_creation}**\n"
178
- f"* Deployed Implementation Type: {asset_deployed_imp_type}\n"
179
- f"* Name: {asset_name}\n "
180
- f"* Asset Resource Name: {asset_resource_name}\n"
181
- f"* Asset Resource Description: {asset_resource_description}\n "
182
- f"* Asset Display Name: {asset_display_name}\n"
183
- f"* Asset Display Description: {asset_display_description}\n "
184
- f"* Qualified Name: {qualified_name}\n "
185
- f"* Asset Origin: {asset_origin}\n"
186
- f" {prop_md}\n"
187
- f" {add_prop_md}\n"
188
- )
189
- core_md = Markdown(core_md)
190
-
191
- p1 = Panel.fit(core_md, style="bold bright_white")
192
- l2 = tree.add(p1)
193
- if asset_class_md is not None:
194
- p2 = Panel.fit(
195
- Markdown(asset_class_md),
196
- style="bold bright_white",
197
- title="Classifications",
198
- )
199
- l2 = tree.add(p2)
200
-
201
- #
202
- # Nested Assets
203
- #
204
- if type(asset_nested_elements) is list:
205
- l2 = tree.add("Nested Elements", style="bold white")
206
- for el in asset_nested_elements:
207
- asset_ne_md = build_nested_elements(el)
208
- p3 = Panel.fit(
209
- asset_ne_md, style="bold bright_white", title="Nested Elements"
210
- )
211
- l2.add(p3)
212
-
213
- #
214
- # Now work on the Relationships
215
- #
216
- for relationship in asset_relationships:
217
- # Find the end guids - if one isn't in our list then display
218
- rel_end1 = relationship["end1"]
219
- rel_end1_type = rel_end1["type"]["typeName"]
220
- rel_end1_guid = rel_end1["guid"]
221
- rel_end1_unique_name = rel_end1.get("uniqueName", "---")
222
-
223
- rel_end2 = relationship["end2"]
224
- rel_end2_type = rel_end2["type"]["typeName"]
225
- rel_end2_guid = rel_end2["guid"]
226
- rel_end2_unique_name = rel_end2.get("uniqueName", "---")
227
-
228
- if (rel_end1_guid not in guid_list) or (rel_end2_guid not in guid_list):
229
- # rel_end1_class_md = build_classifications(rel_end1["classifications"])
230
- # rel_end2_class_md = build_classifications(rel_end2["classifications"])
231
-
232
- relationship_guid = relationship["guid"]
233
- relationship_type = relationship["type"]["typeName"]
234
- relationship_created_by = relationship["versions"]["createdBy"]
235
- relationship_creation_time = relationship["versions"]["createTime"]
236
- relationship_properties = relationship.get("properties", "--- ")
237
- relationship_md = (
238
- f"Relationship Type {relationship_type}\n"
239
- f"* GUID: {relationship_guid}\n* Created by: {relationship_created_by} \n"
240
- f"* Creation Time: {relationship_creation_time}\n"
241
- f"* Properties: {relationship_properties}\n"
242
- )
243
-
244
- rel_md = (
245
- f"* Relationship Type: {relationship_type}\n"
246
- f"* Relationship GUID: {relationship_guid}\n"
247
- f"* Created by: {relationship_created_by} at time {relationship_creation_time}\n"
248
- )
249
- rel_end1_md = (
250
- f"* End1:\n"
251
- f"\t* Type: {rel_end1_type}\n"
252
- f"\t* GUID: {rel_end1_guid}\n"
253
- f"\t* Unique Name: {rel_end1_unique_name}\n"
254
- )
255
-
256
- # if rel_end1_class_md is not None:
257
- # rel_end1_md = rel_end1_class_md + rel_end1_md
258
-
259
- rel_end2_md = (
260
- f"* End2:\n"
261
- f"\t* Type: {rel_end2_type}\n"
262
- f"\t* GUID: {rel_end2_guid}\n"
263
- f"\t* Unique Name: {rel_end2_unique_name}\n"
264
- )
265
-
266
- # if rel_end2_class_md is not None:
267
- # rel_end1_md = rel_end2_class_md + rel_end1_md
268
- #
269
- # for prop in relationship_properties.keys():
270
- # relationship_md += f"* {prop}: {relationship_properties[prop]}\n"
271
-
272
- relationship_md += rel_end1_md + rel_end2_md
273
-
274
- relationship_panel = Panel.fit(
275
- Markdown(relationship_md),
276
- style="bold bright_white",
277
- title="Asset Relationships",
278
- )
279
- tree.add(relationship_panel)
280
- with console.screen():
281
- print("\n\n")
282
- print(tree)
283
-
284
- except (
285
- InvalidParameterException,
286
- PropertyServerException,
287
- UserNotAuthorizedException,
288
- ) as e:
289
- console.print_exception()
290
- console.print(
291
- "\n\n ======> Most likely the GUID you provided is either incorrect or not an asset\n[red bold]"
292
- )
58
+ except (PyegeriaException, PyegeriaClientException) as e:
59
+ print_basic_exception(e)
293
60
 
294
61
 
295
62
  def main():
@@ -301,13 +68,16 @@ def main():
301
68
  parser.add_argument("--password", help="User Password")
302
69
  args = parser.parse_args()
303
70
 
304
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
305
- url = args.url if args.url is not None else EGERIA_PLATFORM_URL
71
+ server = args.server if args.server is not None else app_config.egeria_view_server
72
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
306
73
  userid = args.userid if args.userid is not None else EGERIA_USER
307
74
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
308
75
  try:
309
76
  asset_guid = Prompt.ask("Enter the Asset GUID to view:", default="")
310
- asset_viewer(asset_guid, server, url, userid, user_pass)
77
+ output_format = Prompt.ask("Enter the output format:", default="TABLE")
78
+ asset_viewer(output_format, asset_guid, server, url, userid,
79
+ user_pass, prompt_missing=True, write_file=True, render_table=True,
80
+ table_caption="Asset Graph")
311
81
  except KeyboardInterrupt as e:
312
82
  # console.print_exception()
313
83
  pass
@@ -18,11 +18,9 @@ from rich.tree import Tree
18
18
 
19
19
  from pyegeria import (
20
20
  CollectionManager,
21
- InvalidParameterException,
22
- PropertyServerException,
23
- UserNotAuthorizedException, NO_ELEMENTS_FOUND,
24
- )
25
- from pyegeria._exceptions import print_exception_response
21
+ NO_ELEMENTS_FOUND,
22
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table
23
+ )
26
24
 
27
25
  disable_ssl_warnings = True
28
26
  EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
@@ -74,9 +72,9 @@ def collection_viewer(
74
72
  )
75
73
  text_guid = Text(f"* GUID: {member['guid']}", "green")
76
74
  text_collection_type = Text(
77
- f"* Collection Type: {member['collectionType']}"
75
+ f"* Collection Type: {member.get('typeName','')}"
78
76
  )
79
- text_description = Text(f"* Description: {member['description']}")
77
+ text_description = Text(f"* Description: {member.get('description','')}")
80
78
  p = Panel.fit(
81
79
  f"{text_collection_name}[green]\n{text_qualified_name}\n{text_guid}\n"
82
80
  f"{text_collection_type}\n{text_description}"
@@ -94,9 +92,7 @@ def collection_viewer(
94
92
  )
95
93
  walk_collection_hierarchy(branch, collection_client, member["guid"])
96
94
  else:
97
- tt = tree.add(
98
- f"[bold magenta on black]No collections found in {root_collection_name}"
99
- )
95
+ tt = tree.add("[bold magenta on black]No Members found")
100
96
 
101
97
  try:
102
98
  tree = Tree(f"[bold bright green]{root}", guide_style="bold bright_blue")
@@ -106,15 +102,11 @@ def collection_viewer(
106
102
  walk_collection_hierarchy(tree, c_client, None, root)
107
103
  print(tree)
108
104
 
109
- except (
110
- InvalidParameterException,
111
- PropertyServerException,
112
- UserNotAuthorizedException,
113
- ) as e:
114
- if e.exception_error_message_parameters[1] == NO_ELEMENTS_FOUND:
105
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
106
+ if hasattr(e, 'exception_error_message_parameters') and len(e.exception_error_message_parameters) > 1 and e.exception_error_message_parameters[1] == NO_ELEMENTS_FOUND:
115
107
  print("The collection was not found.")
116
108
  else:
117
- print_exception_response(e)
109
+ print_basic_exception(e)
118
110
  finally:
119
111
  c_client.close_session()
120
112
 
@@ -136,7 +128,7 @@ def main():
136
128
  try:
137
129
  root_collection = Prompt.ask(
138
130
  "Enter the Root Collection to start from:",
139
- default="Digital Products Root",
131
+ default="GeoSpatial-Root",
140
132
  )
141
133
  collection_viewer(root_collection, server, url, userid, user_pass)
142
134
  except KeyboardInterrupt:
@@ -10,6 +10,7 @@ A simple viewer for project dependencies - provide the root and we display the d
10
10
  import argparse
11
11
  import os
12
12
 
13
+ from pydantic import ValidationError
13
14
  from rich import print
14
15
  from rich.console import Console
15
16
  from rich.markdown import Markdown
@@ -18,12 +19,11 @@ from rich.prompt import Prompt
18
19
  from rich.tree import Tree
19
20
 
20
21
  from pyegeria import (
21
- InvalidParameterException,
22
22
  ProjectManager,
23
- PropertyServerException,
24
- UserNotAuthorizedException,
23
+ PyegeriaAPIException, PyegeriaClientException,
24
+ print_basic_exception,
25
+ print_validation_error,
25
26
  )
26
- from pyegeria._exceptions import print_exception_response
27
27
 
28
28
  disable_ssl_warnings = True
29
29
  EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
@@ -72,7 +72,7 @@ def project_dependency_viewer(
72
72
  proj_type = proj_props.get("typeName", "---")
73
73
  proj_unique = proj_props.get("qualifiedName", "---")
74
74
  proj_identifier = proj_props.get("identifier", "---")
75
- proj_name = proj_props.get("name", "---")
75
+ proj_name = proj_props.get("displayName", "---")
76
76
  proj_desc = proj_props.get("description", "---")
77
77
  proj_status = proj_props.get("projectStatus", "---")
78
78
  proj_priority = proj_props.get("priority", "---")
@@ -90,12 +90,12 @@ def project_dependency_viewer(
90
90
  else:
91
91
  return
92
92
 
93
- team = project_client.get_project_team(proj_guid)
93
+ team = project_client.get_project_team(proj_guid,"")
94
94
  member_md = ""
95
95
  if type(team) is list:
96
96
  for member in team:
97
- member_guid = member["member"]["guid"]
98
- member_unique = member["member"]["uniqueName"]
97
+ member_guid = member["elementHeader"]["guid"]
98
+ member_unique = member["properties"]["qualifiedName"]
99
99
  member_md += f"* Member Unique Name: {member_unique}\n* Member GUID: {member_guid}"
100
100
  proj_props_md += f"\n### Team Members\n {member_md}"
101
101
 
@@ -131,12 +131,12 @@ def project_dependency_viewer(
131
131
  walk_project_hierarchy(p_client, root, tree, root=True)
132
132
  print(tree)
133
133
 
134
- except (
135
- InvalidParameterException,
136
- PropertyServerException,
137
- UserNotAuthorizedException,
138
- ) as e:
139
- print_exception_response(e)
134
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
135
+ print_basic_exception(e)
136
+ except ValidationError as e:
137
+ print_validation_error(e)
138
+ except Exception as e:
139
+ print_basic_exception(e)
140
140
 
141
141
 
142
142
  def main():
@@ -10,6 +10,7 @@ A simple viewer for project structure - provide the root and we display the hier
10
10
  import argparse
11
11
  import os
12
12
 
13
+ from pydantic import ValidationError
13
14
  from rich import print
14
15
  from rich.console import Console
15
16
  from rich.markdown import Markdown
@@ -18,12 +19,9 @@ from rich.prompt import Prompt
18
19
  from rich.tree import Tree
19
20
 
20
21
  from pyegeria import (
21
- InvalidParameterException,
22
22
  ProjectManager,
23
- PropertyServerException,
24
- UserNotAuthorizedException,
23
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table, print_validation_error
25
24
  )
26
- from pyegeria._exceptions import print_exception_response
27
25
 
28
26
  disable_ssl_warnings = True
29
27
  EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
@@ -72,7 +70,7 @@ def project_structure_viewer(
72
70
  proj_type = proj_props.get("typeName", "---")
73
71
  proj_unique = proj_props.get("qualifiedName", "---")
74
72
  proj_identifier = proj_props.get("identifier", "---")
75
- proj_name = proj_props.get("name", "---")
73
+ proj_name = proj_props.get("displayName", "---")
76
74
  proj_desc = proj_props.get("description", "---")
77
75
  proj_status = proj_props.get("projectStatus", "---")
78
76
  proj_priority = proj_props.get("priority", "---")
@@ -90,12 +88,12 @@ def project_structure_viewer(
90
88
  else:
91
89
  return
92
90
 
93
- team = project_client.get_project_team(proj_guid)
91
+ team = project_client.get_project_team(proj_guid,"")
94
92
  member_md = ""
95
93
  if type(team) is list:
96
94
  for member in team:
97
- member_guid = member["member"]["guid"]
98
- member_unique = member["member"]["uniqueName"]
95
+ member_guid = member["elementHeader"]["guid"]
96
+ member_unique = member["properties"]["qualifiedName"]
99
97
  member_md += f"* Member Unique Name: {member_unique}\n* Member GUID: {member_guid}"
100
98
  proj_props_md += f"\n### Team Members\n {member_md}"
101
99
 
@@ -131,12 +129,15 @@ def project_structure_viewer(
131
129
  walk_project_hierarchy(p_client, root, tree, root=True)
132
130
  print(tree)
133
131
 
134
- except (
135
- InvalidParameterException,
136
- PropertyServerException,
137
- UserNotAuthorizedException,
138
- ) as e:
139
- print_exception_response(e)
132
+ except (PyegeriaAPIException, PyegeriaClientException) as e:
133
+ print_basic_exception(e)
134
+
135
+ except ValidationError as e:
136
+ print_validation_error(e)
137
+
138
+ except Exception as e:
139
+ console.print_exception()
140
+
140
141
 
141
142
 
142
143
  def main():