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
@@ -53,7 +53,7 @@ from commands.tech.list_solution_components import solution_component_list
53
53
  from commands.tech.list_solution_roles import solution_role_list
54
54
  from commands.tech.list_tech_templates import display_templates_spec
55
55
  from commands.tech.list_valid_metadata_values import display_metadata_values
56
- from commands.tech.generic_actions import delete_element
56
+ from commands.tech.element_actions import delete_element
57
57
 
58
58
  @tui()
59
59
  @click.version_option("0.0.1", prog_name="egeria_ops")
@@ -360,17 +360,8 @@ def show_elements_by_classification_by_prop(
360
360
  """Show elements by classification and property value"""
361
361
  c = ctx.obj
362
362
  if extended:
363
- find_elements_by_prop_value_x(
364
- om_type,
365
- property_value,
366
- [property_names],
367
- c.view_server,
368
- c.view_server_url,
369
- c.userid,
370
- c.password,
371
- c.jupyter,
372
- c.width,
373
- )
363
+ find_elements_by_prop_value_x(om_type, property_value, [property_names], c.view_server, c.view_server_url,
364
+ c.userid, c.password, c.jupyter, c.width)
374
365
  else:
375
366
  find_elements_by_prop_value(
376
367
  om_type,
@@ -404,17 +395,8 @@ def show_elements_by_classification_by_prop(
404
395
  def show_related_elements(ctx, element_guid, om_type, rel_type):
405
396
  """Show all elements related to specified guid"""
406
397
  c = ctx.obj
407
- list_related_elements(
408
- element_guid,
409
- om_type,
410
- rel_type,
411
- c.view_server,
412
- c.view_server_url,
413
- c.userid,
414
- c.password,
415
- c.jupyter,
416
- c.width,
417
- )
398
+ list_related_elements(element_guid, om_type, rel_type, c.view_server, c.view_server_url, c.userid, c.password,
399
+ c.jupyter, c.width)
418
400
 
419
401
 
420
402
  @show_elements.command("related-elements_by_prop")
@@ -491,9 +473,7 @@ def show_tech_types(ctx, search_string):
491
473
  """
492
474
 
493
475
  c = ctx.obj
494
- display_tech_types(
495
- search_string, c.view_server, c.view_server_url, c.userid, c.password
496
- )
476
+ display_tech_types(search_string, c.view_server, c.view_server_url, c.userid, c.password)
497
477
 
498
478
 
499
479
  @show_tech.command("tech-details")
@@ -507,15 +487,7 @@ def show_tech_details(ctx, tech_name):
507
487
  tech-name is a valid technology name (see 'show tech-types')
508
488
  """
509
489
  c = ctx.obj
510
- tech_details_viewer(
511
- tech_name,
512
- c.view_server,
513
- c.view_server_url,
514
- c.userid,
515
- c.password,
516
- c.jupyter,
517
- c.width,
518
- )
490
+ tech_details_viewer(tech_name, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
519
491
 
520
492
 
521
493
  @show_tech.command("tech-type-templates")
@@ -552,7 +524,7 @@ def show_asset_types(ctx):
552
524
  @show_info.command("registered-services")
553
525
  @click.option(
554
526
  "--services",
555
- type=click.Choice(
527
+ type_name = click.Choice(
556
528
  [
557
529
  "all",
558
530
  "access-services",
@@ -571,15 +543,7 @@ def show_asset_types(ctx):
571
543
  def show_registered_services(ctx, services):
572
544
  """Show information about a registered services"""
573
545
  c = ctx.obj
574
- display_registered_svcs(
575
- services,
576
- c.view_server,
577
- c.view_server_url,
578
- c.userid,
579
- c.password,
580
- c.jupyter,
581
- c.width,
582
- )
546
+ display_registered_svcs(services, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
583
547
 
584
548
 
585
549
  @show_info.command("relationship-types")
@@ -592,16 +556,8 @@ def show_registered_services(ctx, services):
592
556
  def show_relationship_types(ctx, rel_type):
593
557
  """Show information about the specified relationship type"""
594
558
  c = ctx.obj
595
- display_relationship_types(
596
- rel_type,
597
- c.view_server,
598
- c.view_server_url,
599
- c.userid,
600
- c.password,
601
- False,
602
- c.jupyter,
603
- c.width,
604
- )
559
+ display_relationship_types(rel_type, c.view_server, c.view_server_url, c.userid, c.password, False, c.jupyter,
560
+ c.width)
605
561
 
606
562
 
607
563
  @show_tech.command("tech-templates")
@@ -701,15 +657,7 @@ def list_element_info(ctx):
701
657
  def get_element_info(ctx, om_type):
702
658
  """Display graph of elements for an Open Metadata Type"""
703
659
  c = ctx.obj
704
- display_elements(
705
- om_type,
706
- c.view_server,
707
- c.view_server_url,
708
- c.userid,
709
- c.password,
710
- c.jupyter,
711
- c.width,
712
- )
660
+ display_elements(om_type, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
713
661
 
714
662
 
715
663
  @show_elements.command("elements")
@@ -752,15 +700,7 @@ def list_all_om_type_elements(ctx, om_type, extended):
752
700
  def list_supply_chains(ctx, search_string):
753
701
  """Display supply chains"""
754
702
  c = ctx.obj
755
- supply_chain_viewer(
756
- search_string,
757
- c.view_server,
758
- c.view_server_url,
759
- c.userid,
760
- c.password,
761
- c.jupyter,
762
- c.width,
763
- )
703
+ supply_chain_viewer(search_string, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
764
704
 
765
705
 
766
706
  @show_supply_chains.command("blueprints")
@@ -769,22 +709,14 @@ def list_supply_chains(ctx, search_string):
769
709
  def list_blueprints(ctx, search_string):
770
710
  """Display solution blueprints"""
771
711
  c = ctx.obj
772
- blueprint_list(
773
- search_string,
774
- c.view_server,
775
- c.view_server_url,
776
- c.userid,
777
- c.password,
778
- c.jupyter,
779
- c.width,
780
- )
712
+ blueprint_list(search_string, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
781
713
 
782
714
 
783
- @show_supply_chains.command("solution-roles")
715
+ @show_supply_chains.command("solution-perspectives")
784
716
  @click.option("--search-string", default="*", help="Search string")
785
717
  @click.pass_context
786
718
  def list_solution_roles(ctx, search_string):
787
- """Display solution roles"""
719
+ """Display solution perspectives"""
788
720
  c = ctx.obj
789
721
  solution_role_list(
790
722
  search_string,
@@ -803,15 +735,7 @@ def list_solution_roles(ctx, search_string):
803
735
  def list_solution_components(ctx, search_string):
804
736
  """Display solution componentss"""
805
737
  c = ctx.obj
806
- solution_component_list(
807
- search_string,
808
- c.view_server,
809
- c.view_server_url,
810
- c.userid,
811
- c.password,
812
- c.jupyter,
813
- c.width,
814
- )
738
+ solution_component_list(search_string, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
815
739
 
816
740
 
817
741
  #
@@ -1,3 +1,4 @@
1
+
1
2
  #!/usr/bin/env python3
2
3
  """
3
4
  SPDX-License-Identifier: Apache-2.0
@@ -24,10 +25,7 @@ from rich.markdown import Markdown
24
25
 
25
26
  from pyegeria import (
26
27
  EgeriaTech,
27
- InvalidParameterException,
28
- PropertyServerException,
29
- UserNotAuthorizedException,
30
- print_exception_response,
28
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table
31
29
  NO_ELEMENTS_FOUND
32
30
  )
33
31
 
@@ -19,10 +19,7 @@ from rich.text import Text
19
19
 
20
20
  from pyegeria import (
21
21
  EgeriaTech,
22
- InvalidParameterException,
23
- PropertyServerException,
24
- UserNotAuthorizedException,
25
- print_exception_response, NO_ELEMENTS_FOUND,
22
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table NO_ELEMENTS_FOUND,
26
23
  )
27
24
 
28
25
  disable_ssl_warnings = True
@@ -89,7 +86,7 @@ def display_data_struct(
89
86
  action = "Dict"
90
87
  elif output_format == "MERMAID":
91
88
  action = "Mermaid"
92
- filter = search_string.strip() if search_string != "*" else None
89
+ filter_string = search_string.strip() if search_string != "*" else None
93
90
 
94
91
  body = {
95
92
  "class": "FilterRequestBody",
@@ -100,7 +97,7 @@ def display_data_struct(
100
97
  "limitResultsByStatus": ["ACTIVE"],
101
98
  "sequencingOrder": "PROPERTY_ASCENDING",
102
99
  "sequencingProperty": "qualifiedName",
103
- "filter": filter
100
+ "filter": filter_string
104
101
  }
105
102
 
106
103
  if output_format != "TABLE":
@@ -0,0 +1,315 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ Display the status of cataloged platforms and servers.
7
+ """
8
+ import argparse
9
+ import os
10
+ import sys
11
+
12
+ from rich import print
13
+ from rich.console import Console
14
+ from rich.markdown import Markdown
15
+ from rich.panel import Panel
16
+ from rich.prompt import Prompt
17
+ from rich.tree import Tree
18
+
19
+ from pyegeria import (
20
+ AssetCatalog,
21
+ PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table UserNotAuthorizedException, PyegeriaException,
22
+ )
23
+
24
+ EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
25
+ EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
26
+ EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
27
+ EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
28
+ EGERIA_VIEW_SERVER_URL = os.environ.get(
29
+ "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
30
+ )
31
+ EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
32
+ EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
33
+ "EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
34
+ )
35
+ EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
36
+ EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
37
+ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
38
+ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
39
+ EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
40
+ EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
41
+
42
+ disable_ssl_warnings = True
43
+
44
+ guid_list = []
45
+
46
+ console = Console(width=EGERIA_WIDTH, force_terminal=(not EGERIA_JUPYTER))
47
+
48
+
49
+ def asset_viewer(
50
+ asset_guid: str,
51
+ server_name: str,
52
+ platform_url: str,
53
+ user: str,
54
+ user_pass: str,
55
+ jupyter: bool = EGERIA_JUPYTER,
56
+ width: int = EGERIA_WIDTH,
57
+ ):
58
+ def build_classifications(classification: dict) -> Markdown:
59
+ class_md = ""
60
+ for c in classification:
61
+ c_type = c["classificationName"]
62
+ if c_type == "Anchors":
63
+ continue
64
+ class_md += f"\n* Classification: {c_type}\n"
65
+ class_props = c.get("classificationProperties", "---")
66
+ if type(class_props) is dict:
67
+ for prop in class_props.keys():
68
+ class_md += f"\t* {prop}: {class_props[prop]}\n"
69
+ if class_md == "":
70
+ output = None
71
+ else:
72
+ output = class_md
73
+ return output
74
+
75
+ def build_nested_elements(nested_element: dict) -> Markdown:
76
+ ne_md = " "
77
+ ne_header = nested_element["elementHeader"]
78
+ ne_created_by = ne_header["versions"]["createdBy"]
79
+ ne_created_at = ne_header["versions"]["createTime"]
80
+ ne_guid = ne_header["guid"]
81
+ guid_list.append(ne_guid)
82
+
83
+ ne_type = ne_header["type"]["typeName"]
84
+ ne_classifications = ne_header["classifications"]
85
+ ne_class_md = build_classifications(ne_classifications)
86
+ # ne_class_md = " " if ne_class_md is None else ne_class_md
87
+ ne_props = nested_element.get("properties", "---")
88
+ ne_prop_md = "\n"
89
+ if type(ne_props) is dict:
90
+ for prop in ne_props.keys():
91
+ ne_prop_md += f"\t* {prop}: {ne_props[prop]}\n"
92
+ ne_md = (
93
+ f"Nested Element of Type: {ne_type} with GUID: {ne_guid} \n "
94
+ f"* created by {ne_created_by} at time {ne_created_at}\n"
95
+ f"\n* Properties:\n{ne_prop_md}\n"
96
+ )
97
+
98
+ if ne_class_md is not None:
99
+ ne_md += f"* {ne_class_md}"
100
+
101
+ output = Markdown(ne_md)
102
+ return output
103
+
104
+ try:
105
+ a_client = AssetCatalog(server_name, platform_url, user_id=user)
106
+
107
+ token = a_client.create_egeria_bearer_token(user, user_pass)
108
+ # asset_info = a_client.find_assets_in_domain(asset_name)
109
+ # if type(asset_info) is str:
110
+ # print("\n No Assets Found - Exiting\n")
111
+ # sys.exit(1)
112
+ #
113
+ # asset_guid = asset_info[0]['guid']
114
+
115
+ guid_list.append(asset_guid)
116
+
117
+ asset_graph = a_client.get_asset_graph(asset_guid, output_format="JSON")
118
+ if type(asset_graph) is not dict:
119
+ print(f"\n No Asset found for {asset_guid}")
120
+ sys.exit(1)
121
+
122
+ # print(f"\n{json.dumps(asset_graph, indent =2)}\n")
123
+
124
+ asset_display_name = asset_graph["properties"].get("displayName", "---")
125
+ asset_display_description = asset_graph["properties"].get(
126
+ "displayDescription", "---"
127
+ )
128
+ asset_name = asset_graph["properties"].get("name", "---")
129
+ asset_resource_name = asset_graph["properties"].get("resourceName", "---")
130
+ asset_resource_description = asset_graph["properties"].get(
131
+ "resourceDescription", "---"
132
+ )
133
+ qualified_name = asset_graph["properties"].get("qualifiedName", "---")
134
+
135
+ tree = Tree(
136
+ f"{asset_name} ({asset_guid})",
137
+ style="bold bright_white on black",
138
+ guide_style="bold bright_blue",
139
+ )
140
+ style = ""
141
+ asset_elements = asset_graph["elementHeader"]
142
+ asset_type = asset_elements["type"]["typeName"]
143
+ asset_deployed_imp_type = asset_graph["properties"].get(
144
+ "deployedImplementationType", "---"
145
+ )
146
+
147
+ asset_origin = asset_elements["origin"]["homeMetadataCollectionName"]
148
+ asset_creation = asset_elements["versions"]["createTime"]
149
+ asset_created_by = asset_elements["versions"]["createdBy"]
150
+ asset_classifications = asset_elements["classifications"]
151
+ asset_nested_elements = asset_graph.get("anchoredElements", "----")
152
+ asset_relationships = asset_graph["relationships"]
153
+ asset_class_md = build_classifications(asset_classifications)
154
+
155
+ additional_properties = asset_graph["properties"].get(
156
+ "additionalProperties", None
157
+ )
158
+ if additional_properties is not None:
159
+ add_prop_md = "\n* Additional Properties:\n"
160
+ for prop in additional_properties:
161
+ add_prop_md = (
162
+ f"{add_prop_md}\n\t* {prop}: {additional_properties[prop]}\n"
163
+ )
164
+ else:
165
+ add_prop_md = ""
166
+
167
+ extended_properties = asset_graph["properties"].get("extendedProperties", None)
168
+ if extended_properties is not None:
169
+ prop_md = "\n* Extended Properties:\n"
170
+ for prop in extended_properties:
171
+ prop_md = f"{prop_md}\n\t* {prop}: {extended_properties[prop]}\n"
172
+ else:
173
+ prop_md = ""
174
+ core_md = (
175
+ f"**Type: {asset_type} Created by: {asset_created_by} on {asset_creation}**\n"
176
+ f"* Deployed Implementation Type: {asset_deployed_imp_type}\n"
177
+ f"* Name: {asset_name}\n "
178
+ f"* Asset Resource Name: {asset_resource_name}\n"
179
+ f"* Asset Resource Description: {asset_resource_description}\n "
180
+ f"* Asset Display Name: {asset_display_name}\n"
181
+ f"* Asset Display Description: {asset_display_description}\n "
182
+ f"* Qualified Name: {qualified_name}\n "
183
+ f"* Asset Origin: {asset_origin}\n"
184
+ f" {prop_md}\n"
185
+ f" {add_prop_md}\n"
186
+ )
187
+ core_md = Markdown(core_md)
188
+
189
+ p1 = Panel.fit(core_md, style="bold bright_white")
190
+ l2 = tree.add(p1)
191
+ if asset_class_md is not None:
192
+ p2 = Panel.fit(
193
+ Markdown(asset_class_md),
194
+ style="bold bright_white",
195
+ title="Classifications",
196
+ )
197
+ l2 = tree.add(p2)
198
+
199
+ #
200
+ # Nested Assets
201
+ #
202
+ if type(asset_nested_elements) is list:
203
+ l2 = tree.add("Nested Elements", style="bold white")
204
+ for el in asset_nested_elements:
205
+ asset_ne_md = build_nested_elements(el)
206
+ p3 = Panel.fit(
207
+ asset_ne_md, style="bold bright_white", title="Nested Elements"
208
+ )
209
+ l2.add(p3)
210
+
211
+ #
212
+ # Now work on the Relationships
213
+ #
214
+ for relationship in asset_relationships:
215
+ # Find the end guids - if one isn't in our list then display
216
+ rel_end1 = relationship["end1"]
217
+ rel_end1_type = rel_end1["type"]["typeName"]
218
+ rel_end1_guid = rel_end1["guid"]
219
+ rel_end1_unique_name = rel_end1.get("uniqueName", "---")
220
+
221
+ rel_end2 = relationship["end2"]
222
+ rel_end2_type = rel_end2["type"]["typeName"]
223
+ rel_end2_guid = rel_end2["guid"]
224
+ rel_end2_unique_name = rel_end2.get("uniqueName", "---")
225
+
226
+ if (rel_end1_guid not in guid_list) or (rel_end2_guid not in guid_list):
227
+ # rel_end1_class_md = build_classifications(rel_end1["classifications"])
228
+ # rel_end2_class_md = build_classifications(rel_end2["classifications"])
229
+
230
+ relationship_guid = relationship["guid"]
231
+ relationship_type = relationship["type"]["typeName"]
232
+ relationship_created_by = relationship["versions"]["createdBy"]
233
+ relationship_creation_time = relationship["versions"]["createTime"]
234
+ relationship_properties = relationship.get("properties", "--- ")
235
+ relationship_md = (
236
+ f"Relationship Type {relationship_type}\n"
237
+ f"* GUID: {relationship_guid}\n* Created by: {relationship_created_by} \n"
238
+ f"* Creation Time: {relationship_creation_time}\n"
239
+ f"* Properties: {relationship_properties}\n"
240
+ )
241
+
242
+ rel_md = (
243
+ f"* Relationship Type: {relationship_type}\n"
244
+ f"* Relationship GUID: {relationship_guid}\n"
245
+ f"* Created by: {relationship_created_by} at time {relationship_creation_time}\n"
246
+ )
247
+ rel_end1_md = (
248
+ f"* End1:\n"
249
+ f"\t* Type: {rel_end1_type}\n"
250
+ f"\t* GUID: {rel_end1_guid}\n"
251
+ f"\t* Unique Name: {rel_end1_unique_name}\n"
252
+ )
253
+
254
+ # if rel_end1_class_md is not None:
255
+ # rel_end1_md = rel_end1_class_md + rel_end1_md
256
+
257
+ rel_end2_md = (
258
+ f"* End2:\n"
259
+ f"\t* Type: {rel_end2_type}\n"
260
+ f"\t* GUID: {rel_end2_guid}\n"
261
+ f"\t* Unique Name: {rel_end2_unique_name}\n"
262
+ )
263
+
264
+ # if rel_end2_class_md is not None:
265
+ # rel_end1_md = rel_end2_class_md + rel_end1_md
266
+ #
267
+ # for prop in relationship_properties.keys():
268
+ # relationship_md += f"* {prop}: {relationship_properties[prop]}\n"
269
+
270
+ relationship_md += rel_end1_md + rel_end2_md
271
+
272
+ relationship_panel = Panel.fit(
273
+ Markdown(relationship_md),
274
+ style="bold bright_white",
275
+ title="Asset Relationships",
276
+ )
277
+ tree.add(relationship_panel)
278
+ with console.screen():
279
+ print("\n\n")
280
+ print(tree)
281
+
282
+ except (
283
+ PyegeriaException
284
+ ) as e:
285
+ console.print_exception()
286
+ console.print(
287
+ "\n\n ======> Most likely the GUID you provided is either incorrect or not an asset\n[red bold]"
288
+ )
289
+
290
+
291
+ def main():
292
+ parser = argparse.ArgumentParser()
293
+
294
+ parser.add_argument("--server", help="Name of the server to display status for")
295
+ parser.add_argument("--url", help="URL Platform to connect to")
296
+ parser.add_argument("--userid", help="User Id")
297
+ parser.add_argument("--password", help="User Password")
298
+ args = parser.parse_args()
299
+
300
+ server = args.server if args.server is not None else EGERIA_VIEW_SERVER
301
+ url = args.url if args.url is not None else EGERIA_PLATFORM_URL
302
+ userid = args.userid if args.userid is not None else EGERIA_USER
303
+ user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
304
+ try:
305
+ asset_guid = Prompt.ask("Enter the Asset GUID to view:", default="")
306
+ asset_viewer(asset_guid, server, url, userid, user_pass)
307
+ except KeyboardInterrupt as e:
308
+ # console.print_exception()
309
+ pass
310
+ except Exception as e:
311
+ console.print_exception()
312
+
313
+
314
+ if __name__ == "__main__":
315
+ main()
commands/my/__init__.py CHANGED
@@ -4,8 +4,6 @@ Copyright Contributors to the ODPi Egeria project.
4
4
 
5
5
  """
6
6
  from pyegeria import (
7
- INTEGRATION_GUIDS,
8
- TEMPLATE_GUIDS,
9
7
  default_time_out,
10
8
  disable_ssl_warnings,
11
9
  enable_ssl_check,
@@ -9,7 +9,6 @@ A simple display for my profile
9
9
  import argparse
10
10
  import os
11
11
  import sys
12
- import time
13
12
 
14
13
  from rich import box, print
15
14
  from rich.console import Console
@@ -18,13 +17,8 @@ from rich.panel import Panel
18
17
  from rich.table import Table
19
18
  from rich.tree import Tree
20
19
 
21
- from pyegeria import (
22
- InvalidParameterException,
23
- PropertyServerException,
24
- UserNotAuthorizedException,
25
- print_exception_response,
26
- )
27
- from pyegeria.my_profile_omvs import MyProfile
20
+ from pyegeria import print_basic_exception, PyegeriaException
21
+ from pyegeria.omvs.my_profile import MyProfile
28
22
 
29
23
  disable_ssl_warnings = True
30
24
  EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
@@ -64,7 +58,7 @@ def display_my_profile(
64
58
 
65
59
  console = Console(width=width, force_terminal=not jupyter, soft_wrap=True)
66
60
 
67
- profile_props = my_profiles.get("profileProperties", "---")
61
+ profile_props = my_profiles.get("properties", "---")
68
62
  name = profile_props["fullName"]
69
63
 
70
64
  tree = Tree(
@@ -93,14 +87,14 @@ def display_my_profile(
93
87
  id_list_md = ""
94
88
  for identities in my_profiles["userIdentities"]:
95
89
  id_list_md += (
96
- f"* {identities['userIdentity']['properties']['userId']}\n"
97
- f"* {identities['userIdentity']['elementHeader']['guid']}\n"
90
+ f"* {identities['relatedElement']['properties']['userId']}\n"
91
+ f"* {identities['relatedElement']['elementHeader']['guid']}\n"
98
92
  )
99
93
  t2 = tree.add(Panel(Markdown(id_list_md), title="Identities", expand=False))
100
94
 
101
- contact_methods = my_profiles["contactMethods"]
95
+ contact_methods = my_profiles["contactDetails"]
102
96
  for method in contact_methods:
103
- contact = method["properties"]
97
+ contact = method['relatedElement']["properties"]
104
98
  contact_methods_md = ""
105
99
  for key in contact.keys():
106
100
  contact_methods_md += f"* {key}: {contact[key]}\n"
@@ -110,32 +104,31 @@ def display_my_profile(
110
104
  )
111
105
  )
112
106
 
113
- my_roles = my_profiles["roles"]
114
- table = Table(
115
- title=f" Roles of {name}",
116
- show_lines=True,
117
- box=box.ROUNDED,
118
- expand=True,
119
- )
120
- table.add_column("Role Type")
121
- table.add_column("Role")
122
- table.add_column("Role GUID")
123
- for a_role in my_roles:
124
- my_role_props = a_role["properties"]
125
- role_type = my_role_props["typeName"]
126
- role = my_role_props.get("title", " ")
127
- role_guid = a_role["elementHeader"]["guid"]
128
- table.add_row(role_type, role, role_guid)
129
- t4 = tree.add(Panel(table, title="Roles", expand=False), expanded=True)
107
+ my_roles = my_profiles.get("performsRoles","No roles found")
108
+ if isinstance(my_roles, dict|list):
109
+ table = Table(
110
+ title=f" Roles of {name}",
111
+ show_lines=True,
112
+ box=box.ROUNDED,
113
+ expand=True,
114
+ )
115
+ table.add_column("Role Type")
116
+ table.add_column("Role")
117
+ table.add_column("Role GUID")
118
+ for a_role in my_roles:
119
+ my_role_props = a_role['relatedElement']["properties"]
120
+ role_type = my_role_props["typeName"]
121
+ role = my_role_props.get("displayName", " ")
122
+ role_guid = a_role['relatedElement']["elementHeader"]["guid"]
123
+ table.add_row(role_type, role, role_guid)
124
+ t4 = tree.add(Panel(table, title="Roles", expand=False), expanded=True)
130
125
 
131
126
  print(tree)
132
127
 
133
128
  except (
134
- InvalidParameterException,
135
- PropertyServerException,
136
- UserNotAuthorizedException,
129
+ PyegeriaException,
137
130
  ) as e:
138
- print_exception_response(e)
131
+ print_basic_exception(e)
139
132
  finally:
140
133
  m_client.close_session()
141
134
 
@@ -17,13 +17,7 @@ from rich import box
17
17
  from rich.console import Console
18
18
  from rich.table import Table
19
19
 
20
- from pyegeria import (
21
- InvalidParameterException,
22
- PropertyServerException,
23
- UserNotAuthorizedException,
24
- print_exception_response,
25
- )
26
- from pyegeria.my_profile_omvs import MyProfile
20
+ from pyegeria.omvs.my_profile import MyProfile
27
21
 
28
22
  disable_ssl_warnings = True
29
23
  EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")