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,869 @@
1
+ """
2
+ PDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ This module contains the Data Discovery View Service client.
6
+ """
7
+
8
+ import asyncio
9
+ from typing import Annotated, Literal, Optional
10
+
11
+ from pydantic import Field
12
+
13
+ from pyegeria.core._server_client import ServerClient
14
+ from pyegeria.models import (
15
+ NewElementRequestBody,
16
+ DeleteElementRequestBody,
17
+ UpdateElementRequestBody,
18
+ TemplateRequestBody,
19
+ FilterRequestBody,
20
+ SearchStringRequestBody,
21
+ GetRequestBody,
22
+ ReferenceableProperties,
23
+ )
24
+ from pyegeria.view.output_formatter import (
25
+ generate_output,
26
+ populate_common_columns,
27
+ overlay_additional_values,
28
+ )
29
+ from pyegeria.core.utils import dynamic_catch
30
+
31
+
32
+ class AnnotationProperties(ReferenceableProperties):
33
+ class_: Annotated[Literal["AnnotationProperties"], Field(alias="class")]
34
+ annotation_type: Optional[str] = None
35
+ summary: Optional[str] = None
36
+ confidence_level: Optional[int] = None
37
+ expression: Optional[str] = None
38
+ explanation: Optional[str] = None
39
+ analysis_step: Optional[str] = None
40
+ json_properties: Optional[str] = None
41
+
42
+
43
+ class DataDiscovery(ServerClient):
44
+ """
45
+ Client for the Data Discovery View Service.
46
+
47
+ The Data Discovery View Service provides methods to manage annotations and analysis reports.
48
+
49
+ Attributes
50
+ ----------
51
+ view_server : str
52
+ The name of the View Server to use.
53
+ platform_url : str
54
+ URL of the server platform to connect to.
55
+ user_id : str
56
+ The identity of the user calling the method.
57
+ user_pwd : str
58
+ The password associated with the user_id. Defaults to None.
59
+ """
60
+
61
+ def __init__(
62
+ self,
63
+ view_server: str,
64
+ platform_url: str,
65
+ user_id: str,
66
+ user_pwd: Optional[str] = None,
67
+ token: Optional[str] = None,
68
+ ):
69
+ super().__init__(view_server, platform_url, user_id, user_pwd, token)
70
+ self.view_server = view_server
71
+ self.platform_url = platform_url
72
+ self.user_id = user_id
73
+ self.user_pwd = user_pwd
74
+ self.url_marker = "data-discovery"
75
+
76
+ def _extract_annotation_properties(self, element: dict, columns_struct: dict) -> dict:
77
+ col_data = populate_common_columns(element, columns_struct)
78
+ props = element.get("properties", {})
79
+ overlay_additional_values(col_data, props)
80
+ return col_data
81
+
82
+ def _generate_annotation_output(
83
+ self,
84
+ elements: dict | list[dict],
85
+ filter: Optional[str],
86
+ element_type_name: Optional[str],
87
+ output_format: str = "DICT",
88
+ report_spec: dict | str = None,
89
+ ) -> str | list[dict]:
90
+ return generate_output(
91
+ elements,
92
+ filter,
93
+ element_type_name,
94
+ output_format,
95
+ self._extract_annotation_properties,
96
+ None,
97
+ report_spec,
98
+ )
99
+
100
+ @dynamic_catch
101
+ async def _async_create_annotation(self, body: dict | NewElementRequestBody) -> str:
102
+ """Create an annotation. Async version.
103
+
104
+ Parameters
105
+ ----------
106
+ body : dict | NewElementRequestBody
107
+ The properties for the annotation.
108
+
109
+ Returns
110
+ -------
111
+ str
112
+ The unique identifier of the newly created annotation.
113
+
114
+ Raises
115
+ ------
116
+ PyegeriaException
117
+ If there are issues in communications, message format, or Egeria errors.
118
+
119
+ Notes
120
+ -----
121
+ Sample JSON body:
122
+ ```json
123
+ {
124
+ "class" : "NewElementRequestBody",
125
+ "properties": {
126
+ "class" : "AnnotationProperties",
127
+ "typeName" : "Annotation",
128
+ "qualifiedName": "add unique name here",
129
+ "displayName": "add short name here",
130
+ "description": "add description here"
131
+ }
132
+ }
133
+ ```
134
+ """
135
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations"
136
+ return await self._async_create_element_body_request(url, "AnnotationProperties", body)
137
+
138
+ def create_annotation(self, body: dict | NewElementRequestBody) -> str:
139
+ """Create an annotation.
140
+
141
+ Parameters
142
+ ----------
143
+ body : dict | NewElementRequestBody
144
+ The properties for the annotation.
145
+
146
+ Returns
147
+ -------
148
+ str
149
+ The unique identifier of the newly created annotation.
150
+
151
+ Raises
152
+ ------
153
+ PyegeriaException
154
+ If there are issues in communications, message format, or Egeria errors.
155
+
156
+ Notes
157
+ -----
158
+ Sample JSON body:
159
+ ```json
160
+ {
161
+ "class" : "NewElementRequestBody",
162
+ "properties": {
163
+ "class" : "AnnotationProperties",
164
+ "typeName" : "Annotation",
165
+ "qualifiedName": "add unique name here",
166
+ "displayName": "add short name here",
167
+ "description": "add description here"
168
+ }
169
+ }
170
+ ```
171
+ """
172
+ loop = asyncio.get_event_loop()
173
+ return loop.run_until_complete(self._async_create_annotation(body))
174
+
175
+ @dynamic_catch
176
+ async def _async_create_annotation_from_template(self, body: dict | TemplateRequestBody) -> str:
177
+ """Create an annotation from a template. Async version.
178
+
179
+ Parameters
180
+ ----------
181
+ body : dict | TemplateRequestBody
182
+ The properties for the new annotation, including the template GUID.
183
+
184
+ Returns
185
+ -------
186
+ str
187
+ The unique identifier of the newly created annotation.
188
+
189
+ Raises
190
+ ------
191
+ PyegeriaException
192
+ If there are issues in communications, message format, or Egeria errors.
193
+
194
+ Notes
195
+ -----
196
+ Sample JSON body:
197
+ ```json
198
+ {
199
+ "class" : "TemplateRequestBody",
200
+ "templateGUID": "add guid here",
201
+ "replacementProperties": {
202
+ "class": "ElementProperties",
203
+ "propertyValueMap" : {
204
+ "description" : {
205
+ "class": "PrimitiveTypePropertyValue",
206
+ "typeName": "string",
207
+ "primitiveValue" : "New description"
208
+ }
209
+ }
210
+ }
211
+ }
212
+ ```
213
+ """
214
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/from-template"
215
+ return await self._async_create_element_body_request(url, "AnnotationProperties", body)
216
+
217
+ def create_annotation_from_template(self, body: dict | TemplateRequestBody) -> str:
218
+ """Create an annotation from a template.
219
+
220
+ Parameters
221
+ ----------
222
+ body : dict | TemplateRequestBody
223
+ The properties for the new annotation, including the template GUID.
224
+
225
+ Returns
226
+ -------
227
+ str
228
+ The unique identifier of the newly created annotation.
229
+
230
+ Raises
231
+ ------
232
+ PyegeriaException
233
+ If there are issues in communications, message format, or Egeria errors.
234
+
235
+ Notes
236
+ -----
237
+ Sample JSON body:
238
+ ```json
239
+ {
240
+ "class" : "TemplateRequestBody",
241
+ "templateGUID": "add guid here",
242
+ "replacementProperties": {
243
+ "class": "ElementProperties",
244
+ "propertyValueMap" : {
245
+ "description" : {
246
+ "class": "PrimitiveTypePropertyValue",
247
+ "typeName": "string",
248
+ "primitiveValue" : "New description"
249
+ }
250
+ }
251
+ }
252
+ }
253
+ ```
254
+ """
255
+ loop = asyncio.get_event_loop()
256
+ return loop.run_until_complete(self._async_create_annotation_from_template(body))
257
+
258
+ @dynamic_catch
259
+ async def _async_update_annotation(
260
+ self, annotation_guid: str, body: dict | UpdateElementRequestBody
261
+ ) -> None:
262
+ """Update an annotation. Async version.
263
+
264
+ Parameters
265
+ ----------
266
+ annotation_guid : str
267
+ The unique identifier of the annotation.
268
+ body : dict | UpdateElementRequestBody
269
+ The properties to update.
270
+
271
+ Returns
272
+ -------
273
+ None
274
+
275
+ Raises
276
+ ------
277
+ PyegeriaException
278
+ If there are issues in communications, message format, or Egeria errors.
279
+
280
+ Notes
281
+ -----
282
+ Sample JSON body:
283
+ ```json
284
+ {
285
+ "class" : "UpdateElementRequestBody",
286
+ "mergeUpdate": true,
287
+ "properties": {
288
+ "class" : "AnnotationProperties",
289
+ "displayName": "Updated Name"
290
+ }
291
+ }
292
+ ```
293
+ """
294
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/{annotation_guid}/update"
295
+ await self._async_update_element_body_request(url, body)
296
+
297
+ def update_annotation(self, annotation_guid: str, body: dict | UpdateElementRequestBody) -> None:
298
+ """Update an annotation.
299
+
300
+ Parameters
301
+ ----------
302
+ annotation_guid : str
303
+ The unique identifier of the annotation.
304
+ body : dict | UpdateElementRequestBody
305
+ The properties to update.
306
+
307
+ Returns
308
+ -------
309
+ None
310
+
311
+ Raises
312
+ ------
313
+ PyegeriaException
314
+ If there are issues in communications, message format, or Egeria errors.
315
+
316
+ Notes
317
+ -----
318
+ Sample JSON body:
319
+ ```json
320
+ {
321
+ "class" : "UpdateElementRequestBody",
322
+ "mergeUpdate": true,
323
+ "properties": {
324
+ "class" : "AnnotationProperties",
325
+ "displayName": "Updated Name"
326
+ }
327
+ }
328
+ ```
329
+ """
330
+ loop = asyncio.get_event_loop()
331
+ loop.run_until_complete(self._async_update_annotation(annotation_guid, body))
332
+
333
+ @dynamic_catch
334
+ async def _async_delete_annotation(
335
+ self, annotation_guid: str, body: dict | DeleteElementRequestBody
336
+ ) -> None:
337
+ """Delete an annotation. Async version.
338
+
339
+ Parameters
340
+ ----------
341
+ annotation_guid : str
342
+ The unique identifier of the annotation.
343
+ body : dict | DeleteElementRequestBody
344
+ The request body for the delete operation.
345
+
346
+ Returns
347
+ -------
348
+ None
349
+
350
+ Raises
351
+ ------
352
+ PyegeriaException
353
+ If there are issues in communications, message format, or Egeria errors.
354
+
355
+ Notes
356
+ -----
357
+ Sample JSON body:
358
+ ```json
359
+ {
360
+ "class" : "DeleteElementRequestBody",
361
+ "cascadedDelete" : false
362
+ }
363
+ ```
364
+ """
365
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/{annotation_guid}/delete"
366
+ await self._async_delete_element_body_request(url, body)
367
+
368
+ def delete_annotation(self, annotation_guid: str, body: dict | DeleteElementRequestBody) -> None:
369
+ """Delete an annotation.
370
+
371
+ Parameters
372
+ ----------
373
+ annotation_guid : str
374
+ The unique identifier of the annotation.
375
+ body : dict | DeleteElementRequestBody
376
+ The request body for the delete operation.
377
+
378
+ Returns
379
+ -------
380
+ None
381
+
382
+ Raises
383
+ ------
384
+ PyegeriaException
385
+ If there are issues in communications, message format, or Egeria errors.
386
+
387
+ Notes
388
+ -----
389
+ Sample JSON body:
390
+ ```json
391
+ {
392
+ "class" : "DeleteElementRequestBody",
393
+ "cascadedDelete" : false
394
+ }
395
+ ```
396
+ """
397
+ loop = asyncio.get_event_loop()
398
+ loop.run_until_complete(self._async_delete_annotation(annotation_guid, body))
399
+
400
+ @dynamic_catch
401
+ async def _async_get_annotations_by_name(
402
+ self,
403
+ filter_string: Optional[str] = None,
404
+ classification_names: Optional[list[str]] = None,
405
+ body: Optional[dict | FilterRequestBody] = None,
406
+ start_from: int = 0,
407
+ page_size: int = 0,
408
+ output_format: str = "JSON",
409
+ report_spec: str | dict = "Annotations",
410
+ ) -> list | str:
411
+ """Get annotations by name. Async version.
412
+
413
+ Parameters
414
+ ----------
415
+ filter_string : str, optional
416
+ The string to find in the properties.
417
+ classification_names : list[str], optional
418
+ The list of classification names to filter by.
419
+ body : dict | FilterRequestBody, optional
420
+ The request body for the search.
421
+ start_from : int, optional
422
+ The starting index for paged results.
423
+ page_size : int, optional
424
+ The maximum number of results to return.
425
+ output_format : str, optional
426
+ The desired output format.
427
+ report_spec : str | dict, optional
428
+ The desired output columns/fields to include.
429
+
430
+ Returns
431
+ -------
432
+ list | str
433
+ The list of matching annotations or a message if none found.
434
+
435
+ Raises
436
+ ------
437
+ PyegeriaException
438
+ If there are issues in communications, message format, or Egeria errors.
439
+
440
+ Notes
441
+ -----
442
+ Sample JSON body:
443
+ ```json
444
+ {
445
+ "class" : "FilterRequestBody",
446
+ "filter" : "AnnotationName",
447
+ "startFrom": 0,
448
+ "pageSize": 10
449
+ }
450
+ ```
451
+ """
452
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/by-name"
453
+ return await self._async_get_name_request(
454
+ url,
455
+ _type="Annotation",
456
+ _gen_output=self._generate_annotation_output,
457
+ filter_string=filter_string,
458
+ classification_names=classification_names,
459
+ start_from=start_from,
460
+ page_size=page_size,
461
+ output_format=output_format,
462
+ report_spec=report_spec,
463
+ body=body,
464
+ )
465
+
466
+ def get_annotations_by_name(
467
+ self,
468
+ filter_string: Optional[str] = None,
469
+ classification_names: Optional[list[str]] = None,
470
+ body: Optional[dict | FilterRequestBody] = None,
471
+ start_from: int = 0,
472
+ page_size: int = 0,
473
+ output_format: str = "JSON",
474
+ report_spec: str | dict = "Annotations",
475
+ ) -> list | str:
476
+ """Get annotations by name.
477
+
478
+ Parameters
479
+ ----------
480
+ filter_string : str, optional
481
+ The string to find in the properties.
482
+ classification_names : list[str], optional
483
+ The list of classification names to filter by.
484
+ body : dict | FilterRequestBody, optional
485
+ The request body for the search.
486
+ start_from : int, optional
487
+ The starting index for paged results.
488
+ page_size : int, optional
489
+ The maximum number of results to return.
490
+ output_format : str, optional
491
+ The desired output format.
492
+ report_spec : str | dict, optional
493
+ The desired output columns/fields to include.
494
+
495
+ Returns
496
+ -------
497
+ list | str
498
+ The list of matching annotations or a message if none found.
499
+
500
+ Raises
501
+ ------
502
+ PyegeriaException
503
+ If there are issues in communications, message format, or Egeria errors.
504
+
505
+ Notes
506
+ -----
507
+ Sample JSON body:
508
+ ```json
509
+ {
510
+ "class" : "FilterRequestBody",
511
+ "filter" : "AnnotationName",
512
+ "startFrom": 0,
513
+ "pageSize": 10
514
+ }
515
+ ```
516
+ """
517
+ loop = asyncio.get_event_loop()
518
+ return loop.run_until_complete(
519
+ self._async_get_annotations_by_name(
520
+ filter_string,
521
+ classification_names,
522
+ body,
523
+ start_from,
524
+ page_size,
525
+ output_format,
526
+ report_spec,
527
+ )
528
+ )
529
+
530
+ @dynamic_catch
531
+ async def _async_find_annotations(self, search_string: str = "*",
532
+ starts_with: bool = True, ends_with: bool = False,
533
+ ignore_case: bool = False,
534
+ anchor_domain: Optional[str] = None,
535
+ metadata_element_type: Optional[str] = None,
536
+ metadata_element_subtypes: Optional[list[str]] = None,
537
+ skip_relationships: Optional[list[str]] = None,
538
+ include_only_relationships: Optional[list[str]] = None,
539
+ skip_classified_elements: Optional[list[str]] = None,
540
+ include_only_classified_elements: Optional[list[str]] = None,
541
+ graph_query_depth: int = 3,
542
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
543
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
544
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
545
+ sequencing_property: Optional[str] = None,
546
+ output_format: str = "JSON",
547
+ report_spec: str | dict = "Referenceable",
548
+ start_from: int = 0, page_size: int = 100,
549
+ property_names: Optional[list[str]] = None,
550
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
551
+ """ Retrieve the list of annotation metadata elements that contain the search string. Async Version.
552
+
553
+ Parameters
554
+ ----------
555
+ search_string: str
556
+ Search string to match against - None or '*' indicate match against all annotations.
557
+ starts_with : bool, [default=True], optional
558
+ Starts with the supplied string.
559
+ ends_with : bool, [default=False], optional
560
+ Ends with the supplied string
561
+ ignore_case : bool, [default=False], optional
562
+ Ignore case when searching
563
+ anchor_domain: str, optional
564
+ The anchor domain to search in.
565
+ metadata_element_type: str, optional
566
+ The type of metadata element to search for.
567
+ metadata_element_subtypes: list[str], optional
568
+ The subtypes of metadata element to search for.
569
+ skip_relationships: list[str], optional
570
+ The types of relationships to skip.
571
+ include_only_relationships: list[str], optional
572
+ The types of relationships to include.
573
+ skip_classified_elements: list[str], optional
574
+ The types of classified elements to skip.
575
+ include_only_classified_elements: list[str], optional
576
+ The types of classified elements to include.
577
+ graph_query_depth: int, [default=3], optional
578
+ The depth of the graph query.
579
+ governance_zone_filter: list[str], optional
580
+ The governance zones to search in.
581
+ as_of_time: str, optional
582
+ The time to search as of.
583
+ effective_time: str, optional
584
+ The effective time to search at.
585
+ relationship_page_size: int, [default=0], optional
586
+ The page size for relationships.
587
+ limit_results_by_status: list[str], optional
588
+ The statuses to limit results by.
589
+ sequencing_order: str, optional
590
+ The order to sequence results by.
591
+ sequencing_property: str, optional
592
+ The property to sequence results by.
593
+ output_format: str, default = "JSON"
594
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
595
+ report_spec: str | dict , optional, default = "Referenceable"
596
+ - The desired output columns/fields to include.
597
+ start_from: int, [default=0], optional
598
+ When multiple pages of results are available, the page number to start from.
599
+ page_size: int, [default=100]
600
+ The number of items to return in a single page.
601
+ property_names: list[str], optional
602
+ The names of properties to search for.
603
+ body: dict | SearchStringRequestBody, optional, default = None
604
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
605
+
606
+ Returns
607
+ -------
608
+ List | str
609
+
610
+ Output depends on the output format specified.
611
+
612
+ Raises
613
+ ------
614
+
615
+ ValidationError
616
+ If the client passes incorrect parameters on the request that don't conform to the data model.
617
+ PyegeriaException
618
+ Issues raised in communicating or server side processing.
619
+ NotAuthorizedException
620
+ The principle specified by the user_id does not have authorization for the requested action
621
+
622
+ """
623
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/by-search-string"
624
+ response = await self._async_find_request(url, _type="Annotation", _gen_output=self._generate_annotation_output,
625
+ search_string=search_string, starts_with=starts_with,
626
+ ends_with=ends_with, ignore_case=ignore_case,
627
+ anchor_domain=anchor_domain,
628
+ metadata_element_type=metadata_element_type,
629
+ metadata_element_subtypes=metadata_element_subtypes,
630
+ skip_relationships=skip_relationships,
631
+ include_only_relationships=include_only_relationships,
632
+ skip_classified_elements=skip_classified_elements,
633
+ include_only_classified_elements=include_only_classified_elements,
634
+ graph_query_depth=graph_query_depth,
635
+ governance_zone_filter=governance_zone_filter,
636
+ as_of_time=as_of_time, effective_time=effective_time,
637
+ relationship_page_size=relationship_page_size,
638
+ limit_results_by_status=limit_results_by_status,
639
+ sequencing_order=sequencing_order,
640
+ sequencing_property=sequencing_property,
641
+ output_format=output_format, report_spec=report_spec,
642
+ start_from=start_from, page_size=page_size,
643
+ property_names=property_names, body=body)
644
+
645
+ return response
646
+
647
+ @dynamic_catch
648
+ def find_annotations(self, search_string: str = "*",
649
+ starts_with: bool = True, ends_with: bool = False,
650
+ ignore_case: bool = False,
651
+ anchor_domain: Optional[str] = None,
652
+ metadata_element_type: Optional[str] = None,
653
+ metadata_element_subtypes: Optional[list[str]] = None,
654
+ skip_relationships: Optional[list[str]] = None,
655
+ include_only_relationships: Optional[list[str]] = None,
656
+ skip_classified_elements: Optional[list[str]] = None,
657
+ include_only_classified_elements: Optional[list[str]] = None,
658
+ graph_query_depth: int = 3,
659
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
660
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
661
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
662
+ sequencing_property: Optional[str] = None,
663
+ output_format: str = "JSON",
664
+ report_spec: str | dict = "Referenceable",
665
+ start_from: int = 0, page_size: int = 100,
666
+ property_names: Optional[list[str]] = None,
667
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
668
+ """ Retrieve the list of annotation metadata elements that contain the search string.
669
+
670
+ Parameters
671
+ ----------
672
+ search_string: str
673
+ Search string to match against - None or '*' indicate match against all annotations.
674
+ starts_with : bool, [default=True], optional
675
+ Starts with the supplied string.
676
+ ends_with : bool, [default=False], optional
677
+ Ends with the supplied string
678
+ ignore_case : bool, [default=False], optional
679
+ Ignore case when searching
680
+ anchor_domain: str, optional
681
+ The anchor domain to search in.
682
+ metadata_element_type: str, optional
683
+ The type of metadata element to search for.
684
+ metadata_element_subtypes: list[str], optional
685
+ The subtypes of metadata element to search for.
686
+ skip_relationships: list[str], optional
687
+ The types of relationships to skip.
688
+ include_only_relationships: list[str], optional
689
+ The types of relationships to include.
690
+ skip_classified_elements: list[str], optional
691
+ The types of classified elements to skip.
692
+ include_only_classified_elements: list[str], optional
693
+ The types of classified elements to include.
694
+ graph_query_depth: int, [default=3], optional
695
+ The depth of the graph query.
696
+ governance_zone_filter: list[str], optional
697
+ The governance zones to search in.
698
+ as_of_time: str, optional
699
+ The time to search as of.
700
+ effective_time: str, optional
701
+ The effective time to search at.
702
+ relationship_page_size: int, [default=0], optional
703
+ The page size for relationships.
704
+ limit_results_by_status: list[str], optional
705
+ The statuses to limit results by.
706
+ sequencing_order: str, optional
707
+ The order to sequence results by.
708
+ sequencing_property: str, optional
709
+ The property to sequence results by.
710
+ output_format: str, default = "JSON"
711
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
712
+ report_spec: str | dict , optional, default = "Referenceable"
713
+ - The desired output columns/fields to include.
714
+ start_from: int, [default=0], optional
715
+ When multiple pages of results are available, the page number to start from.
716
+ page_size: int, [default=100]
717
+ The number of items to return in a single page.
718
+ property_names: list[str], optional
719
+ The names of properties to search for.
720
+ body: dict | SearchStringRequestBody, optional, default = None
721
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
722
+
723
+ Returns
724
+ -------
725
+ List | str
726
+
727
+ Output depends on the output format specified.
728
+
729
+ Raises
730
+ -------
731
+
732
+ ValidationError
733
+ If the client passes incorrect parameters on the request that don't conform to the data model.
734
+ PyegeriaException
735
+ Issues raised in communicating or server side processing.
736
+ NotAuthorizedException
737
+ The principle specified by the user_id does not have authorization for the requested action
738
+
739
+ """
740
+ loop = asyncio.get_event_loop()
741
+ return loop.run_until_complete(self._async_find_annotations(search_string=search_string,
742
+ starts_with=starts_with,
743
+ ends_with=ends_with,
744
+ ignore_case=ignore_case,
745
+ anchor_domain=anchor_domain,
746
+ metadata_element_type=metadata_element_type,
747
+ metadata_element_subtypes=metadata_element_subtypes,
748
+ skip_relationships=skip_relationships,
749
+ include_only_relationships=include_only_relationships,
750
+ skip_classified_elements=skip_classified_elements,
751
+ include_only_classified_elements=include_only_classified_elements,
752
+ graph_query_depth=graph_query_depth,
753
+ governance_zone_filter=governance_zone_filter,
754
+ as_of_time=as_of_time,
755
+ effective_time=effective_time,
756
+ relationship_page_size=relationship_page_size,
757
+ limit_results_by_status=limit_results_by_status,
758
+ sequencing_order=sequencing_order,
759
+ sequencing_property=sequencing_property,
760
+ output_format=output_format,
761
+ report_spec=report_spec,
762
+ start_from=start_from,
763
+ page_size=page_size,
764
+ property_names=property_names,
765
+ body=body))
766
+
767
+ @dynamic_catch
768
+ async def _async_get_annotation_by_guid(
769
+ self,
770
+ annotation_guid: str,
771
+ element_type: str = "Annotation",
772
+ body: Optional[dict | GetRequestBody] = None,
773
+ output_format: str = "JSON",
774
+ report_spec: str | dict = "Annotations",
775
+ ) -> dict | str:
776
+ """Get annotation by GUID. Async version.
777
+
778
+ Parameters
779
+ ----------
780
+ annotation_guid : str
781
+ The unique identifier of the required element.
782
+ element_type : str, optional
783
+ The type of metadata element.
784
+ body : dict | GetRequestBody, optional
785
+ The request body for the search.
786
+ output_format : str, optional
787
+ The desired output format.
788
+ report_spec : str | dict, optional
789
+ The desired output columns/fields to include.
790
+
791
+ Returns
792
+ -------
793
+ dict | str
794
+ The requested annotation or a message if not found.
795
+
796
+ Raises
797
+ ------
798
+ PyegeriaException
799
+ If there are issues in communications, message format, or Egeria errors.
800
+
801
+ Notes
802
+ -----
803
+ Sample JSON body:
804
+ ```json
805
+ {
806
+ "class" : "GetRequestBody",
807
+ "forLineage" : false
808
+ }
809
+ ```
810
+ """
811
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/{annotation_guid}/retrieve"
812
+ return await self._async_get_guid_request(
813
+ url,
814
+ _type=element_type,
815
+ _gen_output=self._generate_annotation_output,
816
+ output_format=output_format,
817
+ report_spec=report_spec,
818
+ body=body,
819
+ )
820
+
821
+ def get_annotation_by_guid(
822
+ self,
823
+ annotation_guid: str,
824
+ element_type: str = "Annotation",
825
+ body: Optional[dict | GetRequestBody] = None,
826
+ output_format: str = "JSON",
827
+ report_spec: str | dict = "Annotations",
828
+ ) -> dict | str:
829
+ """Get annotation by GUID.
830
+
831
+ Parameters
832
+ ----------
833
+ annotation_guid : str
834
+ The unique identifier of the required element.
835
+ element_type : str, optional
836
+ The type of metadata element.
837
+ body : dict | GetRequestBody, optional
838
+ The request body for the search.
839
+ output_format : str, optional
840
+ The desired output format.
841
+ report_spec : str | dict, optional
842
+ The desired output columns/fields to include.
843
+
844
+ Returns
845
+ -------
846
+ dict | str
847
+ The requested annotation or a message if not found.
848
+
849
+ Raises
850
+ ------
851
+ PyegeriaException
852
+ If there are issues in communications, message format, or Egeria errors.
853
+
854
+ Notes
855
+ -----
856
+ Sample JSON body:
857
+ ```json
858
+ {
859
+ "class" : "GetRequestBody",
860
+ "forLineage" : false
861
+ }
862
+ ```
863
+ """
864
+ loop = asyncio.get_event_loop()
865
+ return loop.run_until_complete(
866
+ self._async_get_annotation_by_guid(
867
+ annotation_guid, element_type, body, output_format, report_spec
868
+ )
869
+ )