pyegeria 5.3.9.9.3__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 (272) hide show
  1. commands/__init__.py +24 -0
  2. commands/cat/Dr-Egeria_md-orig.py +2 -2
  3. commands/cat/__init__.py +1 -17
  4. commands/cat/collection_actions.py +197 -0
  5. commands/cat/dr_egeria_command_help.py +372 -0
  6. commands/cat/dr_egeria_jupyter.py +7 -7
  7. commands/cat/dr_egeria_md.py +27 -182
  8. commands/cat/exp_list_glossaries.py +11 -14
  9. commands/cat/get_asset_graph.py +37 -267
  10. commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
  11. commands/cat/get_project_dependencies.py +14 -14
  12. commands/cat/get_project_structure.py +15 -14
  13. commands/cat/get_tech_type_elements.py +16 -116
  14. commands/cat/glossary_actions.py +145 -298
  15. commands/cat/list_assets.py +3 -11
  16. commands/cat/list_cert_types.py +17 -63
  17. commands/cat/list_collections.py +46 -138
  18. commands/cat/list_deployed_catalogs.py +15 -27
  19. commands/cat/list_deployed_database_schemas.py +27 -43
  20. commands/cat/list_deployed_databases.py +16 -31
  21. commands/cat/list_deployed_servers.py +35 -54
  22. commands/cat/list_glossaries.py +18 -17
  23. commands/cat/list_projects.py +10 -12
  24. commands/cat/list_tech_type_elements.py +21 -37
  25. commands/cat/list_tech_types.py +13 -25
  26. commands/cat/list_terms.py +38 -79
  27. commands/cat/list_todos.py +4 -11
  28. commands/cat/list_user_ids.py +3 -10
  29. commands/cat/my_reports.py +559 -0
  30. commands/cat/run_report.py +394 -0
  31. commands/cat/run_report_orig.py +528 -0
  32. commands/cli/egeria.py +222 -247
  33. commands/cli/egeria_cat.py +68 -81
  34. commands/cli/egeria_my.py +13 -0
  35. commands/cli/egeria_ops.py +69 -74
  36. commands/cli/egeria_tech.py +17 -93
  37. commands/cli/ops_config.py +3 -6
  38. commands/{cat/list_categories.py → deprecated/list_data_designer.py} +53 -64
  39. commands/{cat/list_data_structures.py → deprecated/list_data_structures_full.py} +3 -6
  40. commands/deprecated/old_get_asset_graph.py +315 -0
  41. commands/my/__init__.py +0 -2
  42. commands/my/list_my_profile.py +27 -34
  43. commands/my/list_my_roles.py +1 -7
  44. commands/my/monitor_my_todos.py +1 -7
  45. commands/my/monitor_open_todos.py +6 -7
  46. commands/my/todo_actions.py +4 -5
  47. commands/ops/__init__.py +0 -2
  48. commands/ops/gov_server_actions.py +17 -21
  49. commands/ops/list_archives.py +17 -38
  50. commands/ops/list_catalog_targets.py +33 -40
  51. commands/ops/load_archive.py +35 -26
  52. commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
  53. commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
  54. commands/ops/monitor_engine_activity.py +79 -77
  55. commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
  56. commands/ops/monitor_platform_status.py +38 -50
  57. commands/ops/monitor_server_startup.py +6 -11
  58. commands/ops/monitor_server_status.py +7 -11
  59. commands/ops/orig_monitor_server_list.py +8 -8
  60. commands/ops/orig_monitor_server_status.py +1 -5
  61. commands/ops/refresh_integration_daemon.py +5 -5
  62. commands/ops/restart_integration_daemon.py +5 -5
  63. commands/ops/table_integ_daemon_status.py +6 -6
  64. commands/ops/x_engine_actions.py +7 -7
  65. commands/tech/__init__.py +0 -2
  66. commands/tech/{generic_actions.py → element_actions.py} +6 -11
  67. commands/tech/get_element_info.py +20 -29
  68. commands/tech/get_guid_info.py +23 -42
  69. commands/tech/get_tech_details.py +20 -35
  70. commands/tech/get_tech_type_template.py +28 -39
  71. commands/tech/list_all_om_type_elements.py +24 -30
  72. commands/tech/list_all_om_type_elements_x.py +22 -28
  73. commands/tech/list_all_related_elements.py +19 -28
  74. commands/tech/list_anchored_elements.py +22 -30
  75. commands/tech/list_asset_types.py +19 -24
  76. commands/tech/list_elements_by_classification_by_property_value.py +26 -32
  77. commands/tech/list_elements_by_property_value.py +19 -25
  78. commands/tech/list_elements_by_property_value_x.py +20 -28
  79. commands/tech/list_elements_for_classification.py +28 -41
  80. commands/tech/list_gov_action_processes.py +16 -27
  81. commands/tech/list_information_supply_chains.py +22 -30
  82. commands/tech/list_registered_services.py +14 -26
  83. commands/tech/list_related_elements_with_prop_value.py +15 -25
  84. commands/tech/list_related_specification.py +1 -4
  85. commands/tech/list_relationship_types.py +15 -25
  86. commands/tech/list_relationships.py +20 -36
  87. commands/tech/list_solution_blueprints.py +28 -33
  88. commands/tech/list_solution_components.py +23 -29
  89. commands/tech/list_solution_roles.py +21 -32
  90. commands/tech/list_tech_templates.py +51 -54
  91. commands/tech/list_valid_metadata_values.py +5 -9
  92. commands/tech/table_tech_templates.py +2 -6
  93. commands/tech/x_list_related_elements.py +1 -4
  94. examples/GeoSpatial Products Example.py +524 -0
  95. examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
  96. examples/Jupyter Notebooks/README.md +2 -0
  97. examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
  98. examples/Jupyter Notebooks/common/__init__.py +14 -0
  99. examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
  100. examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
  101. examples/Jupyter Notebooks/common/globals.ipynb +184 -0
  102. examples/Jupyter Notebooks/common/globals.py +154 -0
  103. examples/Jupyter Notebooks/common/orig_globals.py +152 -0
  104. examples/format_sets/all_format_sets.json +910 -0
  105. examples/format_sets/custom_format_sets.json +268 -0
  106. examples/format_sets/subset_format_sets.json +187 -0
  107. examples/format_sets_save_load_example.py +291 -0
  108. examples/jacquard_data_sets.py +129 -0
  109. examples/output_formats_example.py +193 -0
  110. examples/test_jacquard_data_sets.py +54 -0
  111. examples/test_jacquard_data_sets_scenarios.py +94 -0
  112. md_processing/__init__.py +90 -0
  113. md_processing/command_dispatcher.py +33 -0
  114. md_processing/command_mapping.py +221 -0
  115. md_processing/data/commands/commands_data_designer.json +537 -0
  116. md_processing/data/commands/commands_external_reference.json +733 -0
  117. md_processing/data/commands/commands_feedback.json +155 -0
  118. md_processing/data/commands/commands_general.json +204 -0
  119. md_processing/data/commands/commands_glossary.json +218 -0
  120. md_processing/data/commands/commands_governance.json +3678 -0
  121. md_processing/data/commands/commands_product_manager.json +865 -0
  122. md_processing/data/commands/commands_project.json +642 -0
  123. md_processing/data/commands/commands_solution_architect.json +366 -0
  124. md_processing/data/commands.json +17568 -0
  125. md_processing/data/commands_working.json +30641 -0
  126. md_processing/data/gened_report_specs.py +6584 -0
  127. md_processing/data/generated_format_sets.json +6533 -0
  128. md_processing/data/generated_format_sets_old.json +4137 -0
  129. md_processing/data/generated_format_sets_old.py +45 -0
  130. md_processing/dr_egeria.py +182 -0
  131. md_processing/md_commands/__init__.py +3 -0
  132. md_processing/md_commands/data_designer_commands.py +1276 -0
  133. md_processing/md_commands/ext_ref_commands.py +530 -0
  134. md_processing/md_commands/feedback_commands.py +726 -0
  135. md_processing/md_commands/glossary_commands.py +684 -0
  136. md_processing/md_commands/governance_officer_commands.py +600 -0
  137. md_processing/md_commands/product_manager_commands.py +1266 -0
  138. md_processing/md_commands/project_commands.py +383 -0
  139. md_processing/md_commands/solution_architect_commands.py +1184 -0
  140. md_processing/md_commands/view_commands.py +295 -0
  141. md_processing/md_processing_utils/__init__.py +4 -0
  142. md_processing/md_processing_utils/common_md_proc_utils.py +1249 -0
  143. md_processing/md_processing_utils/common_md_utils.py +578 -0
  144. md_processing/md_processing_utils/determine_width.py +103 -0
  145. md_processing/md_processing_utils/extraction_utils.py +547 -0
  146. md_processing/md_processing_utils/gen_report_specs.py +643 -0
  147. md_processing/md_processing_utils/generate_dr_help.py +193 -0
  148. md_processing/md_processing_utils/generate_md_cmd_templates.py +144 -0
  149. md_processing/md_processing_utils/generate_md_templates.py +83 -0
  150. md_processing/md_processing_utils/md_processing_constants.py +1228 -0
  151. md_processing/md_processing_utils/message_constants.py +19 -0
  152. pyegeria/__init__.py +201 -443
  153. pyegeria/core/__init__.py +40 -0
  154. pyegeria/core/_base_platform_client.py +574 -0
  155. pyegeria/core/_base_server_client.py +573 -0
  156. pyegeria/core/_exceptions.py +457 -0
  157. pyegeria/core/_globals.py +60 -0
  158. pyegeria/core/_server_client.py +6073 -0
  159. pyegeria/core/_validators.py +257 -0
  160. pyegeria/core/config.py +654 -0
  161. pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
  162. pyegeria/core/load_config.py +37 -0
  163. pyegeria/core/logging_configuration.py +207 -0
  164. pyegeria/core/mcp_adapter.py +144 -0
  165. pyegeria/core/mcp_server.py +212 -0
  166. pyegeria/core/utils.py +405 -0
  167. pyegeria/deprecated/__init__.py +0 -0
  168. pyegeria/{_client.py → deprecated/_client.py} +62 -24
  169. pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
  170. pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1988 -1878
  171. pyegeria/deprecated/output_formatter_with_machine_keys.py +1127 -0
  172. pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +216 -229
  173. pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
  174. pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
  175. pyegeria/egeria_cat_client.py +25 -51
  176. pyegeria/egeria_client.py +140 -98
  177. pyegeria/egeria_config_client.py +48 -24
  178. pyegeria/egeria_tech_client.py +170 -83
  179. pyegeria/models/__init__.py +150 -0
  180. pyegeria/models/collection_models.py +168 -0
  181. pyegeria/models/models.py +654 -0
  182. pyegeria/omvs/__init__.py +84 -0
  183. pyegeria/omvs/action_author.py +342 -0
  184. pyegeria/omvs/actor_manager.py +5980 -0
  185. pyegeria/omvs/asset_catalog.py +842 -0
  186. pyegeria/omvs/asset_maker.py +2736 -0
  187. pyegeria/omvs/automated_curation.py +4403 -0
  188. pyegeria/omvs/classification_manager.py +11213 -0
  189. pyegeria/omvs/collection_manager.py +5780 -0
  190. pyegeria/omvs/community_matters_omvs.py +468 -0
  191. pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
  192. pyegeria/{data_designer_omvs.py → omvs/data_designer.py} +1991 -1691
  193. pyegeria/omvs/data_discovery.py +869 -0
  194. pyegeria/omvs/data_engineer.py +372 -0
  195. pyegeria/omvs/digital_business.py +1133 -0
  196. pyegeria/omvs/external_links.py +1752 -0
  197. pyegeria/omvs/feedback_manager.py +834 -0
  198. pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
  199. pyegeria/omvs/glossary_manager.py +3231 -0
  200. pyegeria/omvs/governance_officer.py +3009 -0
  201. pyegeria/omvs/lineage_linker.py +314 -0
  202. pyegeria/omvs/location_arena.py +1525 -0
  203. pyegeria/omvs/metadata_expert.py +668 -0
  204. pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
  205. pyegeria/omvs/my_profile.py +1042 -0
  206. pyegeria/omvs/notification_manager.py +358 -0
  207. pyegeria/omvs/people_organizer.py +394 -0
  208. pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
  209. pyegeria/omvs/product_manager.py +1825 -0
  210. pyegeria/omvs/project_manager.py +1907 -0
  211. pyegeria/omvs/reference_data.py +1140 -0
  212. pyegeria/omvs/registered_info.py +334 -0
  213. pyegeria/omvs/runtime_manager.py +2817 -0
  214. pyegeria/omvs/schema_maker.py +446 -0
  215. pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
  216. pyegeria/omvs/solution_architect.py +6490 -0
  217. pyegeria/omvs/specification_properties.py +37 -0
  218. pyegeria/omvs/subject_area.py +1042 -0
  219. pyegeria/omvs/template_manager_omvs.py +236 -0
  220. pyegeria/omvs/time_keeper.py +1761 -0
  221. pyegeria/omvs/valid_metadata.py +3221 -0
  222. pyegeria/omvs/valid_metadata_lists.py +37 -0
  223. pyegeria/omvs/valid_type_lists.py +37 -0
  224. pyegeria/view/__init__.py +28 -0
  225. pyegeria/view/_output_format_models.py +514 -0
  226. pyegeria/view/_output_formats.py +14 -0
  227. pyegeria/view/base_report_formats.py +2719 -0
  228. pyegeria/view/dr_egeria_reports.py +56 -0
  229. pyegeria/view/format_set_executor.py +397 -0
  230. pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
  231. pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
  232. pyegeria/view/output_formatter.py +1297 -0
  233. pyegeria-5.5.3.3.dist-info/METADATA +218 -0
  234. pyegeria-5.5.3.3.dist-info/RECORD +241 -0
  235. {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
  236. pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
  237. pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
  238. commands/cat/.DS_Store +0 -0
  239. commands/cat/README.md +0 -16
  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/monitor_asset_events.py +0 -108
  244. commands/tech/README.md +0 -24
  245. pyegeria/.DS_Store +0 -0
  246. pyegeria/README.md +0 -35
  247. pyegeria/_globals.py +0 -47
  248. pyegeria/_validators.py +0 -385
  249. pyegeria/asset_catalog_omvs.py +0 -864
  250. pyegeria/automated_curation_omvs.py +0 -3765
  251. pyegeria/collection_manager_omvs.py +0 -2744
  252. pyegeria/dr.egeria spec.md +0 -9
  253. pyegeria/egeria_my_client.py +0 -56
  254. pyegeria/feedback_manager_omvs.py +0 -4573
  255. pyegeria/glossary_browser_omvs.py +0 -3728
  256. pyegeria/glossary_manager_omvs.py +0 -2440
  257. pyegeria/m_test.py +0 -118
  258. pyegeria/md_processing_helpers.py +0 -58
  259. pyegeria/md_processing_utils_orig.py +0 -1103
  260. pyegeria/metadata_explorer_omvs.py +0 -2326
  261. pyegeria/my_profile_omvs.py +0 -1022
  262. pyegeria/output_formatter.py +0 -389
  263. pyegeria/project_manager_omvs.py +0 -1933
  264. pyegeria/registered_info.py +0 -167
  265. pyegeria/solution_architect_omvs.py +0 -2156
  266. pyegeria/template_manager_omvs.py +0 -1414
  267. pyegeria/utils.py +0 -197
  268. pyegeria-5.3.9.9.3.dist-info/METADATA +0 -72
  269. pyegeria-5.3.9.9.3.dist-info/RECORD +0 -143
  270. pyegeria-5.3.9.9.3.dist-info/entry_points.txt +0 -99
  271. /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
  272. {pyegeria-5.3.9.9.3.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))