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,394 @@
1
+ """
2
+ PDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ This module contains the People Organizer 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
+ DeleteRelationshipRequestBody,
17
+ RelationshipBeanProperties,
18
+ )
19
+ from pyegeria.core.utils import dynamic_catch
20
+
21
+
22
+ class TeamStructureProperties(RelationshipBeanProperties):
23
+ class_: Annotated[Literal["TeamStructureProperties"], Field(alias="class")]
24
+ delegation_escalation_authority: Optional[bool] = True
25
+
26
+
27
+ class PeopleOrganizer(ServerClient):
28
+ """
29
+ Client for the People Organizer View Service.
30
+
31
+ The People Organizer View Service provides methods to manage person profiles and teams.
32
+
33
+ Attributes
34
+ ----------
35
+ view_server : str
36
+ The name of the View Server to use.
37
+ platform_url : str
38
+ URL of the server platform to connect to.
39
+ user_id : str
40
+ The identity of the user calling the method.
41
+ user_pwd : str
42
+ The password associated with the user_id. Defaults to None.
43
+ """
44
+
45
+ def __init__(
46
+ self,
47
+ view_server: str,
48
+ platform_url: str,
49
+ user_id: str,
50
+ user_pwd: Optional[str] = None,
51
+ token: Optional[str] = None,
52
+ ):
53
+ super().__init__(view_server, platform_url, user_id, user_pwd, token)
54
+ self.view_server = view_server
55
+ self.platform_url = platform_url
56
+ self.user_id = user_id
57
+ self.user_pwd = user_pwd
58
+ self.url_marker = "people-organizer"
59
+
60
+ @dynamic_catch
61
+ async def _async_link_peer_person(
62
+ self,
63
+ person_one_guid: str,
64
+ person_two_guid: str,
65
+ body: dict | NewRelationshipRequestBody,
66
+ ) -> None:
67
+ """Link a person profile to one of its peers. Async version.
68
+
69
+ Parameters
70
+ ----------
71
+ person_one_guid : str
72
+ The unique identifier of the first person profile.
73
+ person_two_guid : str
74
+ The unique identifier of the second person profile.
75
+ body : dict | NewRelationshipRequestBody
76
+ The properties for the relationship.
77
+
78
+ Returns
79
+ -------
80
+ None
81
+
82
+ Raises
83
+ ------
84
+ PyegeriaException
85
+ If there are issues in communications, message format, or Egeria errors.
86
+
87
+ Notes
88
+ -----
89
+ Sample JSON body:
90
+ ```json
91
+ {
92
+ "class": "NewRelationshipRequestBody",
93
+ "properties": {
94
+ "class": "PeerProperties",
95
+ "effectiveFrom": "2024-01-01T00:00:00.000+00:00"
96
+ }
97
+ }
98
+ ```
99
+ """
100
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/people-organizer/actor-profiles/{person_one_guid}/peer-persons/{person_two_guid}/attach"
101
+ await self._async_new_relationship_request(url, ["PeerProperties"], body)
102
+
103
+ def link_peer_person(
104
+ self,
105
+ person_one_guid: str,
106
+ person_two_guid: str,
107
+ body: dict | NewRelationshipRequestBody,
108
+ ) -> None:
109
+ """Link a person profile to one of its peers.
110
+
111
+ Parameters
112
+ ----------
113
+ person_one_guid : str
114
+ The unique identifier of the first person profile.
115
+ person_two_guid : str
116
+ The unique identifier of the second person profile.
117
+ body : dict | NewRelationshipRequestBody
118
+ The properties for the relationship.
119
+
120
+ Returns
121
+ -------
122
+ None
123
+
124
+ Raises
125
+ ------
126
+ PyegeriaException
127
+ If there are issues in communications, message format, or Egeria errors.
128
+
129
+ Notes
130
+ -----
131
+ Sample JSON body:
132
+ ```json
133
+ {
134
+ "class" : "NewRelationshipRequestBody",
135
+ "properties": {
136
+ "class": "RelationshipProperties",
137
+ "effectiveFrom": "2024-01-01T00:00:00.000+00:00"
138
+ }
139
+ }
140
+ ```
141
+ """
142
+ loop = asyncio.get_event_loop()
143
+ loop.run_until_complete(
144
+ self._async_link_peer_person(person_one_guid, person_two_guid, body)
145
+ )
146
+
147
+ @dynamic_catch
148
+ async def _async_unlink_peer_person(
149
+ self,
150
+ person_one_guid: str,
151
+ person_two_guid: str,
152
+ body: dict | DeleteRelationshipRequestBody,
153
+ ) -> None:
154
+ """Detach a person profile from one of its peers. Async version.
155
+
156
+ Parameters
157
+ ----------
158
+ person_one_guid : str
159
+ The unique identifier of the first person profile.
160
+ person_two_guid : str
161
+ The unique identifier of the second person profile.
162
+ body : dict | DeleteRelationshipRequestBody
163
+ The request body for the detach operation.
164
+
165
+ Returns
166
+ -------
167
+ None
168
+
169
+ Raises
170
+ ------
171
+ PyegeriaException
172
+ If there are issues in communications, message format, or Egeria errors.
173
+
174
+ Notes
175
+ -----
176
+ Sample JSON body:
177
+ ```json
178
+ {
179
+ "class" : "DeleteRelationshipRequestBody",
180
+ "deleteMethod": "LOOK_FOR_LINEAGE"
181
+ }
182
+ ```
183
+ """
184
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/people-organizer/actor-profiles/{person_one_guid}/peer-persons/{person_two_guid}/detach"
185
+ await self._async_delete_relationship_request(url, body)
186
+
187
+ def detach_peer_person(
188
+ self,
189
+ person_one_guid: str,
190
+ person_two_guid: str,
191
+ body: dict | DeleteRelationshipRequestBody,
192
+ ) -> None:
193
+ """Detach a person profile from one of its peers.
194
+
195
+ Parameters
196
+ ----------
197
+ person_one_guid : str
198
+ The unique identifier of the first person profile.
199
+ person_two_guid : str
200
+ The unique identifier of the second person profile.
201
+ body : dict | DeleteRelationshipRequestBody
202
+ The request body for the detach operation.
203
+
204
+ Returns
205
+ -------
206
+ None
207
+
208
+ Raises
209
+ ------
210
+ PyegeriaException
211
+ If there are issues in communications, message format, or Egeria errors.
212
+
213
+ Notes
214
+ -----
215
+ Sample JSON body:
216
+ ```json
217
+ {
218
+ "class" : "DeleteRelationshipRequestBody",
219
+ "deleteMethod": "LOOK_FOR_LINEAGE"
220
+ }
221
+ ```
222
+ """
223
+ loop = asyncio.get_event_loop()
224
+ loop.run_until_complete(
225
+ self._async_unlink_peer_person(person_one_guid, person_two_guid, body)
226
+ )
227
+
228
+ @dynamic_catch
229
+ async def _async_link_team_structure(
230
+ self,
231
+ super_team_guid: str,
232
+ subteam_guid: str,
233
+ body: dict | NewRelationshipRequestBody,
234
+ ) -> None:
235
+ """Link a super team to a subteam. Async version.
236
+
237
+ Parameters
238
+ ----------
239
+ super_team_guid : str
240
+ The unique identifier of the super team.
241
+ subteam_guid : str
242
+ The unique identifier of the subteam.
243
+ body : dict | NewRelationshipRequestBody
244
+ The properties for the relationship.
245
+
246
+ Returns
247
+ -------
248
+ None
249
+
250
+ Raises
251
+ ------
252
+ PyegeriaException
253
+ If there are issues in communications, message format, or Egeria errors.
254
+
255
+ Notes
256
+ -----
257
+ Sample JSON body:
258
+ ```json
259
+ {
260
+ "class" : "NewRelationshipRequestBody",
261
+ "properties": {
262
+ "class": "TeamStructureProperties",
263
+ "delegationEscalationAuthority": true
264
+ }
265
+ }
266
+ ```
267
+ """
268
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/people-organizer/actor-profiles/{super_team_guid}/team-structures/{subteam_guid}/attach"
269
+ await self._async_new_relationship_request(url, ["TeamStructureProperties"], body)
270
+
271
+ def link_team_structure(
272
+ self,
273
+ super_team_guid: str,
274
+ subteam_guid: str,
275
+ body: dict | NewRelationshipRequestBody,
276
+ ) -> None:
277
+ """Link a super team to a subteam.
278
+
279
+ Parameters
280
+ ----------
281
+ super_team_guid : str
282
+ The unique identifier of the super team.
283
+ subteam_guid : str
284
+ The unique identifier of the subteam.
285
+ body : dict | NewRelationshipRequestBody
286
+ The properties for the relationship.
287
+
288
+ Returns
289
+ -------
290
+ None
291
+
292
+ Raises
293
+ ------
294
+ PyegeriaException
295
+ If there are issues in communications, message format, or Egeria errors.
296
+
297
+ Notes
298
+ -----
299
+ Sample JSON body:
300
+ ```json
301
+ {
302
+ "class" : "NewRelationshipRequestBody",
303
+ "properties": {
304
+ "class": "TeamStructureProperties",
305
+ "delegationEscalationAuthority": true
306
+ }
307
+ }
308
+ ```
309
+ """
310
+ loop = asyncio.get_event_loop()
311
+ loop.run_until_complete(
312
+ self._async_link_team_structure(super_team_guid, subteam_guid, body)
313
+ )
314
+
315
+ @dynamic_catch
316
+ async def _async_detach_team_structure(
317
+ self,
318
+ super_team_guid: str,
319
+ subteam_guid: str,
320
+ body: dict | DeleteRelationshipRequestBody,
321
+ ) -> None:
322
+ """Detach a super team from a subteam. Async version.
323
+
324
+ Parameters
325
+ ----------
326
+ super_team_guid : str
327
+ The unique identifier of the super team.
328
+ subteam_guid : str
329
+ The unique identifier of the subteam.
330
+ body : dict | DeleteRelationshipRequestBody
331
+ The request body for the detach operation.
332
+
333
+ Returns
334
+ -------
335
+ None
336
+
337
+ Raises
338
+ ------
339
+ PyegeriaException
340
+ If there are issues in communications, message format, or Egeria errors.
341
+
342
+ Notes
343
+ -----
344
+ Sample JSON body:
345
+ ```json
346
+ {
347
+ "class" : "DeleteRelationshipRequestBody",
348
+ "deleteMethod": "LOOK_FOR_LINEAGE"
349
+ }
350
+ ```
351
+ """
352
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/people-organizer/actor-profiles/{super_team_guid}/team-structures/{subteam_guid}/detach"
353
+ await self._async_delete_relationship_request(url, body)
354
+
355
+ def detach_team_structure(
356
+ self,
357
+ super_team_guid: str,
358
+ subteam_guid: str,
359
+ body: dict | DeleteRelationshipRequestBody,
360
+ ) -> None:
361
+ """Detach a super team from a subteam.
362
+
363
+ Parameters
364
+ ----------
365
+ super_team_guid : str
366
+ The unique identifier of the super team.
367
+ subteam_guid : str
368
+ The unique identifier of the subteam.
369
+ body : dict | DeleteRelationshipRequestBody
370
+ The request body for the detach operation.
371
+
372
+ Returns
373
+ -------
374
+ None
375
+
376
+ Raises
377
+ ------
378
+ PyegeriaException
379
+ If there are issues in communications, message format, or Egeria errors.
380
+
381
+ Notes
382
+ -----
383
+ Sample JSON body:
384
+ ```json
385
+ {
386
+ "class" : "DeleteRelationshipRequestBody",
387
+ "deleteMethod": "LOOK_FOR_LINEAGE"
388
+ }
389
+ ```
390
+ """
391
+ loop = asyncio.get_event_loop()
392
+ loop.run_until_complete(
393
+ self._async_detach_team_structure(super_team_guid, subteam_guid, body)
394
+ )