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
@@ -0,0 +1,842 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ Asset Catalog View Service Methods - Search for assets, retrieve their properties, lineage and related glossary
6
+ information.
7
+
8
+ This file is in active development...
9
+
10
+ """
11
+
12
+ import asyncio
13
+
14
+ from loguru import logger
15
+
16
+ from pyegeria.core._server_client import ServerClient
17
+ from pyegeria.view.base_report_formats import select_report_format, get_report_spec_match
18
+ from pyegeria.models import SearchStringRequestBody, ResultsRequestBody
19
+ from pyegeria.view.output_formatter import populate_columns_from_properties, _extract_referenceable_properties, \
20
+ get_required_relationships, generate_output
21
+ from pyegeria.core.utils import body_slimmer, dynamic_catch
22
+ from pyegeria.core._globals import max_paging_size
23
+ from pyegeria.core._globals import NO_ELEMENTS_FOUND, NO_ASSETS_FOUND
24
+ from typing import Any, Optional
25
+
26
+ class AssetCatalog(ServerClient):
27
+ """
28
+ Client for the Asset Catalog View Service.
29
+
30
+ The Asset Catalog View Service provides methods to search for assets,
31
+ retrieve their properties, lineage, and related glossary information.
32
+
33
+ Attributes
34
+ ----------
35
+ view_server : str
36
+ The name of the View Server to use.
37
+ platform_url : str
38
+ URL of the server platform to connect to.
39
+ user_id : str
40
+ The identity of the user calling the method.
41
+ user_pwd : str
42
+ The password associated with the user_id. Defaults to None.
43
+ """
44
+
45
+ def __init__(self, view_server: str, platform_url: str, user_id: str, user_pwd: Optional[str] = None,
46
+ token: str = None):
47
+ super().__init__(view_server, platform_url, user_id, user_pwd, token)
48
+ self.view_server = view_server
49
+ self.platform_url = platform_url
50
+ self.user_id = user_id
51
+ self.user_pwd = user_pwd
52
+
53
+ #
54
+ # Output helpers
55
+ #
56
+
57
+ def _extract_asset_properties(self, element: dict, columns_struct: dict) -> dict:
58
+ col_data = populate_columns_from_properties(element, columns_struct)
59
+ columns_list = col_data.get("formats", {}).get("attributes", [])
60
+ header_props = _extract_referenceable_properties(element)
61
+ for col in columns_list:
62
+ key = col.get("key")
63
+ if key in header_props:
64
+ col["value"] = header_props.get(key)
65
+ elif isinstance(key, str) and key.lower() == "guid":
66
+ col["value"] = header_props.get("GUID")
67
+ # GAP specifics: processStatus, elementTypeName, stepCount
68
+ proc_status = (
69
+ element.get("properties", {}).get("processStatus")
70
+ or element.get("elementProperties", {}).get("processStatus")
71
+ or element.get("processStatus")
72
+ )
73
+ step_count = (
74
+ element.get("properties", {}).get("stepCount")
75
+ or element.get("elementProperties", {}).get("stepCount")
76
+ or element.get("stepCount")
77
+ )
78
+ for col in columns_list:
79
+ key = col.get("key")
80
+ if key in ("process_status", "processStatus"):
81
+ col["value"] = proc_status
82
+ elif key == "stepCount":
83
+ col["value"] = step_count
84
+ col_data = get_required_relationships(element, col_data)
85
+ mermaid_val = element.get("mermaidGraph", "") or ""
86
+ for col in columns_list:
87
+ if col.get("key") == "mermaid":
88
+ col["value"] = mermaid_val
89
+ break
90
+ return col_data
91
+
92
+ def _generate_asset_output(self, elements: dict | list[dict], filter_string: str | None,
93
+ element_type_name: str | None, output_format: str = "DICT",
94
+ report_spec: dict | str | None = None) -> str | list[dict]:
95
+ entity_type = element_type_name
96
+ get_additional_props_func = None
97
+ if report_spec:
98
+ if isinstance(report_spec, str):
99
+ output_formats = select_report_format(report_spec, output_format)
100
+ else:
101
+ output_formats = get_report_spec_match(report_spec, output_format)
102
+ elif element_type_name:
103
+ output_formats = select_report_format(element_type_name, output_format)
104
+ else:
105
+ output_formats = select_report_format(entity_type, output_format)
106
+ if output_formats is None:
107
+ output_formats = select_report_format("Default", output_format)
108
+ return generate_output(
109
+ elements,
110
+ filter,
111
+ entity_type,
112
+ output_format,
113
+ self._extract_asset_properties,
114
+ None,
115
+ output_formats,
116
+ )
117
+
118
+ @dynamic_catch
119
+ async def _async_find_in_asset_domain(self, search_string: str = "*",
120
+ starts_with: bool = True, ends_with: bool = False,
121
+ ignore_case: bool = False,
122
+ anchor_domain: Optional[str] = None,
123
+ metadata_element_type: Optional[str] = None,
124
+ metadata_element_subtypes: Optional[list[str]] = None,
125
+ skip_relationships: Optional[list[str]] = None,
126
+ include_only_relationships: Optional[list[str]] = None,
127
+ skip_classified_elements: Optional[list[str]] = None,
128
+ include_only_classified_elements: Optional[list[str]] = None,
129
+ graph_query_depth: int = 3,
130
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
131
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
132
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
133
+ sequencing_property: Optional[str] = None,
134
+ output_format: str = "JSON",
135
+ report_spec: str | dict = "Referenceable",
136
+ start_from: int = 0, page_size: int = 100,
137
+ property_names: Optional[list[str]] = None,
138
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
139
+ """ Retrieve the list of asset metadata elements that contain the search string. Async Version.
140
+
141
+ Parameters
142
+ ----------
143
+ search_string: str
144
+ Search string to match against - None or '*' indicate match against all assets.
145
+ starts_with : bool, [default=True], optional
146
+ Starts with the supplied string.
147
+ ends_with : bool, [default=False], optional
148
+ Ends with the supplied string
149
+ ignore_case : bool, [default=False], optional
150
+ Ignore case when searching
151
+ anchor_domain: str, optional
152
+ The anchor domain to search in.
153
+ metadata_element_type: str, optional
154
+ The type of metadata element to search for.
155
+ metadata_element_subtypes: list[str], optional
156
+ The subtypes of metadata element to search for.
157
+ skip_relationships: list[str], optional
158
+ The types of relationships to skip.
159
+ include_only_relationships: list[str], optional
160
+ The types of relationships to include.
161
+ skip_classified_elements: list[str], optional
162
+ The types of classified elements to skip.
163
+ include_only_classified_elements: list[str], optional
164
+ The types of classified elements to include.
165
+ graph_query_depth: int, [default=3], optional
166
+ The depth of the graph query.
167
+ governance_zone_filter: list[str], optional
168
+ The governance zones to search in.
169
+ as_of_time: str, optional
170
+ The time to search as of.
171
+ effective_time: str, optional
172
+ The effective time to search at.
173
+ relationship_page_size: int, [default=0], optional
174
+ The page size for relationships.
175
+ limit_results_by_status: list[str], optional
176
+ The statuses to limit results by.
177
+ sequencing_order: str, optional
178
+ The order to sequence results by.
179
+ sequencing_property: str, optional
180
+ The property to sequence results by.
181
+ output_format: str, default = "JSON"
182
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
183
+ report_spec: str | dict , optional, default = "Referenceable"
184
+ - The desired output columns/fields to include.
185
+ start_from: int, [default=0], optional
186
+ When multiple pages of results are available, the page number to start from.
187
+ page_size: int, [default=100]
188
+ The number of items to return in a single page.
189
+ property_names: list[str], optional
190
+ The names of properties to search for.
191
+ body: dict | SearchStringRequestBody, optional, default = None
192
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
193
+
194
+ Returns
195
+ -------
196
+ List | str
197
+
198
+ Output depends on the output format specified.
199
+
200
+ Raises
201
+ -------
202
+
203
+ ValidationError
204
+ If the client passes incorrect parameters on the request that don't conform to the data model.
205
+ PyegeriaException
206
+ Issues raised in communicating or server side processing.
207
+ NotAuthorizedException
208
+ The principle specified by the user_id does not have authorization for the requested action
209
+
210
+ """
211
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/in-domain/by-search-string"
212
+ response = await self._async_find_request(url, _type="Asset", _gen_output=self._generate_asset_output,
213
+ search_string=search_string, starts_with=starts_with,
214
+ ends_with=ends_with, ignore_case=ignore_case,
215
+ anchor_domain=anchor_domain,
216
+ metadata_element_type=metadata_element_type,
217
+ metadata_element_subtypes=metadata_element_subtypes,
218
+ skip_relationships=skip_relationships,
219
+ include_only_relationships=include_only_relationships,
220
+ skip_classified_elements=skip_classified_elements,
221
+ include_only_classified_elements=include_only_classified_elements,
222
+ graph_query_depth=graph_query_depth,
223
+ governance_zone_filter=governance_zone_filter,
224
+ as_of_time=as_of_time, effective_time=effective_time,
225
+ relationship_page_size=relationship_page_size,
226
+ limit_results_by_status=limit_results_by_status,
227
+ sequencing_order=sequencing_order,
228
+ sequencing_property=sequencing_property,
229
+ output_format=output_format, report_spec=report_spec,
230
+ start_from=start_from, page_size=page_size,
231
+ property_names=property_names, body=body)
232
+
233
+ return response
234
+
235
+ @dynamic_catch
236
+ def find_in_asset_domain(self, search_string: str = "*",
237
+ starts_with: bool = True, ends_with: bool = False,
238
+ ignore_case: bool = False,
239
+ anchor_domain: Optional[str] = None,
240
+ metadata_element_type: Optional[str] = None,
241
+ metadata_element_subtypes: Optional[list[str]] = None,
242
+ skip_relationships: Optional[list[str]] = None,
243
+ include_only_relationships: Optional[list[str]] = None,
244
+ skip_classified_elements: Optional[list[str]] = None,
245
+ include_only_classified_elements: Optional[list[str]] = None,
246
+ graph_query_depth: int = 3,
247
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
248
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
249
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
250
+ sequencing_property: Optional[str] = None,
251
+ output_format: str = "JSON",
252
+ report_spec: str | dict = "Referenceable",
253
+ start_from: int = 0, page_size: int = 100,
254
+ property_names: Optional[list[str]] = None,
255
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
256
+ """ Retrieve the list of asset metadata elements that contain the search string.
257
+
258
+ Parameters
259
+ ----------
260
+ search_string: str
261
+ Search string to match against - None or '*' indicate match against all assets.
262
+ starts_with : bool, [default=True], optional
263
+ Starts with the supplied string.
264
+ ends_with : bool, [default=False], optional
265
+ Ends with the supplied string
266
+ ignore_case : bool, [default=False], optional
267
+ Ignore case when searching
268
+ anchor_domain: str, optional
269
+ The anchor domain to search in.
270
+ metadata_element_type: str, optional
271
+ The type of metadata element to search for.
272
+ metadata_element_subtypes: list[str], optional
273
+ The subtypes of metadata element to search for.
274
+ skip_relationships: list[str], optional
275
+ The types of relationships to skip.
276
+ include_only_relationships: list[str], optional
277
+ The types of relationships to include.
278
+ skip_classified_elements: list[str], optional
279
+ The types of classified elements to skip.
280
+ include_only_classified_elements: list[str], optional
281
+ The types of classified elements to include.
282
+ graph_query_depth: int, [default=3], optional
283
+ The depth of the graph query.
284
+ governance_zone_filter: list[str], optional
285
+ The governance zones to search in.
286
+ as_of_time: str, optional
287
+ The time to search as of.
288
+ effective_time: str, optional
289
+ The effective time to search at.
290
+ relationship_page_size: int, [default=0], optional
291
+ The page size for relationships.
292
+ limit_results_by_status: list[str], optional
293
+ The statuses to limit results by.
294
+ sequencing_order: str, optional
295
+ The order to sequence results by.
296
+ sequencing_property: str, optional
297
+ The property to sequence results by.
298
+ output_format: str, default = "JSON"
299
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
300
+ report_spec: str | dict , optional, default = "Referenceable"
301
+ - The desired output columns/fields to include.
302
+ start_from: int, [default=0], optional
303
+ When multiple pages of results are available, the page number to start from.
304
+ page_size: int, [default=100]
305
+ The number of items to return in a single page.
306
+ property_names: list[str], optional
307
+ The names of properties to search for.
308
+ body: dict | SearchStringRequestBody, optional, default = None
309
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
310
+
311
+ Returns
312
+ -------
313
+ List | str
314
+
315
+ Output depends on the output format specified.
316
+
317
+ Raises
318
+ -------
319
+
320
+ ValidationError
321
+ If the client passes incorrect parameters on the request that don't conform to the data model.
322
+ PyegeriaException
323
+ Issues raised in communicating or server side processing.
324
+ NotAuthorizedException
325
+ The principle specified by the user_id does not have authorization for the requested action
326
+
327
+ """
328
+ loop = asyncio.get_event_loop()
329
+ return loop.run_until_complete(self._async_find_in_asset_domain(search_string=search_string,
330
+ starts_with=starts_with,
331
+ ends_with=ends_with,
332
+ ignore_case=ignore_case,
333
+ anchor_domain=anchor_domain,
334
+ metadata_element_type=metadata_element_type,
335
+ metadata_element_subtypes=metadata_element_subtypes,
336
+ skip_relationships=skip_relationships,
337
+ include_only_relationships=include_only_relationships,
338
+ skip_classified_elements=skip_classified_elements,
339
+ include_only_classified_elements=include_only_classified_elements,
340
+ graph_query_depth=graph_query_depth,
341
+ governance_zone_filter=governance_zone_filter,
342
+ as_of_time=as_of_time,
343
+ effective_time=effective_time,
344
+ relationship_page_size=relationship_page_size,
345
+ limit_results_by_status=limit_results_by_status,
346
+ sequencing_order=sequencing_order,
347
+ sequencing_property=sequencing_property,
348
+ output_format=output_format,
349
+ report_spec=report_spec,
350
+ start_from=start_from,
351
+ page_size=page_size,
352
+ property_names=property_names,
353
+ body=body))
354
+
355
+ async def _async_get_asset_graph(
356
+ self,
357
+ asset_guid: str,
358
+ start_from: int = 0,
359
+ page_size: int = 0,
360
+ output_format: str = "MERMAID",
361
+ report_spec: str = "Common-Mermaid",
362
+ body: Optional[dict | ResultsRequestBody] = None
363
+ ) -> str | dict:
364
+ """Return all the elements that are anchored to an asset plus relationships between these elements and to
365
+ other elements. Async version.
366
+
367
+ Parameters
368
+ ----------
369
+ asset_guid : str
370
+ The unique identity of the asset to get the graph for.
371
+ start_from : int, optional
372
+ The index from which to start fetching. Default is 0.
373
+ page_size : int, optional
374
+ The maximum number of items to fetch. Default is 0 (all).
375
+ output_format : str, default = "MERMAID"
376
+ The desired output format. One of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID", or "JSON".
377
+ report_spec : str | dict, optional
378
+ The desired output columns/fields to include. Default is "Common-Mermaid".
379
+ body : dict | ResultsRequestBody, optional
380
+ If provided, the search parameters in the body will supersede other attributes.
381
+
382
+ Returns
383
+ -------
384
+ str | dict
385
+ The asset graph in the requested format.
386
+
387
+ Raises
388
+ ------
389
+ PyegeriaException
390
+ If there are issues in communications, message format, or Egeria errors.
391
+ PyegeriaNotAuthorizedException
392
+ The principle specified by the user_id does not have authorization.
393
+ """
394
+
395
+ url = (
396
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/{asset_guid}/"
397
+ f"as-graph"
398
+ )
399
+ response = await self._async_get_results_body_request(url, "Asset", self._generate_asset_output,
400
+ start_from, page_size, output_format, report_spec, body)
401
+ return response
402
+
403
+ def get_asset_graph(
404
+ self,
405
+ asset_guid: str,
406
+ start_from: int = 0,
407
+ page_size: int = 0,
408
+ output_format: str = "MERMAID",
409
+ report_spec: str = "Common-Mermaid",
410
+ body: Optional[dict | ResultsRequestBody] = None
411
+ ) -> str | dict:
412
+ """Return all the elements that are anchored to an asset plus relationships between these elements and to
413
+ other elements.
414
+
415
+ Parameters
416
+ ----------
417
+ asset_guid : str
418
+ The unique identity of the asset to get the graph for.
419
+ start_from : int, optional
420
+ The index from which to start fetching. Default is 0.
421
+ page_size : int, optional
422
+ The maximum number of items to fetch. Default is 0 (all).
423
+ output_format : str, default = "MERMAID"
424
+ The desired output format. One of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID", or "JSON".
425
+ report_spec : str | dict, optional
426
+ The desired output columns/fields to include. Default is "Common-Mermaid".
427
+ body : dict | ResultsRequestBody, optional
428
+ If provided, the search parameters in the body will supersede other attributes.
429
+
430
+ Returns
431
+ -------
432
+ str | dict
433
+ The asset graph in the requested format.
434
+
435
+ Raises
436
+ ------
437
+ PyegeriaException
438
+ If there are issues in communications, message format, or Egeria errors.
439
+ PyegeriaNotAuthorizedException
440
+ The principle specified by the user_id does not have authorization.
441
+ """
442
+
443
+ loop = asyncio.get_event_loop()
444
+ response = loop.run_until_complete(
445
+ self._async_get_asset_graph(asset_guid, start_from, page_size, output_format,
446
+ report_spec, body)
447
+ )
448
+ return response
449
+
450
+ def get_asset_mermaid_graph(
451
+ self,
452
+ asset_guid: str,
453
+ start_from: int = 0,
454
+ page_size: int = 0,
455
+ ) -> str:
456
+ """Return the asset graph as mermaid markdown string.
457
+ Parameters
458
+ ----------
459
+ asset_guid : str
460
+ The unique identity of the asset to get the graph for.
461
+
462
+ start_from : int, optional
463
+ The index from which to start fetching the engine actions. Default is 0.
464
+
465
+ page_size : int, optional
466
+ The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
467
+
468
+ Returns
469
+ -------
470
+ str
471
+ A mermaid string representing the asset graph.
472
+
473
+ Raises
474
+ ------
475
+ PyegeriaException
476
+ One of the pyegeria exceptions will be raised if there are issues in communications, message format, or
477
+ Egeria errors.
478
+ PyegeriaNotAuthorizedException
479
+ The principle specified by the user_id does not have authorization for the requested action
480
+
481
+ """
482
+
483
+ asset_graph = self.get_asset_graph(asset_guid, start_from, page_size)
484
+ return asset_graph[0]
485
+
486
+ async def _async_get_asset_lineage_graph(
487
+ self,
488
+ asset_guid: str,
489
+ effective_time: Optional[str] = None,
490
+ as_of_time: Optional[str] = None,
491
+ relationship_types: [str] = None,
492
+ limit_to_isc_q_name: Optional[str] = None,
493
+ hilight_isc_q_name: Optional[str] = None,
494
+ all_anchors: bool = False,
495
+ start_from: int = 0,
496
+ page_size: int =0,
497
+ output_format: str = "DICT",
498
+ report_spec: str = "Common-Mermaid",
499
+
500
+ ) -> str | dict:
501
+ """Return the asset lineage including a mermaid markdown string. Async version.
502
+
503
+ Parameters
504
+ ----------
505
+ asset_guid : str
506
+ The unique identity of the asset to get the graph for.
507
+ effective_time : str, optional
508
+ Effective time to query on. If not specified, the current time is used.
509
+ as_of_time : str, optional
510
+ As-of time to query on. If not specified, the current time is used.
511
+ relationship_types : list[str], optional
512
+ Relationship types to include in the lineage graph. If not specified, all relationship types are included.
513
+ limit_to_isc_q_name : str, optional
514
+ If specified, filters results to only include information supply chains with the given qualified name.
515
+ hilight_isc_q_name : str, optional
516
+ If specified, highlights the information supply chain with the given qualified name.
517
+ all_anchors : bool, optional
518
+ Whether to include all anchors. Default is False.
519
+ start_from : int, optional
520
+ The index from which to start fetching. Default is 0.
521
+ page_size : int, optional
522
+ The maximum number of items to fetch. Default is 0 (all).
523
+ output_format : str, optional
524
+ The desired output format. Default is "DICT".
525
+ report_spec : str, optional
526
+ The desired output columns/fields to include. Default is "Common-Mermaid".
527
+
528
+ Returns
529
+ -------
530
+ str | dict
531
+ A dictionary of the asset graph that includes a mermaid markdown string.
532
+
533
+ Raises
534
+ ------
535
+ PyegeriaException
536
+ If there are issues in communications, message format, or Egeria errors.
537
+ """
538
+
539
+ url = (
540
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/{asset_guid}/"
541
+ f"as-lineage-graph"
542
+ )
543
+ body = {
544
+ "class": "AssetLineageGraphRequestBody",
545
+ "effectiveTime": effective_time,
546
+ "asOfTime": as_of_time,
547
+ "relationshipTypes": relationship_types,
548
+ "limitToISCQualifiedName": limit_to_isc_q_name,
549
+ "highlightISCQualifiedName": hilight_isc_q_name,
550
+ "allAnchors": all_anchors,
551
+ "startFrom": start_from,
552
+ "pageSize": page_size
553
+ }
554
+
555
+ response = await self._async_make_request("POST", url, body_slimmer(body))
556
+ element = response.json().get("element",NO_ASSETS_FOUND)
557
+ if type(element) is str:
558
+ logger.info(NO_ELEMENTS_FOUND)
559
+ return NO_ELEMENTS_FOUND
560
+
561
+ if output_format != 'JSON': # return a simplified markdown representation
562
+ logger.info(f"Found elements, output format: {output_format} and report_spec: {report_spec}")
563
+ return self._generate_asset_output(element, None, "Asset",
564
+ output_format, report_spec)
565
+ return element
566
+
567
+
568
+ def get_asset_lineage_graph(
569
+ self,
570
+ asset_guid: str,
571
+ effective_time: Optional[str] = None,
572
+ as_of_time: Optional[str] = None,
573
+ relationship_types: [str] = None,
574
+ limit_to_isc_q_name: Optional[str] = None,
575
+ hilight_isc_q_name: Optional[str] = None,
576
+ all_anchors: bool = False,
577
+ start_from: int = 0,
578
+ page_size: int = 0,
579
+ output_format: str = "DICT",
580
+ report_spec: str = "Common-Mermaid",
581
+ ) -> str | dict:
582
+ """Return the asset lineage including a mermaid markdown string.
583
+
584
+ Parameters
585
+ ----------
586
+ asset_guid : str
587
+ The unique identity of the asset to get the graph for.
588
+ effective_time : str, optional
589
+ Effective time to query on. If not specified, the current time is used.
590
+ as_of_time : str, optional
591
+ As-of time to query on. If not specified, the current time is used.
592
+ relationship_types : list[str], optional
593
+ Relationship types to include in the lineage graph. If not specified, all relationship types are included.
594
+ limit_to_isc_q_name : str, optional
595
+ If specified, filters results to only include information supply chains with the given qualified name.
596
+ hilight_isc_q_name : str, optional
597
+ If specified, highlights the information supply chain with the given qualified name.
598
+ all_anchors : bool, optional
599
+ Whether to include all anchors. Default is False.
600
+ start_from : int, optional
601
+ The index from which to start fetching. Default is 0.
602
+ page_size : int, optional
603
+ The maximum number of items to fetch. Default is 0 (all).
604
+ output_format : str, optional
605
+ The desired output format. Default is "DICT".
606
+ report_spec : str, optional
607
+ The desired output columns/fields to include. Default is "Common-Mermaid".
608
+
609
+ Returns
610
+ -------
611
+ str | dict
612
+ A dictionary of the asset graph that includes a mermaid markdown string.
613
+
614
+ Raises
615
+ ------
616
+ PyegeriaException
617
+ If there are issues in communications, message format, or Egeria errors.
618
+ """
619
+
620
+ loop = asyncio.get_event_loop()
621
+ response = loop.run_until_complete(
622
+ self._async_get_asset_lineage_graph(asset_guid, effective_time, as_of_time, relationship_types,
623
+ limit_to_isc_q_name, hilight_isc_q_name, all_anchors,
624
+ start_from, page_size, output_format, report_spec)
625
+ )
626
+ return response
627
+
628
+ def get_asset_lineage_mermaid_graph(
629
+ self,
630
+ asset_guid: str,
631
+ effective_time: Optional[str] = None,
632
+ as_of_time: Optional[str] = None,
633
+ relationship_types: [str] = None,
634
+ limit_to_isc_q_name: Optional[str] = None,
635
+ hilight_isc_q_name: Optional[str] = None,
636
+ start_from: int = 0,
637
+ page_size: int = max_paging_size,
638
+ ) -> str:
639
+ """Return the asset lineage including a mermaid markdown string. Async Version.
640
+ Parameters
641
+ ----------
642
+ asset_guid : str
643
+ The unique identity of the asset to get the graph for.
644
+ effective_time: str, default is None
645
+ Effective time to query on. If not specified, the current time is used.
646
+ as_of_time: str = None
647
+ as_of_time to query on. If not specified, the current time is used.
648
+ relationship_types: [str], default is None,
649
+ relationship types to include in the lineage graph. If not specified, all relationship types are included.
650
+ limit_to_isc_q_name: Optional[str] = None,
651
+ if specified, filters results to only include information supply chains with the given name.
652
+ hilight_isc_q_name: Optional[str] = None,
653
+ if specified, highlights the information supply chain with the given name.
654
+
655
+ start_from : int, optional
656
+ The index from which to start fetching the engine actions. Default is 0.
657
+
658
+ page_size : int, optional
659
+ The maximum number of elements to fetch in a single request.
660
+ Default is `max_paging_size`.
661
+
662
+ Returns
663
+ -------
664
+ str
665
+ A mermaid string representing the lineage.
666
+
667
+ Raises:
668
+ ------
669
+ PyegeriaInvalidParameterException
670
+ PyegeriaAPIException
671
+ PyegeriaUnauthorizedException
672
+
673
+ """
674
+
675
+ asset_graph = self.get_asset_lineage_graph(asset_guid, effective_time,
676
+ as_of_time, relationship_types,
677
+ limit_to_isc_q_name, hilight_isc_q_name,
678
+ start_from, page_size, "JSON")
679
+ return asset_graph.get("mermaidGraph")
680
+
681
+
682
+ async def _async_get_assets_by_metadata_collection_id(
683
+ self,
684
+ metadata_collection_id: str,
685
+ type_name: Optional[str] = None,
686
+ effective_time: Optional[str] = None,
687
+ start_from: int = 0,
688
+ page_size: int = 0,
689
+ output_format: str = "JSON",
690
+ report_spec: str = "Referenceable",
691
+ ) -> str | list:
692
+ """Return a list of assets from the requested metadata collection. Async version.
693
+
694
+ Parameters
695
+ ----------
696
+ metadata_collection_id : str
697
+ The unique identity of the metadata collection to return assets from.
698
+ type_name : str, optional
699
+ An asset type to filter on. If not specified, all assets in the collection are returned.
700
+ effective_time : str, optional
701
+ The effective time to filter on. If not specified, the current time is used.
702
+ start_from : int, optional
703
+ The index from which to start fetching. Default is 0.
704
+ page_size : int, optional
705
+ The maximum number of assets to fetch in a single request. Default is 0 (all).
706
+ output_format : str, optional
707
+ The desired output format. Default is "JSON".
708
+ report_spec : str, optional
709
+ The desired output columns/fields to include. Default is "Referenceable".
710
+
711
+ Returns
712
+ -------
713
+ list | str
714
+ A list of assets or a string if an error occurs or no assets are found.
715
+
716
+ Raises
717
+ ------
718
+ PyegeriaException
719
+ If there are issues in communications, message format, or Egeria errors.
720
+ """
721
+
722
+ url = (
723
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/by-metadata-collection-id/"
724
+ f"{metadata_collection_id}"
725
+ )
726
+
727
+ body = {"filter": type_name,
728
+ "effectiveTime": effective_time,
729
+ "startFrom": start_from,
730
+ "pageSize": page_size,
731
+ }
732
+ body_s = body_slimmer(body)
733
+ response = await self._async_make_request("POST", url, body_s)
734
+ elements = response.json().get("elements", "NO_ASSETS_FOUND")
735
+ if type(elements) is str:
736
+ logger.info(NO_ELEMENTS_FOUND)
737
+ return NO_ELEMENTS_FOUND
738
+
739
+ if output_format != 'JSON': # return a simplified markdown representation
740
+ logger.info(f"Found elements, output format: {output_format} and report_spec: {report_spec}")
741
+ return self._generate_asset_output(elements, None, "Asset",
742
+ output_format, report_spec)
743
+ return elements
744
+
745
+ def get_assets_by_metadata_collection_id(
746
+ self,
747
+ metadata_collection_id: str,
748
+ type_name: Optional[str] = None,
749
+ effective_time: Optional[str] = None,
750
+ start_from: int = 0,
751
+ page_size: int = max_paging_size,
752
+ output_format: str = "JSON",
753
+ report_spec: str = "Referenceable",
754
+ ) -> str | list:
755
+ """Return a list of assets from the requested metadata collection.
756
+
757
+ Parameters
758
+ ----------
759
+ metadata_collection_id : str
760
+ The unique identity of the metadata collection to return assets from.
761
+ type_name : str, optional
762
+ An asset type to filter on. If not specified, all assets in the collection are returned.
763
+ effective_time : str, optional
764
+ The effective time to filter on. If not specified, the current time is used.
765
+ start_from : int, optional
766
+ The index from which to start fetching. Default is 0.
767
+ page_size : int, optional
768
+ The maximum number of assets to fetch in a single request. Default is `max_paging_size`.
769
+ output_format : str, optional
770
+ The desired output format. Default is "JSON".
771
+ report_spec : str, optional
772
+ The desired output columns/fields to include. Default is "Referenceable".
773
+
774
+ Returns
775
+ -------
776
+ list | str
777
+ A list of assets or a string if an error occurs or no assets are found.
778
+
779
+ Raises
780
+ ------
781
+ PyegeriaException
782
+ If there are issues in communications, message format, or Egeria errors.
783
+ """
784
+
785
+ loop = asyncio.get_event_loop()
786
+ response = loop.run_until_complete(
787
+ self._async_get_assets_by_metadata_collection_id(
788
+ metadata_collection_id,
789
+ type_name,
790
+ effective_time,
791
+ start_from,
792
+ page_size,
793
+ output_format,
794
+ report_spec,
795
+ )
796
+ )
797
+ return response
798
+
799
+
800
+
801
+
802
+ async def _async_get_asset_types(self) -> list | str:
803
+ """Return the list of asset types supported by the Asset Catalog View Service. Async version.
804
+
805
+ Returns
806
+ -------
807
+ list | str
808
+ A list of asset types or NO_ASSETS_FOUND.
809
+
810
+ Raises
811
+ ------
812
+ PyegeriaException
813
+ If there are issues in communications, message format, or Egeria errors.
814
+ """
815
+
816
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/types"
817
+
818
+ response = await self._async_make_request("GET", url)
819
+
820
+ return response.json().get("types", "NO_ASSETS_FOUND")
821
+
822
+ def get_asset_types(self) -> list | str:
823
+ """Return the list of asset types supported by the Asset Catalog View Service.
824
+
825
+ Returns
826
+ -------
827
+ list | str
828
+ A list of asset types or NO_ASSETS_FOUND.
829
+
830
+ Raises
831
+ ------
832
+ PyegeriaException
833
+ If there are issues in communications, message format, or Egeria errors.
834
+ """
835
+
836
+ loop = asyncio.get_event_loop()
837
+ response = loop.run_until_complete(self._async_get_asset_types())
838
+ return response
839
+
840
+
841
+ if __name__ == "__main__":
842
+ print("Main-asset-catalog")