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,1761 @@
1
+ """
2
+ PDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ This module contains the Time Keeper 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
+ NewRelationshipRequestBody,
20
+ DeleteRelationshipRequestBody,
21
+ FilterRequestBody,
22
+ SearchStringRequestBody,
23
+ GetRequestBody,
24
+ ReferenceableProperties,
25
+ RelationshipBeanProperties,
26
+ )
27
+ from pyegeria.view.output_formatter import (
28
+ generate_output,
29
+ populate_common_columns,
30
+ overlay_additional_values,
31
+ )
32
+ from pyegeria.core.utils import dynamic_catch
33
+
34
+
35
+ class ContextEventProperties(ReferenceableProperties):
36
+ class_: Annotated[Literal["ContextEventProperties"], Field(alias="class")]
37
+ url: Optional[str] = None
38
+ event_effect: Optional[str] = None
39
+ planned_start_date: Optional[str] = None
40
+ actual_start_date: Optional[str] = None
41
+ planned_duration: Optional[int] = None
42
+ actual_duration: Optional[int] = None
43
+ repeat_interval: Optional[int] = None
44
+ planned_completion_date: Optional[str] = None
45
+ actual_completion_date: Optional[str] = None
46
+ reference_effective_from: Optional[str] = None
47
+ reference_effective_to: Optional[str] = None
48
+
49
+
50
+ class DependentContextEventProperties(RelationshipBeanProperties):
51
+ class_: Annotated[Literal["DependentContextEventProperties"], Field(alias="class")]
52
+ label: Optional[str] = None
53
+ description: Optional[str] = None
54
+
55
+
56
+ class RelatedContextEventProperties(RelationshipBeanProperties):
57
+ class_: Annotated[Literal["RelatedContextEventProperties"], Field(alias="class")]
58
+ label: Optional[str] = None
59
+ description: Optional[str] = None
60
+ status_identifier: Optional[int] = None
61
+ confidence: Optional[int] = None
62
+ steward: Optional[str] = None
63
+ steward_type_name: Optional[str] = None
64
+ steward_property_name: Optional[str] = None
65
+ source: Optional[str] = None
66
+ notes: Optional[str] = None
67
+
68
+
69
+ class ContextEventEvidenceProperties(RelationshipBeanProperties):
70
+ class_: Annotated[Literal["ContextEventEvidenceProperties"], Field(alias="class")]
71
+ label: Optional[str] = None
72
+ description: Optional[str] = None
73
+
74
+
75
+ class ContextEventImpactProperties(RelationshipBeanProperties):
76
+ class_: Annotated[Literal["ContextEventImpactProperties"], Field(alias="class")]
77
+ label: Optional[str] = None
78
+ description: Optional[str] = None
79
+ status_identifier: Optional[int] = None
80
+
81
+
82
+ class ContextEventForTimelineEffectsProperties(RelationshipBeanProperties):
83
+ class_: Annotated[Literal["ContextEventForTimelineEffectsProperties"], Field(alias="class")]
84
+ label: Optional[str] = None
85
+ description: Optional[str] = None
86
+ status_identifier: Optional[int] = None
87
+
88
+
89
+ class TimeKeeper(ServerClient):
90
+ """
91
+ Client for the Time Keeper View Service.
92
+
93
+ The Time Keeper View Service provides methods to manage context events.
94
+
95
+ Attributes
96
+ ----------
97
+ view_server : str
98
+ The name of the View Server to use.
99
+ platform_url : str
100
+ URL of the server platform to connect to.
101
+ user_id : str
102
+ The identity of the user calling the method.
103
+ user_pwd : str
104
+ The password associated with the user_id. Defaults to None.
105
+ """
106
+
107
+ def __init__(
108
+ self,
109
+ view_server: str,
110
+ platform_url: str,
111
+ user_id: str,
112
+ user_pwd: Optional[str] = None,
113
+ token: Optional[str] = None,
114
+ ):
115
+ super().__init__(view_server, platform_url, user_id, user_pwd, token)
116
+ self.view_server = view_server
117
+ self.platform_url = platform_url
118
+ self.user_id = user_id
119
+ self.user_pwd = user_pwd
120
+ self.url_marker = "time-keeper"
121
+
122
+ def _extract_context_event_properties(self, element: dict, columns_struct: dict) -> dict:
123
+ col_data = populate_common_columns(element, columns_struct)
124
+ props = element.get("properties", {})
125
+ overlay_additional_values(col_data, props)
126
+ return col_data
127
+
128
+ def _generate_context_event_output(
129
+ self,
130
+ elements: dict | list[dict],
131
+ filter: Optional[str],
132
+ element_type_name: Optional[str],
133
+ output_format: str = "DICT",
134
+ report_spec: dict | str = None,
135
+ ) -> str | list[dict]:
136
+ return generate_output(
137
+ elements,
138
+ filter,
139
+ element_type_name,
140
+ output_format,
141
+ self._extract_context_event_properties,
142
+ None,
143
+ report_spec,
144
+ )
145
+
146
+ @dynamic_catch
147
+ async def _async_create_context_event(self, body: dict | NewElementRequestBody) -> str:
148
+ """Create a context event. Async version.
149
+
150
+ Parameters
151
+ ----------
152
+ body : dict | NewElementRequestBody
153
+ The properties for the context event.
154
+
155
+ Returns
156
+ -------
157
+ str
158
+ The unique identifier of the newly created context event.
159
+
160
+ Raises
161
+ ------
162
+ PyegeriaException
163
+ If there are issues in communications, message format, or Egeria errors.
164
+
165
+ Notes
166
+ -----
167
+ Sample JSON body:
168
+ ```json
169
+ {
170
+ "class" : "NewElementRequestBody",
171
+ "properties": {
172
+ "class" : "ContextEventProperties",
173
+ "qualifiedName": "add unique name here",
174
+ "displayName": "add short name here",
175
+ "description": "add description here",
176
+ "plannedStartDate" : "2024-01-01T00:00:00.000+00:00"
177
+ }
178
+ }
179
+ ```
180
+ """
181
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events"
182
+ return await self._async_create_element_body_request(url, "ContextEventProperties", body)
183
+
184
+ def create_context_event(self, body: dict | NewElementRequestBody) -> str:
185
+ """Create a context event.
186
+
187
+ Parameters
188
+ ----------
189
+ body : dict | NewElementRequestBody
190
+ The properties for the context event.
191
+
192
+ Returns
193
+ -------
194
+ str
195
+ The unique identifier of the newly created context event.
196
+
197
+ Raises
198
+ ------
199
+ PyegeriaException
200
+ If there are issues in communications, message format, or Egeria errors.
201
+
202
+ Notes
203
+ -----
204
+ Sample JSON body:
205
+ ```json
206
+ {
207
+ "class" : "NewElementRequestBody",
208
+ "properties": {
209
+ "class" : "ContextEventProperties",
210
+ "qualifiedName": "add unique name here",
211
+ "displayName": "add short name here",
212
+ "description": "add description here",
213
+ "plannedStartDate" : "2024-01-01T00:00:00.000+00:00"
214
+ }
215
+ }
216
+ ```
217
+ """
218
+ loop = asyncio.get_event_loop()
219
+ return loop.run_until_complete(self._async_create_context_event(body))
220
+
221
+ @dynamic_catch
222
+ async def _async_create_context_event_from_template(self, body: dict | TemplateRequestBody) -> str:
223
+ """Create a context event from a template. Async version.
224
+
225
+ Parameters
226
+ ----------
227
+ body : dict | TemplateRequestBody
228
+ The properties for the new context event, including the template GUID.
229
+
230
+ Returns
231
+ -------
232
+ str
233
+ The unique identifier of the newly created context event.
234
+
235
+ Raises
236
+ ------
237
+ PyegeriaException
238
+ If there are issues in communications, message format, or Egeria errors.
239
+
240
+ Notes
241
+ -----
242
+ Sample JSON body:
243
+ ```json
244
+ {
245
+ "class" : "TemplateRequestBody",
246
+ "templateGUID": "add guid here",
247
+ "replacementProperties": {
248
+ "class": "ElementProperties",
249
+ "propertyValueMap" : {
250
+ "description" : {
251
+ "class": "PrimitiveTypePropertyValue",
252
+ "typeName": "string",
253
+ "primitiveValue" : "New description"
254
+ }
255
+ }
256
+ }
257
+ }
258
+ ```
259
+ """
260
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/from-template"
261
+ return await self._async_create_element_body_request(url, "ContextEventProperties", body)
262
+
263
+ def create_context_event_from_template(self, body: dict | TemplateRequestBody) -> str:
264
+ """Create a context event from a template.
265
+
266
+ Parameters
267
+ ----------
268
+ body : dict | TemplateRequestBody
269
+ The properties for the new context event, including the template GUID.
270
+
271
+ Returns
272
+ -------
273
+ str
274
+ The unique identifier of the newly created context event.
275
+
276
+ Raises
277
+ ------
278
+ PyegeriaException
279
+ If there are issues in communications, message format, or Egeria errors.
280
+
281
+ Notes
282
+ -----
283
+ Sample JSON body:
284
+ ```json
285
+ {
286
+ "class" : "TemplateRequestBody",
287
+ "templateGUID": "add guid here",
288
+ "replacementProperties": {
289
+ "class": "ElementProperties",
290
+ "propertyValueMap" : {
291
+ "description" : {
292
+ "class": "PrimitiveTypePropertyValue",
293
+ "typeName": "string",
294
+ "primitiveValue" : "New description"
295
+ }
296
+ }
297
+ }
298
+ }
299
+ ```
300
+ """
301
+ loop = asyncio.get_event_loop()
302
+ return loop.run_until_complete(self._async_create_context_event_from_template(body))
303
+
304
+ @dynamic_catch
305
+ async def _async_update_context_event(
306
+ self, context_event_guid: str, body: dict | UpdateElementRequestBody
307
+ ) -> None:
308
+ """Update a context event. Async version.
309
+
310
+ Parameters
311
+ ----------
312
+ context_event_guid : str
313
+ The unique identifier of the context event.
314
+ body : dict | UpdateElementRequestBody
315
+ The properties to update.
316
+
317
+ Returns
318
+ -------
319
+ None
320
+
321
+ Raises
322
+ ------
323
+ PyegeriaException
324
+ If there are issues in communications, message format, or Egeria errors.
325
+
326
+ Notes
327
+ -----
328
+ Sample JSON body:
329
+ ```json
330
+ {
331
+ "class" : "UpdateElementRequestBody",
332
+ "mergeUpdate": true,
333
+ "properties": {
334
+ "class" : "ContextEventProperties",
335
+ "displayName": "Updated Name"
336
+ }
337
+ }
338
+ ```
339
+ """
340
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{context_event_guid}/update"
341
+ await self._async_update_element_body_request(url, body)
342
+
343
+ def update_context_event(self, context_event_guid: str, body: dict | UpdateElementRequestBody) -> None:
344
+ """Update a context event.
345
+
346
+ Parameters
347
+ ----------
348
+ context_event_guid : str
349
+ The unique identifier of the context event.
350
+ body : dict | UpdateElementRequestBody
351
+ The properties to update.
352
+
353
+ Returns
354
+ -------
355
+ None
356
+
357
+ Raises
358
+ ------
359
+ PyegeriaException
360
+ If there are issues in communications, message format, or Egeria errors.
361
+
362
+ Notes
363
+ -----
364
+ Sample JSON body:
365
+ ```json
366
+ {
367
+ "class" : "UpdateElementRequestBody",
368
+ "mergeUpdate": true,
369
+ "properties": {
370
+ "class" : "ContextEventProperties",
371
+ "displayName": "Updated Name"
372
+ }
373
+ }
374
+ ```
375
+ """
376
+ loop = asyncio.get_event_loop()
377
+ loop.run_until_complete(self._async_update_context_event(context_event_guid, body))
378
+
379
+ @dynamic_catch
380
+ async def _async_delete_context_event(
381
+ self, context_event_guid: str, body: dict | DeleteElementRequestBody
382
+ ) -> None:
383
+ """Delete a context event. Async version.
384
+
385
+ Parameters
386
+ ----------
387
+ context_event_guid : str
388
+ The unique identifier of the context event.
389
+ body : dict | DeleteElementRequestBody
390
+ The request body for the delete operation.
391
+
392
+ Returns
393
+ -------
394
+ None
395
+
396
+ Raises
397
+ ------
398
+ PyegeriaException
399
+ If there are issues in communications, message format, or Egeria errors.
400
+
401
+ Notes
402
+ -----
403
+ Sample JSON body:
404
+ ```json
405
+ {
406
+ "class" : "DeleteElementRequestBody",
407
+ "cascadedDelete" : false,
408
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
409
+ }
410
+ ```
411
+ """
412
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{context_event_guid}/delete"
413
+ await self._async_delete_element_body_request(url, body)
414
+
415
+ def delete_context_event(self, context_event_guid: str, body: dict | DeleteElementRequestBody) -> None:
416
+ """Delete a context event.
417
+
418
+ Parameters
419
+ ----------
420
+ context_event_guid : str
421
+ The unique identifier of the context event.
422
+ body : dict | DeleteElementRequestBody
423
+ The request body for the delete operation.
424
+
425
+ Returns
426
+ -------
427
+ None
428
+
429
+ Raises
430
+ ------
431
+ PyegeriaException
432
+ If there are issues in communications, message format, or Egeria errors.
433
+
434
+ Notes
435
+ -----
436
+ Sample JSON body:
437
+ ```json
438
+ {
439
+ "class" : "DeleteElementRequestBody",
440
+ "cascadedDelete" : false,
441
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
442
+ }
443
+ ```
444
+ """
445
+ loop = asyncio.get_event_loop()
446
+ loop.run_until_complete(self._async_delete_context_event(context_event_guid, body))
447
+
448
+ @dynamic_catch
449
+ async def _async_link_dependent_context_events(
450
+ self,
451
+ parent_context_event_guid: str,
452
+ child_context_event_guid: str,
453
+ body: dict | NewRelationshipRequestBody,
454
+ ) -> None:
455
+ """Link dependent context events. Async version.
456
+
457
+ Parameters
458
+ ----------
459
+ parent_context_event_guid : str
460
+ The unique identifier of the parent context event.
461
+ child_context_event_guid : str
462
+ The unique identifier of the child context event.
463
+ body : dict | NewRelationshipRequestBody
464
+ The properties for the relationship.
465
+
466
+ Returns
467
+ -------
468
+ None
469
+
470
+ Raises
471
+ ------
472
+ PyegeriaException
473
+ If there are issues in communications, message format, or Egeria errors.
474
+
475
+ Notes
476
+ -----
477
+ Sample JSON body:
478
+ ```json
479
+ {
480
+ "class" : "NewRelationshipRequestBody",
481
+ "properties": {
482
+ "class": "DependentContextEventProperties",
483
+ "label" : "Dependency",
484
+ "description" : "Child event depends on parent event"
485
+ }
486
+ }
487
+ ```
488
+ """
489
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{parent_context_event_guid}/dependent-context-events/{child_context_event_guid}/attach"
490
+ await self._async_create_related_elements_body_request(url, body)
491
+
492
+ def link_dependent_context_events(
493
+ self,
494
+ parent_context_event_guid: str,
495
+ child_context_event_guid: str,
496
+ body: dict | NewRelationshipRequestBody,
497
+ ) -> None:
498
+ """Link dependent context events.
499
+
500
+ Parameters
501
+ ----------
502
+ parent_context_event_guid : str
503
+ The unique identifier of the parent context event.
504
+ child_context_event_guid : str
505
+ The unique identifier of the child context event.
506
+ body : dict | NewRelationshipRequestBody
507
+ The properties for the relationship.
508
+
509
+ Returns
510
+ -------
511
+ None
512
+
513
+ Raises
514
+ ------
515
+ PyegeriaException
516
+ If there are issues in communications, message format, or Egeria errors.
517
+
518
+ Notes
519
+ -----
520
+ Sample JSON body:
521
+ ```json
522
+ {
523
+ "class" : "NewRelationshipRequestBody",
524
+ "properties": {
525
+ "class": "DependentContextEventProperties",
526
+ "label" : "Dependency",
527
+ "description" : "Child event depends on parent event"
528
+ }
529
+ }
530
+ ```
531
+ """
532
+ loop = asyncio.get_event_loop()
533
+ loop.run_until_complete(
534
+ self._async_link_dependent_context_events(
535
+ parent_context_event_guid, child_context_event_guid, body
536
+ )
537
+ )
538
+
539
+ @dynamic_catch
540
+ async def _async_detach_dependent_context_events(
541
+ self,
542
+ parent_context_event_guid: str,
543
+ child_context_event_guid: str,
544
+ body: dict | DeleteRelationshipRequestBody,
545
+ ) -> None:
546
+ """Detach dependent context events. Async version.
547
+
548
+ Parameters
549
+ ----------
550
+ parent_context_event_guid : str
551
+ The unique identifier of the parent context event.
552
+ child_context_event_guid : str
553
+ The unique identifier of the child context event.
554
+ body : dict | DeleteRelationshipRequestBody
555
+ The request body for the detach operation.
556
+
557
+ Returns
558
+ -------
559
+ None
560
+
561
+ Raises
562
+ ------
563
+ PyegeriaException
564
+ If there are issues in communications, message format, or Egeria errors.
565
+
566
+ Notes
567
+ -----
568
+ Sample JSON body:
569
+ ```json
570
+ {
571
+ "class" : "DeleteRelationshipRequestBody",
572
+ "cascadedDelete" : false,
573
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
574
+ }
575
+ ```
576
+ """
577
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{parent_context_event_guid}/dependent-context-events/{child_context_event_guid}/detach"
578
+ await self._async_delete_relationship_request(url, body)
579
+
580
+ def detach_dependent_context_events(
581
+ self,
582
+ parent_context_event_guid: str,
583
+ child_context_event_guid: str,
584
+ body: dict | DeleteRelationshipRequestBody,
585
+ ) -> None:
586
+ """Detach dependent context events.
587
+
588
+ Parameters
589
+ ----------
590
+ parent_context_event_guid : str
591
+ The unique identifier of the parent context event.
592
+ child_context_event_guid : str
593
+ The unique identifier of the child context event.
594
+ body : dict | DeleteRelationshipRequestBody
595
+ The request body for the detach operation.
596
+
597
+ Returns
598
+ -------
599
+ None
600
+
601
+ Raises
602
+ ------
603
+ PyegeriaException
604
+ If there are issues in communications, message format, or Egeria errors.
605
+
606
+ Notes
607
+ -----
608
+ Sample JSON body:
609
+ ```json
610
+ {
611
+ "class" : "DeleteRelationshipRequestBody",
612
+ "cascadedDelete" : false,
613
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
614
+ }
615
+ ```
616
+ """
617
+ loop = asyncio.get_event_loop()
618
+ loop.run_until_complete(
619
+ self._async_detach_dependent_context_events(
620
+ parent_context_event_guid, child_context_event_guid, body
621
+ )
622
+ )
623
+
624
+ @dynamic_catch
625
+ async def _async_link_related_context_events(
626
+ self,
627
+ context_event_one_guid: str,
628
+ context_event_two_guid: str,
629
+ body: dict | NewRelationshipRequestBody,
630
+ ) -> None:
631
+ """Link related context events. Async version.
632
+
633
+ Parameters
634
+ ----------
635
+ context_event_one_guid : str
636
+ The unique identifier of the first context event.
637
+ context_event_two_guid : str
638
+ The unique identifier of the second context event.
639
+ body : dict | NewRelationshipRequestBody
640
+ The properties for the relationship.
641
+
642
+ Returns
643
+ -------
644
+ None
645
+
646
+ Raises
647
+ ------
648
+ PyegeriaException
649
+ If there are issues in communications, message format, or Egeria errors.
650
+
651
+ Notes
652
+ -----
653
+ Sample JSON body:
654
+ ```json
655
+ {
656
+ "class" : "NewRelationshipRequestBody",
657
+ "properties": {
658
+ "class": "RelatedContextEventProperties",
659
+ "label" : "Related",
660
+ "description" : "These events are related"
661
+ }
662
+ }
663
+ ```
664
+ """
665
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{context_event_one_guid}/related-context-events/{context_event_two_guid}/attach"
666
+ await self._async_new_relationship_request(url, ['ContextEventEvidence'],body)
667
+
668
+ def link_related_context_events(
669
+ self,
670
+ context_event_one_guid: str,
671
+ context_event_two_guid: str,
672
+ body: dict | NewRelationshipRequestBody,
673
+ ) -> None:
674
+ """Link related context events.
675
+
676
+ Parameters
677
+ ----------
678
+ context_event_one_guid : str
679
+ The unique identifier of the first context event.
680
+ context_event_two_guid : str
681
+ The unique identifier of the second context event.
682
+ body : dict | NewRelationshipRequestBody
683
+ The properties for the relationship.
684
+
685
+ Returns
686
+ -------
687
+ None
688
+
689
+ Raises
690
+ ------
691
+ PyegeriaException
692
+ If there are issues in communications, message format, or Egeria errors.
693
+
694
+ Notes
695
+ -----
696
+ Sample JSON body:
697
+ ```json
698
+ {
699
+ "class" : "NewRelationshipRequestBody",
700
+ "properties": {
701
+ "class": "RelatedContextEventProperties",
702
+ "label" : "Related",
703
+ "description" : "These events are related"
704
+ }
705
+ }
706
+ ```
707
+ """
708
+ loop = asyncio.get_event_loop()
709
+ loop.run_until_complete(
710
+ self._async_link_related_context_events(context_event_one_guid, context_event_two_guid, body)
711
+ )
712
+
713
+ @dynamic_catch
714
+ async def _async_detach_related_context_events(
715
+ self,
716
+ context_event_one_guid: str,
717
+ context_event_two_guid: str,
718
+ body: dict | DeleteRelationshipRequestBody,
719
+ ) -> None:
720
+ """Detach related context events. Async version.
721
+
722
+ Parameters
723
+ ----------
724
+ context_event_one_guid : str
725
+ The unique identifier of the first context event.
726
+ context_event_two_guid : str
727
+ The unique identifier of the second context event.
728
+ body : dict | DeleteRelationshipRequestBody
729
+ The request body for the detach operation.
730
+
731
+ Returns
732
+ -------
733
+ None
734
+
735
+ Raises
736
+ ------
737
+ PyegeriaException
738
+ If there are issues in communications, message format, or Egeria errors.
739
+
740
+ Notes
741
+ -----
742
+ Sample JSON body:
743
+ ```json
744
+ {
745
+ "class" : "DeleteRelationshipRequestBody",
746
+ "cascadedDelete" : false,
747
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
748
+ }
749
+ ```
750
+ """
751
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{context_event_one_guid}/related-context-events/{context_event_two_guid}/detach"
752
+ await self._async_delete_relationship_request(url, body)
753
+
754
+ def detach_related_context_events(
755
+ self,
756
+ context_event_one_guid: str,
757
+ context_event_two_guid: str,
758
+ body: dict | DeleteRelationshipRequestBody,
759
+ ) -> None:
760
+ """Detach related context events.
761
+
762
+ Parameters
763
+ ----------
764
+ context_event_one_guid : str
765
+ The unique identifier of the first context event.
766
+ context_event_two_guid : str
767
+ The unique identifier of the second context event.
768
+ body : dict | DeleteRelationshipRequestBody
769
+ The request body for the detach operation.
770
+
771
+ Returns
772
+ -------
773
+ None
774
+
775
+ Raises
776
+ ------
777
+ PyegeriaException
778
+ If there are issues in communications, message format, or Egeria errors.
779
+
780
+ Notes
781
+ -----
782
+ Sample JSON body:
783
+ ```json
784
+ {
785
+ "class" : "DeleteRelationshipRequestBody",
786
+ "cascadedDelete" : false,
787
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
788
+ }
789
+ ```
790
+ """
791
+ loop = asyncio.get_event_loop()
792
+ loop.run_until_complete(
793
+ self._async_detach_related_context_events(context_event_one_guid, context_event_two_guid, body)
794
+ )
795
+
796
+ @dynamic_catch
797
+ async def _async_link_context_event_evidence(
798
+ self, context_event_guid: str, evidence_guid: str, body: dict | NewRelationshipRequestBody
799
+ ) -> None:
800
+ """Link context event evidence. Async version.
801
+
802
+ Parameters
803
+ ----------
804
+ context_event_guid : str
805
+ The unique identifier of the context event.
806
+ evidence_guid : str
807
+ The unique identifier of the element providing evidence.
808
+ body : dict | NewRelationshipRequestBody
809
+ The properties for the relationship.
810
+
811
+ Returns
812
+ -------
813
+ None
814
+
815
+ Raises
816
+ ------
817
+ PyegeriaException
818
+ If there are issues in communications, message format, or Egeria errors.
819
+
820
+ Notes
821
+ -----
822
+ Sample JSON body:
823
+ ```json
824
+ {
825
+ "class" : "NewRelationshipRequestBody",
826
+ "properties": {
827
+ "class": "ContextEventEvidenceProperties",
828
+ "label" : "Evidence",
829
+ "description" : "Evidence for context event"
830
+ }
831
+ }
832
+ ```
833
+ """
834
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{context_event_guid}/evidence/{evidence_guid}/attach"
835
+ await self._async_new_relationship_request(url, body)
836
+
837
+ def link_context_event_evidence(
838
+ self, context_event_guid: str, evidence_guid: str, body: dict | NewRelationshipRequestBody
839
+ ) -> None:
840
+ """Link context event evidence.
841
+
842
+ Parameters
843
+ ----------
844
+ context_event_guid : str
845
+ The unique identifier of the context event.
846
+ evidence_guid : str
847
+ The unique identifier of the element providing evidence.
848
+ body : dict | NewRelationshipRequestBody
849
+ The properties for the relationship.
850
+
851
+ Returns
852
+ -------
853
+ None
854
+
855
+ Raises
856
+ ------
857
+ PyegeriaException
858
+ If there are issues in communications, message format, or Egeria errors.
859
+
860
+ Notes
861
+ -----
862
+ Sample JSON body:
863
+ ```json
864
+ {
865
+ "class" : "NewRelationshipRequestBody",
866
+ "properties": {
867
+ "class": "ContextEventEvidenceProperties",
868
+ "label" : "Evidence",
869
+ "description" : "Evidence for context event"
870
+ }
871
+ }
872
+ ```
873
+ """
874
+ loop = asyncio.get_event_loop()
875
+ loop.run_until_complete(
876
+ self._async_link_context_event_evidence(context_event_guid, evidence_guid, body)
877
+ )
878
+
879
+ @dynamic_catch
880
+ async def _async_detach_context_event_evidence(
881
+ self, context_event_guid: str, evidence_guid: str, body: dict | DeleteRelationshipRequestBody
882
+ ) -> None:
883
+ """Detach context event evidence. Async version.
884
+
885
+ Parameters
886
+ ----------
887
+ context_event_guid : str
888
+ The unique identifier of the context event.
889
+ evidence_guid : str
890
+ The unique identifier of the element providing evidence.
891
+ body : dict | DeleteRelationshipRequestBody
892
+ The request body for the detach operation.
893
+
894
+ Returns
895
+ -------
896
+ None
897
+
898
+ Raises
899
+ ------
900
+ PyegeriaException
901
+ If there are issues in communications, message format, or Egeria errors.
902
+
903
+ Notes
904
+ -----
905
+ Sample JSON body:
906
+ ```json
907
+ {
908
+ "class" : "DeleteRelationshipRequestBody",
909
+ "cascadedDelete" : false,
910
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
911
+ }
912
+ ```
913
+ """
914
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{context_event_guid}/evidence/{evidence_guid}/detach"
915
+ await self._async_delete_relationship_request(url, body)
916
+
917
+ def detach_context_event_evidence(
918
+ self, context_event_guid: str, evidence_guid: str, body: dict | DeleteRelationshipRequestBody
919
+ ) -> None:
920
+ """Detach context event evidence.
921
+
922
+ Parameters
923
+ ----------
924
+ context_event_guid : str
925
+ The unique identifier of the context event.
926
+ evidence_guid : str
927
+ The unique identifier of the element providing evidence.
928
+ body : dict | DeleteRelationshipRequestBody
929
+ The request body for the detach operation.
930
+
931
+ Returns
932
+ -------
933
+ None
934
+
935
+ Raises
936
+ ------
937
+ PyegeriaException
938
+ If there are issues in communications, message format, or Egeria errors.
939
+
940
+ Notes
941
+ -----
942
+ Sample JSON body:
943
+ ```json
944
+ {
945
+ "class" : "DeleteRelationshipRequestBody",
946
+ "cascadedDelete" : false,
947
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
948
+ }
949
+ ```
950
+ """
951
+ loop = asyncio.get_event_loop()
952
+ loop.run_until_complete(
953
+ self._async_detach_context_event_evidence(context_event_guid, evidence_guid, body)
954
+ )
955
+
956
+ @dynamic_catch
957
+ async def _async_link_context_event_impact(
958
+ self, context_event_guid: str, impacted_element_guid: str, body: dict | NewRelationshipRequestBody
959
+ ) -> None:
960
+ """Link context event impact. Async version.
961
+
962
+ Parameters
963
+ ----------
964
+ context_event_guid : str
965
+ The unique identifier of the context event.
966
+ impacted_element_guid : str
967
+ The unique identifier of the impacted element.
968
+ body : dict | NewRelationshipRequestBody
969
+ The properties for the relationship.
970
+
971
+ Returns
972
+ -------
973
+ None
974
+
975
+ Raises
976
+ ------
977
+ PyegeriaException
978
+ If there are issues in communications, message format, or Egeria errors.
979
+
980
+ Notes
981
+ -----
982
+ Sample JSON body:
983
+ ```json
984
+ {
985
+ "class" : "NewRelationshipRequestBody",
986
+ "properties": {
987
+ "class": "ContextEventImpactProperties",
988
+ "label" : "Impact",
989
+ "description" : "Element impacted by context event"
990
+ }
991
+ }
992
+ ```
993
+ """
994
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{context_event_guid}/impacts/{impacted_element_guid}/attach"
995
+ await self._async_new_relationship_request(url, ['ContextEventImpact'],body)
996
+
997
+ def link_context_event_impact(
998
+ self, context_event_guid: str, impacted_element_guid: str, body: dict | NewRelationshipRequestBody
999
+ ) -> None:
1000
+ """Link context event impact.
1001
+
1002
+ Parameters
1003
+ ----------
1004
+ context_event_guid : str
1005
+ The unique identifier of the context event.
1006
+ impacted_element_guid : str
1007
+ The unique identifier of the impacted element.
1008
+ body : dict | NewRelationshipRequestBody
1009
+ The properties for the relationship.
1010
+
1011
+ Returns
1012
+ -------
1013
+ None
1014
+
1015
+ Raises
1016
+ ------
1017
+ PyegeriaException
1018
+ If there are issues in communications, message format, or Egeria errors.
1019
+
1020
+ Notes
1021
+ -----
1022
+ Sample JSON body:
1023
+ ```json
1024
+ {
1025
+ "class" : "NewRelationshipRequestBody",
1026
+ "properties": {
1027
+ "class": "ContextEventImpactProperties",
1028
+ "label" : "Impact",
1029
+ "description" : "Element impacted by context event"
1030
+ }
1031
+ }
1032
+ ```
1033
+ """
1034
+ loop = asyncio.get_event_loop()
1035
+ loop.run_until_complete(
1036
+ self._async_link_context_event_impact(context_event_guid, impacted_element_guid, body)
1037
+ )
1038
+
1039
+ @dynamic_catch
1040
+ async def _async_detach_context_event_impact(
1041
+ self, context_event_guid: str, impacted_element_guid: str, body: dict | DeleteRelationshipRequestBody
1042
+ ) -> None:
1043
+ """Detach context event impact. Async version.
1044
+
1045
+ Parameters
1046
+ ----------
1047
+ context_event_guid : str
1048
+ The unique identifier of the context event.
1049
+ impacted_element_guid : str
1050
+ The unique identifier of the impacted element.
1051
+ body : dict | DeleteRelationshipRequestBody
1052
+ The request body for the detach operation.
1053
+
1054
+ Returns
1055
+ -------
1056
+ None
1057
+
1058
+ Raises
1059
+ ------
1060
+ PyegeriaException
1061
+ If there are issues in communications, message format, or Egeria errors.
1062
+
1063
+ Notes
1064
+ -----
1065
+ Sample JSON body:
1066
+ ```json
1067
+ {
1068
+ "class" : "DeleteRelationshipRequestBody",
1069
+ "cascadedDelete" : false,
1070
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
1071
+ }
1072
+ ```
1073
+ """
1074
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{context_event_guid}/impacts/{impacted_element_guid}/detach"
1075
+ await self._async_delete_relationship_request(url, body)
1076
+
1077
+ def detach_context_event_impact(
1078
+ self, context_event_guid: str, impacted_element_guid: str, body: dict | DeleteRelationshipRequestBody
1079
+ ) -> None:
1080
+ """Detach context event impact.
1081
+
1082
+ Parameters
1083
+ ----------
1084
+ context_event_guid : str
1085
+ The unique identifier of the context event.
1086
+ impacted_element_guid : str
1087
+ The unique identifier of the impacted element.
1088
+ body : dict | DeleteRelationshipRequestBody
1089
+ The request body for the detach operation.
1090
+
1091
+ Returns
1092
+ -------
1093
+ None
1094
+
1095
+ Raises
1096
+ ------
1097
+ PyegeriaException
1098
+ If there are issues in communications, message format, or Egeria errors.
1099
+
1100
+ Notes
1101
+ -----
1102
+ Sample JSON body:
1103
+ ```json
1104
+ {
1105
+ "class" : "DeleteRelationshipRequestBody",
1106
+ "cascadedDelete" : false,
1107
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
1108
+ }
1109
+ ```
1110
+ """
1111
+ loop = asyncio.get_event_loop()
1112
+ loop.run_until_complete(
1113
+ self._async_detach_context_event_impact(context_event_guid, impacted_element_guid, body)
1114
+ )
1115
+
1116
+ @dynamic_catch
1117
+ async def _async_link_context_event_timeline_effect(
1118
+ self,
1119
+ timeline_affected_element_guid: str,
1120
+ context_event_guid: str,
1121
+ body: dict | NewRelationshipRequestBody,
1122
+ ) -> None:
1123
+ """Link context event timeline effect. Async version.
1124
+
1125
+ Parameters
1126
+ ----------
1127
+ timeline_affected_element_guid : str
1128
+ The unique identifier of the element affected by the timeline.
1129
+ context_event_guid : str
1130
+ The unique identifier of the context event.
1131
+ body : dict | NewRelationshipRequestBody
1132
+ The properties for the relationship.
1133
+
1134
+ Returns
1135
+ -------
1136
+ None
1137
+
1138
+ Raises
1139
+ ------
1140
+ PyegeriaException
1141
+ If there are issues in communications, message format, or Egeria errors.
1142
+
1143
+ Notes
1144
+ -----
1145
+ Sample JSON body:
1146
+ ```json
1147
+ {
1148
+ "class" : "NewRelationshipRequestBody",
1149
+ "properties": {
1150
+ "class": "ContextEventForTimelineEffectsProperties",
1151
+ "label" : "Timeline Effect",
1152
+ "description" : "Element data affected by context event"
1153
+ }
1154
+ }
1155
+ ```
1156
+ """
1157
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/elements/{timeline_affected_element_guid}/context-events-describing-timeline-effects/{context_event_guid}/attach"
1158
+ await self._async_new_relationship_request(url, ['ContextEventTimelineEffect'],body)
1159
+
1160
+ def link_context_event_timeline_effect(
1161
+ self,
1162
+ timeline_affected_element_guid: str,
1163
+ context_event_guid: str,
1164
+ body: dict | NewRelationshipRequestBody,
1165
+ ) -> None:
1166
+ """Link context event timeline effect.
1167
+
1168
+ Parameters
1169
+ ----------
1170
+ timeline_affected_element_guid : str
1171
+ The unique identifier of the element affected by the timeline.
1172
+ context_event_guid : str
1173
+ The unique identifier of the context event.
1174
+ body : dict | NewRelationshipRequestBody
1175
+ The properties for the relationship.
1176
+
1177
+ Returns
1178
+ -------
1179
+ None
1180
+
1181
+ Raises
1182
+ ------
1183
+ PyegeriaException
1184
+ If there are issues in communications, message format, or Egeria errors.
1185
+
1186
+ Notes
1187
+ -----
1188
+ Sample JSON body:
1189
+ ```json
1190
+ {
1191
+ "class" : "NewRelationshipRequestBody",
1192
+ "properties": {
1193
+ "class": "ContextEventForTimelineEffectsProperties",
1194
+ "label" : "Timeline Effect",
1195
+ "description" : "Element data affected by context event"
1196
+ }
1197
+ }
1198
+ ```
1199
+ """
1200
+ loop = asyncio.get_event_loop()
1201
+ loop.run_until_complete(
1202
+ self._async_link_context_event_timeline_effect(
1203
+ timeline_affected_element_guid, context_event_guid, body
1204
+ )
1205
+ )
1206
+
1207
+ @dynamic_catch
1208
+ async def _async_detach_context_event_timeline_effect(
1209
+ self,
1210
+ timeline_affected_element_guid: str,
1211
+ context_event_guid: str,
1212
+ body: dict | DeleteRelationshipRequestBody,
1213
+ ) -> None:
1214
+ """Detach context event timeline effect. Async version.
1215
+
1216
+ Parameters
1217
+ ----------
1218
+ timeline_affected_element_guid : str
1219
+ The unique identifier of the element affected by the timeline.
1220
+ context_event_guid : str
1221
+ The unique identifier of the context event.
1222
+ body : dict | DeleteRelationshipRequestBody
1223
+ The request body for the detach operation.
1224
+
1225
+ Returns
1226
+ -------
1227
+ None
1228
+
1229
+ Raises
1230
+ ------
1231
+ PyegeriaException
1232
+ If there are issues in communications, message format, or Egeria errors.
1233
+
1234
+ Notes
1235
+ -----
1236
+ Sample JSON body:
1237
+ ```json
1238
+ {
1239
+ "class" : "DeleteRelationshipRequestBody",
1240
+ "cascadedDelete" : false,
1241
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
1242
+ }
1243
+ ```
1244
+ """
1245
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/elements/{timeline_affected_element_guid}/context-events-describing-timeline-effect/{context_event_guid}/detach"
1246
+ await self._async_delete_relationship_request(url, body)
1247
+
1248
+ def detach_context_event_timeline_effect(
1249
+ self,
1250
+ timeline_affected_element_guid: str,
1251
+ context_event_guid: str,
1252
+ body: dict | DeleteRelationshipRequestBody,
1253
+ ) -> None:
1254
+ """Detach context event timeline effect.
1255
+
1256
+ Parameters
1257
+ ----------
1258
+ timeline_affected_element_guid : str
1259
+ The unique identifier of the element affected by the timeline.
1260
+ context_event_guid : str
1261
+ The unique identifier of the context event.
1262
+ body : dict | DeleteRelationshipRequestBody
1263
+ The request body for the detach operation.
1264
+
1265
+ Returns
1266
+ -------
1267
+ None
1268
+
1269
+ Raises
1270
+ ------
1271
+ PyegeriaException
1272
+ If there are issues in communications, message format, or Egeria errors.
1273
+
1274
+ Notes
1275
+ -----
1276
+ Sample JSON body:
1277
+ ```json
1278
+ {
1279
+ "class" : "DeleteRelationshipRequestBody",
1280
+ "cascadedDelete" : false,
1281
+ "deleteMethod" : "LOOK_FOR_LINEAGE"
1282
+ }
1283
+ ```
1284
+ """
1285
+ loop = asyncio.get_event_loop()
1286
+ loop.run_until_complete(
1287
+ self._async_detach_context_event_timeline_effect(
1288
+ timeline_affected_element_guid, context_event_guid, body
1289
+ )
1290
+ )
1291
+
1292
+ @dynamic_catch
1293
+ async def _async_get_context_events_by_name(
1294
+ self,
1295
+ filter_string: Optional[str] = None,
1296
+ classification_names: Optional[list[str]] = None,
1297
+ body: Optional[dict | FilterRequestBody] = None,
1298
+ start_from: int = 0,
1299
+ page_size: int = 0,
1300
+ output_format: str = "JSON",
1301
+ report_spec: str | dict = "ContextEvents",
1302
+ ) -> list | str:
1303
+ """Get context events by name. Async version.
1304
+
1305
+ Parameters
1306
+ ----------
1307
+ filter_string : str, optional
1308
+ The string to find in the properties.
1309
+ classification_names : list[str], optional
1310
+ The list of classification names to filter by.
1311
+ body : dict | FilterRequestBody, optional
1312
+ The request body for the search.
1313
+ start_from : int, optional
1314
+ The starting index for paged results.
1315
+ page_size : int, optional
1316
+ The maximum number of results to return.
1317
+ output_format : str, optional
1318
+ The desired output format.
1319
+ report_spec : str | dict, optional
1320
+ The desired output columns/fields to include.
1321
+
1322
+ Returns
1323
+ -------
1324
+ list | str
1325
+ The list of matching context events or a message if none found.
1326
+
1327
+ Raises
1328
+ ------
1329
+ PyegeriaException
1330
+ If there are issues in communications, message format, or Egeria errors.
1331
+
1332
+ Notes
1333
+ -----
1334
+ Sample JSON body:
1335
+ ```json
1336
+ {
1337
+ "class" : "FilterRequestBody",
1338
+ "filter" : "EventName",
1339
+ "startFrom": 0,
1340
+ "pageSize": 10
1341
+ }
1342
+ ```
1343
+ """
1344
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/by-name"
1345
+ return await self._async_get_name_request(
1346
+ url,
1347
+ _type="ContextEvent",
1348
+ _gen_output=self._generate_context_event_output,
1349
+ filter_string=filter_string,
1350
+ classification_names=classification_names,
1351
+ start_from=start_from,
1352
+ page_size=page_size,
1353
+ output_format=output_format,
1354
+ report_spec=report_spec,
1355
+ body=body,
1356
+ )
1357
+
1358
+ def get_context_events_by_name(
1359
+ self,
1360
+ filter_string: Optional[str] = None,
1361
+ classification_names: Optional[list[str]] = None,
1362
+ body: Optional[dict | FilterRequestBody] = None,
1363
+ start_from: int = 0,
1364
+ page_size: int = 0,
1365
+ output_format: str = "JSON",
1366
+ report_spec: str | dict = "ContextEvents",
1367
+ ) -> list | str:
1368
+ """Get context events by name.
1369
+
1370
+ Parameters
1371
+ ----------
1372
+ filter_string : str, optional
1373
+ The string to find in the properties.
1374
+ classification_names : list[str], optional
1375
+ The list of classification names to filter by.
1376
+ body : dict | FilterRequestBody, optional
1377
+ The request body for the search.
1378
+ start_from : int, optional
1379
+ The starting index for paged results.
1380
+ page_size : int, optional
1381
+ The maximum number of results to return.
1382
+ output_format : str, optional
1383
+ The desired output format.
1384
+ report_spec : str | dict, optional
1385
+ The desired output columns/fields to include.
1386
+
1387
+ Returns
1388
+ -------
1389
+ list | str
1390
+ The list of matching context events or a message if none found.
1391
+
1392
+ Raises
1393
+ ------
1394
+ PyegeriaException
1395
+ If there are issues in communications, message format, or Egeria errors.
1396
+
1397
+ Notes
1398
+ -----
1399
+ Sample JSON body:
1400
+ ```json
1401
+ {
1402
+ "class" : "FilterRequestBody",
1403
+ "filter" : "EventName",
1404
+ "startFrom": 0,
1405
+ "pageSize": 10
1406
+ }
1407
+ ```
1408
+ """
1409
+ loop = asyncio.get_event_loop()
1410
+ return loop.run_until_complete(
1411
+ self._async_get_context_events_by_name(
1412
+ filter_string,
1413
+ classification_names,
1414
+ body,
1415
+ start_from,
1416
+ page_size,
1417
+ output_format,
1418
+ report_spec,
1419
+ )
1420
+ )
1421
+
1422
+ @dynamic_catch
1423
+ async def _async_find_context_events(self, search_string: str = "*",
1424
+ starts_with: bool = True, ends_with: bool = False,
1425
+ ignore_case: bool = False,
1426
+ anchor_domain: Optional[str] = None,
1427
+ metadata_element_type: Optional[str] = None,
1428
+ metadata_element_subtypes: Optional[list[str]] = None,
1429
+ skip_relationships: Optional[list[str]] = None,
1430
+ include_only_relationships: Optional[list[str]] = None,
1431
+ skip_classified_elements: Optional[list[str]] = None,
1432
+ include_only_classified_elements: Optional[list[str]] = None,
1433
+ graph_query_depth: int = 3,
1434
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
1435
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
1436
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
1437
+ sequencing_property: Optional[str] = None,
1438
+ output_format: str = "JSON",
1439
+ report_spec: str | dict = "Referenceable",
1440
+ start_from: int = 0, page_size: int = 100,
1441
+ property_names: Optional[list[str]] = None,
1442
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
1443
+ """ Retrieve the list of context event metadata elements that contain the search string. Async Version.
1444
+
1445
+ Parameters
1446
+ ----------
1447
+ search_string: str
1448
+ Search string to match against - None or '*' indicate match against all context events.
1449
+ starts_with : bool, [default=True], optional
1450
+ Starts with the supplied string.
1451
+ ends_with : bool, [default=False], optional
1452
+ Ends with the supplied string
1453
+ ignore_case : bool, [default=False], optional
1454
+ Ignore case when searching
1455
+ anchor_domain: str, optional
1456
+ The anchor domain to search in.
1457
+ metadata_element_type: str, optional
1458
+ The type of metadata element to search for.
1459
+ metadata_element_subtypes: list[str], optional
1460
+ The subtypes of metadata element to search for.
1461
+ skip_relationships: list[str], optional
1462
+ The types of relationships to skip.
1463
+ include_only_relationships: list[str], optional
1464
+ The types of relationships to include.
1465
+ skip_classified_elements: list[str], optional
1466
+ The types of classified elements to skip.
1467
+ include_only_classified_elements: list[str], optional
1468
+ The types of classified elements to include.
1469
+ graph_query_depth: int, [default=3], optional
1470
+ The depth of the graph query.
1471
+ governance_zone_filter: list[str], optional
1472
+ The governance zones to search in.
1473
+ as_of_time: str, optional
1474
+ The time to search as of.
1475
+ effective_time: str, optional
1476
+ The effective time to search at.
1477
+ relationship_page_size: int, [default=0], optional
1478
+ The page size for relationships.
1479
+ limit_results_by_status: list[str], optional
1480
+ The statuses to limit results by.
1481
+ sequencing_order: str, optional
1482
+ The order to sequence results by.
1483
+ sequencing_property: str, optional
1484
+ The property to sequence results by.
1485
+ output_format: str, default = "JSON"
1486
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
1487
+ report_spec: str | dict , optional, default = "Referenceable"
1488
+ - The desired output columns/fields to include.
1489
+ start_from: int, [default=0], optional
1490
+ When multiple pages of results are available, the page number to start from.
1491
+ page_size: int, [default=100]
1492
+ The number of items to return in a single page.
1493
+ property_names: list[str], optional
1494
+ The names of properties to search for.
1495
+ body: dict | SearchStringRequestBody, optional, default = None
1496
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
1497
+
1498
+ Returns
1499
+ -------
1500
+ List | str
1501
+
1502
+ Output depends on the output format specified.
1503
+
1504
+ Raises
1505
+ -------
1506
+
1507
+ ValidationError
1508
+ If the client passes incorrect parameters on the request that don't conform to the data model.
1509
+ PyegeriaException
1510
+ Issues raised in communicating or server side processing.
1511
+ NotAuthorizedException
1512
+ The principle specified by the user_id does not have authorization for the requested action
1513
+
1514
+ """
1515
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/by-search-string"
1516
+ response = await self._async_find_request(url, _type="ContextEvent", _gen_output=self._generate_context_event_output,
1517
+ search_string=search_string, starts_with=starts_with,
1518
+ ends_with=ends_with, ignore_case=ignore_case,
1519
+ anchor_domain=anchor_domain,
1520
+ metadata_element_type=metadata_element_type,
1521
+ metadata_element_subtypes=metadata_element_subtypes,
1522
+ skip_relationships=skip_relationships,
1523
+ include_only_relationships=include_only_relationships,
1524
+ skip_classified_elements=skip_classified_elements,
1525
+ include_only_classified_elements=include_only_classified_elements,
1526
+ graph_query_depth=graph_query_depth,
1527
+ governance_zone_filter=governance_zone_filter,
1528
+ as_of_time=as_of_time, effective_time=effective_time,
1529
+ relationship_page_size=relationship_page_size,
1530
+ limit_results_by_status=limit_results_by_status,
1531
+ sequencing_order=sequencing_order,
1532
+ sequencing_property=sequencing_property,
1533
+ output_format=output_format, report_spec=report_spec,
1534
+ start_from=start_from, page_size=page_size,
1535
+ property_names=property_names, body=body)
1536
+
1537
+ return response
1538
+
1539
+ @dynamic_catch
1540
+ def find_context_events(self, search_string: str = "*",
1541
+ starts_with: bool = True, ends_with: bool = False,
1542
+ ignore_case: bool = False,
1543
+ anchor_domain: Optional[str] = None,
1544
+ metadata_element_type: Optional[str] = None,
1545
+ metadata_element_subtypes: Optional[list[str]] = None,
1546
+ skip_relationships: Optional[list[str]] = None,
1547
+ include_only_relationships: Optional[list[str]] = None,
1548
+ skip_classified_elements: Optional[list[str]] = None,
1549
+ include_only_classified_elements: Optional[list[str]] = None,
1550
+ graph_query_depth: int = 3,
1551
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
1552
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
1553
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
1554
+ sequencing_property: Optional[str] = None,
1555
+ output_format: str = "JSON",
1556
+ report_spec: str | dict = "Referenceable",
1557
+ start_from: int = 0, page_size: int = 100,
1558
+ property_names: Optional[list[str]] = None,
1559
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
1560
+ """ Retrieve the list of context event metadata elements that contain the search string.
1561
+
1562
+ Parameters
1563
+ ----------
1564
+ search_string: str
1565
+ Search string to match against - None or '*' indicate match against all context events.
1566
+ starts_with : bool, [default=True], optional
1567
+ Starts with the supplied string.
1568
+ ends_with : bool, [default=False], optional
1569
+ Ends with the supplied string
1570
+ ignore_case : bool, [default=False], optional
1571
+ Ignore case when searching
1572
+ anchor_domain: str, optional
1573
+ The anchor domain to search in.
1574
+ metadata_element_type: str, optional
1575
+ The type of metadata element to search for.
1576
+ metadata_element_subtypes: list[str], optional
1577
+ The subtypes of metadata element to search for.
1578
+ skip_relationships: list[str], optional
1579
+ The types of relationships to skip.
1580
+ include_only_relationships: list[str], optional
1581
+ The types of relationships to include.
1582
+ skip_classified_elements: list[str], optional
1583
+ The types of classified elements to skip.
1584
+ include_only_classified_elements: list[str], optional
1585
+ The types of classified elements to include.
1586
+ graph_query_depth: int, [default=3], optional
1587
+ The depth of the graph query.
1588
+ governance_zone_filter: list[str], optional
1589
+ The governance zones to search in.
1590
+ as_of_time: str, optional
1591
+ The time to search as of.
1592
+ effective_time: str, optional
1593
+ The effective time to search at.
1594
+ relationship_page_size: int, [default=0], optional
1595
+ The page size for relationships.
1596
+ limit_results_by_status: list[str], optional
1597
+ The statuses to limit results by.
1598
+ sequencing_order: str, optional
1599
+ The order to sequence results by.
1600
+ sequencing_property: str, optional
1601
+ The property to sequence results by.
1602
+ output_format: str, default = "JSON"
1603
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
1604
+ report_spec: str | dict , optional, default = "Referenceable"
1605
+ - The desired output columns/fields to include.
1606
+ start_from: int, [default=0], optional
1607
+ When multiple pages of results are available, the page number to start from.
1608
+ page_size: int, [default=100]
1609
+ The number of items to return in a single page.
1610
+ property_names: list[str], optional
1611
+ The names of properties to search for.
1612
+ body: dict | SearchStringRequestBody, optional, default = None
1613
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
1614
+
1615
+ Returns
1616
+ -------
1617
+ List | str
1618
+
1619
+ Output depends on the output format specified.
1620
+
1621
+ Raises
1622
+ ------
1623
+
1624
+ ValidationError
1625
+ If the client passes incorrect parameters on the request that don't conform to the data model.
1626
+ PyegeriaException
1627
+ Issues raised in communicating or server side processing.
1628
+ NotAuthorizedException
1629
+ The principle specified by the user_id does not have authorization for the requested action
1630
+
1631
+ """
1632
+ loop = asyncio.get_event_loop()
1633
+ return loop.run_until_complete(self._async_find_context_events(search_string=search_string,
1634
+ starts_with=starts_with,
1635
+ ends_with=ends_with,
1636
+ ignore_case=ignore_case,
1637
+ anchor_domain=anchor_domain,
1638
+ metadata_element_type=metadata_element_type,
1639
+ metadata_element_subtypes=metadata_element_subtypes,
1640
+ skip_relationships=skip_relationships,
1641
+ include_only_relationships=include_only_relationships,
1642
+ skip_classified_elements=skip_classified_elements,
1643
+ include_only_classified_elements=include_only_classified_elements,
1644
+ graph_query_depth=graph_query_depth,
1645
+ governance_zone_filter=governance_zone_filter,
1646
+ as_of_time=as_of_time,
1647
+ effective_time=effective_time,
1648
+ relationship_page_size=relationship_page_size,
1649
+ limit_results_by_status=limit_results_by_status,
1650
+ sequencing_order=sequencing_order,
1651
+ sequencing_property=sequencing_property,
1652
+ output_format=output_format,
1653
+ report_spec=report_spec,
1654
+ start_from=start_from,
1655
+ page_size=page_size,
1656
+ property_names=property_names,
1657
+ body=body))
1658
+
1659
+ @dynamic_catch
1660
+ async def _async_get_context_event_by_guid(
1661
+ self,
1662
+ context_event_guid: str,
1663
+ element_type: str = "ContextEvent",
1664
+ body: Optional[dict | GetRequestBody] = None,
1665
+ output_format: str = "JSON",
1666
+ report_spec: str | dict = "ContextEvents",
1667
+ ) -> dict | str:
1668
+ """Get context event by GUID. Async version.
1669
+
1670
+ Parameters
1671
+ ----------
1672
+ context_event_guid : str
1673
+ The unique identifier of the context event.
1674
+ element_type : str, optional
1675
+ The type of metadata element.
1676
+ body : dict | GetRequestBody, optional
1677
+ The request body for the retrieval.
1678
+ output_format : str, optional
1679
+ The desired output format.
1680
+ report_spec : str | dict, optional
1681
+ The desired output columns/fields to include.
1682
+
1683
+ Returns
1684
+ -------
1685
+ dict | str
1686
+ The properties of the context event or a message if not found.
1687
+
1688
+ Raises
1689
+ ------
1690
+ PyegeriaException
1691
+ If there are issues in communications, message format, or Egeria errors.
1692
+
1693
+ Notes
1694
+ -----
1695
+ Sample JSON body:
1696
+ ```json
1697
+ {
1698
+ "class" : "GetRequestBody",
1699
+ "forLineage" : false
1700
+ }
1701
+ ```
1702
+ """
1703
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/time-keeper/context-events/{context_event_guid}/retrieve"
1704
+ return await self._async_get_guid_request(
1705
+ url,
1706
+ _type=element_type,
1707
+ _gen_output=self._generate_context_event_output,
1708
+ output_format=output_format,
1709
+ report_spec=report_spec,
1710
+ body=body,
1711
+ )
1712
+
1713
+ def get_context_event_by_guid(
1714
+ self,
1715
+ context_event_guid: str,
1716
+ element_type: str = "ContextEvent",
1717
+ body: Optional[dict | GetRequestBody] = None,
1718
+ output_format: str = "JSON",
1719
+ report_spec: str | dict = "ContextEvents",
1720
+ ) -> dict | str:
1721
+ """Get context event by GUID.
1722
+
1723
+ Parameters
1724
+ ----------
1725
+ context_event_guid : str
1726
+ The unique identifier of the context event.
1727
+ element_type : str, optional
1728
+ The type of metadata element.
1729
+ body : dict | GetRequestBody, optional
1730
+ The request body for the retrieval.
1731
+ output_format : str, optional
1732
+ The desired output format.
1733
+ report_spec : str | dict, optional
1734
+ The desired output columns/fields to include.
1735
+
1736
+ Returns
1737
+ -------
1738
+ dict | str
1739
+ The properties of the context event or a message if not found.
1740
+
1741
+ Raises
1742
+ ------
1743
+ PyegeriaException
1744
+ If there are issues in communications, message format, or Egeria errors.
1745
+
1746
+ Notes
1747
+ -----
1748
+ Sample JSON body:
1749
+ ```json
1750
+ {
1751
+ "class" : "GetRequestBody",
1752
+ "forLineage" : false
1753
+ }
1754
+ ```
1755
+ """
1756
+ loop = asyncio.get_event_loop()
1757
+ return loop.run_until_complete(
1758
+ self._async_get_context_event_by_guid(
1759
+ context_event_guid, element_type, body, output_format, report_spec
1760
+ )
1761
+ )