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,668 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ The Metadata Expert OMVS provides APIs for supporting the search, query and retrieval of open metadata.
6
+ It is an advanced API for users that understand the Open Metadata Types.
7
+
8
+ """
9
+
10
+ import asyncio
11
+ from loguru import logger
12
+
13
+ from pyegeria.models import (NewOpenMetadataElementRequestBody, TemplateRequestBody,
14
+ UpdatePropertiesRequestBody, MetadataSourceRequestBody,
15
+ UpdateEffectivityDatesRequestBody, OpenMetadataDeleteRequestBody,
16
+ ArchiveRequestBody, NewClassificationRequestBody,
17
+ NewRelatedElementsRequestBody)
18
+ from pyegeria.core.utils import dynamic_catch
19
+ from pyegeria.core._server_client import ServerClient
20
+ from typing import Any, Optional
21
+
22
+ class MetadataExpert(ServerClient):
23
+ """
24
+ Metadata Expert OMVS client.
25
+
26
+ Attributes:
27
+ server_name: str
28
+ The name of the View Server to connect to.
29
+ platform_url : str
30
+ URL of the server platform to connect to
31
+ user_id : str
32
+ The identity of the user calling the method
33
+ user_pwd: str
34
+ The password associated with the user_id. Defaults to None
35
+ token: str
36
+ An optional bearer token
37
+ """
38
+
39
+ def __init__(self, view_server: str, platform_url: str, user_id: str, user_pwd: Optional[str] = None, token: str = None):
40
+ self.view_server = view_server
41
+ self.platform_url = platform_url
42
+ self.user_id = user_id
43
+ self.user_pwd = user_pwd
44
+ ServerClient.__init__(self, view_server, platform_url, user_id, user_pwd, token)
45
+ logger.debug(f"{self.__class__.__name__} initialized")
46
+ self.command_root: str = (
47
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/metadata-expert")
48
+
49
+ @dynamic_catch
50
+ async def _async_create_metadata_element(self, body: Optional[dict | NewOpenMetadataElementRequestBody] = None) -> str:
51
+ """
52
+ Create a new metadata element in the metadata store. Async version.
53
+ The type name comes from the open metadata types.
54
+ The selected type also controls the names and types of the properties that are allowed.
55
+ This version of the method allows access to advanced features such as multiple states and
56
+ effectivity dates.
57
+
58
+ Parameters
59
+ ----------
60
+ body : dict | NewOpenMetadataElementRequestBody, optional
61
+ The details of the metadata element to create.
62
+
63
+ Returns
64
+ -------
65
+ str
66
+ The unique identifier (GUID) of the newly created metadata element.
67
+
68
+ Notes
69
+ -----
70
+ Sample JSON body:
71
+ {
72
+ "class" : "NewOpenMetadataElementRequestBody",
73
+ "externalSourceGUID" : "",
74
+ "externalSourceName" : "",
75
+ "typeName" : "",
76
+ "initialClassifications" : {},
77
+ "anchorGUID" : "",
78
+ "isOwnAnchor" : false,
79
+ "effectiveFrom" : "2024-01-01T00:00:00.000+00:00",
80
+ "effectiveTo": "2024-12-31T23:59:59.000+00:00",
81
+ "properties" : {},
82
+ "parentGUID" : "",
83
+ "parentRelationshipTypeName" : "",
84
+ "parentRelationshipProperties" : {},
85
+ "parentAtEnd1" : true,
86
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
87
+ }
88
+ """
89
+ url = f"{self.command_root}/metadata-elements"
90
+ return await self._async_create_open_metadata_element_body_request(url, body)
91
+
92
+ @dynamic_catch
93
+ def create_metadata_element(self, body: Optional[dict | NewOpenMetadataElementRequestBody] = None) -> str:
94
+ """
95
+ Create a new metadata element in the metadata store.
96
+ """
97
+ return asyncio.run(self._async_create_metadata_element(body))
98
+
99
+ @dynamic_catch
100
+ async def _async_create_metadata_element_from_template(self, body: Optional[dict | TemplateRequestBody] = None) -> str:
101
+ """
102
+ Create a new metadata element in the metadata store using a template. Async version.
103
+
104
+ Parameters
105
+ ----------
106
+ body : dict | TemplateRequestBody, optional
107
+ The details for creating the element from a template.
108
+
109
+ Returns
110
+ -------
111
+ str
112
+ The unique identifier (GUID) of the newly created metadata element.
113
+
114
+ Notes
115
+ -----
116
+ Sample JSON body:
117
+ {
118
+ "class" : "TemplateRequestBody",
119
+ "externalSourceGUID" : "",
120
+ "externalSourceName" : "",
121
+ "typeName" : "",
122
+ "templateGUID" : "",
123
+ "anchorGUID" : "",
124
+ "isOwnAnchor" : false,
125
+ "effectiveFrom" : "2024-01-01T00:00:00.000+00:00",
126
+ "effectiveTo": "2024-12-31T23:59:59.000+00:00",
127
+ "replacementProperties" : {
128
+ "class": "ElementProperties",
129
+ "propertyValueMap" : {
130
+ "propertyName" : {
131
+ "class": "PrimitiveTypePropertyValue",
132
+ "typeName": "string",
133
+ "primitiveValue" : "value of property"
134
+ }
135
+ }
136
+ },
137
+ "placeholderPropertyValues" : {
138
+ "placeholderName1" : "placeholderValue1",
139
+ "placeholderName2" : "placeholderValue2"
140
+ },
141
+ "parentGUID" : "",
142
+ "parentRelationshipTypeName" : "",
143
+ "parentRelationshipProperties" : {},
144
+ "parentAtEnd1" : true,
145
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
146
+ }
147
+ """
148
+ url = f"{self.command_root}/metadata-elements/from-template"
149
+ return await self._async_create_element_from_template(url, body)
150
+
151
+ @dynamic_catch
152
+ def create_metadata_element_from_template(self, body: Optional[dict | TemplateRequestBody] = None) -> str:
153
+ """
154
+ Create a new metadata element in the metadata store using a template.
155
+ """
156
+ return asyncio.run(self._async_create_metadata_element_from_template(body))
157
+
158
+ @dynamic_catch
159
+ async def _async_update_metadata_element_properties(self, metadata_element_guid: str, body: Optional[dict | UpdatePropertiesRequestBody] = None) -> None:
160
+ """
161
+ Update the properties of a specific metadata element. Async version.
162
+
163
+ Parameters
164
+ ----------
165
+ metadata_element_guid : str
166
+ Unique identifier of the metadata element to update.
167
+ body : dict | UpdatePropertiesRequestBody, optional
168
+ The updated properties.
169
+
170
+ Notes
171
+ -----
172
+ Sample JSON body:
173
+ {
174
+ "class" : "UpdatePropertiesRequestBody",
175
+ "externalSourceGUID" : "",
176
+ "externalSourceName" : "",
177
+ "forLineage" : false,
178
+ "forDuplicateProcessing" : false,
179
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00",
180
+ "properties" : {
181
+ "class": "ElementProperties",
182
+ "propertyValueMap" : {
183
+ "description" : {
184
+ "class": "PrimitiveTypePropertyValue",
185
+ "typeName": "string",
186
+ "primitiveValue" : "New description"
187
+ }
188
+ }
189
+ },
190
+ "replaceProperties" : false
191
+ }
192
+ """
193
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/update-properties"
194
+ await self._async_update_properties_body_request(url, body)
195
+
196
+ @dynamic_catch
197
+ def update_metadata_element_properties(self, metadata_element_guid: str, body: Optional[dict | UpdatePropertiesRequestBody] = None) -> None:
198
+ """
199
+ Update the properties of a specific metadata element.
200
+ """
201
+ return asyncio.run(self._async_update_metadata_element_properties(metadata_element_guid, body))
202
+
203
+ @dynamic_catch
204
+ async def _async_publish_metadata_element(self, metadata_element_guid: str, body: Optional[dict | MetadataSourceRequestBody] = None) -> None:
205
+ """
206
+ Update the zone membership to increase its visibility. Async version.
207
+
208
+ Parameters
209
+ ----------
210
+ metadata_element_guid : str
211
+ Unique identifier of the metadata element to publish.
212
+ body : dict | MetadataSourceRequestBody, optional
213
+ Publication details.
214
+
215
+ Notes
216
+ -----
217
+ Sample JSON body:
218
+ {
219
+ "class" : "MetadataSourceRequestBody",
220
+ "externalSourceGUID" : "",
221
+ "externalSourceName" : "",
222
+ "forLineage" : false,
223
+ "forDuplicateProcessing" : false,
224
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
225
+ }
226
+ """
227
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/publish"
228
+ await self._async_metadata_source_body_request(url, body)
229
+
230
+ @dynamic_catch
231
+ def publish_metadata_element(self, metadata_element_guid: str, body: Optional[dict | MetadataSourceRequestBody] = None) -> None:
232
+ """
233
+ Update the zone membership to increase its visibility.
234
+ """
235
+ return asyncio.run(self._async_publish_metadata_element(metadata_element_guid, body))
236
+
237
+ @dynamic_catch
238
+ async def _async_withdraw_metadata_element(self, metadata_element_guid: str, body: Optional[dict | MetadataSourceRequestBody] = None) -> None:
239
+ """
240
+ Update the zone membership to decrease its visibility. Async version.
241
+
242
+ Parameters
243
+ ----------
244
+ metadata_element_guid : str
245
+ Unique identifier of the metadata element to withdraw.
246
+ body : dict | MetadataSourceRequestBody, optional
247
+ Withdrawal details.
248
+
249
+ Notes
250
+ -----
251
+ Sample JSON body:
252
+ {
253
+ "class" : "MetadataSourceRequestBody",
254
+ "externalSourceGUID" : "",
255
+ "externalSourceName" : "",
256
+ "forLineage" : false,
257
+ "forDuplicateProcessing" : false,
258
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
259
+ }
260
+ """
261
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/withdraw"
262
+ await self._async_metadata_source_body_request(url, body)
263
+
264
+ @dynamic_catch
265
+ def withdraw_metadata_element(self, metadata_element_guid: str, body: Optional[dict | MetadataSourceRequestBody] = None) -> None:
266
+ """
267
+ Update the zone membership to decrease its visibility.
268
+ """
269
+ return asyncio.run(self._async_withdraw_metadata_element(metadata_element_guid, body))
270
+
271
+ @dynamic_catch
272
+ async def _async_update_metadata_element_effectivity(self, metadata_element_guid: str, body: Optional[dict | UpdateEffectivityDatesRequestBody] = None) -> None:
273
+ """
274
+ Update the effectivity dates for a specific metadata element. Async version.
275
+
276
+ Parameters
277
+ ----------
278
+ metadata_element_guid : str
279
+ Unique identifier of the metadata element.
280
+ body : dict | UpdateEffectivityDatesRequestBody, optional
281
+ The new effectivity dates.
282
+
283
+ Notes
284
+ -----
285
+ Sample JSON body:
286
+ {
287
+ "class" : "UpdateEffectivityDatesRequestBody",
288
+ "externalSourceGUID" : "",
289
+ "externalSourceName" : "",
290
+ "effectiveFrom" : "2024-01-01T00:00:00.000+00:00",
291
+ "effectiveTo": "2024-12-31T23:59:59.000+00:00",
292
+ "forLineage" : false,
293
+ "forDuplicateProcessing" : false,
294
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
295
+ }
296
+ """
297
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/update-effectivity"
298
+ await self._async_update_effectivity_dates_body_request(url, body)
299
+
300
+ @dynamic_catch
301
+ def update_metadata_element_effectivity(self, metadata_element_guid: str, body: Optional[dict | UpdateEffectivityDatesRequestBody] = None) -> None:
302
+ """
303
+ Update the effectivity dates for a specific metadata element.
304
+ """
305
+ return asyncio.run(self._async_update_metadata_element_effectivity(metadata_element_guid, body))
306
+
307
+ @dynamic_catch
308
+ async def _async_delete_metadata_element(self, metadata_element_guid: str, body: Optional[dict | OpenMetadataDeleteRequestBody] = None) -> None:
309
+ """
310
+ Delete a specific metadata element. Async version.
311
+
312
+ Parameters
313
+ ----------
314
+ metadata_element_guid : str
315
+ Unique identifier of the metadata element to delete.
316
+ body : dict | OpenMetadataDeleteRequestBody, optional
317
+ Deletion details.
318
+
319
+ Notes
320
+ -----
321
+ Sample JSON body:
322
+ {
323
+ "class" : "OpenMetadataDeleteRequestBody",
324
+ "externalSourceGUID" : "",
325
+ "externalSourceName" : "",
326
+ "forLineage" : false,
327
+ "forDuplicateProcessing" : false,
328
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
329
+ }
330
+ """
331
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/delete"
332
+ await self._async_open_metadata_delete_body_request(url, body)
333
+
334
+ @dynamic_catch
335
+ def delete_metadata_element(self, metadata_element_guid: str, body: Optional[dict | OpenMetadataDeleteRequestBody] = None) -> None:
336
+ """
337
+ Delete a specific metadata element.
338
+ """
339
+ return asyncio.run(self._async_delete_metadata_element(metadata_element_guid, body))
340
+
341
+ @dynamic_catch
342
+ async def _async_archive_metadata_element(self, metadata_element_guid: str, body: Optional[dict | ArchiveRequestBody] = None) -> None:
343
+ """
344
+ Archive a specific metadata element. Async version.
345
+
346
+ Parameters
347
+ ----------
348
+ metadata_element_guid : str
349
+ Unique identifier of the metadata element to archive.
350
+ body : dict | ArchiveRequestBody, optional
351
+ Archiving details.
352
+
353
+ Notes
354
+ -----
355
+ Sample JSON body:
356
+ {
357
+ "class" : "ArchiveRequestBody",
358
+ "externalSourceGUID" : "",
359
+ "externalSourceName" : "",
360
+ "archiveProperties" : {
361
+ "archiveDate" : "2024-01-01T00:00:00.000+00:00",
362
+ "archiveProcess" : "",
363
+ "archiveProperties": {
364
+ "propertyName1" : "propertyValue1",
365
+ "propertyName2" : "propertyValue2"
366
+ }
367
+ },
368
+ "forLineage" : false,
369
+ "forDuplicateProcessing" : false,
370
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
371
+ }
372
+ """
373
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/archive"
374
+ await self._async_archive_body_request(url, body)
375
+
376
+ @dynamic_catch
377
+ def archive_metadata_element(self, metadata_element_guid: str, body: Optional[dict | ArchiveRequestBody] = None) -> None:
378
+ """
379
+ Archive a specific metadata element.
380
+ """
381
+ return asyncio.run(self._async_archive_metadata_element(metadata_element_guid, body))
382
+
383
+ @dynamic_catch
384
+ async def _async_classify_metadata_element(self, metadata_element_guid: str, classification_name: str, body: Optional[dict | NewClassificationRequestBody] = None) -> None:
385
+ """
386
+ Add a new classification to the metadata element. Async version.
387
+
388
+ Parameters
389
+ ----------
390
+ metadata_element_guid : str
391
+ Unique identifier of the metadata element.
392
+ classification_name : str
393
+ Name of the classification to add.
394
+ body : dict | NewClassificationRequestBody, optional
395
+ Classification details.
396
+
397
+ Notes
398
+ -----
399
+ Sample JSON body:
400
+ {
401
+ "class" : "NewClassificationRequestBody",
402
+ "externalSourceGUID" : "",
403
+ "externalSourceName" : "",
404
+ "forLineage" : false,
405
+ "forDuplicateProcessing" : false,
406
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
407
+ }
408
+ """
409
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/classifications/{classification_name}"
410
+ await self._async_new_classification_request(url, body=body)
411
+
412
+ @dynamic_catch
413
+ def classify_metadata_element(self, metadata_element_guid: str, classification_name: str, body: Optional[dict | NewClassificationRequestBody] = None) -> None:
414
+ """
415
+ Add a new classification to the metadata element.
416
+ """
417
+ return asyncio.run(self._async_classify_metadata_element(metadata_element_guid, classification_name, body))
418
+
419
+ @dynamic_catch
420
+ async def _async_reclassify_metadata_element(self, metadata_element_guid: str, classification_name: str, body: Optional[dict | UpdatePropertiesRequestBody] = None) -> None:
421
+ """
422
+ Update the properties of a classification that is currently attached to a specific metadata element. Async version.
423
+
424
+ Parameters
425
+ ----------
426
+ metadata_element_guid : str
427
+ Unique identifier of the metadata element.
428
+ classification_name : str
429
+ Name of the classification to update.
430
+ body : dict | UpdatePropertiesRequestBody, optional
431
+ Updated classification properties.
432
+
433
+ Notes
434
+ -----
435
+ Sample JSON body:
436
+ {
437
+ "class" : "UpdatePropertiesRequestBody",
438
+ "externalSourceGUID" : "",
439
+ "externalSourceName" : "",
440
+ "forLineage" : false,
441
+ "forDuplicateProcessing" : false,
442
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
443
+ }
444
+ """
445
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/classifications/{classification_name}/update-properties"
446
+ await self._async_update_properties_body_request(url, body)
447
+
448
+ @dynamic_catch
449
+ def reclassify_metadata_element(self, metadata_element_guid: str, classification_name: str, body: Optional[dict | UpdatePropertiesRequestBody] = None) -> None:
450
+ """
451
+ Update the properties of a classification that is currently attached to a specific metadata element.
452
+ """
453
+ return asyncio.run(self._async_reclassify_metadata_element(metadata_element_guid, classification_name, body))
454
+
455
+ @dynamic_catch
456
+ async def _async_update_classification_effectivity(self, metadata_element_guid: str, classification_name: str, body: Optional[dict | UpdateEffectivityDatesRequestBody] = None) -> None:
457
+ """
458
+ Update the effectivity dates of a specific classification attached to a metadata element. Async version.
459
+
460
+ Parameters
461
+ ----------
462
+ metadata_element_guid : str
463
+ Unique identifier of the metadata element.
464
+ classification_name : str
465
+ Name of the classification.
466
+ body : dict | UpdateEffectivityDatesRequestBody, optional
467
+ New effectivity dates.
468
+
469
+ Notes
470
+ -----
471
+ Sample JSON body:
472
+ {
473
+ "class" : "UpdateEffectivityDatesRequestBody",
474
+ "externalSourceGUID" : "",
475
+ "externalSourceName" : "",
476
+ "effectiveFrom" : "2024-01-01T00:00:00.000+00:00",
477
+ "effectiveTo": "2024-12-31T23:59:59.000+00:00",
478
+ "forLineage" : false,
479
+ "forDuplicateProcessing" : false,
480
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
481
+ }
482
+ """
483
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/classifications/{classification_name}/update-effectivity"
484
+ await self._async_update_effectivity_dates_body_request(url, body)
485
+
486
+ @dynamic_catch
487
+ def update_classification_effectivity(self, metadata_element_guid: str, classification_name: str, body: Optional[dict | UpdateEffectivityDatesRequestBody] = None) -> None:
488
+ """
489
+ Update the effectivity dates of a specific classification attached to a metadata element.
490
+ """
491
+ return asyncio.run(self._async_update_classification_effectivity(metadata_element_guid, classification_name, body))
492
+
493
+ @dynamic_catch
494
+ async def _async_declassify_metadata_element(self, metadata_element_guid: str, classification_name: str, body: Optional[dict | MetadataSourceRequestBody] = None) -> None:
495
+ """
496
+ Remove the named classification from a specific metadata element. Async version.
497
+
498
+ Parameters
499
+ ----------
500
+ metadata_element_guid : str
501
+ Unique identifier of the metadata element.
502
+ classification_name : str
503
+ Name of the classification to remove.
504
+ body : dict | MetadataSourceRequestBody, optional
505
+ Declassification details.
506
+
507
+ Notes
508
+ -----
509
+ Sample JSON body:
510
+ {
511
+ "class" : "MetadataSourceRequestBody",
512
+ "externalSourceGUID" : "",
513
+ "externalSourceName" : "",
514
+ "forLineage" : false,
515
+ "forDuplicateProcessing" : false,
516
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
517
+ }
518
+ """
519
+ url = f"{self.command_root}/metadata-elements/{metadata_element_guid}/classifications/{classification_name}/delete"
520
+ await self._async_metadata_source_body_request(url, body)
521
+
522
+ @dynamic_catch
523
+ def declassify_metadata_element(self, metadata_element_guid: str, classification_name: str, body: Optional[dict | MetadataSourceRequestBody] = None) -> None:
524
+ """
525
+ Remove the named classification from a specific metadata element.
526
+ """
527
+ return asyncio.run(self._async_declassify_metadata_element(metadata_element_guid, classification_name, body))
528
+
529
+ @dynamic_catch
530
+ async def _async_create_related_elements(self, body: Optional[dict | NewRelatedElementsRequestBody] = None) -> str:
531
+ """
532
+ Create a relationship between two metadata elements. Async version.
533
+
534
+ Parameters
535
+ ----------
536
+ body : dict | NewRelatedElementsRequestBody, optional
537
+ The details of the relationship to create.
538
+
539
+ Returns
540
+ -------
541
+ str
542
+ The unique identifier (GUID) of the newly created relationship.
543
+
544
+ Notes
545
+ -----
546
+ Sample JSON body:
547
+ {
548
+ "class" : "NewRelatedElementsRequestBody",
549
+ "externalSourceGUID" : "",
550
+ "externalSourceName" : "",
551
+ "forLineage" : false,
552
+ "forDuplicateProcessing" : false,
553
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
554
+ }
555
+ """
556
+ url = f"{self.command_root}/related-elements"
557
+ return await self._async_create_related_elements_body_request(url, body)
558
+
559
+ @dynamic_catch
560
+ def create_related_elements(self, body: Optional[dict | NewRelatedElementsRequestBody] = None) -> str:
561
+ """
562
+ Create a relationship between two metadata elements.
563
+ """
564
+ return asyncio.run(self._async_create_related_elements(body))
565
+
566
+ @dynamic_catch
567
+ async def _async_update_related_elements_properties(self, relationship_guid: str, body: Optional[dict | UpdatePropertiesRequestBody] = None) -> None:
568
+ """
569
+ Update the properties associated with a relationship. Async version.
570
+
571
+ Parameters
572
+ ----------
573
+ relationship_guid : str
574
+ Unique identifier of the relationship.
575
+ body : dict | UpdatePropertiesRequestBody, optional
576
+ The updated properties.
577
+
578
+ Notes
579
+ -----
580
+ Sample JSON body:
581
+ {
582
+ "class" : "UpdatePropertiesRequestBody",
583
+ "externalSourceGUID" : "",
584
+ "externalSourceName" : "",
585
+ "forLineage" : false,
586
+ "forDuplicateProcessing" : false,
587
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
588
+ }
589
+ """
590
+ url = f"{self.command_root}/related-elements/{relationship_guid}/update-properties"
591
+ await self._async_update_properties_body_request(url, body)
592
+
593
+ @dynamic_catch
594
+ def update_related_elements_properties(self, relationship_guid: str, body: Optional[dict | UpdatePropertiesRequestBody] = None) -> None:
595
+ """
596
+ Update the properties associated with a relationship.
597
+ """
598
+ return asyncio.run(self._async_update_related_elements_properties(relationship_guid, body))
599
+
600
+ @dynamic_catch
601
+ async def _async_update_related_elements_effectivity(self, relationship_guid: str, body: Optional[dict | UpdateEffectivityDatesRequestBody] = None) -> None:
602
+ """
603
+ Update the effectivity dates of a specific relationship between metadata elements. Async version.
604
+
605
+ Parameters
606
+ ----------
607
+ relationship_guid : str
608
+ Unique identifier of the relationship.
609
+ body : dict | UpdateEffectivityDatesRequestBody, optional
610
+ The new effectivity dates.
611
+
612
+ Notes
613
+ -----
614
+ Sample JSON body:
615
+ {
616
+ "class" : "UpdateEffectivityDatesRequestBody",
617
+ "externalSourceGUID" : "",
618
+ "externalSourceName" : "",
619
+ "effectiveFrom" : "2024-01-01T00:00:00.000+00:00",
620
+ "effectiveTo": "2024-12-31T23:59:59.000+00:00",
621
+ "forLineage" : false,
622
+ "forDuplicateProcessing" : false,
623
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
624
+ }
625
+ """
626
+ url = f"{self.command_root}/related-elements/{relationship_guid}/update-effectivity"
627
+ await self._async_update_effectivity_dates_body_request(url, body)
628
+
629
+ @dynamic_catch
630
+ def update_related_elements_effectivity(self, relationship_guid: str, body: Optional[dict | UpdateEffectivityDatesRequestBody] = None) -> None:
631
+ """
632
+ Update the effectivity dates of a specific relationship between metadata elements.
633
+ """
634
+ return asyncio.run(self._async_update_related_elements_effectivity(relationship_guid, body))
635
+
636
+ @dynamic_catch
637
+ async def _async_delete_related_elements(self, relationship_guid: str, body: Optional[dict | OpenMetadataDeleteRequestBody] = None) -> None:
638
+ """
639
+ Delete a relationship between two metadata elements. Async version.
640
+
641
+ Parameters
642
+ ----------
643
+ relationship_guid : str
644
+ Unique identifier of the relationship to delete.
645
+ body : dict | OpenMetadataDeleteRequestBody, optional
646
+ Deletion details.
647
+
648
+ Notes
649
+ -----
650
+ Sample JSON body:
651
+ {
652
+ "class" : "OpenMetadataDeleteRequestBody",
653
+ "externalSourceGUID" : "",
654
+ "externalSourceName" : "",
655
+ "forLineage" : false,
656
+ "forDuplicateProcessing" : false,
657
+ "effectiveTime" : "2024-01-01T00:00:00.000+00:00"
658
+ }
659
+ """
660
+ url = f"{self.command_root}/related-elements/{relationship_guid}/delete"
661
+ await self._async_open_metadata_delete_body_request(url, body)
662
+
663
+ @dynamic_catch
664
+ def delete_related_elements(self, relationship_guid: str, body: Optional[dict | OpenMetadataDeleteRequestBody] = None) -> None:
665
+ """
666
+ Delete a relationship between two metadata elements.
667
+ """
668
+ return asyncio.run(self._async_delete_related_elements(relationship_guid, body))