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,468 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ Community Matters OMVS client.
6
+
7
+ This module provides a lightweight client for the Community Matters View Service
8
+ endpoints as documented in Egeria-community-matters-omvs.http. It follows the
9
+ established patterns used by other OMVS clients (for example, location_arena.py
10
+ and project_manager.py), reusing the ServerClient helper methods for request
11
+ validation and transport.
12
+ """
13
+
14
+ import asyncio
15
+ from typing import Any, Optional
16
+
17
+ from pyegeria.core._server_client import ServerClient
18
+ from pyegeria.models import (
19
+ NewElementRequestBody,
20
+ TemplateRequestBody,
21
+ UpdateElementRequestBody,
22
+ DeleteElementRequestBody,
23
+ FilterRequestBody,
24
+ SearchStringRequestBody,
25
+ GetRequestBody,
26
+ )
27
+ from pyegeria.core.utils import dynamic_catch
28
+
29
+
30
+ class CommunityMatters(ServerClient):
31
+ """
32
+ Client for the Community Matters View Service.
33
+
34
+ The Community Matters View Service provides methods to create and manage communities.
35
+
36
+ Attributes
37
+ ----------
38
+ view_server : str
39
+ The name of the View Server to use.
40
+ platform_url : str
41
+ URL of the server platform to connect to.
42
+ user_id : str
43
+ The identity of the user calling the method.
44
+ user_pwd : str
45
+ The password associated with the user_id. Defaults to None.
46
+ """
47
+
48
+ def __init__(
49
+ self,
50
+ view_server: str,
51
+ platform_url: str,
52
+ user_id: str,
53
+ user_pwd: str | None = None,
54
+ token: str | None = None,
55
+ ):
56
+ self.view_server = view_server
57
+ self.platform_url = platform_url
58
+ self.user_id = user_id
59
+ self.user_pwd = user_pwd
60
+ self.community_command_base: str = (
61
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/community-matters"
62
+ )
63
+ # url_marker only used by some generic helpers (e.g., update status) not used here
64
+ self.url_marker = "community-matters"
65
+ ServerClient.__init__(self, view_server, platform_url, user_id, user_pwd, token)
66
+
67
+ # -----------------------------
68
+ # Create
69
+ # -----------------------------
70
+ @dynamic_catch
71
+ async def _async_create_community(self, body: Optional[dict | NewElementRequestBody] = None) -> str:
72
+ url = f"{self.community_command_base}/communities"
73
+ return await self._async_create_element_body_request(url, ["CommunityProperties"], body)
74
+
75
+ @dynamic_catch
76
+ def create_community(self, body: Optional[dict | NewElementRequestBody] = None) -> str:
77
+ loop = asyncio.get_event_loop()
78
+ return loop.run_until_complete(self._async_create_community(body))
79
+
80
+ # -----------------------------
81
+ # Create from template
82
+ # -----------------------------
83
+ @dynamic_catch
84
+ async def _async_create_community_from_template(self, body: dict | TemplateRequestBody) -> str:
85
+ url = f"{self.community_command_base}/communities/from-template"
86
+ return await self._async_create_element_from_template(url, body)
87
+
88
+ @dynamic_catch
89
+ def create_community_from_template(self, body: dict | TemplateRequestBody) -> str:
90
+ loop = asyncio.get_event_loop()
91
+ return loop.run_until_complete(self._async_create_community_from_template(body))
92
+
93
+ # -----------------------------
94
+ # Update
95
+ # -----------------------------
96
+ @dynamic_catch
97
+ async def _async_update_community(self, community_guid: str, body: dict | UpdateElementRequestBody) -> None:
98
+ url = f"{self.community_command_base}/communities/{community_guid}/update"
99
+ await self._async_update_element_body_request(url, ["CommunityProperties"], body)
100
+
101
+ @dynamic_catch
102
+ def update_community(self, community_guid: str, body: dict | UpdateElementRequestBody) -> None:
103
+ loop = asyncio.get_event_loop()
104
+ loop.run_until_complete(self._async_update_community(community_guid, body))
105
+
106
+ # -----------------------------
107
+ # Delete
108
+ # -----------------------------
109
+ @dynamic_catch
110
+ async def _async_delete_community(
111
+ self,
112
+ community_guid: str,
113
+ body: Optional[dict | DeleteElementRequestBody] = None,
114
+ cascade: bool = False,
115
+ ) -> None:
116
+ url = f"{self.community_command_base}/communities/{community_guid}/delete"
117
+ await self._async_delete_element_request(url, body, cascade)
118
+
119
+ @dynamic_catch
120
+ def delete_community(
121
+ self,
122
+ community_guid: str,
123
+ body: Optional[dict | DeleteElementRequestBody] = None,
124
+ cascade: bool = False,
125
+ ) -> None:
126
+ loop = asyncio.get_event_loop()
127
+ loop.run_until_complete(self._async_delete_community(community_guid, body, cascade))
128
+
129
+ # -----------------------------
130
+ # Get by name
131
+ # -----------------------------
132
+ def _generate_community_output(
133
+ self,
134
+ elements: dict | list[dict],
135
+ filter_or_search: str | None,
136
+ element_type_name: str | None,
137
+ output_format: str = "JSON",
138
+ report_spec: dict | str | None = None,
139
+ ) -> Any:
140
+ # Minimal implementation: return JSON elements unchanged for now.
141
+ # Extend later to provide markdown/DICT formatting with output_formatter if needed.
142
+ return elements
143
+
144
+ @dynamic_catch
145
+ async def _async_get_communities_by_name(
146
+ self,
147
+ filter_string: str | None = None,
148
+ body: Optional[dict | FilterRequestBody] = None,
149
+ start_from: int = 0,
150
+ page_size: int = 0,
151
+ output_format: str = "JSON",
152
+ report_spec: str | dict | None = None,
153
+ ) -> list | str:
154
+ url = f"{self.community_command_base}/communities/by-name"
155
+ response = await self._async_get_name_request(
156
+ url,
157
+ _type="Community",
158
+ _gen_output=self._generate_community_output,
159
+ filter_string=filter_string,
160
+ start_from=start_from,
161
+ page_size=page_size,
162
+ output_format=output_format,
163
+ report_spec=report_spec,
164
+ body=body,
165
+ )
166
+ return response
167
+
168
+ @dynamic_catch
169
+ def get_communities_by_name(
170
+ self,
171
+ filter_string: str | None = None,
172
+ body: Optional[dict | FilterRequestBody] = None,
173
+ start_from: int = 0,
174
+ page_size: int = 0,
175
+ output_format: str = "JSON",
176
+ report_spec: str | dict | None = None,
177
+ ) -> list | str:
178
+ loop = asyncio.get_event_loop()
179
+ return loop.run_until_complete(
180
+ self._async_get_communities_by_name(
181
+ filter_string,
182
+ body,
183
+ start_from,
184
+ page_size,
185
+ output_format,
186
+ report_spec,
187
+ )
188
+ )
189
+
190
+ # -----------------------------
191
+ # Find by search string
192
+ # -----------------------------
193
+ @dynamic_catch
194
+ async def _async_find_communities(self, search_string: str = "*",
195
+ starts_with: bool = True, ends_with: bool = False,
196
+ ignore_case: bool = False,
197
+ anchor_domain: Optional[str] = None,
198
+ metadata_element_type: Optional[str] = None,
199
+ metadata_element_subtypes: Optional[list[str]] = None,
200
+ skip_relationships: Optional[list[str]] = None,
201
+ include_only_relationships: Optional[list[str]] = None,
202
+ skip_classified_elements: Optional[list[str]] = None,
203
+ include_only_classified_elements: Optional[list[str]] = None,
204
+ graph_query_depth: int = 3,
205
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
206
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
207
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
208
+ sequencing_property: Optional[str] = None,
209
+ output_format: str = "JSON",
210
+ report_spec: str | dict = None,
211
+ start_from: int = 0, page_size: int = 100,
212
+ property_names: Optional[list[str]] = None,
213
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
214
+ """ Retrieve the list of community metadata elements that contain the search string. Async Version.
215
+
216
+ Parameters
217
+ ----------
218
+ search_string: str
219
+ Search string to match against - None or '*' indicate match against all communities.
220
+ starts_with : bool, [default=True], optional
221
+ Starts with the supplied string.
222
+ ends_with : bool, [default=False], optional
223
+ Ends with the supplied string
224
+ ignore_case : bool, [default=False], optional
225
+ Ignore case when searching
226
+ anchor_domain: str, optional
227
+ The anchor domain to search in.
228
+ metadata_element_type: str, optional
229
+ The type of metadata element to search for.
230
+ metadata_element_subtypes: list[str], optional
231
+ The subtypes of metadata element to search for.
232
+ skip_relationships: list[str], optional
233
+ The types of relationships to skip.
234
+ include_only_relationships: list[str], optional
235
+ The types of relationships to include.
236
+ skip_classified_elements: list[str], optional
237
+ The types of classified elements to skip.
238
+ include_only_classified_elements: list[str], optional
239
+ The types of classified elements to include.
240
+ graph_query_depth: int, [default=3], optional
241
+ The depth of the graph query.
242
+ governance_zone_filter: list[str], optional
243
+ The governance zones to search in.
244
+ as_of_time: str, optional
245
+ The time to search as of.
246
+ effective_time: str, optional
247
+ The effective time to search at.
248
+ relationship_page_size: int, [default=0], optional
249
+ The page size for relationships.
250
+ limit_results_by_status: list[str], optional
251
+ The statuses to limit results by.
252
+ sequencing_order: str, optional
253
+ The order to sequence results by.
254
+ sequencing_property: str, optional
255
+ The property to sequence results by.
256
+ output_format: str, default = "JSON"
257
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
258
+ report_spec: str | dict , optional, default = None
259
+ - The desired output columns/fields to include.
260
+ start_from: int, [default=0], optional
261
+ When multiple pages of results are available, the page number to start from.
262
+ page_size: int, [default=100]
263
+ The number of items to return in a single page.
264
+ property_names: list[str], optional
265
+ The names of properties to search for.
266
+ body: dict | SearchStringRequestBody, optional, default = None
267
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
268
+
269
+ Returns
270
+ -------
271
+ List | str
272
+
273
+ Output depends on the output format specified.
274
+
275
+ Raises
276
+ ------
277
+
278
+ ValidationError
279
+ If the client passes incorrect parameters on the request that don't conform to the data model.
280
+ PyegeriaException
281
+ Issues raised in communicating or server side processing.
282
+ NotAuthorizedException
283
+ The principle specified by the user_id does not have authorization for the requested action
284
+
285
+ """
286
+ url = f"{self.community_command_base}/communities/by-search-string"
287
+ response = await self._async_find_request(url, _type="Community", _gen_output=self._generate_community_output,
288
+ search_string=search_string, starts_with=starts_with,
289
+ ends_with=ends_with, ignore_case=ignore_case,
290
+ anchor_domain=anchor_domain,
291
+ metadata_element_type=metadata_element_type,
292
+ metadata_element_subtypes=metadata_element_subtypes,
293
+ skip_relationships=skip_relationships,
294
+ include_only_relationships=include_only_relationships,
295
+ skip_classified_elements=skip_classified_elements,
296
+ include_only_classified_elements=include_only_classified_elements,
297
+ graph_query_depth=graph_query_depth,
298
+ governance_zone_filter=governance_zone_filter,
299
+ as_of_time=as_of_time, effective_time=effective_time,
300
+ relationship_page_size=relationship_page_size,
301
+ limit_results_by_status=limit_results_by_status,
302
+ sequencing_order=sequencing_order,
303
+ sequencing_property=sequencing_property,
304
+ output_format=output_format, report_spec=report_spec,
305
+ start_from=start_from, page_size=page_size,
306
+ property_names=property_names, body=body)
307
+
308
+ return response
309
+
310
+ @dynamic_catch
311
+ def find_communities(self, search_string: str = "*",
312
+ starts_with: bool = True, ends_with: bool = False,
313
+ ignore_case: bool = False,
314
+ anchor_domain: Optional[str] = None,
315
+ metadata_element_type: Optional[str] = None,
316
+ metadata_element_subtypes: Optional[list[str]] = None,
317
+ skip_relationships: Optional[list[str]] = None,
318
+ include_only_relationships: Optional[list[str]] = None,
319
+ skip_classified_elements: Optional[list[str]] = None,
320
+ include_only_classified_elements: Optional[list[str]] = None,
321
+ graph_query_depth: int = 3,
322
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
323
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
324
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
325
+ sequencing_property: Optional[str] = None,
326
+ output_format: str = "JSON",
327
+ report_spec: str | dict = None,
328
+ start_from: int = 0, page_size: int = 100,
329
+ property_names: Optional[list[str]] = None,
330
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
331
+ """ Retrieve the list of community metadata elements that contain the search string.
332
+
333
+ Parameters
334
+ ----------
335
+ search_string: str
336
+ Search string to match against - None or '*' indicate match against all communities.
337
+ starts_with : bool, [default=True], optional
338
+ Starts with the supplied string.
339
+ ends_with : bool, [default=False], optional
340
+ Ends with the supplied string
341
+ ignore_case : bool, [default=False], optional
342
+ Ignore case when searching
343
+ anchor_domain: str, optional
344
+ The anchor domain to search in.
345
+ metadata_element_type: str, optional
346
+ The type of metadata element to search for.
347
+ metadata_element_subtypes: list[str], optional
348
+ The subtypes of metadata element to search for.
349
+ skip_relationships: list[str], optional
350
+ The types of relationships to skip.
351
+ include_only_relationships: list[str], optional
352
+ The types of relationships to include.
353
+ skip_classified_elements: list[str], optional
354
+ The types of classified elements to skip.
355
+ include_only_classified_elements: list[str], optional
356
+ The types of classified elements to include.
357
+ graph_query_depth: int, [default=3], optional
358
+ The depth of the graph query.
359
+ governance_zone_filter: list[str], optional
360
+ The governance zones to search in.
361
+ as_of_time: str, optional
362
+ The time to search as of.
363
+ effective_time: str, optional
364
+ The effective time to search at.
365
+ relationship_page_size: int, [default=0], optional
366
+ The page size for relationships.
367
+ limit_results_by_status: list[str], optional
368
+ The statuses to limit results by.
369
+ sequencing_order: str, optional
370
+ The order to sequence results by.
371
+ sequencing_property: str, optional
372
+ The property to sequence results by.
373
+ output_format: str, default = "JSON"
374
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
375
+ report_spec: str | dict , optional, default = None
376
+ - The desired output columns/fields to include.
377
+ start_from: int, [default=0], optional
378
+ When multiple pages of results are available, the page number to start from.
379
+ page_size: int, [default=100]
380
+ The number of items to return in a single page.
381
+ property_names: list[str], optional
382
+ The names of properties to search for.
383
+ body: dict | SearchStringRequestBody, optional, default = None
384
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
385
+
386
+ Returns
387
+ -------
388
+ List | str
389
+
390
+ Output depends on the output format specified.
391
+
392
+ Raises
393
+ ------
394
+
395
+ ValidationError
396
+ If the client passes incorrect parameters on the request that don't conform to the data model.
397
+ PyegeriaException
398
+ Issues raised in communicating or server side processing.
399
+ NotAuthorizedException
400
+ The principle specified by the user_id does not have authorization for the requested action
401
+
402
+ """
403
+ loop = asyncio.get_event_loop()
404
+ return loop.run_until_complete(self._async_find_communities(search_string=search_string,
405
+ starts_with=starts_with,
406
+ ends_with=ends_with,
407
+ ignore_case=ignore_case,
408
+ anchor_domain=anchor_domain,
409
+ metadata_element_type=metadata_element_type,
410
+ metadata_element_subtypes=metadata_element_subtypes,
411
+ skip_relationships=skip_relationships,
412
+ include_only_relationships=include_only_relationships,
413
+ skip_classified_elements=skip_classified_elements,
414
+ include_only_classified_elements=include_only_classified_elements,
415
+ graph_query_depth=graph_query_depth,
416
+ governance_zone_filter=governance_zone_filter,
417
+ as_of_time=as_of_time,
418
+ effective_time=effective_time,
419
+ relationship_page_size=relationship_page_size,
420
+ limit_results_by_status=limit_results_by_status,
421
+ sequencing_order=sequencing_order,
422
+ sequencing_property=sequencing_property,
423
+ output_format=output_format,
424
+ report_spec=report_spec,
425
+ start_from=start_from,
426
+ page_size=page_size,
427
+ property_names=property_names,
428
+ body=body))
429
+
430
+ # -----------------------------
431
+ # Get by GUID
432
+ # -----------------------------
433
+ @dynamic_catch
434
+ async def _async_get_community_by_guid(
435
+ self,
436
+ community_guid: str,
437
+ body: Optional[dict | GetRequestBody] = None,
438
+ output_format: str = "JSON",
439
+ report_spec: str | dict | None = None,
440
+ ) -> dict | str:
441
+ url = f"{self.community_command_base}/communities/{community_guid}/retrieve"
442
+ response = await self._async_get_guid_request(
443
+ url,
444
+ _type="Community",
445
+ _gen_output=self._generate_community_output,
446
+ output_format=output_format,
447
+ report_spec=report_spec,
448
+ body=body,
449
+ )
450
+ return response
451
+
452
+ @dynamic_catch
453
+ def get_community_by_guid(
454
+ self,
455
+ community_guid: str,
456
+ body: Optional[dict | GetRequestBody] = None,
457
+ output_format: str = "JSON",
458
+ report_spec: str | dict | None = None,
459
+ ) -> dict | str:
460
+ loop = asyncio.get_event_loop()
461
+ return loop.run_until_complete(
462
+ self._async_get_community_by_guid(
463
+ community_guid,
464
+ body,
465
+ output_format,
466
+ report_spec,
467
+ )
468
+ )