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,314 @@
1
+ """
2
+ PDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ This module contains the Lineage Linker View Service client.
6
+ """
7
+
8
+ import asyncio
9
+ from typing import Annotated, Literal, Optional
10
+
11
+ from pydantic import Field
12
+
13
+ from pyegeria.core._server_client import ServerClient
14
+ from pyegeria.models import (
15
+ NewRelationshipRequestBody,
16
+ RelationshipBeanProperties,
17
+ )
18
+ from pyegeria.core.utils import dynamic_catch
19
+
20
+
21
+ class DataFlowProperties(RelationshipBeanProperties):
22
+ class_: Annotated[Literal["DataFlowProperties"], Field(alias="class")]
23
+ isc_qualified_name: Optional[str] = None
24
+ label: Optional[str] = None
25
+ description: Optional[str] = None
26
+ formula: Optional[str] = None
27
+ formula_type: Optional[str] = None
28
+
29
+
30
+ class ControlFlowProperties(RelationshipBeanProperties):
31
+ class_: Annotated[Literal["ControlFlowProperties"], Field(alias="class")]
32
+ isc_qualified_name: Optional[str] = None
33
+ label: Optional[str] = None
34
+ description: Optional[str] = None
35
+ guard: Optional[str] = None
36
+ mandatory_guard: Optional[bool] = None
37
+
38
+
39
+ class ProcessCallProperties(RelationshipBeanProperties):
40
+ class_: Annotated[Literal["ProcessCallProperties"], Field(alias="class")]
41
+ isc_qualified_name: Optional[str] = None
42
+ label: Optional[str] = None
43
+ description: Optional[str] = None
44
+ formula: Optional[str] = None
45
+ formula_type: Optional[str] = None
46
+
47
+
48
+ class LineageMappingProperties(RelationshipBeanProperties):
49
+ class_: Annotated[Literal["LineageMappingProperties"], Field(alias="class")]
50
+ isc_qualified_name: Optional[str] = None
51
+ label: Optional[str] = None
52
+ description: Optional[str] = None
53
+
54
+
55
+ class DataMappingProperties(RelationshipBeanProperties):
56
+ class_: Annotated[Literal["DataMappingProperties"], Field(alias="class")]
57
+ isc_qualified_name: Optional[str] = None
58
+ label: Optional[str] = None
59
+ description: Optional[str] = None
60
+ formula: Optional[str] = None
61
+ formula_type: Optional[str] = None
62
+ query_id: Optional[str] = None
63
+ query: Optional[str] = None
64
+ query_type: Optional[str] = None
65
+
66
+
67
+ class UltimateSourceProperties(RelationshipBeanProperties):
68
+ class_: Annotated[Literal["UltimateSourceProperties"], Field(alias="class")]
69
+ isc_qualified_name: Optional[str] = None
70
+ label: Optional[str] = None
71
+ description: Optional[str] = None
72
+
73
+
74
+ class UltimateDestinationProperties(RelationshipBeanProperties):
75
+ class_: Annotated[Literal["UltimateDestinationProperties"], Field(alias="class")]
76
+ isc_qualified_name: Optional[str] = None
77
+ label: Optional[str] = None
78
+ description: Optional[str] = None
79
+
80
+
81
+ class LineageLinker(ServerClient):
82
+ """
83
+ Client for the Lineage Linker View Service.
84
+
85
+ The Lineage Linker View Service provides methods to manage lineage relationships.
86
+
87
+ Attributes
88
+ ----------
89
+ view_server : str
90
+ The name of the View Server to use.
91
+ platform_url : str
92
+ URL of the server platform to connect to.
93
+ user_id : str
94
+ The identity of the user calling the method.
95
+ user_pwd : str
96
+ The password associated with the user_id. Defaults to None.
97
+ """
98
+
99
+ def __init__(
100
+ self,
101
+ view_server: str,
102
+ platform_url: str,
103
+ user_id: str,
104
+ user_pwd: Optional[str] = None,
105
+ token: Optional[str] = None,
106
+ ):
107
+ super().__init__(view_server, platform_url, user_id, user_pwd, token)
108
+ self.view_server = view_server
109
+ self.platform_url = platform_url
110
+ self.user_id = user_id
111
+ self.user_pwd = user_pwd
112
+ self.url_marker = "lineage-linker"
113
+
114
+ @dynamic_catch
115
+ async def _async_link_lineage(
116
+ self,
117
+ element_one_guid: str,
118
+ relationship_type_name: str,
119
+ element_two_guid: str,
120
+ body: dict | NewRelationshipRequestBody,
121
+ ) -> str:
122
+ """Create a lineage relationship between two elements. Async version.
123
+
124
+ Parameters
125
+ ----------
126
+ element_one_guid : str
127
+ The unique identifier of the element at end one.
128
+ relationship_type_name : str
129
+ The name of the lineage relationship type (e.g., ControlFlow, ProcessCall, LineageMapping, etc.).
130
+ element_two_guid : str
131
+ The unique identifier of the element at end two.
132
+ body : dict | NewRelationshipRequestBody
133
+ The properties for the relationship.
134
+
135
+ Returns
136
+ -------
137
+ str
138
+ The unique identifier of the newly created relationship.
139
+
140
+ Raises
141
+ ------
142
+ PyegeriaException
143
+ If there are issues in communications, message format, or Egeria errors.
144
+
145
+ Notes
146
+ -----
147
+ Sample JSON body (for LineageMapping):
148
+ ```json
149
+ {
150
+ "class" : "NewRelationshipRequestBody",
151
+ "properties": {
152
+ "class" : "LineageMappingProperties",
153
+ "iscQualifiedName": "add qualifiedName of information supply chain here",
154
+ "label": "add label here",
155
+ "description": "add description here"
156
+ }
157
+ }
158
+ ```
159
+ """
160
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/lineage-linker/elements/{element_one_guid}/{relationship_type_name}/{element_two_guid}/attach"
161
+ response = await self._async_make_request("POST", url, body)
162
+ return response.json().get("guid")
163
+
164
+ def link_lineage(
165
+ self,
166
+ element_one_guid: str,
167
+ relationship_type_name: str,
168
+ element_two_guid: str,
169
+ body: dict | NewRelationshipRequestBody,
170
+ ) -> str:
171
+ """Create a lineage relationship between two elements.
172
+
173
+ Parameters
174
+ ----------
175
+ element_one_guid : str
176
+ The unique identifier of the element at end one.
177
+ relationship_type_name : str
178
+ The name of the lineage relationship type (e.g., ControlFlow, ProcessCall, LineageMapping, etc.).
179
+ element_two_guid : str
180
+ The unique identifier of the element at end two.
181
+ body : dict | NewRelationshipRequestBody
182
+ The properties for the relationship.
183
+
184
+ Returns
185
+ -------
186
+ str
187
+ The unique identifier of the newly created relationship.
188
+
189
+ Raises
190
+ ------
191
+ PyegeriaException
192
+ If there are issues in communications, message format, or Egeria errors.
193
+
194
+ Notes
195
+ -----
196
+ Sample JSON body (for LineageMapping):
197
+ ```json
198
+ {
199
+ "class" : "NewRelationshipRequestBody",
200
+ "properties": {
201
+ "class" : "LineageMappingProperties",
202
+ "iscQualifiedName": "add qualifiedName of information supply chain here",
203
+ "label": "add label here",
204
+ "description": "add description here"
205
+ }
206
+ }
207
+ ```
208
+ """
209
+ loop = asyncio.get_event_loop()
210
+ return loop.run_until_complete(
211
+ self._async_link_lineage(element_one_guid, relationship_type_name, element_two_guid, body)
212
+ )
213
+
214
+ @dynamic_catch
215
+ async def _async_link_data_flow(
216
+ self,
217
+ element_one_guid: str,
218
+ relationship_type_name: str,
219
+ element_two_guid: str,
220
+ body: dict | NewRelationshipRequestBody,
221
+ ) -> str:
222
+ """Create a data flow relationship between two elements. Async version.
223
+
224
+ Parameters
225
+ ----------
226
+ element_one_guid : str
227
+ The unique identifier of the element at end one.
228
+ relationship_type_name : str
229
+ The name of the data flow relationship type.
230
+ element_two_guid : str
231
+ The unique identifier of the element at end two.
232
+ body : dict | NewRelationshipRequestBody
233
+ The properties for the relationship.
234
+
235
+ Returns
236
+ -------
237
+ str
238
+ The unique identifier of the newly created relationship.
239
+
240
+ Raises
241
+ ------
242
+ PyegeriaException
243
+ If there are issues in communications, message format, or Egeria errors.
244
+
245
+ Notes
246
+ -----
247
+ Sample JSON body:
248
+ ```json
249
+ {
250
+ "class" : "NewRelationshipRequestBody",
251
+ "properties": {
252
+ "class" : "DataFlowProperties",
253
+ "iscQualifiedName": "add qualifiedName of information supply chain here",
254
+ "label": "add label here",
255
+ "description": "add description here",
256
+ "formula": "add formula here"
257
+ }
258
+ }
259
+ ```
260
+ """
261
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/lineage-linker/from-elements/{element_one_guid}/via/{relationship_type_name}/to-elements/{element_two_guid}/attach"
262
+ response = await self._async_make_request("POST", url, body)
263
+ return response.json().get("guid")
264
+
265
+ def link_data_flow(
266
+ self,
267
+ element_one_guid: str,
268
+ relationship_type_name: str,
269
+ element_two_guid: str,
270
+ body: dict | NewRelationshipRequestBody,
271
+ ) -> str:
272
+ """Create a data flow relationship between two elements.
273
+
274
+ Parameters
275
+ ----------
276
+ element_one_guid : str
277
+ The unique identifier of the element at end one.
278
+ relationship_type_name : str
279
+ The name of the data flow relationship type.
280
+ element_two_guid : str
281
+ The unique identifier of the element at end two.
282
+ body : dict | NewRelationshipRequestBody
283
+ The properties for the relationship.
284
+
285
+ Returns
286
+ -------
287
+ str
288
+ The unique identifier of the newly created relationship.
289
+
290
+ Raises
291
+ ------
292
+ PyegeriaException
293
+ If there are issues in communications, message format, or Egeria errors.
294
+
295
+ Notes
296
+ -----
297
+ Sample JSON body:
298
+ ```json
299
+ {
300
+ "class" : "NewRelationshipRequestBody",
301
+ "properties": {
302
+ "class" : "DataFlowProperties",
303
+ "iscQualifiedName": "add qualifiedName of information supply chain here",
304
+ "label": "add label here",
305
+ "description": "add description here",
306
+ "formula": "add formula here"
307
+ }
308
+ }
309
+ ```
310
+ """
311
+ loop = asyncio.get_event_loop()
312
+ return loop.run_until_complete(
313
+ self._async_link_data_flow(element_one_guid, relationship_type_name, element_two_guid, body)
314
+ )