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,1042 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PDX-License-Identifier: Apache-2.0
|
|
3
|
+
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
+
|
|
5
|
+
This module contains the Subject Area 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
|
+
NewRelationshipRequestBody,
|
|
23
|
+
DeleteRelationshipRequestBody,
|
|
24
|
+
ReferenceableProperties,
|
|
25
|
+
RelationshipBeanProperties,
|
|
26
|
+
)
|
|
27
|
+
from pyegeria.view.output_formatter import (
|
|
28
|
+
generate_output,
|
|
29
|
+
populate_common_columns,
|
|
30
|
+
overlay_additional_values,
|
|
31
|
+
)
|
|
32
|
+
from pyegeria.core.utils import dynamic_catch
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class SubjectAreaProperties(ReferenceableProperties):
|
|
36
|
+
class_: Annotated[Literal["SubjectAreaProperties"], Field(alias="class")]
|
|
37
|
+
usage: Optional[str] = None
|
|
38
|
+
scope: Optional[str] = None
|
|
39
|
+
domain_identifier: Optional[int] = None
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class SubjectAreaHierarchyProperties(RelationshipBeanProperties):
|
|
43
|
+
class_: Annotated[Literal["SubjectAreaHierarchyProperties"], Field(alias="class")]
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class SubjectArea(ServerClient):
|
|
47
|
+
"""
|
|
48
|
+
Client for the Subject Area View Service.
|
|
49
|
+
|
|
50
|
+
The Subject Area View Service provides methods to manage subject areas and their hierarchies.
|
|
51
|
+
|
|
52
|
+
Attributes
|
|
53
|
+
----------
|
|
54
|
+
view_server : str
|
|
55
|
+
The name of the View Server to use.
|
|
56
|
+
platform_url : str
|
|
57
|
+
URL of the server platform to connect to.
|
|
58
|
+
user_id : str
|
|
59
|
+
The identity of the user calling the method.
|
|
60
|
+
user_pwd : str
|
|
61
|
+
The password associated with the user_id. Defaults to None.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
def __init__(
|
|
65
|
+
self,
|
|
66
|
+
view_server: str,
|
|
67
|
+
platform_url: str,
|
|
68
|
+
user_id: str,
|
|
69
|
+
user_pwd: Optional[str] = None,
|
|
70
|
+
token: Optional[str] = None,
|
|
71
|
+
):
|
|
72
|
+
super().__init__(view_server, platform_url, user_id, user_pwd, token)
|
|
73
|
+
self.view_server = view_server
|
|
74
|
+
self.platform_url = platform_url
|
|
75
|
+
self.user_id = user_id
|
|
76
|
+
self.user_pwd = user_pwd
|
|
77
|
+
self.url_marker = "subject-area"
|
|
78
|
+
|
|
79
|
+
def _extract_subject_area_properties(self, element: dict, columns_struct: dict) -> dict:
|
|
80
|
+
col_data = populate_common_columns(element, columns_struct)
|
|
81
|
+
props = element.get("properties", {})
|
|
82
|
+
overlay_additional_values(col_data, props)
|
|
83
|
+
return col_data
|
|
84
|
+
|
|
85
|
+
def _generate_subject_area_output(
|
|
86
|
+
self,
|
|
87
|
+
elements: dict | list[dict],
|
|
88
|
+
filter: Optional[str],
|
|
89
|
+
element_type_name: Optional[str],
|
|
90
|
+
output_format: str = "DICT",
|
|
91
|
+
report_spec: dict | str = None,
|
|
92
|
+
) -> str | list[dict]:
|
|
93
|
+
return generate_output(
|
|
94
|
+
elements,
|
|
95
|
+
filter,
|
|
96
|
+
element_type_name,
|
|
97
|
+
output_format,
|
|
98
|
+
self._extract_subject_area_properties,
|
|
99
|
+
None,
|
|
100
|
+
report_spec,
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
@dynamic_catch
|
|
104
|
+
async def _async_create_subject_area(self, body: dict | NewElementRequestBody) -> str:
|
|
105
|
+
"""Create a subject area. Async version.
|
|
106
|
+
|
|
107
|
+
Parameters
|
|
108
|
+
----------
|
|
109
|
+
body : dict | NewElementRequestBody
|
|
110
|
+
The properties for the subject area.
|
|
111
|
+
|
|
112
|
+
Returns
|
|
113
|
+
-------
|
|
114
|
+
str
|
|
115
|
+
The unique identifier of the newly created subject area.
|
|
116
|
+
|
|
117
|
+
Raises
|
|
118
|
+
------
|
|
119
|
+
PyegeriaException
|
|
120
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
121
|
+
|
|
122
|
+
Notes
|
|
123
|
+
-----
|
|
124
|
+
Sample JSON body:
|
|
125
|
+
```json
|
|
126
|
+
{
|
|
127
|
+
"class" : "NewElementRequestBody",
|
|
128
|
+
"properties": {
|
|
129
|
+
"class" : "SubjectAreaProperties",
|
|
130
|
+
"qualifiedName": "add unique name here",
|
|
131
|
+
"displayName": "add short name here",
|
|
132
|
+
"subjectAreaName": "add short name here",
|
|
133
|
+
"description": "add description here",
|
|
134
|
+
"usage": "add usage of this subject area",
|
|
135
|
+
"scope": "add scope of this subject area"
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
"""
|
|
140
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/subject-area/governance-definitions"
|
|
141
|
+
return await self._async_create_element_body_request(url, "SubjectAreaProperties", body)
|
|
142
|
+
|
|
143
|
+
def create_subject_area(self, body: dict | NewElementRequestBody) -> str:
|
|
144
|
+
"""Create a subject area.
|
|
145
|
+
|
|
146
|
+
Parameters
|
|
147
|
+
----------
|
|
148
|
+
body : dict | NewElementRequestBody
|
|
149
|
+
The properties for the subject area.
|
|
150
|
+
|
|
151
|
+
Returns
|
|
152
|
+
-------
|
|
153
|
+
str
|
|
154
|
+
The unique identifier of the newly created subject area.
|
|
155
|
+
|
|
156
|
+
Raises
|
|
157
|
+
------
|
|
158
|
+
PyegeriaException
|
|
159
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
160
|
+
|
|
161
|
+
Notes
|
|
162
|
+
-----
|
|
163
|
+
Sample JSON body:
|
|
164
|
+
```json
|
|
165
|
+
{
|
|
166
|
+
"class" : "NewElementRequestBody",
|
|
167
|
+
"properties": {
|
|
168
|
+
"class" : "SubjectAreaProperties",
|
|
169
|
+
"qualifiedName": "add unique name here",
|
|
170
|
+
"displayName": "add short name here",
|
|
171
|
+
"subjectAreaName": "add short name here",
|
|
172
|
+
"description": "add description here",
|
|
173
|
+
"usage": "add usage of this subject area",
|
|
174
|
+
"scope": "add scope of this subject area"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
"""
|
|
179
|
+
loop = asyncio.get_event_loop()
|
|
180
|
+
return loop.run_until_complete(self._async_create_subject_area(body))
|
|
181
|
+
|
|
182
|
+
@dynamic_catch
|
|
183
|
+
async def _async_create_subject_area_from_template(self, body: dict | TemplateRequestBody) -> str:
|
|
184
|
+
"""Create a subject area from a template. Async version.
|
|
185
|
+
|
|
186
|
+
Parameters
|
|
187
|
+
----------
|
|
188
|
+
body : dict | TemplateRequestBody
|
|
189
|
+
The properties for the new subject area, including the template GUID.
|
|
190
|
+
|
|
191
|
+
Returns
|
|
192
|
+
-------
|
|
193
|
+
str
|
|
194
|
+
The unique identifier of the newly created subject area.
|
|
195
|
+
|
|
196
|
+
Raises
|
|
197
|
+
------
|
|
198
|
+
PyegeriaException
|
|
199
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
200
|
+
|
|
201
|
+
Notes
|
|
202
|
+
-----
|
|
203
|
+
Sample JSON body:
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"class" : "TemplateRequestBody",
|
|
207
|
+
"templateGUID": "add guid here",
|
|
208
|
+
"replacementProperties": {
|
|
209
|
+
"class": "ElementProperties",
|
|
210
|
+
"propertyValueMap" : {
|
|
211
|
+
"description" : {
|
|
212
|
+
"class": "PrimitiveTypePropertyValue",
|
|
213
|
+
"typeName": "string",
|
|
214
|
+
"primitiveValue" : "New description"
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
"""
|
|
221
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/subject-area/governance-definitions/from-template"
|
|
222
|
+
return await self._async_create_element_body_request(url, "SubjectAreaProperties", body)
|
|
223
|
+
|
|
224
|
+
def create_subject_area_from_template(self, body: dict | TemplateRequestBody) -> str:
|
|
225
|
+
"""Create a subject area from a template.
|
|
226
|
+
|
|
227
|
+
Parameters
|
|
228
|
+
----------
|
|
229
|
+
body : dict | TemplateRequestBody
|
|
230
|
+
The properties for the new subject area, including the template GUID.
|
|
231
|
+
|
|
232
|
+
Returns
|
|
233
|
+
-------
|
|
234
|
+
str
|
|
235
|
+
The unique identifier of the newly created subject area.
|
|
236
|
+
|
|
237
|
+
Raises
|
|
238
|
+
------
|
|
239
|
+
PyegeriaException
|
|
240
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
241
|
+
|
|
242
|
+
Notes
|
|
243
|
+
-----
|
|
244
|
+
Sample JSON body:
|
|
245
|
+
```json
|
|
246
|
+
{
|
|
247
|
+
"class" : "TemplateRequestBody",
|
|
248
|
+
"templateGUID": "add guid here",
|
|
249
|
+
"replacementProperties": {
|
|
250
|
+
"class": "ElementProperties",
|
|
251
|
+
"propertyValueMap" : {
|
|
252
|
+
"description" : {
|
|
253
|
+
"class": "PrimitiveTypePropertyValue",
|
|
254
|
+
"typeName": "string",
|
|
255
|
+
"primitiveValue" : "New description"
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
"""
|
|
262
|
+
loop = asyncio.get_event_loop()
|
|
263
|
+
return loop.run_until_complete(self._async_create_subject_area_from_template(body))
|
|
264
|
+
|
|
265
|
+
@dynamic_catch
|
|
266
|
+
async def _async_update_subject_area(
|
|
267
|
+
self, subject_area_guid: str, body: dict | UpdateElementRequestBody
|
|
268
|
+
) -> None:
|
|
269
|
+
"""Update a subject area. Async version.
|
|
270
|
+
|
|
271
|
+
Parameters
|
|
272
|
+
----------
|
|
273
|
+
subject_area_guid : str
|
|
274
|
+
The unique identifier of the subject area.
|
|
275
|
+
body : dict | UpdateElementRequestBody
|
|
276
|
+
The properties to update.
|
|
277
|
+
|
|
278
|
+
Returns
|
|
279
|
+
-------
|
|
280
|
+
None
|
|
281
|
+
|
|
282
|
+
Raises
|
|
283
|
+
------
|
|
284
|
+
PyegeriaException
|
|
285
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
286
|
+
|
|
287
|
+
Notes
|
|
288
|
+
-----
|
|
289
|
+
Sample JSON body:
|
|
290
|
+
```json
|
|
291
|
+
{
|
|
292
|
+
"class" : "UpdateElementRequestBody",
|
|
293
|
+
"mergeUpdate" : true,
|
|
294
|
+
"properties": {
|
|
295
|
+
"class" : "SubjectAreaProperties",
|
|
296
|
+
"displayName": "Updated Name"
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
"""
|
|
301
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/subject-area/governance-definitions/{subject_area_guid}/update"
|
|
302
|
+
await self._async_update_element_body_request(url, body)
|
|
303
|
+
|
|
304
|
+
def update_subject_area(self, subject_area_guid: str, body: dict | UpdateElementRequestBody) -> None:
|
|
305
|
+
"""Update a subject area.
|
|
306
|
+
|
|
307
|
+
Parameters
|
|
308
|
+
----------
|
|
309
|
+
subject_area_guid : str
|
|
310
|
+
The unique identifier of the subject area.
|
|
311
|
+
body : dict | UpdateElementRequestBody
|
|
312
|
+
The properties to update.
|
|
313
|
+
|
|
314
|
+
Returns
|
|
315
|
+
-------
|
|
316
|
+
None
|
|
317
|
+
|
|
318
|
+
Raises
|
|
319
|
+
------
|
|
320
|
+
PyegeriaException
|
|
321
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
322
|
+
|
|
323
|
+
Notes
|
|
324
|
+
-----
|
|
325
|
+
Sample JSON body:
|
|
326
|
+
```json
|
|
327
|
+
{
|
|
328
|
+
"class" : "UpdateElementRequestBody",
|
|
329
|
+
"mergeUpdate" : true,
|
|
330
|
+
"properties": {
|
|
331
|
+
"class" : "SubjectAreaProperties",
|
|
332
|
+
"displayName": "Updated Name"
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
"""
|
|
337
|
+
loop = asyncio.get_event_loop()
|
|
338
|
+
loop.run_until_complete(self._async_update_subject_area(subject_area_guid, body))
|
|
339
|
+
|
|
340
|
+
@dynamic_catch
|
|
341
|
+
async def _async_delete_subject_area(
|
|
342
|
+
self, subject_area_guid: str, body: dict | DeleteElementRequestBody
|
|
343
|
+
) -> None:
|
|
344
|
+
"""Delete a subject area. Async version.
|
|
345
|
+
|
|
346
|
+
Parameters
|
|
347
|
+
----------
|
|
348
|
+
subject_area_guid : str
|
|
349
|
+
The unique identifier of the subject area.
|
|
350
|
+
body : dict | DeleteElementRequestBody
|
|
351
|
+
The request body for the delete operation.
|
|
352
|
+
|
|
353
|
+
Returns
|
|
354
|
+
-------
|
|
355
|
+
None
|
|
356
|
+
|
|
357
|
+
Raises
|
|
358
|
+
------
|
|
359
|
+
PyegeriaException
|
|
360
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
361
|
+
|
|
362
|
+
Notes
|
|
363
|
+
-----
|
|
364
|
+
Sample JSON body:
|
|
365
|
+
```json
|
|
366
|
+
{
|
|
367
|
+
"class" : "DeleteElementRequestBody",
|
|
368
|
+
"externalSourceName": "add qualified name here"
|
|
369
|
+
}
|
|
370
|
+
```
|
|
371
|
+
"""
|
|
372
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/subject-area/governance-definitions/{subject_area_guid}/delete"
|
|
373
|
+
await self._async_delete_element_body_request(url, body)
|
|
374
|
+
|
|
375
|
+
def delete_subject_area(self, subject_area_guid: str, body: dict | DeleteElementRequestBody) -> None:
|
|
376
|
+
"""Delete a subject area.
|
|
377
|
+
|
|
378
|
+
Parameters
|
|
379
|
+
----------
|
|
380
|
+
subject_area_guid : str
|
|
381
|
+
The unique identifier of the subject area.
|
|
382
|
+
body : dict | DeleteElementRequestBody
|
|
383
|
+
The request body for the delete operation.
|
|
384
|
+
|
|
385
|
+
Returns
|
|
386
|
+
-------
|
|
387
|
+
None
|
|
388
|
+
|
|
389
|
+
Raises
|
|
390
|
+
------
|
|
391
|
+
PyegeriaException
|
|
392
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
393
|
+
|
|
394
|
+
Notes
|
|
395
|
+
-----
|
|
396
|
+
Sample JSON body:
|
|
397
|
+
```json
|
|
398
|
+
{
|
|
399
|
+
"class" : "DeleteElementRequestBody",
|
|
400
|
+
"externalSourceName": "add qualified name here"
|
|
401
|
+
}
|
|
402
|
+
```
|
|
403
|
+
"""
|
|
404
|
+
loop = asyncio.get_event_loop()
|
|
405
|
+
loop.run_until_complete(self._async_delete_subject_area(subject_area_guid, body))
|
|
406
|
+
|
|
407
|
+
@dynamic_catch
|
|
408
|
+
async def _async_link_subject_area_hierarchy(
|
|
409
|
+
self,
|
|
410
|
+
parent_subject_area_guid: str,
|
|
411
|
+
nested_subject_area_guid: str,
|
|
412
|
+
body: dict | NewRelationshipRequestBody,
|
|
413
|
+
) -> None:
|
|
414
|
+
"""Link subject areas in a hierarchy. Async version.
|
|
415
|
+
|
|
416
|
+
Parameters
|
|
417
|
+
----------
|
|
418
|
+
parent_subject_area_guid : str
|
|
419
|
+
The unique identifier of the parent subject area.
|
|
420
|
+
nested_subject_area_guid : str
|
|
421
|
+
The unique identifier of the nested subject area.
|
|
422
|
+
body : dict | NewRelationshipRequestBody
|
|
423
|
+
The properties for the relationship.
|
|
424
|
+
|
|
425
|
+
Returns
|
|
426
|
+
-------
|
|
427
|
+
None
|
|
428
|
+
|
|
429
|
+
Raises
|
|
430
|
+
------
|
|
431
|
+
PyegeriaException
|
|
432
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
433
|
+
|
|
434
|
+
Notes
|
|
435
|
+
-----
|
|
436
|
+
Sample JSON body:
|
|
437
|
+
```json
|
|
438
|
+
{
|
|
439
|
+
"class" : "NewRelationshipRequestBody",
|
|
440
|
+
"properties": {
|
|
441
|
+
"class": "SubjectAreaHierarchyProperties"
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
```
|
|
445
|
+
"""
|
|
446
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/subject-area/subject-areas/{parent_subject_area_guid}/subject-area-hierarchies/{nested_subject_area_guid}/attach"
|
|
447
|
+
await self._async_new_relationship_request(url, ["SubjectAreaHierarchyProperties"], body)
|
|
448
|
+
|
|
449
|
+
def link_subject_area_hierarchy(
|
|
450
|
+
self,
|
|
451
|
+
parent_subject_area_guid: str,
|
|
452
|
+
nested_subject_area_guid: str,
|
|
453
|
+
body: dict | NewRelationshipRequestBody,
|
|
454
|
+
) -> None:
|
|
455
|
+
"""Link subject areas in a hierarchy.
|
|
456
|
+
|
|
457
|
+
Parameters
|
|
458
|
+
----------
|
|
459
|
+
parent_subject_area_guid : str
|
|
460
|
+
The unique identifier of the parent subject area.
|
|
461
|
+
nested_subject_area_guid : str
|
|
462
|
+
The unique identifier of the nested subject area.
|
|
463
|
+
body : dict | NewRelationshipRequestBody
|
|
464
|
+
The properties for the relationship.
|
|
465
|
+
|
|
466
|
+
Returns
|
|
467
|
+
-------
|
|
468
|
+
None
|
|
469
|
+
|
|
470
|
+
Raises
|
|
471
|
+
------
|
|
472
|
+
PyegeriaException
|
|
473
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
474
|
+
|
|
475
|
+
Notes
|
|
476
|
+
-----
|
|
477
|
+
Sample JSON body:
|
|
478
|
+
```json
|
|
479
|
+
{
|
|
480
|
+
"class" : "NewRelationshipRequestBody",
|
|
481
|
+
"properties": {
|
|
482
|
+
"class": "SubjectAreaHierarchyProperties"
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
```
|
|
486
|
+
"""
|
|
487
|
+
loop = asyncio.get_event_loop()
|
|
488
|
+
loop.run_until_complete(
|
|
489
|
+
self._async_link_subject_area_hierarchy(
|
|
490
|
+
parent_subject_area_guid, nested_subject_area_guid, body
|
|
491
|
+
)
|
|
492
|
+
)
|
|
493
|
+
|
|
494
|
+
@dynamic_catch
|
|
495
|
+
async def _async_detach_subject_area_hierarchy(
|
|
496
|
+
self,
|
|
497
|
+
parent_subject_area_guid: str,
|
|
498
|
+
nested_subject_area_guid: str,
|
|
499
|
+
body: dict | DeleteRelationshipRequestBody,
|
|
500
|
+
) -> None:
|
|
501
|
+
"""Detach subject areas from a hierarchy. Async version.
|
|
502
|
+
|
|
503
|
+
Parameters
|
|
504
|
+
----------
|
|
505
|
+
parent_subject_area_guid : str
|
|
506
|
+
The unique identifier of the parent subject area.
|
|
507
|
+
nested_subject_area_guid : str
|
|
508
|
+
The unique identifier of the nested subject area.
|
|
509
|
+
body : dict | DeleteRelationshipRequestBody
|
|
510
|
+
The request body for the detach operation.
|
|
511
|
+
|
|
512
|
+
Returns
|
|
513
|
+
-------
|
|
514
|
+
None
|
|
515
|
+
|
|
516
|
+
Raises
|
|
517
|
+
------
|
|
518
|
+
PyegeriaException
|
|
519
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
520
|
+
|
|
521
|
+
Notes
|
|
522
|
+
-----
|
|
523
|
+
Sample JSON body:
|
|
524
|
+
```json
|
|
525
|
+
{
|
|
526
|
+
"class" : "DeleteRelationshipRequestBody"
|
|
527
|
+
}
|
|
528
|
+
```
|
|
529
|
+
"""
|
|
530
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/subject-area/subject-areas/{parent_subject_area_guid}/subject-area-hierarchies/{nested_subject_area_guid}/detach"
|
|
531
|
+
await self._async_delete_relationship_request(url, body)
|
|
532
|
+
|
|
533
|
+
def detach_subject_area_hierarchy(
|
|
534
|
+
self,
|
|
535
|
+
parent_subject_area_guid: str,
|
|
536
|
+
nested_subject_area_guid: str,
|
|
537
|
+
body: dict | DeleteRelationshipRequestBody,
|
|
538
|
+
) -> None:
|
|
539
|
+
"""Detach subject areas from a hierarchy.
|
|
540
|
+
|
|
541
|
+
Parameters
|
|
542
|
+
----------
|
|
543
|
+
parent_subject_area_guid : str
|
|
544
|
+
The unique identifier of the parent subject area.
|
|
545
|
+
nested_subject_area_guid : str
|
|
546
|
+
The unique identifier of the nested subject area.
|
|
547
|
+
body : dict | DeleteRelationshipRequestBody
|
|
548
|
+
The request body for the detach operation.
|
|
549
|
+
|
|
550
|
+
Returns
|
|
551
|
+
-------
|
|
552
|
+
None
|
|
553
|
+
|
|
554
|
+
Raises
|
|
555
|
+
------
|
|
556
|
+
PyegeriaException
|
|
557
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
558
|
+
|
|
559
|
+
Notes
|
|
560
|
+
-----
|
|
561
|
+
Sample JSON body:
|
|
562
|
+
```json
|
|
563
|
+
{
|
|
564
|
+
"class" : "DeleteRelationshipRequestBody"
|
|
565
|
+
}
|
|
566
|
+
```
|
|
567
|
+
"""
|
|
568
|
+
loop = asyncio.get_event_loop()
|
|
569
|
+
loop.run_until_complete(
|
|
570
|
+
self._async_detach_subject_area_hierarchy(
|
|
571
|
+
parent_subject_area_guid, nested_subject_area_guid, body
|
|
572
|
+
)
|
|
573
|
+
)
|
|
574
|
+
|
|
575
|
+
@dynamic_catch
|
|
576
|
+
async def _async_get_subject_areas_by_name(
|
|
577
|
+
self,
|
|
578
|
+
filter_string: Optional[str] = None,
|
|
579
|
+
classification_names: Optional[list[str]] = None,
|
|
580
|
+
body: Optional[dict | FilterRequestBody] = None,
|
|
581
|
+
start_from: int = 0,
|
|
582
|
+
page_size: int = 0,
|
|
583
|
+
output_format: str = "JSON",
|
|
584
|
+
report_spec: str | dict = "SubjectAreas",
|
|
585
|
+
) -> list | str:
|
|
586
|
+
"""Get subject areas by name. Async version.
|
|
587
|
+
|
|
588
|
+
Parameters
|
|
589
|
+
----------
|
|
590
|
+
filter_string : str, optional
|
|
591
|
+
The string to find in the properties.
|
|
592
|
+
classification_names : list[str], optional
|
|
593
|
+
The list of classification names to filter by.
|
|
594
|
+
body : dict | FilterRequestBody, optional
|
|
595
|
+
The request body for the search.
|
|
596
|
+
start_from : int, optional
|
|
597
|
+
The starting index for paged results.
|
|
598
|
+
page_size : int, optional
|
|
599
|
+
The maximum number of results to return.
|
|
600
|
+
output_format : str, optional
|
|
601
|
+
The desired output format.
|
|
602
|
+
report_spec : str | dict, optional
|
|
603
|
+
The desired output columns/fields to include.
|
|
604
|
+
|
|
605
|
+
Returns
|
|
606
|
+
-------
|
|
607
|
+
list | str
|
|
608
|
+
The list of matching subject areas or a message if none found.
|
|
609
|
+
|
|
610
|
+
Raises
|
|
611
|
+
------
|
|
612
|
+
PyegeriaException
|
|
613
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
614
|
+
|
|
615
|
+
Notes
|
|
616
|
+
-----
|
|
617
|
+
Sample JSON body:
|
|
618
|
+
```json
|
|
619
|
+
{
|
|
620
|
+
"class" : "FilterRequestBody",
|
|
621
|
+
"filter" : "AreaName",
|
|
622
|
+
"metadataElementTypeName": "SubjectAreaDefinition"
|
|
623
|
+
}
|
|
624
|
+
```
|
|
625
|
+
"""
|
|
626
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/subject-area/governance-definitions/by-name"
|
|
627
|
+
return await self._async_get_name_request(
|
|
628
|
+
url,
|
|
629
|
+
_type="SubjectArea",
|
|
630
|
+
_gen_output=self._generate_subject_area_output,
|
|
631
|
+
filter_string=filter_string,
|
|
632
|
+
classification_names=classification_names,
|
|
633
|
+
start_from=start_from,
|
|
634
|
+
page_size=page_size,
|
|
635
|
+
output_format=output_format,
|
|
636
|
+
report_spec=report_spec,
|
|
637
|
+
body=body,
|
|
638
|
+
)
|
|
639
|
+
|
|
640
|
+
def get_subject_areas_by_name(
|
|
641
|
+
self,
|
|
642
|
+
filter_string: Optional[str] = None,
|
|
643
|
+
classification_names: Optional[list[str]] = None,
|
|
644
|
+
body: Optional[dict | FilterRequestBody] = None,
|
|
645
|
+
start_from: int = 0,
|
|
646
|
+
page_size: int = 0,
|
|
647
|
+
output_format: str = "JSON",
|
|
648
|
+
report_spec: str | dict = "SubjectAreas",
|
|
649
|
+
) -> list | str:
|
|
650
|
+
"""Get subject areas by name.
|
|
651
|
+
|
|
652
|
+
Parameters
|
|
653
|
+
----------
|
|
654
|
+
filter_string : str, optional
|
|
655
|
+
The string to find in the properties.
|
|
656
|
+
classification_names : list[str], optional
|
|
657
|
+
The list of classification names to filter by.
|
|
658
|
+
body : dict | FilterRequestBody, optional
|
|
659
|
+
The request body for the search.
|
|
660
|
+
start_from : int, optional
|
|
661
|
+
The starting index for paged results.
|
|
662
|
+
page_size : int, optional
|
|
663
|
+
The maximum number of results to return.
|
|
664
|
+
output_format : str, optional
|
|
665
|
+
The desired output format.
|
|
666
|
+
report_spec : str | dict, optional
|
|
667
|
+
The desired output columns/fields to include.
|
|
668
|
+
|
|
669
|
+
Returns
|
|
670
|
+
-------
|
|
671
|
+
list | str
|
|
672
|
+
The list of matching subject areas or a message if none found.
|
|
673
|
+
|
|
674
|
+
Raises
|
|
675
|
+
------
|
|
676
|
+
PyegeriaException
|
|
677
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
678
|
+
|
|
679
|
+
Notes
|
|
680
|
+
-----
|
|
681
|
+
Sample JSON body:
|
|
682
|
+
```json
|
|
683
|
+
{
|
|
684
|
+
"class" : "FilterRequestBody",
|
|
685
|
+
"filter" : "AreaName",
|
|
686
|
+
"metadataElementTypeName": "SubjectAreaDefinition"
|
|
687
|
+
}
|
|
688
|
+
```
|
|
689
|
+
"""
|
|
690
|
+
loop = asyncio.get_event_loop()
|
|
691
|
+
return loop.run_until_complete(
|
|
692
|
+
self._async_get_subject_areas_by_name(
|
|
693
|
+
filter_string,
|
|
694
|
+
classification_names,
|
|
695
|
+
body,
|
|
696
|
+
start_from,
|
|
697
|
+
page_size,
|
|
698
|
+
output_format,
|
|
699
|
+
report_spec,
|
|
700
|
+
)
|
|
701
|
+
)
|
|
702
|
+
|
|
703
|
+
@dynamic_catch
|
|
704
|
+
async def _async_find_subject_areas(self, search_string: str = "*",
|
|
705
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
706
|
+
ignore_case: bool = False,
|
|
707
|
+
anchor_domain: Optional[str] = None,
|
|
708
|
+
metadata_element_type: Optional[str] = None,
|
|
709
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
710
|
+
skip_relationships: Optional[list[str]] = None,
|
|
711
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
712
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
713
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
714
|
+
graph_query_depth: int = 3,
|
|
715
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
716
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
717
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
718
|
+
sequencing_property: Optional[str] = None,
|
|
719
|
+
output_format: str = "JSON",
|
|
720
|
+
report_spec: str | dict = "Referenceable",
|
|
721
|
+
start_from: int = 0, page_size: int = 100,
|
|
722
|
+
property_names: Optional[list[str]] = None,
|
|
723
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
724
|
+
""" Retrieve the list of subject area metadata elements that contain the search string. Async Version.
|
|
725
|
+
|
|
726
|
+
Parameters
|
|
727
|
+
----------
|
|
728
|
+
search_string: str
|
|
729
|
+
Search string to match against - None or '*' indicate match against all subject areas.
|
|
730
|
+
starts_with : bool, [default=True], optional
|
|
731
|
+
Starts with the supplied string.
|
|
732
|
+
ends_with : bool, [default=False], optional
|
|
733
|
+
Ends with the supplied string
|
|
734
|
+
ignore_case : bool, [default=False], optional
|
|
735
|
+
Ignore case when searching
|
|
736
|
+
anchor_domain: str, optional
|
|
737
|
+
The anchor domain to search in.
|
|
738
|
+
metadata_element_type: str, optional
|
|
739
|
+
The type of metadata element to search for.
|
|
740
|
+
metadata_element_subtypes: list[str], optional
|
|
741
|
+
The subtypes of metadata element to search for.
|
|
742
|
+
skip_relationships: list[str], optional
|
|
743
|
+
The types of relationships to skip.
|
|
744
|
+
include_only_relationships: list[str], optional
|
|
745
|
+
The types of relationships to include.
|
|
746
|
+
skip_classified_elements: list[str], optional
|
|
747
|
+
The types of classified elements to skip.
|
|
748
|
+
include_only_classified_elements: list[str], optional
|
|
749
|
+
The types of classified elements to include.
|
|
750
|
+
graph_query_depth: int, [default=3], optional
|
|
751
|
+
The depth of the graph query.
|
|
752
|
+
governance_zone_filter: list[str], optional
|
|
753
|
+
The governance zones to search in.
|
|
754
|
+
as_of_time: str, optional
|
|
755
|
+
The time to search as of.
|
|
756
|
+
effective_time: str, optional
|
|
757
|
+
The effective time to search at.
|
|
758
|
+
relationship_page_size: int, [default=0], optional
|
|
759
|
+
The page size for relationships.
|
|
760
|
+
limit_results_by_status: list[str], optional
|
|
761
|
+
The statuses to limit results by.
|
|
762
|
+
sequencing_order: str, optional
|
|
763
|
+
The order to sequence results by.
|
|
764
|
+
sequencing_property: str, optional
|
|
765
|
+
The property to sequence results by.
|
|
766
|
+
output_format: str, default = "JSON"
|
|
767
|
+
- one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
|
|
768
|
+
report_spec: str | dict , optional, default = "Referenceable"
|
|
769
|
+
- The desired output columns/fields to include.
|
|
770
|
+
start_from: int, [default=0], optional
|
|
771
|
+
When multiple pages of results are available, the page number to start from.
|
|
772
|
+
page_size: int, [default=100]
|
|
773
|
+
The number of items to return in a single page.
|
|
774
|
+
property_names: list[str], optional
|
|
775
|
+
The names of properties to search for.
|
|
776
|
+
body: dict | SearchStringRequestBody, optional, default = None
|
|
777
|
+
- if provided, the search parameters in the body will supercede other attributes, such as "search_string"
|
|
778
|
+
|
|
779
|
+
Returns
|
|
780
|
+
-------
|
|
781
|
+
List | str
|
|
782
|
+
|
|
783
|
+
Output depends on the output format specified.
|
|
784
|
+
|
|
785
|
+
Raises
|
|
786
|
+
-------
|
|
787
|
+
|
|
788
|
+
ValidationError
|
|
789
|
+
If the client passes incorrect parameters on the request that don't conform to the data model.
|
|
790
|
+
PyegeriaException
|
|
791
|
+
Issues raised in communicating or server side processing.
|
|
792
|
+
NotAuthorizedException
|
|
793
|
+
The principle specified by the user_id does not have authorization for the requested action
|
|
794
|
+
|
|
795
|
+
"""
|
|
796
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/subject-area/subject-areas/by-search-string"
|
|
797
|
+
response = await self._async_find_request(url, _type="SubjectArea", _gen_output=self._generate_subject_area_output,
|
|
798
|
+
search_string=search_string, starts_with=starts_with,
|
|
799
|
+
ends_with=ends_with, ignore_case=ignore_case,
|
|
800
|
+
anchor_domain=anchor_domain,
|
|
801
|
+
metadata_element_type=metadata_element_type,
|
|
802
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
803
|
+
skip_relationships=skip_relationships,
|
|
804
|
+
include_only_relationships=include_only_relationships,
|
|
805
|
+
skip_classified_elements=skip_classified_elements,
|
|
806
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
807
|
+
graph_query_depth=graph_query_depth,
|
|
808
|
+
governance_zone_filter=governance_zone_filter,
|
|
809
|
+
as_of_time=as_of_time, effective_time=effective_time,
|
|
810
|
+
relationship_page_size=relationship_page_size,
|
|
811
|
+
limit_results_by_status=limit_results_by_status,
|
|
812
|
+
sequencing_order=sequencing_order,
|
|
813
|
+
sequencing_property=sequencing_property,
|
|
814
|
+
output_format=output_format, report_spec=report_spec,
|
|
815
|
+
start_from=start_from, page_size=page_size,
|
|
816
|
+
property_names=property_names, body=body)
|
|
817
|
+
|
|
818
|
+
return response
|
|
819
|
+
|
|
820
|
+
@dynamic_catch
|
|
821
|
+
def find_subject_areas(self, search_string: str = "*",
|
|
822
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
823
|
+
ignore_case: bool = False,
|
|
824
|
+
anchor_domain: Optional[str] = None,
|
|
825
|
+
metadata_element_type: Optional[str] = None,
|
|
826
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
827
|
+
skip_relationships: Optional[list[str]] = None,
|
|
828
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
829
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
830
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
831
|
+
graph_query_depth: int = 3,
|
|
832
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
833
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
834
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
835
|
+
sequencing_property: Optional[str] = None,
|
|
836
|
+
output_format: str = "JSON",
|
|
837
|
+
report_spec: str | dict = "Referenceable",
|
|
838
|
+
start_from: int = 0, page_size: int = 100,
|
|
839
|
+
property_names: Optional[list[str]] = None,
|
|
840
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
841
|
+
""" Retrieve the list of subject area metadata elements that contain the search string.
|
|
842
|
+
|
|
843
|
+
Parameters
|
|
844
|
+
----------
|
|
845
|
+
search_string: str
|
|
846
|
+
Search string to match against - None or '*' indicate match against all subject areas.
|
|
847
|
+
starts_with : bool, [default=True], optional
|
|
848
|
+
Starts with the supplied string.
|
|
849
|
+
ends_with : bool, [default=False], optional
|
|
850
|
+
Ends with the supplied string
|
|
851
|
+
ignore_case : bool, [default=False], optional
|
|
852
|
+
Ignore case when searching
|
|
853
|
+
anchor_domain: str, optional
|
|
854
|
+
The anchor domain to search in.
|
|
855
|
+
metadata_element_type: str, optional
|
|
856
|
+
The type of metadata element to search for.
|
|
857
|
+
metadata_element_subtypes: list[str], optional
|
|
858
|
+
The subtypes of metadata element to search for.
|
|
859
|
+
skip_relationships: list[str], optional
|
|
860
|
+
The types of relationships to skip.
|
|
861
|
+
include_only_relationships: list[str], optional
|
|
862
|
+
The types of relationships to include.
|
|
863
|
+
skip_classified_elements: list[str], optional
|
|
864
|
+
The types of classified elements to skip.
|
|
865
|
+
include_only_classified_elements: list[str], optional
|
|
866
|
+
The types of classified elements to include.
|
|
867
|
+
graph_query_depth: int, [default=3], optional
|
|
868
|
+
The depth of the graph query.
|
|
869
|
+
governance_zone_filter: list[str], optional
|
|
870
|
+
The governance zones to search in.
|
|
871
|
+
as_of_time: str, optional
|
|
872
|
+
The time to search as of.
|
|
873
|
+
effective_time: str, optional
|
|
874
|
+
The effective time to search at.
|
|
875
|
+
relationship_page_size: int, [default=0], optional
|
|
876
|
+
The page size for relationships.
|
|
877
|
+
limit_results_by_status: list[str], optional
|
|
878
|
+
The statuses to limit results by.
|
|
879
|
+
sequencing_order: str, optional
|
|
880
|
+
The order to sequence results by.
|
|
881
|
+
sequencing_property: str, optional
|
|
882
|
+
The property to sequence results by.
|
|
883
|
+
output_format: str, default = "JSON"
|
|
884
|
+
- one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
|
|
885
|
+
report_spec: str | dict , optional, default = "Referenceable"
|
|
886
|
+
- The desired output columns/fields to include.
|
|
887
|
+
start_from: int, [default=0], optional
|
|
888
|
+
When multiple pages of results are available, the page number to start from.
|
|
889
|
+
page_size: int, [default=100]
|
|
890
|
+
The number of items to return in a single page.
|
|
891
|
+
property_names: list[str], optional
|
|
892
|
+
The names of properties to search for.
|
|
893
|
+
body: dict | SearchStringRequestBody, optional, default = None
|
|
894
|
+
- if provided, the search parameters in the body will supercede other attributes, such as "search_string"
|
|
895
|
+
|
|
896
|
+
Returns
|
|
897
|
+
-------
|
|
898
|
+
List | str
|
|
899
|
+
|
|
900
|
+
Output depends on the output format specified.
|
|
901
|
+
|
|
902
|
+
Raises
|
|
903
|
+
-------
|
|
904
|
+
|
|
905
|
+
ValidationError
|
|
906
|
+
If the client passes incorrect parameters on the request that don't conform to the data model.
|
|
907
|
+
PyegeriaException
|
|
908
|
+
Issues raised in communicating or server side processing.
|
|
909
|
+
NotAuthorizedException
|
|
910
|
+
The principle specified by the user_id does not have authorization for the requested action
|
|
911
|
+
|
|
912
|
+
"""
|
|
913
|
+
loop = asyncio.get_event_loop()
|
|
914
|
+
return loop.run_until_complete(self._async_find_subject_areas(search_string=search_string,
|
|
915
|
+
starts_with=starts_with,
|
|
916
|
+
ends_with=ends_with,
|
|
917
|
+
ignore_case=ignore_case,
|
|
918
|
+
anchor_domain=anchor_domain,
|
|
919
|
+
metadata_element_type=metadata_element_type,
|
|
920
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
921
|
+
skip_relationships=skip_relationships,
|
|
922
|
+
include_only_relationships=include_only_relationships,
|
|
923
|
+
skip_classified_elements=skip_classified_elements,
|
|
924
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
925
|
+
graph_query_depth=graph_query_depth,
|
|
926
|
+
governance_zone_filter=governance_zone_filter,
|
|
927
|
+
as_of_time=as_of_time,
|
|
928
|
+
effective_time=effective_time,
|
|
929
|
+
relationship_page_size=relationship_page_size,
|
|
930
|
+
limit_results_by_status=limit_results_by_status,
|
|
931
|
+
sequencing_order=sequencing_order,
|
|
932
|
+
sequencing_property=sequencing_property,
|
|
933
|
+
output_format=output_format,
|
|
934
|
+
report_spec=report_spec,
|
|
935
|
+
start_from=start_from,
|
|
936
|
+
page_size=page_size,
|
|
937
|
+
property_names=property_names,
|
|
938
|
+
body=body))
|
|
939
|
+
|
|
940
|
+
@dynamic_catch
|
|
941
|
+
async def _async_get_subject_area_by_guid(
|
|
942
|
+
self,
|
|
943
|
+
subject_area_guid: str,
|
|
944
|
+
element_type: str = "SubjectArea",
|
|
945
|
+
body: Optional[dict | GetRequestBody] = None,
|
|
946
|
+
output_format: str = "JSON",
|
|
947
|
+
report_spec: str | dict = "SubjectAreas",
|
|
948
|
+
) -> dict | str:
|
|
949
|
+
"""Get subject area by GUID. Async version.
|
|
950
|
+
|
|
951
|
+
Parameters
|
|
952
|
+
----------
|
|
953
|
+
subject_area_guid : str
|
|
954
|
+
The unique identifier of the subject area.
|
|
955
|
+
element_type : str, optional
|
|
956
|
+
The type of metadata element.
|
|
957
|
+
body : dict | GetRequestBody, optional
|
|
958
|
+
The request body for the search.
|
|
959
|
+
output_format : str, optional
|
|
960
|
+
The desired output format.
|
|
961
|
+
report_spec : str | dict, optional
|
|
962
|
+
The desired output columns/fields to include.
|
|
963
|
+
|
|
964
|
+
Returns
|
|
965
|
+
-------
|
|
966
|
+
dict | str
|
|
967
|
+
The requested subject area or a message if not found.
|
|
968
|
+
|
|
969
|
+
Raises
|
|
970
|
+
------
|
|
971
|
+
PyegeriaException
|
|
972
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
973
|
+
|
|
974
|
+
Notes
|
|
975
|
+
-----
|
|
976
|
+
Sample JSON body:
|
|
977
|
+
```json
|
|
978
|
+
{
|
|
979
|
+
"class" : "GetRequestBody",
|
|
980
|
+
"forLineage" : false
|
|
981
|
+
}
|
|
982
|
+
```
|
|
983
|
+
"""
|
|
984
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/subject-area/governance-definitions/{subject_area_guid}/retrieve"
|
|
985
|
+
return await self._async_get_guid_request(
|
|
986
|
+
url,
|
|
987
|
+
_type=element_type,
|
|
988
|
+
_gen_output=self._generate_subject_area_output,
|
|
989
|
+
output_format=output_format,
|
|
990
|
+
report_spec=report_spec,
|
|
991
|
+
body=body,
|
|
992
|
+
)
|
|
993
|
+
|
|
994
|
+
def get_subject_area_by_guid(
|
|
995
|
+
self,
|
|
996
|
+
subject_area_guid: str,
|
|
997
|
+
element_type: str = "SubjectArea",
|
|
998
|
+
body: Optional[dict | GetRequestBody] = None,
|
|
999
|
+
output_format: str = "JSON",
|
|
1000
|
+
report_spec: str | dict = "SubjectAreas",
|
|
1001
|
+
) -> dict | str:
|
|
1002
|
+
"""Get subject area by GUID.
|
|
1003
|
+
|
|
1004
|
+
Parameters
|
|
1005
|
+
----------
|
|
1006
|
+
subject_area_guid : str
|
|
1007
|
+
The unique identifier of the subject area.
|
|
1008
|
+
element_type : str, optional
|
|
1009
|
+
The type of metadata element.
|
|
1010
|
+
body : dict | GetRequestBody, optional
|
|
1011
|
+
The request body for the search.
|
|
1012
|
+
output_format : str, optional
|
|
1013
|
+
The desired output format.
|
|
1014
|
+
report_spec : str | dict, optional
|
|
1015
|
+
The desired output columns/fields to include.
|
|
1016
|
+
|
|
1017
|
+
Returns
|
|
1018
|
+
-------
|
|
1019
|
+
dict | str
|
|
1020
|
+
The requested subject area or a message if not found.
|
|
1021
|
+
|
|
1022
|
+
Raises
|
|
1023
|
+
------
|
|
1024
|
+
PyegeriaException
|
|
1025
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
1026
|
+
|
|
1027
|
+
Notes
|
|
1028
|
+
-----
|
|
1029
|
+
Sample JSON body:
|
|
1030
|
+
```json
|
|
1031
|
+
{
|
|
1032
|
+
"class" : "GetRequestBody",
|
|
1033
|
+
"forLineage" : false
|
|
1034
|
+
}
|
|
1035
|
+
```
|
|
1036
|
+
"""
|
|
1037
|
+
loop = asyncio.get_event_loop()
|
|
1038
|
+
return loop.run_until_complete(
|
|
1039
|
+
self._async_get_subject_area_by_guid(
|
|
1040
|
+
subject_area_guid, element_type, body, output_format, report_spec
|
|
1041
|
+
)
|
|
1042
|
+
)
|