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.
- commands/__init__.py +24 -0
- commands/cat/Dr-Egeria_md-orig.py +2 -2
- commands/cat/__init__.py +1 -17
- commands/cat/collection_actions.py +197 -0
- commands/cat/dr_egeria_command_help.py +372 -0
- commands/cat/dr_egeria_jupyter.py +7 -7
- commands/cat/dr_egeria_md.py +27 -182
- commands/cat/exp_list_glossaries.py +11 -14
- commands/cat/get_asset_graph.py +37 -267
- commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
- commands/cat/get_project_dependencies.py +14 -14
- commands/cat/get_project_structure.py +15 -14
- commands/cat/get_tech_type_elements.py +16 -116
- commands/cat/glossary_actions.py +145 -298
- commands/cat/list_assets.py +3 -11
- commands/cat/list_cert_types.py +17 -63
- commands/cat/list_collections.py +46 -138
- commands/cat/list_deployed_catalogs.py +15 -27
- commands/cat/list_deployed_database_schemas.py +27 -43
- commands/cat/list_deployed_databases.py +16 -31
- commands/cat/list_deployed_servers.py +35 -54
- commands/cat/list_glossaries.py +18 -17
- commands/cat/list_projects.py +10 -12
- commands/cat/list_tech_type_elements.py +21 -37
- commands/cat/list_tech_types.py +13 -25
- commands/cat/list_terms.py +38 -79
- commands/cat/list_todos.py +4 -11
- commands/cat/list_user_ids.py +3 -10
- commands/cat/my_reports.py +559 -0
- commands/cat/run_report.py +394 -0
- commands/cat/run_report_orig.py +528 -0
- commands/cli/egeria.py +222 -247
- commands/cli/egeria_cat.py +68 -81
- commands/cli/egeria_my.py +13 -0
- commands/cli/egeria_ops.py +69 -74
- commands/cli/egeria_tech.py +17 -93
- commands/cli/ops_config.py +3 -6
- commands/{cat/list_categories.py → deprecated/list_data_designer.py} +53 -64
- commands/{cat/list_data_structures.py → deprecated/list_data_structures_full.py} +3 -6
- commands/deprecated/old_get_asset_graph.py +315 -0
- commands/my/__init__.py +0 -2
- commands/my/list_my_profile.py +27 -34
- commands/my/list_my_roles.py +1 -7
- commands/my/monitor_my_todos.py +1 -7
- commands/my/monitor_open_todos.py +6 -7
- commands/my/todo_actions.py +4 -5
- commands/ops/__init__.py +0 -2
- commands/ops/gov_server_actions.py +17 -21
- commands/ops/list_archives.py +17 -38
- commands/ops/list_catalog_targets.py +33 -40
- commands/ops/load_archive.py +35 -26
- commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
- commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
- commands/ops/monitor_engine_activity.py +79 -77
- commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
- commands/ops/monitor_platform_status.py +38 -50
- commands/ops/monitor_server_startup.py +6 -11
- commands/ops/monitor_server_status.py +7 -11
- commands/ops/orig_monitor_server_list.py +8 -8
- commands/ops/orig_monitor_server_status.py +1 -5
- commands/ops/refresh_integration_daemon.py +5 -5
- commands/ops/restart_integration_daemon.py +5 -5
- commands/ops/table_integ_daemon_status.py +6 -6
- commands/ops/x_engine_actions.py +7 -7
- commands/tech/__init__.py +0 -2
- commands/tech/{generic_actions.py → element_actions.py} +6 -11
- commands/tech/get_element_info.py +20 -29
- commands/tech/get_guid_info.py +23 -42
- commands/tech/get_tech_details.py +20 -35
- commands/tech/get_tech_type_template.py +28 -39
- commands/tech/list_all_om_type_elements.py +24 -30
- commands/tech/list_all_om_type_elements_x.py +22 -28
- commands/tech/list_all_related_elements.py +19 -28
- commands/tech/list_anchored_elements.py +22 -30
- commands/tech/list_asset_types.py +19 -24
- commands/tech/list_elements_by_classification_by_property_value.py +26 -32
- commands/tech/list_elements_by_property_value.py +19 -25
- commands/tech/list_elements_by_property_value_x.py +20 -28
- commands/tech/list_elements_for_classification.py +28 -41
- commands/tech/list_gov_action_processes.py +16 -27
- commands/tech/list_information_supply_chains.py +22 -30
- commands/tech/list_registered_services.py +14 -26
- commands/tech/list_related_elements_with_prop_value.py +15 -25
- commands/tech/list_related_specification.py +1 -4
- commands/tech/list_relationship_types.py +15 -25
- commands/tech/list_relationships.py +20 -36
- commands/tech/list_solution_blueprints.py +28 -33
- commands/tech/list_solution_components.py +23 -29
- commands/tech/list_solution_roles.py +21 -32
- commands/tech/list_tech_templates.py +51 -54
- commands/tech/list_valid_metadata_values.py +5 -9
- commands/tech/table_tech_templates.py +2 -6
- commands/tech/x_list_related_elements.py +1 -4
- examples/GeoSpatial Products Example.py +524 -0
- examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
- examples/Jupyter Notebooks/README.md +2 -0
- examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
- examples/Jupyter Notebooks/common/__init__.py +14 -0
- examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
- examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
- examples/Jupyter Notebooks/common/globals.ipynb +184 -0
- examples/Jupyter Notebooks/common/globals.py +154 -0
- examples/Jupyter Notebooks/common/orig_globals.py +152 -0
- examples/format_sets/all_format_sets.json +910 -0
- examples/format_sets/custom_format_sets.json +268 -0
- examples/format_sets/subset_format_sets.json +187 -0
- examples/format_sets_save_load_example.py +291 -0
- examples/jacquard_data_sets.py +129 -0
- examples/output_formats_example.py +193 -0
- examples/test_jacquard_data_sets.py +54 -0
- examples/test_jacquard_data_sets_scenarios.py +94 -0
- md_processing/__init__.py +90 -0
- md_processing/command_dispatcher.py +33 -0
- md_processing/command_mapping.py +221 -0
- md_processing/data/commands/commands_data_designer.json +537 -0
- md_processing/data/commands/commands_external_reference.json +733 -0
- md_processing/data/commands/commands_feedback.json +155 -0
- md_processing/data/commands/commands_general.json +204 -0
- md_processing/data/commands/commands_glossary.json +218 -0
- md_processing/data/commands/commands_governance.json +3678 -0
- md_processing/data/commands/commands_product_manager.json +865 -0
- md_processing/data/commands/commands_project.json +642 -0
- md_processing/data/commands/commands_solution_architect.json +366 -0
- md_processing/data/commands.json +17568 -0
- md_processing/data/commands_working.json +30641 -0
- md_processing/data/gened_report_specs.py +6584 -0
- md_processing/data/generated_format_sets.json +6533 -0
- md_processing/data/generated_format_sets_old.json +4137 -0
- md_processing/data/generated_format_sets_old.py +45 -0
- md_processing/dr_egeria.py +182 -0
- md_processing/md_commands/__init__.py +3 -0
- md_processing/md_commands/data_designer_commands.py +1276 -0
- md_processing/md_commands/ext_ref_commands.py +530 -0
- md_processing/md_commands/feedback_commands.py +726 -0
- md_processing/md_commands/glossary_commands.py +684 -0
- md_processing/md_commands/governance_officer_commands.py +600 -0
- md_processing/md_commands/product_manager_commands.py +1266 -0
- md_processing/md_commands/project_commands.py +383 -0
- md_processing/md_commands/solution_architect_commands.py +1184 -0
- md_processing/md_commands/view_commands.py +295 -0
- md_processing/md_processing_utils/__init__.py +4 -0
- md_processing/md_processing_utils/common_md_proc_utils.py +1249 -0
- md_processing/md_processing_utils/common_md_utils.py +578 -0
- md_processing/md_processing_utils/determine_width.py +103 -0
- md_processing/md_processing_utils/extraction_utils.py +547 -0
- md_processing/md_processing_utils/gen_report_specs.py +643 -0
- md_processing/md_processing_utils/generate_dr_help.py +193 -0
- md_processing/md_processing_utils/generate_md_cmd_templates.py +144 -0
- md_processing/md_processing_utils/generate_md_templates.py +83 -0
- md_processing/md_processing_utils/md_processing_constants.py +1228 -0
- md_processing/md_processing_utils/message_constants.py +19 -0
- pyegeria/__init__.py +201 -443
- pyegeria/core/__init__.py +40 -0
- pyegeria/core/_base_platform_client.py +574 -0
- pyegeria/core/_base_server_client.py +573 -0
- pyegeria/core/_exceptions.py +457 -0
- pyegeria/core/_globals.py +60 -0
- pyegeria/core/_server_client.py +6073 -0
- pyegeria/core/_validators.py +257 -0
- pyegeria/core/config.py +654 -0
- pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
- pyegeria/core/load_config.py +37 -0
- pyegeria/core/logging_configuration.py +207 -0
- pyegeria/core/mcp_adapter.py +144 -0
- pyegeria/core/mcp_server.py +212 -0
- pyegeria/core/utils.py +405 -0
- pyegeria/deprecated/__init__.py +0 -0
- pyegeria/{_client.py → deprecated/_client.py} +62 -24
- pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
- pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1988 -1878
- pyegeria/deprecated/output_formatter_with_machine_keys.py +1127 -0
- pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +216 -229
- pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
- pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
- pyegeria/egeria_cat_client.py +25 -51
- pyegeria/egeria_client.py +140 -98
- pyegeria/egeria_config_client.py +48 -24
- pyegeria/egeria_tech_client.py +170 -83
- pyegeria/models/__init__.py +150 -0
- pyegeria/models/collection_models.py +168 -0
- pyegeria/models/models.py +654 -0
- pyegeria/omvs/__init__.py +84 -0
- pyegeria/omvs/action_author.py +342 -0
- pyegeria/omvs/actor_manager.py +5980 -0
- pyegeria/omvs/asset_catalog.py +842 -0
- pyegeria/omvs/asset_maker.py +2736 -0
- pyegeria/omvs/automated_curation.py +4403 -0
- pyegeria/omvs/classification_manager.py +11213 -0
- pyegeria/omvs/collection_manager.py +5780 -0
- pyegeria/omvs/community_matters_omvs.py +468 -0
- pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
- pyegeria/{data_designer_omvs.py → omvs/data_designer.py} +1991 -1691
- pyegeria/omvs/data_discovery.py +869 -0
- pyegeria/omvs/data_engineer.py +372 -0
- pyegeria/omvs/digital_business.py +1133 -0
- pyegeria/omvs/external_links.py +1752 -0
- pyegeria/omvs/feedback_manager.py +834 -0
- pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
- pyegeria/omvs/glossary_manager.py +3231 -0
- pyegeria/omvs/governance_officer.py +3009 -0
- pyegeria/omvs/lineage_linker.py +314 -0
- pyegeria/omvs/location_arena.py +1525 -0
- pyegeria/omvs/metadata_expert.py +668 -0
- pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
- pyegeria/omvs/my_profile.py +1042 -0
- pyegeria/omvs/notification_manager.py +358 -0
- pyegeria/omvs/people_organizer.py +394 -0
- pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
- pyegeria/omvs/product_manager.py +1825 -0
- pyegeria/omvs/project_manager.py +1907 -0
- pyegeria/omvs/reference_data.py +1140 -0
- pyegeria/omvs/registered_info.py +334 -0
- pyegeria/omvs/runtime_manager.py +2817 -0
- pyegeria/omvs/schema_maker.py +446 -0
- pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
- pyegeria/omvs/solution_architect.py +6490 -0
- pyegeria/omvs/specification_properties.py +37 -0
- pyegeria/omvs/subject_area.py +1042 -0
- pyegeria/omvs/template_manager_omvs.py +236 -0
- pyegeria/omvs/time_keeper.py +1761 -0
- pyegeria/omvs/valid_metadata.py +3221 -0
- pyegeria/omvs/valid_metadata_lists.py +37 -0
- pyegeria/omvs/valid_type_lists.py +37 -0
- pyegeria/view/__init__.py +28 -0
- pyegeria/view/_output_format_models.py +514 -0
- pyegeria/view/_output_formats.py +14 -0
- pyegeria/view/base_report_formats.py +2719 -0
- pyegeria/view/dr_egeria_reports.py +56 -0
- pyegeria/view/format_set_executor.py +397 -0
- pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
- pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
- pyegeria/view/output_formatter.py +1297 -0
- pyegeria-5.5.3.3.dist-info/METADATA +218 -0
- pyegeria-5.5.3.3.dist-info/RECORD +241 -0
- {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
- pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
- pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
- commands/cat/.DS_Store +0 -0
- commands/cat/README.md +0 -16
- commands/cli/txt_custom_v2.tcss +0 -19
- commands/my/README.md +0 -17
- commands/ops/README.md +0 -24
- commands/ops/monitor_asset_events.py +0 -108
- commands/tech/README.md +0 -24
- pyegeria/.DS_Store +0 -0
- pyegeria/README.md +0 -35
- pyegeria/_globals.py +0 -47
- pyegeria/_validators.py +0 -385
- pyegeria/asset_catalog_omvs.py +0 -864
- pyegeria/automated_curation_omvs.py +0 -3765
- pyegeria/collection_manager_omvs.py +0 -2744
- pyegeria/dr.egeria spec.md +0 -9
- pyegeria/egeria_my_client.py +0 -56
- pyegeria/feedback_manager_omvs.py +0 -4573
- pyegeria/glossary_browser_omvs.py +0 -3728
- pyegeria/glossary_manager_omvs.py +0 -2440
- pyegeria/m_test.py +0 -118
- pyegeria/md_processing_helpers.py +0 -58
- pyegeria/md_processing_utils_orig.py +0 -1103
- pyegeria/metadata_explorer_omvs.py +0 -2326
- pyegeria/my_profile_omvs.py +0 -1022
- pyegeria/output_formatter.py +0 -389
- pyegeria/project_manager_omvs.py +0 -1933
- pyegeria/registered_info.py +0 -167
- pyegeria/solution_architect_omvs.py +0 -2156
- pyegeria/template_manager_omvs.py +0 -1414
- pyegeria/utils.py +0 -197
- pyegeria-5.3.9.9.3.dist-info/METADATA +0 -72
- pyegeria-5.3.9.9.3.dist-info/RECORD +0 -143
- pyegeria-5.3.9.9.3.dist-info/entry_points.txt +0 -99
- /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
- {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
|
@@ -0,0 +1,869 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PDX-License-Identifier: Apache-2.0
|
|
3
|
+
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
+
|
|
5
|
+
This module contains the Data Discovery 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
|
+
NewElementRequestBody,
|
|
16
|
+
DeleteElementRequestBody,
|
|
17
|
+
UpdateElementRequestBody,
|
|
18
|
+
TemplateRequestBody,
|
|
19
|
+
FilterRequestBody,
|
|
20
|
+
SearchStringRequestBody,
|
|
21
|
+
GetRequestBody,
|
|
22
|
+
ReferenceableProperties,
|
|
23
|
+
)
|
|
24
|
+
from pyegeria.view.output_formatter import (
|
|
25
|
+
generate_output,
|
|
26
|
+
populate_common_columns,
|
|
27
|
+
overlay_additional_values,
|
|
28
|
+
)
|
|
29
|
+
from pyegeria.core.utils import dynamic_catch
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class AnnotationProperties(ReferenceableProperties):
|
|
33
|
+
class_: Annotated[Literal["AnnotationProperties"], Field(alias="class")]
|
|
34
|
+
annotation_type: Optional[str] = None
|
|
35
|
+
summary: Optional[str] = None
|
|
36
|
+
confidence_level: Optional[int] = None
|
|
37
|
+
expression: Optional[str] = None
|
|
38
|
+
explanation: Optional[str] = None
|
|
39
|
+
analysis_step: Optional[str] = None
|
|
40
|
+
json_properties: Optional[str] = None
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class DataDiscovery(ServerClient):
|
|
44
|
+
"""
|
|
45
|
+
Client for the Data Discovery View Service.
|
|
46
|
+
|
|
47
|
+
The Data Discovery View Service provides methods to manage annotations and analysis reports.
|
|
48
|
+
|
|
49
|
+
Attributes
|
|
50
|
+
----------
|
|
51
|
+
view_server : str
|
|
52
|
+
The name of the View Server to use.
|
|
53
|
+
platform_url : str
|
|
54
|
+
URL of the server platform to connect to.
|
|
55
|
+
user_id : str
|
|
56
|
+
The identity of the user calling the method.
|
|
57
|
+
user_pwd : str
|
|
58
|
+
The password associated with the user_id. Defaults to None.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
def __init__(
|
|
62
|
+
self,
|
|
63
|
+
view_server: str,
|
|
64
|
+
platform_url: str,
|
|
65
|
+
user_id: str,
|
|
66
|
+
user_pwd: Optional[str] = None,
|
|
67
|
+
token: Optional[str] = None,
|
|
68
|
+
):
|
|
69
|
+
super().__init__(view_server, platform_url, user_id, user_pwd, token)
|
|
70
|
+
self.view_server = view_server
|
|
71
|
+
self.platform_url = platform_url
|
|
72
|
+
self.user_id = user_id
|
|
73
|
+
self.user_pwd = user_pwd
|
|
74
|
+
self.url_marker = "data-discovery"
|
|
75
|
+
|
|
76
|
+
def _extract_annotation_properties(self, element: dict, columns_struct: dict) -> dict:
|
|
77
|
+
col_data = populate_common_columns(element, columns_struct)
|
|
78
|
+
props = element.get("properties", {})
|
|
79
|
+
overlay_additional_values(col_data, props)
|
|
80
|
+
return col_data
|
|
81
|
+
|
|
82
|
+
def _generate_annotation_output(
|
|
83
|
+
self,
|
|
84
|
+
elements: dict | list[dict],
|
|
85
|
+
filter: Optional[str],
|
|
86
|
+
element_type_name: Optional[str],
|
|
87
|
+
output_format: str = "DICT",
|
|
88
|
+
report_spec: dict | str = None,
|
|
89
|
+
) -> str | list[dict]:
|
|
90
|
+
return generate_output(
|
|
91
|
+
elements,
|
|
92
|
+
filter,
|
|
93
|
+
element_type_name,
|
|
94
|
+
output_format,
|
|
95
|
+
self._extract_annotation_properties,
|
|
96
|
+
None,
|
|
97
|
+
report_spec,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
@dynamic_catch
|
|
101
|
+
async def _async_create_annotation(self, body: dict | NewElementRequestBody) -> str:
|
|
102
|
+
"""Create an annotation. Async version.
|
|
103
|
+
|
|
104
|
+
Parameters
|
|
105
|
+
----------
|
|
106
|
+
body : dict | NewElementRequestBody
|
|
107
|
+
The properties for the annotation.
|
|
108
|
+
|
|
109
|
+
Returns
|
|
110
|
+
-------
|
|
111
|
+
str
|
|
112
|
+
The unique identifier of the newly created annotation.
|
|
113
|
+
|
|
114
|
+
Raises
|
|
115
|
+
------
|
|
116
|
+
PyegeriaException
|
|
117
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
118
|
+
|
|
119
|
+
Notes
|
|
120
|
+
-----
|
|
121
|
+
Sample JSON body:
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"class" : "NewElementRequestBody",
|
|
125
|
+
"properties": {
|
|
126
|
+
"class" : "AnnotationProperties",
|
|
127
|
+
"typeName" : "Annotation",
|
|
128
|
+
"qualifiedName": "add unique name here",
|
|
129
|
+
"displayName": "add short name here",
|
|
130
|
+
"description": "add description here"
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
"""
|
|
135
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations"
|
|
136
|
+
return await self._async_create_element_body_request(url, "AnnotationProperties", body)
|
|
137
|
+
|
|
138
|
+
def create_annotation(self, body: dict | NewElementRequestBody) -> str:
|
|
139
|
+
"""Create an annotation.
|
|
140
|
+
|
|
141
|
+
Parameters
|
|
142
|
+
----------
|
|
143
|
+
body : dict | NewElementRequestBody
|
|
144
|
+
The properties for the annotation.
|
|
145
|
+
|
|
146
|
+
Returns
|
|
147
|
+
-------
|
|
148
|
+
str
|
|
149
|
+
The unique identifier of the newly created annotation.
|
|
150
|
+
|
|
151
|
+
Raises
|
|
152
|
+
------
|
|
153
|
+
PyegeriaException
|
|
154
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
155
|
+
|
|
156
|
+
Notes
|
|
157
|
+
-----
|
|
158
|
+
Sample JSON body:
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"class" : "NewElementRequestBody",
|
|
162
|
+
"properties": {
|
|
163
|
+
"class" : "AnnotationProperties",
|
|
164
|
+
"typeName" : "Annotation",
|
|
165
|
+
"qualifiedName": "add unique name here",
|
|
166
|
+
"displayName": "add short name here",
|
|
167
|
+
"description": "add description here"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
"""
|
|
172
|
+
loop = asyncio.get_event_loop()
|
|
173
|
+
return loop.run_until_complete(self._async_create_annotation(body))
|
|
174
|
+
|
|
175
|
+
@dynamic_catch
|
|
176
|
+
async def _async_create_annotation_from_template(self, body: dict | TemplateRequestBody) -> str:
|
|
177
|
+
"""Create an annotation from a template. Async version.
|
|
178
|
+
|
|
179
|
+
Parameters
|
|
180
|
+
----------
|
|
181
|
+
body : dict | TemplateRequestBody
|
|
182
|
+
The properties for the new annotation, including the template GUID.
|
|
183
|
+
|
|
184
|
+
Returns
|
|
185
|
+
-------
|
|
186
|
+
str
|
|
187
|
+
The unique identifier of the newly created annotation.
|
|
188
|
+
|
|
189
|
+
Raises
|
|
190
|
+
------
|
|
191
|
+
PyegeriaException
|
|
192
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
193
|
+
|
|
194
|
+
Notes
|
|
195
|
+
-----
|
|
196
|
+
Sample JSON body:
|
|
197
|
+
```json
|
|
198
|
+
{
|
|
199
|
+
"class" : "TemplateRequestBody",
|
|
200
|
+
"templateGUID": "add guid here",
|
|
201
|
+
"replacementProperties": {
|
|
202
|
+
"class": "ElementProperties",
|
|
203
|
+
"propertyValueMap" : {
|
|
204
|
+
"description" : {
|
|
205
|
+
"class": "PrimitiveTypePropertyValue",
|
|
206
|
+
"typeName": "string",
|
|
207
|
+
"primitiveValue" : "New description"
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
"""
|
|
214
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/from-template"
|
|
215
|
+
return await self._async_create_element_body_request(url, "AnnotationProperties", body)
|
|
216
|
+
|
|
217
|
+
def create_annotation_from_template(self, body: dict | TemplateRequestBody) -> str:
|
|
218
|
+
"""Create an annotation from a template.
|
|
219
|
+
|
|
220
|
+
Parameters
|
|
221
|
+
----------
|
|
222
|
+
body : dict | TemplateRequestBody
|
|
223
|
+
The properties for the new annotation, including the template GUID.
|
|
224
|
+
|
|
225
|
+
Returns
|
|
226
|
+
-------
|
|
227
|
+
str
|
|
228
|
+
The unique identifier of the newly created annotation.
|
|
229
|
+
|
|
230
|
+
Raises
|
|
231
|
+
------
|
|
232
|
+
PyegeriaException
|
|
233
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
234
|
+
|
|
235
|
+
Notes
|
|
236
|
+
-----
|
|
237
|
+
Sample JSON body:
|
|
238
|
+
```json
|
|
239
|
+
{
|
|
240
|
+
"class" : "TemplateRequestBody",
|
|
241
|
+
"templateGUID": "add guid here",
|
|
242
|
+
"replacementProperties": {
|
|
243
|
+
"class": "ElementProperties",
|
|
244
|
+
"propertyValueMap" : {
|
|
245
|
+
"description" : {
|
|
246
|
+
"class": "PrimitiveTypePropertyValue",
|
|
247
|
+
"typeName": "string",
|
|
248
|
+
"primitiveValue" : "New description"
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
"""
|
|
255
|
+
loop = asyncio.get_event_loop()
|
|
256
|
+
return loop.run_until_complete(self._async_create_annotation_from_template(body))
|
|
257
|
+
|
|
258
|
+
@dynamic_catch
|
|
259
|
+
async def _async_update_annotation(
|
|
260
|
+
self, annotation_guid: str, body: dict | UpdateElementRequestBody
|
|
261
|
+
) -> None:
|
|
262
|
+
"""Update an annotation. Async version.
|
|
263
|
+
|
|
264
|
+
Parameters
|
|
265
|
+
----------
|
|
266
|
+
annotation_guid : str
|
|
267
|
+
The unique identifier of the annotation.
|
|
268
|
+
body : dict | UpdateElementRequestBody
|
|
269
|
+
The properties to update.
|
|
270
|
+
|
|
271
|
+
Returns
|
|
272
|
+
-------
|
|
273
|
+
None
|
|
274
|
+
|
|
275
|
+
Raises
|
|
276
|
+
------
|
|
277
|
+
PyegeriaException
|
|
278
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
279
|
+
|
|
280
|
+
Notes
|
|
281
|
+
-----
|
|
282
|
+
Sample JSON body:
|
|
283
|
+
```json
|
|
284
|
+
{
|
|
285
|
+
"class" : "UpdateElementRequestBody",
|
|
286
|
+
"mergeUpdate": true,
|
|
287
|
+
"properties": {
|
|
288
|
+
"class" : "AnnotationProperties",
|
|
289
|
+
"displayName": "Updated Name"
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
"""
|
|
294
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/{annotation_guid}/update"
|
|
295
|
+
await self._async_update_element_body_request(url, body)
|
|
296
|
+
|
|
297
|
+
def update_annotation(self, annotation_guid: str, body: dict | UpdateElementRequestBody) -> None:
|
|
298
|
+
"""Update an annotation.
|
|
299
|
+
|
|
300
|
+
Parameters
|
|
301
|
+
----------
|
|
302
|
+
annotation_guid : str
|
|
303
|
+
The unique identifier of the annotation.
|
|
304
|
+
body : dict | UpdateElementRequestBody
|
|
305
|
+
The properties to update.
|
|
306
|
+
|
|
307
|
+
Returns
|
|
308
|
+
-------
|
|
309
|
+
None
|
|
310
|
+
|
|
311
|
+
Raises
|
|
312
|
+
------
|
|
313
|
+
PyegeriaException
|
|
314
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
315
|
+
|
|
316
|
+
Notes
|
|
317
|
+
-----
|
|
318
|
+
Sample JSON body:
|
|
319
|
+
```json
|
|
320
|
+
{
|
|
321
|
+
"class" : "UpdateElementRequestBody",
|
|
322
|
+
"mergeUpdate": true,
|
|
323
|
+
"properties": {
|
|
324
|
+
"class" : "AnnotationProperties",
|
|
325
|
+
"displayName": "Updated Name"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
"""
|
|
330
|
+
loop = asyncio.get_event_loop()
|
|
331
|
+
loop.run_until_complete(self._async_update_annotation(annotation_guid, body))
|
|
332
|
+
|
|
333
|
+
@dynamic_catch
|
|
334
|
+
async def _async_delete_annotation(
|
|
335
|
+
self, annotation_guid: str, body: dict | DeleteElementRequestBody
|
|
336
|
+
) -> None:
|
|
337
|
+
"""Delete an annotation. Async version.
|
|
338
|
+
|
|
339
|
+
Parameters
|
|
340
|
+
----------
|
|
341
|
+
annotation_guid : str
|
|
342
|
+
The unique identifier of the annotation.
|
|
343
|
+
body : dict | DeleteElementRequestBody
|
|
344
|
+
The request body for the delete operation.
|
|
345
|
+
|
|
346
|
+
Returns
|
|
347
|
+
-------
|
|
348
|
+
None
|
|
349
|
+
|
|
350
|
+
Raises
|
|
351
|
+
------
|
|
352
|
+
PyegeriaException
|
|
353
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
354
|
+
|
|
355
|
+
Notes
|
|
356
|
+
-----
|
|
357
|
+
Sample JSON body:
|
|
358
|
+
```json
|
|
359
|
+
{
|
|
360
|
+
"class" : "DeleteElementRequestBody",
|
|
361
|
+
"cascadedDelete" : false
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
"""
|
|
365
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/{annotation_guid}/delete"
|
|
366
|
+
await self._async_delete_element_body_request(url, body)
|
|
367
|
+
|
|
368
|
+
def delete_annotation(self, annotation_guid: str, body: dict | DeleteElementRequestBody) -> None:
|
|
369
|
+
"""Delete an annotation.
|
|
370
|
+
|
|
371
|
+
Parameters
|
|
372
|
+
----------
|
|
373
|
+
annotation_guid : str
|
|
374
|
+
The unique identifier of the annotation.
|
|
375
|
+
body : dict | DeleteElementRequestBody
|
|
376
|
+
The request body for the delete operation.
|
|
377
|
+
|
|
378
|
+
Returns
|
|
379
|
+
-------
|
|
380
|
+
None
|
|
381
|
+
|
|
382
|
+
Raises
|
|
383
|
+
------
|
|
384
|
+
PyegeriaException
|
|
385
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
386
|
+
|
|
387
|
+
Notes
|
|
388
|
+
-----
|
|
389
|
+
Sample JSON body:
|
|
390
|
+
```json
|
|
391
|
+
{
|
|
392
|
+
"class" : "DeleteElementRequestBody",
|
|
393
|
+
"cascadedDelete" : false
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
"""
|
|
397
|
+
loop = asyncio.get_event_loop()
|
|
398
|
+
loop.run_until_complete(self._async_delete_annotation(annotation_guid, body))
|
|
399
|
+
|
|
400
|
+
@dynamic_catch
|
|
401
|
+
async def _async_get_annotations_by_name(
|
|
402
|
+
self,
|
|
403
|
+
filter_string: Optional[str] = None,
|
|
404
|
+
classification_names: Optional[list[str]] = None,
|
|
405
|
+
body: Optional[dict | FilterRequestBody] = None,
|
|
406
|
+
start_from: int = 0,
|
|
407
|
+
page_size: int = 0,
|
|
408
|
+
output_format: str = "JSON",
|
|
409
|
+
report_spec: str | dict = "Annotations",
|
|
410
|
+
) -> list | str:
|
|
411
|
+
"""Get annotations by name. Async version.
|
|
412
|
+
|
|
413
|
+
Parameters
|
|
414
|
+
----------
|
|
415
|
+
filter_string : str, optional
|
|
416
|
+
The string to find in the properties.
|
|
417
|
+
classification_names : list[str], optional
|
|
418
|
+
The list of classification names to filter by.
|
|
419
|
+
body : dict | FilterRequestBody, optional
|
|
420
|
+
The request body for the search.
|
|
421
|
+
start_from : int, optional
|
|
422
|
+
The starting index for paged results.
|
|
423
|
+
page_size : int, optional
|
|
424
|
+
The maximum number of results to return.
|
|
425
|
+
output_format : str, optional
|
|
426
|
+
The desired output format.
|
|
427
|
+
report_spec : str | dict, optional
|
|
428
|
+
The desired output columns/fields to include.
|
|
429
|
+
|
|
430
|
+
Returns
|
|
431
|
+
-------
|
|
432
|
+
list | str
|
|
433
|
+
The list of matching annotations or a message if none found.
|
|
434
|
+
|
|
435
|
+
Raises
|
|
436
|
+
------
|
|
437
|
+
PyegeriaException
|
|
438
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
439
|
+
|
|
440
|
+
Notes
|
|
441
|
+
-----
|
|
442
|
+
Sample JSON body:
|
|
443
|
+
```json
|
|
444
|
+
{
|
|
445
|
+
"class" : "FilterRequestBody",
|
|
446
|
+
"filter" : "AnnotationName",
|
|
447
|
+
"startFrom": 0,
|
|
448
|
+
"pageSize": 10
|
|
449
|
+
}
|
|
450
|
+
```
|
|
451
|
+
"""
|
|
452
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/by-name"
|
|
453
|
+
return await self._async_get_name_request(
|
|
454
|
+
url,
|
|
455
|
+
_type="Annotation",
|
|
456
|
+
_gen_output=self._generate_annotation_output,
|
|
457
|
+
filter_string=filter_string,
|
|
458
|
+
classification_names=classification_names,
|
|
459
|
+
start_from=start_from,
|
|
460
|
+
page_size=page_size,
|
|
461
|
+
output_format=output_format,
|
|
462
|
+
report_spec=report_spec,
|
|
463
|
+
body=body,
|
|
464
|
+
)
|
|
465
|
+
|
|
466
|
+
def get_annotations_by_name(
|
|
467
|
+
self,
|
|
468
|
+
filter_string: Optional[str] = None,
|
|
469
|
+
classification_names: Optional[list[str]] = None,
|
|
470
|
+
body: Optional[dict | FilterRequestBody] = None,
|
|
471
|
+
start_from: int = 0,
|
|
472
|
+
page_size: int = 0,
|
|
473
|
+
output_format: str = "JSON",
|
|
474
|
+
report_spec: str | dict = "Annotations",
|
|
475
|
+
) -> list | str:
|
|
476
|
+
"""Get annotations by name.
|
|
477
|
+
|
|
478
|
+
Parameters
|
|
479
|
+
----------
|
|
480
|
+
filter_string : str, optional
|
|
481
|
+
The string to find in the properties.
|
|
482
|
+
classification_names : list[str], optional
|
|
483
|
+
The list of classification names to filter by.
|
|
484
|
+
body : dict | FilterRequestBody, optional
|
|
485
|
+
The request body for the search.
|
|
486
|
+
start_from : int, optional
|
|
487
|
+
The starting index for paged results.
|
|
488
|
+
page_size : int, optional
|
|
489
|
+
The maximum number of results to return.
|
|
490
|
+
output_format : str, optional
|
|
491
|
+
The desired output format.
|
|
492
|
+
report_spec : str | dict, optional
|
|
493
|
+
The desired output columns/fields to include.
|
|
494
|
+
|
|
495
|
+
Returns
|
|
496
|
+
-------
|
|
497
|
+
list | str
|
|
498
|
+
The list of matching annotations or a message if none found.
|
|
499
|
+
|
|
500
|
+
Raises
|
|
501
|
+
------
|
|
502
|
+
PyegeriaException
|
|
503
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
504
|
+
|
|
505
|
+
Notes
|
|
506
|
+
-----
|
|
507
|
+
Sample JSON body:
|
|
508
|
+
```json
|
|
509
|
+
{
|
|
510
|
+
"class" : "FilterRequestBody",
|
|
511
|
+
"filter" : "AnnotationName",
|
|
512
|
+
"startFrom": 0,
|
|
513
|
+
"pageSize": 10
|
|
514
|
+
}
|
|
515
|
+
```
|
|
516
|
+
"""
|
|
517
|
+
loop = asyncio.get_event_loop()
|
|
518
|
+
return loop.run_until_complete(
|
|
519
|
+
self._async_get_annotations_by_name(
|
|
520
|
+
filter_string,
|
|
521
|
+
classification_names,
|
|
522
|
+
body,
|
|
523
|
+
start_from,
|
|
524
|
+
page_size,
|
|
525
|
+
output_format,
|
|
526
|
+
report_spec,
|
|
527
|
+
)
|
|
528
|
+
)
|
|
529
|
+
|
|
530
|
+
@dynamic_catch
|
|
531
|
+
async def _async_find_annotations(self, search_string: str = "*",
|
|
532
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
533
|
+
ignore_case: bool = False,
|
|
534
|
+
anchor_domain: Optional[str] = None,
|
|
535
|
+
metadata_element_type: Optional[str] = None,
|
|
536
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
537
|
+
skip_relationships: Optional[list[str]] = None,
|
|
538
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
539
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
540
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
541
|
+
graph_query_depth: int = 3,
|
|
542
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
543
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
544
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
545
|
+
sequencing_property: Optional[str] = None,
|
|
546
|
+
output_format: str = "JSON",
|
|
547
|
+
report_spec: str | dict = "Referenceable",
|
|
548
|
+
start_from: int = 0, page_size: int = 100,
|
|
549
|
+
property_names: Optional[list[str]] = None,
|
|
550
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
551
|
+
""" Retrieve the list of annotation metadata elements that contain the search string. Async Version.
|
|
552
|
+
|
|
553
|
+
Parameters
|
|
554
|
+
----------
|
|
555
|
+
search_string: str
|
|
556
|
+
Search string to match against - None or '*' indicate match against all annotations.
|
|
557
|
+
starts_with : bool, [default=True], optional
|
|
558
|
+
Starts with the supplied string.
|
|
559
|
+
ends_with : bool, [default=False], optional
|
|
560
|
+
Ends with the supplied string
|
|
561
|
+
ignore_case : bool, [default=False], optional
|
|
562
|
+
Ignore case when searching
|
|
563
|
+
anchor_domain: str, optional
|
|
564
|
+
The anchor domain to search in.
|
|
565
|
+
metadata_element_type: str, optional
|
|
566
|
+
The type of metadata element to search for.
|
|
567
|
+
metadata_element_subtypes: list[str], optional
|
|
568
|
+
The subtypes of metadata element to search for.
|
|
569
|
+
skip_relationships: list[str], optional
|
|
570
|
+
The types of relationships to skip.
|
|
571
|
+
include_only_relationships: list[str], optional
|
|
572
|
+
The types of relationships to include.
|
|
573
|
+
skip_classified_elements: list[str], optional
|
|
574
|
+
The types of classified elements to skip.
|
|
575
|
+
include_only_classified_elements: list[str], optional
|
|
576
|
+
The types of classified elements to include.
|
|
577
|
+
graph_query_depth: int, [default=3], optional
|
|
578
|
+
The depth of the graph query.
|
|
579
|
+
governance_zone_filter: list[str], optional
|
|
580
|
+
The governance zones to search in.
|
|
581
|
+
as_of_time: str, optional
|
|
582
|
+
The time to search as of.
|
|
583
|
+
effective_time: str, optional
|
|
584
|
+
The effective time to search at.
|
|
585
|
+
relationship_page_size: int, [default=0], optional
|
|
586
|
+
The page size for relationships.
|
|
587
|
+
limit_results_by_status: list[str], optional
|
|
588
|
+
The statuses to limit results by.
|
|
589
|
+
sequencing_order: str, optional
|
|
590
|
+
The order to sequence results by.
|
|
591
|
+
sequencing_property: str, optional
|
|
592
|
+
The property to sequence results by.
|
|
593
|
+
output_format: str, default = "JSON"
|
|
594
|
+
- one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
|
|
595
|
+
report_spec: str | dict , optional, default = "Referenceable"
|
|
596
|
+
- The desired output columns/fields to include.
|
|
597
|
+
start_from: int, [default=0], optional
|
|
598
|
+
When multiple pages of results are available, the page number to start from.
|
|
599
|
+
page_size: int, [default=100]
|
|
600
|
+
The number of items to return in a single page.
|
|
601
|
+
property_names: list[str], optional
|
|
602
|
+
The names of properties to search for.
|
|
603
|
+
body: dict | SearchStringRequestBody, optional, default = None
|
|
604
|
+
- if provided, the search parameters in the body will supercede other attributes, such as "search_string"
|
|
605
|
+
|
|
606
|
+
Returns
|
|
607
|
+
-------
|
|
608
|
+
List | str
|
|
609
|
+
|
|
610
|
+
Output depends on the output format specified.
|
|
611
|
+
|
|
612
|
+
Raises
|
|
613
|
+
------
|
|
614
|
+
|
|
615
|
+
ValidationError
|
|
616
|
+
If the client passes incorrect parameters on the request that don't conform to the data model.
|
|
617
|
+
PyegeriaException
|
|
618
|
+
Issues raised in communicating or server side processing.
|
|
619
|
+
NotAuthorizedException
|
|
620
|
+
The principle specified by the user_id does not have authorization for the requested action
|
|
621
|
+
|
|
622
|
+
"""
|
|
623
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/by-search-string"
|
|
624
|
+
response = await self._async_find_request(url, _type="Annotation", _gen_output=self._generate_annotation_output,
|
|
625
|
+
search_string=search_string, starts_with=starts_with,
|
|
626
|
+
ends_with=ends_with, ignore_case=ignore_case,
|
|
627
|
+
anchor_domain=anchor_domain,
|
|
628
|
+
metadata_element_type=metadata_element_type,
|
|
629
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
630
|
+
skip_relationships=skip_relationships,
|
|
631
|
+
include_only_relationships=include_only_relationships,
|
|
632
|
+
skip_classified_elements=skip_classified_elements,
|
|
633
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
634
|
+
graph_query_depth=graph_query_depth,
|
|
635
|
+
governance_zone_filter=governance_zone_filter,
|
|
636
|
+
as_of_time=as_of_time, effective_time=effective_time,
|
|
637
|
+
relationship_page_size=relationship_page_size,
|
|
638
|
+
limit_results_by_status=limit_results_by_status,
|
|
639
|
+
sequencing_order=sequencing_order,
|
|
640
|
+
sequencing_property=sequencing_property,
|
|
641
|
+
output_format=output_format, report_spec=report_spec,
|
|
642
|
+
start_from=start_from, page_size=page_size,
|
|
643
|
+
property_names=property_names, body=body)
|
|
644
|
+
|
|
645
|
+
return response
|
|
646
|
+
|
|
647
|
+
@dynamic_catch
|
|
648
|
+
def find_annotations(self, search_string: str = "*",
|
|
649
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
650
|
+
ignore_case: bool = False,
|
|
651
|
+
anchor_domain: Optional[str] = None,
|
|
652
|
+
metadata_element_type: Optional[str] = None,
|
|
653
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
654
|
+
skip_relationships: Optional[list[str]] = None,
|
|
655
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
656
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
657
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
658
|
+
graph_query_depth: int = 3,
|
|
659
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
660
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
661
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
662
|
+
sequencing_property: Optional[str] = None,
|
|
663
|
+
output_format: str = "JSON",
|
|
664
|
+
report_spec: str | dict = "Referenceable",
|
|
665
|
+
start_from: int = 0, page_size: int = 100,
|
|
666
|
+
property_names: Optional[list[str]] = None,
|
|
667
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
668
|
+
""" Retrieve the list of annotation metadata elements that contain the search string.
|
|
669
|
+
|
|
670
|
+
Parameters
|
|
671
|
+
----------
|
|
672
|
+
search_string: str
|
|
673
|
+
Search string to match against - None or '*' indicate match against all annotations.
|
|
674
|
+
starts_with : bool, [default=True], optional
|
|
675
|
+
Starts with the supplied string.
|
|
676
|
+
ends_with : bool, [default=False], optional
|
|
677
|
+
Ends with the supplied string
|
|
678
|
+
ignore_case : bool, [default=False], optional
|
|
679
|
+
Ignore case when searching
|
|
680
|
+
anchor_domain: str, optional
|
|
681
|
+
The anchor domain to search in.
|
|
682
|
+
metadata_element_type: str, optional
|
|
683
|
+
The type of metadata element to search for.
|
|
684
|
+
metadata_element_subtypes: list[str], optional
|
|
685
|
+
The subtypes of metadata element to search for.
|
|
686
|
+
skip_relationships: list[str], optional
|
|
687
|
+
The types of relationships to skip.
|
|
688
|
+
include_only_relationships: list[str], optional
|
|
689
|
+
The types of relationships to include.
|
|
690
|
+
skip_classified_elements: list[str], optional
|
|
691
|
+
The types of classified elements to skip.
|
|
692
|
+
include_only_classified_elements: list[str], optional
|
|
693
|
+
The types of classified elements to include.
|
|
694
|
+
graph_query_depth: int, [default=3], optional
|
|
695
|
+
The depth of the graph query.
|
|
696
|
+
governance_zone_filter: list[str], optional
|
|
697
|
+
The governance zones to search in.
|
|
698
|
+
as_of_time: str, optional
|
|
699
|
+
The time to search as of.
|
|
700
|
+
effective_time: str, optional
|
|
701
|
+
The effective time to search at.
|
|
702
|
+
relationship_page_size: int, [default=0], optional
|
|
703
|
+
The page size for relationships.
|
|
704
|
+
limit_results_by_status: list[str], optional
|
|
705
|
+
The statuses to limit results by.
|
|
706
|
+
sequencing_order: str, optional
|
|
707
|
+
The order to sequence results by.
|
|
708
|
+
sequencing_property: str, optional
|
|
709
|
+
The property to sequence results by.
|
|
710
|
+
output_format: str, default = "JSON"
|
|
711
|
+
- one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
|
|
712
|
+
report_spec: str | dict , optional, default = "Referenceable"
|
|
713
|
+
- The desired output columns/fields to include.
|
|
714
|
+
start_from: int, [default=0], optional
|
|
715
|
+
When multiple pages of results are available, the page number to start from.
|
|
716
|
+
page_size: int, [default=100]
|
|
717
|
+
The number of items to return in a single page.
|
|
718
|
+
property_names: list[str], optional
|
|
719
|
+
The names of properties to search for.
|
|
720
|
+
body: dict | SearchStringRequestBody, optional, default = None
|
|
721
|
+
- if provided, the search parameters in the body will supercede other attributes, such as "search_string"
|
|
722
|
+
|
|
723
|
+
Returns
|
|
724
|
+
-------
|
|
725
|
+
List | str
|
|
726
|
+
|
|
727
|
+
Output depends on the output format specified.
|
|
728
|
+
|
|
729
|
+
Raises
|
|
730
|
+
-------
|
|
731
|
+
|
|
732
|
+
ValidationError
|
|
733
|
+
If the client passes incorrect parameters on the request that don't conform to the data model.
|
|
734
|
+
PyegeriaException
|
|
735
|
+
Issues raised in communicating or server side processing.
|
|
736
|
+
NotAuthorizedException
|
|
737
|
+
The principle specified by the user_id does not have authorization for the requested action
|
|
738
|
+
|
|
739
|
+
"""
|
|
740
|
+
loop = asyncio.get_event_loop()
|
|
741
|
+
return loop.run_until_complete(self._async_find_annotations(search_string=search_string,
|
|
742
|
+
starts_with=starts_with,
|
|
743
|
+
ends_with=ends_with,
|
|
744
|
+
ignore_case=ignore_case,
|
|
745
|
+
anchor_domain=anchor_domain,
|
|
746
|
+
metadata_element_type=metadata_element_type,
|
|
747
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
748
|
+
skip_relationships=skip_relationships,
|
|
749
|
+
include_only_relationships=include_only_relationships,
|
|
750
|
+
skip_classified_elements=skip_classified_elements,
|
|
751
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
752
|
+
graph_query_depth=graph_query_depth,
|
|
753
|
+
governance_zone_filter=governance_zone_filter,
|
|
754
|
+
as_of_time=as_of_time,
|
|
755
|
+
effective_time=effective_time,
|
|
756
|
+
relationship_page_size=relationship_page_size,
|
|
757
|
+
limit_results_by_status=limit_results_by_status,
|
|
758
|
+
sequencing_order=sequencing_order,
|
|
759
|
+
sequencing_property=sequencing_property,
|
|
760
|
+
output_format=output_format,
|
|
761
|
+
report_spec=report_spec,
|
|
762
|
+
start_from=start_from,
|
|
763
|
+
page_size=page_size,
|
|
764
|
+
property_names=property_names,
|
|
765
|
+
body=body))
|
|
766
|
+
|
|
767
|
+
@dynamic_catch
|
|
768
|
+
async def _async_get_annotation_by_guid(
|
|
769
|
+
self,
|
|
770
|
+
annotation_guid: str,
|
|
771
|
+
element_type: str = "Annotation",
|
|
772
|
+
body: Optional[dict | GetRequestBody] = None,
|
|
773
|
+
output_format: str = "JSON",
|
|
774
|
+
report_spec: str | dict = "Annotations",
|
|
775
|
+
) -> dict | str:
|
|
776
|
+
"""Get annotation by GUID. Async version.
|
|
777
|
+
|
|
778
|
+
Parameters
|
|
779
|
+
----------
|
|
780
|
+
annotation_guid : str
|
|
781
|
+
The unique identifier of the required element.
|
|
782
|
+
element_type : str, optional
|
|
783
|
+
The type of metadata element.
|
|
784
|
+
body : dict | GetRequestBody, optional
|
|
785
|
+
The request body for the search.
|
|
786
|
+
output_format : str, optional
|
|
787
|
+
The desired output format.
|
|
788
|
+
report_spec : str | dict, optional
|
|
789
|
+
The desired output columns/fields to include.
|
|
790
|
+
|
|
791
|
+
Returns
|
|
792
|
+
-------
|
|
793
|
+
dict | str
|
|
794
|
+
The requested annotation or a message if not found.
|
|
795
|
+
|
|
796
|
+
Raises
|
|
797
|
+
------
|
|
798
|
+
PyegeriaException
|
|
799
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
800
|
+
|
|
801
|
+
Notes
|
|
802
|
+
-----
|
|
803
|
+
Sample JSON body:
|
|
804
|
+
```json
|
|
805
|
+
{
|
|
806
|
+
"class" : "GetRequestBody",
|
|
807
|
+
"forLineage" : false
|
|
808
|
+
}
|
|
809
|
+
```
|
|
810
|
+
"""
|
|
811
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/annotations/{annotation_guid}/retrieve"
|
|
812
|
+
return await self._async_get_guid_request(
|
|
813
|
+
url,
|
|
814
|
+
_type=element_type,
|
|
815
|
+
_gen_output=self._generate_annotation_output,
|
|
816
|
+
output_format=output_format,
|
|
817
|
+
report_spec=report_spec,
|
|
818
|
+
body=body,
|
|
819
|
+
)
|
|
820
|
+
|
|
821
|
+
def get_annotation_by_guid(
|
|
822
|
+
self,
|
|
823
|
+
annotation_guid: str,
|
|
824
|
+
element_type: str = "Annotation",
|
|
825
|
+
body: Optional[dict | GetRequestBody] = None,
|
|
826
|
+
output_format: str = "JSON",
|
|
827
|
+
report_spec: str | dict = "Annotations",
|
|
828
|
+
) -> dict | str:
|
|
829
|
+
"""Get annotation by GUID.
|
|
830
|
+
|
|
831
|
+
Parameters
|
|
832
|
+
----------
|
|
833
|
+
annotation_guid : str
|
|
834
|
+
The unique identifier of the required element.
|
|
835
|
+
element_type : str, optional
|
|
836
|
+
The type of metadata element.
|
|
837
|
+
body : dict | GetRequestBody, optional
|
|
838
|
+
The request body for the search.
|
|
839
|
+
output_format : str, optional
|
|
840
|
+
The desired output format.
|
|
841
|
+
report_spec : str | dict, optional
|
|
842
|
+
The desired output columns/fields to include.
|
|
843
|
+
|
|
844
|
+
Returns
|
|
845
|
+
-------
|
|
846
|
+
dict | str
|
|
847
|
+
The requested annotation or a message if not found.
|
|
848
|
+
|
|
849
|
+
Raises
|
|
850
|
+
------
|
|
851
|
+
PyegeriaException
|
|
852
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
853
|
+
|
|
854
|
+
Notes
|
|
855
|
+
-----
|
|
856
|
+
Sample JSON body:
|
|
857
|
+
```json
|
|
858
|
+
{
|
|
859
|
+
"class" : "GetRequestBody",
|
|
860
|
+
"forLineage" : false
|
|
861
|
+
}
|
|
862
|
+
```
|
|
863
|
+
"""
|
|
864
|
+
loop = asyncio.get_event_loop()
|
|
865
|
+
return loop.run_until_complete(
|
|
866
|
+
self._async_get_annotation_by_guid(
|
|
867
|
+
annotation_guid, element_type, body, output_format, report_spec
|
|
868
|
+
)
|
|
869
|
+
)
|