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,842 @@
1
+ """
2
+ SPDX-License-Identifier: Apache-2.0
3
+ Copyright Contributors to the ODPi Egeria project.
4
+
5
+ Asset Catalog View Service Methods - Search for assets, retrieve their properties, lineage and related glossary
6
+ information.
7
+
8
+ This file is in active development...
9
+
10
+ """
11
+
12
+ import asyncio
13
+
14
+ from loguru import logger
15
+
16
+ from pyegeria.core._server_client import ServerClient
17
+ from pyegeria.view.base_report_formats import select_report_format, get_report_spec_match
18
+ from pyegeria.models import SearchStringRequestBody, ResultsRequestBody
19
+ from pyegeria.view.output_formatter import populate_columns_from_properties, _extract_referenceable_properties, \
20
+ get_required_relationships, generate_output
21
+ from pyegeria.core.utils import body_slimmer, dynamic_catch
22
+ from pyegeria.core._globals import max_paging_size
23
+ from pyegeria.core._globals import NO_ELEMENTS_FOUND, NO_ASSETS_FOUND
24
+ from typing import Any, Optional
25
+
26
+ class AssetCatalog(ServerClient):
27
+ """
28
+ Client for the Asset Catalog View Service.
29
+
30
+ The Asset Catalog View Service provides methods to search for assets,
31
+ retrieve their properties, lineage, and related glossary information.
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__(self, view_server: str, platform_url: str, user_id: str, user_pwd: Optional[str] = None,
46
+ token: str = None):
47
+ super().__init__(view_server, platform_url, user_id, user_pwd, token)
48
+ self.view_server = view_server
49
+ self.platform_url = platform_url
50
+ self.user_id = user_id
51
+ self.user_pwd = user_pwd
52
+
53
+ #
54
+ # Output helpers
55
+ #
56
+
57
+ def _extract_asset_properties(self, element: dict, columns_struct: dict) -> dict:
58
+ col_data = populate_columns_from_properties(element, columns_struct)
59
+ columns_list = col_data.get("formats", {}).get("attributes", [])
60
+ header_props = _extract_referenceable_properties(element)
61
+ for col in columns_list:
62
+ key = col.get("key")
63
+ if key in header_props:
64
+ col["value"] = header_props.get(key)
65
+ elif isinstance(key, str) and key.lower() == "guid":
66
+ col["value"] = header_props.get("GUID")
67
+ # GAP specifics: processStatus, elementTypeName, stepCount
68
+ proc_status = (
69
+ element.get("properties", {}).get("processStatus")
70
+ or element.get("elementProperties", {}).get("processStatus")
71
+ or element.get("processStatus")
72
+ )
73
+ step_count = (
74
+ element.get("properties", {}).get("stepCount")
75
+ or element.get("elementProperties", {}).get("stepCount")
76
+ or element.get("stepCount")
77
+ )
78
+ for col in columns_list:
79
+ key = col.get("key")
80
+ if key in ("process_status", "processStatus"):
81
+ col["value"] = proc_status
82
+ elif key == "stepCount":
83
+ col["value"] = step_count
84
+ col_data = get_required_relationships(element, col_data)
85
+ mermaid_val = element.get("mermaidGraph", "") or ""
86
+ for col in columns_list:
87
+ if col.get("key") == "mermaid":
88
+ col["value"] = mermaid_val
89
+ break
90
+ return col_data
91
+
92
+ def _generate_asset_output(self, elements: dict | list[dict], filter_string: str | None,
93
+ element_type_name: str | None, output_format: str = "DICT",
94
+ report_spec: dict | str | None = None) -> str | list[dict]:
95
+ entity_type = element_type_name
96
+ get_additional_props_func = None
97
+ if report_spec:
98
+ if isinstance(report_spec, str):
99
+ output_formats = select_report_format(report_spec, output_format)
100
+ else:
101
+ output_formats = get_report_spec_match(report_spec, output_format)
102
+ elif element_type_name:
103
+ output_formats = select_report_format(element_type_name, output_format)
104
+ else:
105
+ output_formats = select_report_format(entity_type, output_format)
106
+ if output_formats is None:
107
+ output_formats = select_report_format("Default", output_format)
108
+ return generate_output(
109
+ elements,
110
+ filter,
111
+ entity_type,
112
+ output_format,
113
+ self._extract_asset_properties,
114
+ None,
115
+ output_formats,
116
+ )
117
+
118
+ @dynamic_catch
119
+ async def _async_find_in_asset_domain(self, search_string: str = "*",
120
+ starts_with: bool = True, ends_with: bool = False,
121
+ ignore_case: bool = False,
122
+ anchor_domain: Optional[str] = None,
123
+ metadata_element_type: Optional[str] = None,
124
+ metadata_element_subtypes: Optional[list[str]] = None,
125
+ skip_relationships: Optional[list[str]] = None,
126
+ include_only_relationships: Optional[list[str]] = None,
127
+ skip_classified_elements: Optional[list[str]] = None,
128
+ include_only_classified_elements: Optional[list[str]] = None,
129
+ graph_query_depth: int = 3,
130
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
131
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
132
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
133
+ sequencing_property: Optional[str] = None,
134
+ output_format: str = "JSON",
135
+ report_spec: str | dict = "Referenceable",
136
+ start_from: int = 0, page_size: int = 100,
137
+ property_names: Optional[list[str]] = None,
138
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
139
+ """ Retrieve the list of asset metadata elements that contain the search string. Async Version.
140
+
141
+ Parameters
142
+ ----------
143
+ search_string: str
144
+ Search string to match against - None or '*' indicate match against all assets.
145
+ starts_with : bool, [default=True], optional
146
+ Starts with the supplied string.
147
+ ends_with : bool, [default=False], optional
148
+ Ends with the supplied string
149
+ ignore_case : bool, [default=False], optional
150
+ Ignore case when searching
151
+ anchor_domain: str, optional
152
+ The anchor domain to search in.
153
+ metadata_element_type: str, optional
154
+ The type of metadata element to search for.
155
+ metadata_element_subtypes: list[str], optional
156
+ The subtypes of metadata element to search for.
157
+ skip_relationships: list[str], optional
158
+ The types of relationships to skip.
159
+ include_only_relationships: list[str], optional
160
+ The types of relationships to include.
161
+ skip_classified_elements: list[str], optional
162
+ The types of classified elements to skip.
163
+ include_only_classified_elements: list[str], optional
164
+ The types of classified elements to include.
165
+ graph_query_depth: int, [default=3], optional
166
+ The depth of the graph query.
167
+ governance_zone_filter: list[str], optional
168
+ The governance zones to search in.
169
+ as_of_time: str, optional
170
+ The time to search as of.
171
+ effective_time: str, optional
172
+ The effective time to search at.
173
+ relationship_page_size: int, [default=0], optional
174
+ The page size for relationships.
175
+ limit_results_by_status: list[str], optional
176
+ The statuses to limit results by.
177
+ sequencing_order: str, optional
178
+ The order to sequence results by.
179
+ sequencing_property: str, optional
180
+ The property to sequence results by.
181
+ output_format: str, default = "JSON"
182
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
183
+ report_spec: str | dict , optional, default = "Referenceable"
184
+ - The desired output columns/fields to include.
185
+ start_from: int, [default=0], optional
186
+ When multiple pages of results are available, the page number to start from.
187
+ page_size: int, [default=100]
188
+ The number of items to return in a single page.
189
+ property_names: list[str], optional
190
+ The names of properties to search for.
191
+ body: dict | SearchStringRequestBody, optional, default = None
192
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
193
+
194
+ Returns
195
+ -------
196
+ List | str
197
+
198
+ Output depends on the output format specified.
199
+
200
+ Raises
201
+ -------
202
+
203
+ ValidationError
204
+ If the client passes incorrect parameters on the request that don't conform to the data model.
205
+ PyegeriaException
206
+ Issues raised in communicating or server side processing.
207
+ NotAuthorizedException
208
+ The principle specified by the user_id does not have authorization for the requested action
209
+
210
+ """
211
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/in-domain/by-search-string"
212
+ response = await self._async_find_request(url, _type="Asset", _gen_output=self._generate_asset_output,
213
+ search_string=search_string, starts_with=starts_with,
214
+ ends_with=ends_with, ignore_case=ignore_case,
215
+ anchor_domain=anchor_domain,
216
+ metadata_element_type=metadata_element_type,
217
+ metadata_element_subtypes=metadata_element_subtypes,
218
+ skip_relationships=skip_relationships,
219
+ include_only_relationships=include_only_relationships,
220
+ skip_classified_elements=skip_classified_elements,
221
+ include_only_classified_elements=include_only_classified_elements,
222
+ graph_query_depth=graph_query_depth,
223
+ governance_zone_filter=governance_zone_filter,
224
+ as_of_time=as_of_time, effective_time=effective_time,
225
+ relationship_page_size=relationship_page_size,
226
+ limit_results_by_status=limit_results_by_status,
227
+ sequencing_order=sequencing_order,
228
+ sequencing_property=sequencing_property,
229
+ output_format=output_format, report_spec=report_spec,
230
+ start_from=start_from, page_size=page_size,
231
+ property_names=property_names, body=body)
232
+
233
+ return response
234
+
235
+ @dynamic_catch
236
+ def find_in_asset_domain(self, search_string: str = "*",
237
+ starts_with: bool = True, ends_with: bool = False,
238
+ ignore_case: bool = False,
239
+ anchor_domain: Optional[str] = None,
240
+ metadata_element_type: Optional[str] = None,
241
+ metadata_element_subtypes: Optional[list[str]] = None,
242
+ skip_relationships: Optional[list[str]] = None,
243
+ include_only_relationships: Optional[list[str]] = None,
244
+ skip_classified_elements: Optional[list[str]] = None,
245
+ include_only_classified_elements: Optional[list[str]] = None,
246
+ graph_query_depth: int = 3,
247
+ governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
248
+ effective_time: Optional[str] = None, relationship_page_size: int = 0,
249
+ limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
250
+ sequencing_property: Optional[str] = None,
251
+ output_format: str = "JSON",
252
+ report_spec: str | dict = "Referenceable",
253
+ start_from: int = 0, page_size: int = 100,
254
+ property_names: Optional[list[str]] = None,
255
+ body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
256
+ """ Retrieve the list of asset metadata elements that contain the search string.
257
+
258
+ Parameters
259
+ ----------
260
+ search_string: str
261
+ Search string to match against - None or '*' indicate match against all assets.
262
+ starts_with : bool, [default=True], optional
263
+ Starts with the supplied string.
264
+ ends_with : bool, [default=False], optional
265
+ Ends with the supplied string
266
+ ignore_case : bool, [default=False], optional
267
+ Ignore case when searching
268
+ anchor_domain: str, optional
269
+ The anchor domain to search in.
270
+ metadata_element_type: str, optional
271
+ The type of metadata element to search for.
272
+ metadata_element_subtypes: list[str], optional
273
+ The subtypes of metadata element to search for.
274
+ skip_relationships: list[str], optional
275
+ The types of relationships to skip.
276
+ include_only_relationships: list[str], optional
277
+ The types of relationships to include.
278
+ skip_classified_elements: list[str], optional
279
+ The types of classified elements to skip.
280
+ include_only_classified_elements: list[str], optional
281
+ The types of classified elements to include.
282
+ graph_query_depth: int, [default=3], optional
283
+ The depth of the graph query.
284
+ governance_zone_filter: list[str], optional
285
+ The governance zones to search in.
286
+ as_of_time: str, optional
287
+ The time to search as of.
288
+ effective_time: str, optional
289
+ The effective time to search at.
290
+ relationship_page_size: int, [default=0], optional
291
+ The page size for relationships.
292
+ limit_results_by_status: list[str], optional
293
+ The statuses to limit results by.
294
+ sequencing_order: str, optional
295
+ The order to sequence results by.
296
+ sequencing_property: str, optional
297
+ The property to sequence results by.
298
+ output_format: str, default = "JSON"
299
+ - one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
300
+ report_spec: str | dict , optional, default = "Referenceable"
301
+ - The desired output columns/fields to include.
302
+ start_from: int, [default=0], optional
303
+ When multiple pages of results are available, the page number to start from.
304
+ page_size: int, [default=100]
305
+ The number of items to return in a single page.
306
+ property_names: list[str], optional
307
+ The names of properties to search for.
308
+ body: dict | SearchStringRequestBody, optional, default = None
309
+ - if provided, the search parameters in the body will supercede other attributes, such as "search_string"
310
+
311
+ Returns
312
+ -------
313
+ List | str
314
+
315
+ Output depends on the output format specified.
316
+
317
+ Raises
318
+ -------
319
+
320
+ ValidationError
321
+ If the client passes incorrect parameters on the request that don't conform to the data model.
322
+ PyegeriaException
323
+ Issues raised in communicating or server side processing.
324
+ NotAuthorizedException
325
+ The principle specified by the user_id does not have authorization for the requested action
326
+
327
+ """
328
+ loop = asyncio.get_event_loop()
329
+ return loop.run_until_complete(self._async_find_in_asset_domain(search_string=search_string,
330
+ starts_with=starts_with,
331
+ ends_with=ends_with,
332
+ ignore_case=ignore_case,
333
+ anchor_domain=anchor_domain,
334
+ metadata_element_type=metadata_element_type,
335
+ metadata_element_subtypes=metadata_element_subtypes,
336
+ skip_relationships=skip_relationships,
337
+ include_only_relationships=include_only_relationships,
338
+ skip_classified_elements=skip_classified_elements,
339
+ include_only_classified_elements=include_only_classified_elements,
340
+ graph_query_depth=graph_query_depth,
341
+ governance_zone_filter=governance_zone_filter,
342
+ as_of_time=as_of_time,
343
+ effective_time=effective_time,
344
+ relationship_page_size=relationship_page_size,
345
+ limit_results_by_status=limit_results_by_status,
346
+ sequencing_order=sequencing_order,
347
+ sequencing_property=sequencing_property,
348
+ output_format=output_format,
349
+ report_spec=report_spec,
350
+ start_from=start_from,
351
+ page_size=page_size,
352
+ property_names=property_names,
353
+ body=body))
354
+
355
+ async def _async_get_asset_graph(
356
+ self,
357
+ asset_guid: str,
358
+ start_from: int = 0,
359
+ page_size: int = 0,
360
+ output_format: str = "MERMAID",
361
+ report_spec: str = "Common-Mermaid",
362
+ body: Optional[dict | ResultsRequestBody] = None
363
+ ) -> str | dict:
364
+ """Return all the elements that are anchored to an asset plus relationships between these elements and to
365
+ other elements. Async version.
366
+
367
+ Parameters
368
+ ----------
369
+ asset_guid : str
370
+ The unique identity of the asset to get the graph for.
371
+ start_from : int, optional
372
+ The index from which to start fetching. Default is 0.
373
+ page_size : int, optional
374
+ The maximum number of items to fetch. Default is 0 (all).
375
+ output_format : str, default = "MERMAID"
376
+ The desired output format. One of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID", or "JSON".
377
+ report_spec : str | dict, optional
378
+ The desired output columns/fields to include. Default is "Common-Mermaid".
379
+ body : dict | ResultsRequestBody, optional
380
+ If provided, the search parameters in the body will supersede other attributes.
381
+
382
+ Returns
383
+ -------
384
+ str | dict
385
+ The asset graph in the requested format.
386
+
387
+ Raises
388
+ ------
389
+ PyegeriaException
390
+ If there are issues in communications, message format, or Egeria errors.
391
+ PyegeriaNotAuthorizedException
392
+ The principle specified by the user_id does not have authorization.
393
+ """
394
+
395
+ url = (
396
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/{asset_guid}/"
397
+ f"as-graph"
398
+ )
399
+ response = await self._async_get_results_body_request(url, "Asset", self._generate_asset_output,
400
+ start_from, page_size, output_format, report_spec, body)
401
+ return response
402
+
403
+ def get_asset_graph(
404
+ self,
405
+ asset_guid: str,
406
+ start_from: int = 0,
407
+ page_size: int = 0,
408
+ output_format: str = "MERMAID",
409
+ report_spec: str = "Common-Mermaid",
410
+ body: Optional[dict | ResultsRequestBody] = None
411
+ ) -> str | dict:
412
+ """Return all the elements that are anchored to an asset plus relationships between these elements and to
413
+ other elements.
414
+
415
+ Parameters
416
+ ----------
417
+ asset_guid : str
418
+ The unique identity of the asset to get the graph for.
419
+ start_from : int, optional
420
+ The index from which to start fetching. Default is 0.
421
+ page_size : int, optional
422
+ The maximum number of items to fetch. Default is 0 (all).
423
+ output_format : str, default = "MERMAID"
424
+ The desired output format. One of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID", or "JSON".
425
+ report_spec : str | dict, optional
426
+ The desired output columns/fields to include. Default is "Common-Mermaid".
427
+ body : dict | ResultsRequestBody, optional
428
+ If provided, the search parameters in the body will supersede other attributes.
429
+
430
+ Returns
431
+ -------
432
+ str | dict
433
+ The asset graph in the requested format.
434
+
435
+ Raises
436
+ ------
437
+ PyegeriaException
438
+ If there are issues in communications, message format, or Egeria errors.
439
+ PyegeriaNotAuthorizedException
440
+ The principle specified by the user_id does not have authorization.
441
+ """
442
+
443
+ loop = asyncio.get_event_loop()
444
+ response = loop.run_until_complete(
445
+ self._async_get_asset_graph(asset_guid, start_from, page_size, output_format,
446
+ report_spec, body)
447
+ )
448
+ return response
449
+
450
+ def get_asset_mermaid_graph(
451
+ self,
452
+ asset_guid: str,
453
+ start_from: int = 0,
454
+ page_size: int = 0,
455
+ ) -> str:
456
+ """Return the asset graph as mermaid markdown string.
457
+ Parameters
458
+ ----------
459
+ asset_guid : str
460
+ The unique identity of the asset to get the graph for.
461
+
462
+ start_from : int, optional
463
+ The index from which to start fetching the engine actions. Default is 0.
464
+
465
+ page_size : int, optional
466
+ The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
467
+
468
+ Returns
469
+ -------
470
+ str
471
+ A mermaid string representing the asset graph.
472
+
473
+ Raises
474
+ ------
475
+ PyegeriaException
476
+ One of the pyegeria exceptions will be raised if there are issues in communications, message format, or
477
+ Egeria errors.
478
+ PyegeriaNotAuthorizedException
479
+ The principle specified by the user_id does not have authorization for the requested action
480
+
481
+ """
482
+
483
+ asset_graph = self.get_asset_graph(asset_guid, start_from, page_size)
484
+ return asset_graph[0]
485
+
486
+ async def _async_get_asset_lineage_graph(
487
+ self,
488
+ asset_guid: str,
489
+ effective_time: Optional[str] = None,
490
+ as_of_time: Optional[str] = None,
491
+ relationship_types: [str] = None,
492
+ limit_to_isc_q_name: Optional[str] = None,
493
+ hilight_isc_q_name: Optional[str] = None,
494
+ all_anchors: bool = False,
495
+ start_from: int = 0,
496
+ page_size: int =0,
497
+ output_format: str = "DICT",
498
+ report_spec: str = "Common-Mermaid",
499
+
500
+ ) -> str | dict:
501
+ """Return the asset lineage including a mermaid markdown string. Async version.
502
+
503
+ Parameters
504
+ ----------
505
+ asset_guid : str
506
+ The unique identity of the asset to get the graph for.
507
+ effective_time : str, optional
508
+ Effective time to query on. If not specified, the current time is used.
509
+ as_of_time : str, optional
510
+ As-of time to query on. If not specified, the current time is used.
511
+ relationship_types : list[str], optional
512
+ Relationship types to include in the lineage graph. If not specified, all relationship types are included.
513
+ limit_to_isc_q_name : str, optional
514
+ If specified, filters results to only include information supply chains with the given qualified name.
515
+ hilight_isc_q_name : str, optional
516
+ If specified, highlights the information supply chain with the given qualified name.
517
+ all_anchors : bool, optional
518
+ Whether to include all anchors. Default is False.
519
+ start_from : int, optional
520
+ The index from which to start fetching. Default is 0.
521
+ page_size : int, optional
522
+ The maximum number of items to fetch. Default is 0 (all).
523
+ output_format : str, optional
524
+ The desired output format. Default is "DICT".
525
+ report_spec : str, optional
526
+ The desired output columns/fields to include. Default is "Common-Mermaid".
527
+
528
+ Returns
529
+ -------
530
+ str | dict
531
+ A dictionary of the asset graph that includes a mermaid markdown string.
532
+
533
+ Raises
534
+ ------
535
+ PyegeriaException
536
+ If there are issues in communications, message format, or Egeria errors.
537
+ """
538
+
539
+ url = (
540
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/{asset_guid}/"
541
+ f"as-lineage-graph"
542
+ )
543
+ body = {
544
+ "class": "AssetLineageGraphRequestBody",
545
+ "effectiveTime": effective_time,
546
+ "asOfTime": as_of_time,
547
+ "relationshipTypes": relationship_types,
548
+ "limitToISCQualifiedName": limit_to_isc_q_name,
549
+ "highlightISCQualifiedName": hilight_isc_q_name,
550
+ "allAnchors": all_anchors,
551
+ "startFrom": start_from,
552
+ "pageSize": page_size
553
+ }
554
+
555
+ response = await self._async_make_request("POST", url, body_slimmer(body))
556
+ element = response.json().get("element",NO_ASSETS_FOUND)
557
+ if type(element) is str:
558
+ logger.info(NO_ELEMENTS_FOUND)
559
+ return NO_ELEMENTS_FOUND
560
+
561
+ if output_format != 'JSON': # return a simplified markdown representation
562
+ logger.info(f"Found elements, output format: {output_format} and report_spec: {report_spec}")
563
+ return self._generate_asset_output(element, None, "Asset",
564
+ output_format, report_spec)
565
+ return element
566
+
567
+
568
+ def get_asset_lineage_graph(
569
+ self,
570
+ asset_guid: str,
571
+ effective_time: Optional[str] = None,
572
+ as_of_time: Optional[str] = None,
573
+ relationship_types: [str] = None,
574
+ limit_to_isc_q_name: Optional[str] = None,
575
+ hilight_isc_q_name: Optional[str] = None,
576
+ all_anchors: bool = False,
577
+ start_from: int = 0,
578
+ page_size: int = 0,
579
+ output_format: str = "DICT",
580
+ report_spec: str = "Common-Mermaid",
581
+ ) -> str | dict:
582
+ """Return the asset lineage including a mermaid markdown string.
583
+
584
+ Parameters
585
+ ----------
586
+ asset_guid : str
587
+ The unique identity of the asset to get the graph for.
588
+ effective_time : str, optional
589
+ Effective time to query on. If not specified, the current time is used.
590
+ as_of_time : str, optional
591
+ As-of time to query on. If not specified, the current time is used.
592
+ relationship_types : list[str], optional
593
+ Relationship types to include in the lineage graph. If not specified, all relationship types are included.
594
+ limit_to_isc_q_name : str, optional
595
+ If specified, filters results to only include information supply chains with the given qualified name.
596
+ hilight_isc_q_name : str, optional
597
+ If specified, highlights the information supply chain with the given qualified name.
598
+ all_anchors : bool, optional
599
+ Whether to include all anchors. Default is False.
600
+ start_from : int, optional
601
+ The index from which to start fetching. Default is 0.
602
+ page_size : int, optional
603
+ The maximum number of items to fetch. Default is 0 (all).
604
+ output_format : str, optional
605
+ The desired output format. Default is "DICT".
606
+ report_spec : str, optional
607
+ The desired output columns/fields to include. Default is "Common-Mermaid".
608
+
609
+ Returns
610
+ -------
611
+ str | dict
612
+ A dictionary of the asset graph that includes a mermaid markdown string.
613
+
614
+ Raises
615
+ ------
616
+ PyegeriaException
617
+ If there are issues in communications, message format, or Egeria errors.
618
+ """
619
+
620
+ loop = asyncio.get_event_loop()
621
+ response = loop.run_until_complete(
622
+ self._async_get_asset_lineage_graph(asset_guid, effective_time, as_of_time, relationship_types,
623
+ limit_to_isc_q_name, hilight_isc_q_name, all_anchors,
624
+ start_from, page_size, output_format, report_spec)
625
+ )
626
+ return response
627
+
628
+ def get_asset_lineage_mermaid_graph(
629
+ self,
630
+ asset_guid: str,
631
+ effective_time: Optional[str] = None,
632
+ as_of_time: Optional[str] = None,
633
+ relationship_types: [str] = None,
634
+ limit_to_isc_q_name: Optional[str] = None,
635
+ hilight_isc_q_name: Optional[str] = None,
636
+ start_from: int = 0,
637
+ page_size: int = max_paging_size,
638
+ ) -> str:
639
+ """Return the asset lineage including a mermaid markdown string. Async Version.
640
+ Parameters
641
+ ----------
642
+ asset_guid : str
643
+ The unique identity of the asset to get the graph for.
644
+ effective_time: str, default is None
645
+ Effective time to query on. If not specified, the current time is used.
646
+ as_of_time: str = None
647
+ as_of_time to query on. If not specified, the current time is used.
648
+ relationship_types: [str], default is None,
649
+ relationship types to include in the lineage graph. If not specified, all relationship types are included.
650
+ limit_to_isc_q_name: Optional[str] = None,
651
+ if specified, filters results to only include information supply chains with the given name.
652
+ hilight_isc_q_name: Optional[str] = None,
653
+ if specified, highlights the information supply chain with the given name.
654
+
655
+ start_from : int, optional
656
+ The index from which to start fetching the engine actions. Default is 0.
657
+
658
+ page_size : int, optional
659
+ The maximum number of elements to fetch in a single request.
660
+ Default is `max_paging_size`.
661
+
662
+ Returns
663
+ -------
664
+ str
665
+ A mermaid string representing the lineage.
666
+
667
+ Raises:
668
+ ------
669
+ PyegeriaInvalidParameterException
670
+ PyegeriaAPIException
671
+ PyegeriaUnauthorizedException
672
+
673
+ """
674
+
675
+ asset_graph = self.get_asset_lineage_graph(asset_guid, effective_time,
676
+ as_of_time, relationship_types,
677
+ limit_to_isc_q_name, hilight_isc_q_name,
678
+ start_from, page_size, "JSON")
679
+ return asset_graph.get("mermaidGraph")
680
+
681
+
682
+ async def _async_get_assets_by_metadata_collection_id(
683
+ self,
684
+ metadata_collection_id: str,
685
+ type_name: Optional[str] = None,
686
+ effective_time: Optional[str] = None,
687
+ start_from: int = 0,
688
+ page_size: int = 0,
689
+ output_format: str = "JSON",
690
+ report_spec: str = "Referenceable",
691
+ ) -> str | list:
692
+ """Return a list of assets from the requested metadata collection. Async version.
693
+
694
+ Parameters
695
+ ----------
696
+ metadata_collection_id : str
697
+ The unique identity of the metadata collection to return assets from.
698
+ type_name : str, optional
699
+ An asset type to filter on. If not specified, all assets in the collection are returned.
700
+ effective_time : str, optional
701
+ The effective time to filter on. If not specified, the current time is used.
702
+ start_from : int, optional
703
+ The index from which to start fetching. Default is 0.
704
+ page_size : int, optional
705
+ The maximum number of assets to fetch in a single request. Default is 0 (all).
706
+ output_format : str, optional
707
+ The desired output format. Default is "JSON".
708
+ report_spec : str, optional
709
+ The desired output columns/fields to include. Default is "Referenceable".
710
+
711
+ Returns
712
+ -------
713
+ list | str
714
+ A list of assets or a string if an error occurs or no assets are found.
715
+
716
+ Raises
717
+ ------
718
+ PyegeriaException
719
+ If there are issues in communications, message format, or Egeria errors.
720
+ """
721
+
722
+ url = (
723
+ f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/by-metadata-collection-id/"
724
+ f"{metadata_collection_id}"
725
+ )
726
+
727
+ body = {"filter": type_name,
728
+ "effectiveTime": effective_time,
729
+ "startFrom": start_from,
730
+ "pageSize": page_size,
731
+ }
732
+ body_s = body_slimmer(body)
733
+ response = await self._async_make_request("POST", url, body_s)
734
+ elements = response.json().get("elements", "NO_ASSETS_FOUND")
735
+ if type(elements) is str:
736
+ logger.info(NO_ELEMENTS_FOUND)
737
+ return NO_ELEMENTS_FOUND
738
+
739
+ if output_format != 'JSON': # return a simplified markdown representation
740
+ logger.info(f"Found elements, output format: {output_format} and report_spec: {report_spec}")
741
+ return self._generate_asset_output(elements, None, "Asset",
742
+ output_format, report_spec)
743
+ return elements
744
+
745
+ def get_assets_by_metadata_collection_id(
746
+ self,
747
+ metadata_collection_id: str,
748
+ type_name: Optional[str] = None,
749
+ effective_time: Optional[str] = None,
750
+ start_from: int = 0,
751
+ page_size: int = max_paging_size,
752
+ output_format: str = "JSON",
753
+ report_spec: str = "Referenceable",
754
+ ) -> str | list:
755
+ """Return a list of assets from the requested metadata collection.
756
+
757
+ Parameters
758
+ ----------
759
+ metadata_collection_id : str
760
+ The unique identity of the metadata collection to return assets from.
761
+ type_name : str, optional
762
+ An asset type to filter on. If not specified, all assets in the collection are returned.
763
+ effective_time : str, optional
764
+ The effective time to filter on. If not specified, the current time is used.
765
+ start_from : int, optional
766
+ The index from which to start fetching. Default is 0.
767
+ page_size : int, optional
768
+ The maximum number of assets to fetch in a single request. Default is `max_paging_size`.
769
+ output_format : str, optional
770
+ The desired output format. Default is "JSON".
771
+ report_spec : str, optional
772
+ The desired output columns/fields to include. Default is "Referenceable".
773
+
774
+ Returns
775
+ -------
776
+ list | str
777
+ A list of assets or a string if an error occurs or no assets are found.
778
+
779
+ Raises
780
+ ------
781
+ PyegeriaException
782
+ If there are issues in communications, message format, or Egeria errors.
783
+ """
784
+
785
+ loop = asyncio.get_event_loop()
786
+ response = loop.run_until_complete(
787
+ self._async_get_assets_by_metadata_collection_id(
788
+ metadata_collection_id,
789
+ type_name,
790
+ effective_time,
791
+ start_from,
792
+ page_size,
793
+ output_format,
794
+ report_spec,
795
+ )
796
+ )
797
+ return response
798
+
799
+
800
+
801
+
802
+ async def _async_get_asset_types(self) -> list | str:
803
+ """Return the list of asset types supported by the Asset Catalog View Service. Async version.
804
+
805
+ Returns
806
+ -------
807
+ list | str
808
+ A list of asset types or NO_ASSETS_FOUND.
809
+
810
+ Raises
811
+ ------
812
+ PyegeriaException
813
+ If there are issues in communications, message format, or Egeria errors.
814
+ """
815
+
816
+ url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/types"
817
+
818
+ response = await self._async_make_request("GET", url)
819
+
820
+ return response.json().get("types", "NO_ASSETS_FOUND")
821
+
822
+ def get_asset_types(self) -> list | str:
823
+ """Return the list of asset types supported by the Asset Catalog View Service.
824
+
825
+ Returns
826
+ -------
827
+ list | str
828
+ A list of asset types or NO_ASSETS_FOUND.
829
+
830
+ Raises
831
+ ------
832
+ PyegeriaException
833
+ If there are issues in communications, message format, or Egeria errors.
834
+ """
835
+
836
+ loop = asyncio.get_event_loop()
837
+ response = loop.run_until_complete(self._async_get_asset_types())
838
+ return response
839
+
840
+
841
+ if __name__ == "__main__":
842
+ print("Main-asset-catalog")