pyegeria 5.4.7.5__py3-none-any.whl → 5.4.7.7__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.
- commands/ops/monitor_engine_activity.py +1 -1
- md_processing/md_commands/ext_ref_commands.py +6 -3
- md_processing/md_commands/solution_architect_commands.py +1 -1
- pyegeria/_client_new.py +1 -1
- pyegeria/_output_formats.py +20 -0
- pyegeria/automated_curation.py +83 -219
- pyegeria/collection_manager.py +1 -1
- pyegeria/external_references.py +1 -1
- pyegeria/mermaid_utilities.py +1 -1
- pyegeria/output_formatter.py +3 -1
- pyegeria/solution_architect.py +6 -4
- {pyegeria-5.4.7.5.dist-info → pyegeria-5.4.7.7.dist-info}/METADATA +1 -1
- {pyegeria-5.4.7.5.dist-info → pyegeria-5.4.7.7.dist-info}/RECORD +17 -17
- {pyegeria-5.4.7.5.dist-info → pyegeria-5.4.7.7.dist-info}/WHEEL +0 -0
- {pyegeria-5.4.7.5.dist-info → pyegeria-5.4.7.7.dist-info}/entry_points.txt +0 -0
- {pyegeria-5.4.7.5.dist-info → pyegeria-5.4.7.7.dist-info}/licenses/LICENSE +0 -0
- {pyegeria-5.4.7.5.dist-info → pyegeria-5.4.7.7.dist-info}/top_level.txt +0 -0
@@ -109,7 +109,7 @@ def display_engine_activity(
|
|
109
109
|
table.add_column("Process Name")
|
110
110
|
table.add_column("Completion Message")
|
111
111
|
|
112
|
-
action_status = g_client.
|
112
|
+
action_status = g_client.get_active_engine_actions()
|
113
113
|
|
114
114
|
if type(action_status) is str:
|
115
115
|
requested_time = " "
|
@@ -100,13 +100,15 @@ def process_external_reference_upsert_command(egeria_client: EgeriaTech, txt: st
|
|
100
100
|
prop_body["copyright"] = attributes.get('Copyright', {}).get('value', None)
|
101
101
|
prop_body["attribution"] = attributes.get('Attribution', {}).get('value', None)
|
102
102
|
|
103
|
-
if object_type
|
103
|
+
if object_type in ["RelatedMedia", "Related Media"]:
|
104
|
+
object_type = "RelatedMedia"
|
104
105
|
prop_body["class"] = "RelatedProperties"
|
105
106
|
prop_body["mediaType"] = attributes.get('Media Type', {}).get('value', None)
|
106
107
|
prop_body["mediaTypeOtherId"] = attributes.get('Media Type Other ID', {}).get('value', None)
|
107
108
|
prop_body["defaultMediaUsage"]= attributes.get('Default Media Usage', {}).get('value', None)
|
108
109
|
prop_body["defaultMediaUsageOtherId"] = attributes.get('Default Media Usage Other ID', {}).get('value', None)
|
109
|
-
elif object_type
|
110
|
+
elif object_type in ["CitedDocument", "Cited Document"]:
|
111
|
+
object_type = "CitedDocument"
|
110
112
|
prop_body["class"] = "CitedDocumentProperties"
|
111
113
|
prop_body["numberOfPages"] = attributes.get('Number of Pages', {}).get('value', None)
|
112
114
|
prop_body["pageRange"] = attributes.get('Page Range', {}).get('value', None)
|
@@ -119,7 +121,8 @@ def process_external_reference_upsert_command(egeria_client: EgeriaTech, txt: st
|
|
119
121
|
prop_body["publicationCity"] = attributes.get('Publication City', {}).get('value', None)
|
120
122
|
prop_body["publicationYear"] = attributes.get('Publication Year', {}).get('value', None)
|
121
123
|
prop_body["publicationNumbers"]= attributes.get('Publication Numbers', {}).get('value', None)
|
122
|
-
|
124
|
+
elif object_type in ["ExternalReference", "External Reference"]:
|
125
|
+
object_type = "ExternalReference"
|
123
126
|
|
124
127
|
|
125
128
|
if object_action == "Update":
|
@@ -534,7 +534,7 @@ def process_solution_component_upsert_command(egeria_client: EgeriaTech, txt: st
|
|
534
534
|
|
535
535
|
else:
|
536
536
|
body = body_slimmer({
|
537
|
-
"class": "
|
537
|
+
"class": "NewElementRequestBody",
|
538
538
|
"anchorGUID": anchor_guid,
|
539
539
|
"isOwnAnchor": is_own_anchor,
|
540
540
|
"parentGUID": parent_guid,
|
pyegeria/_client_new.py
CHANGED
@@ -1565,7 +1565,7 @@ class Client2:
|
|
1565
1565
|
json_body = validated_body.model_dump_json(indent=2, exclude_none=True)
|
1566
1566
|
|
1567
1567
|
response = await self._async_make_request("POST", url, json_body)
|
1568
|
-
elements = response.json().get("
|
1568
|
+
elements = response.json().get("elements", NO_ELEMENTS_FOUND)
|
1569
1569
|
if type(elements) is str:
|
1570
1570
|
logger.info(NO_ELEMENTS_FOUND)
|
1571
1571
|
return NO_ELEMENTS_FOUND
|
pyegeria/_output_formats.py
CHANGED
@@ -298,6 +298,26 @@ base_output_format_sets = FormatSetDict({
|
|
298
298
|
)
|
299
299
|
],
|
300
300
|
),
|
301
|
+
"TechTypeDetail": FormatSet(
|
302
|
+
target_type="TechTypeDetail",
|
303
|
+
heading="Technology Type Details",
|
304
|
+
description="Details of a Technology Type Valid Value.",
|
305
|
+
annotations={}, # No specific annotations
|
306
|
+
formats=[
|
307
|
+
Format(
|
308
|
+
types=["ALL"],
|
309
|
+
columns= [
|
310
|
+
Column(name='Display Name', key='display_name'),
|
311
|
+
Column(name="Qualified Name", key='qualified_name'),
|
312
|
+
Column(name="GUID", key='guid'),
|
313
|
+
Column(name="Description", key='description'),
|
314
|
+
Column(name="Catalog Template Placeholders", key='catalog_template_specs'),
|
315
|
+
Column(name="Reference URL", key='ref_url'),
|
316
|
+
],
|
317
|
+
)
|
318
|
+
],
|
319
|
+
),
|
320
|
+
|
301
321
|
"ExternalReference": FormatSet(
|
302
322
|
target_type="External Reference",
|
303
323
|
heading="External Reference Attributes",
|
pyegeria/automated_curation.py
CHANGED
@@ -75,44 +75,35 @@ class AutomatedCuration(Client2):
|
|
75
75
|
Extract properties from a technology type element and populate the provided columns_struct.
|
76
76
|
Tolerant to missing fields.
|
77
77
|
"""
|
78
|
-
# Populate direct properties first
|
79
|
-
col_data = populate_columns_from_properties(element, columns_struct)
|
80
|
-
columns_list = col_data.get("formats", {}).get("columns", [])
|
78
|
+
# # Populate direct properties first
|
79
|
+
# col_data = populate_columns_from_properties(element, columns_struct)
|
80
|
+
# columns_list = col_data.get("formats", {}).get("columns", [])
|
81
|
+
#
|
82
|
+
# # Referenceable header extraction (GUID, qualifiedName, displayName, etc.)
|
83
|
+
# header_props = _extract_referenceable_properties(element)
|
84
|
+
# for column in columns_list:
|
85
|
+
# key = column.get("key")
|
86
|
+
# if key in header_props:
|
87
|
+
# column["value"] = header_props.get(key)
|
88
|
+
# elif isinstance(key, str) and key.lower() == "guid":
|
89
|
+
# column["value"] = header_props.get("GUID")
|
90
|
+
#
|
91
|
+
# # Try common category/type fields
|
92
|
+
# category = (
|
93
|
+
# element.get("properties", {}).get("category")
|
94
|
+
# or element.get("elementProperties", {}).get("category")
|
95
|
+
# or element.get("elementType", {}).get("typeName")
|
96
|
+
# or ""
|
97
|
+
# )
|
98
|
+
columns_list = columns_struct.get("formats", {}).get("columns", [])
|
99
|
+
|
100
|
+
guid = element.get('technologyTypeGUID',None)
|
101
|
+
qualified_name = element.get('qualifiedName',None)
|
102
|
+
display_name = element.get('displayName',None)
|
103
|
+
description = element.get('description',None)
|
104
|
+
catalog_templates = element.get('catalogTemplates',None)
|
105
|
+
external_references = element.get('externalReferences',None)
|
81
106
|
|
82
|
-
# Referenceable header extraction (GUID, qualifiedName, displayName, etc.)
|
83
|
-
header_props = _extract_referenceable_properties(element)
|
84
|
-
for column in columns_list:
|
85
|
-
key = column.get("key")
|
86
|
-
if key in header_props:
|
87
|
-
column["value"] = header_props.get(key)
|
88
|
-
elif isinstance(key, str) and key.lower() == "guid":
|
89
|
-
column["value"] = header_props.get("GUID")
|
90
|
-
|
91
|
-
# Try common category/type fields
|
92
|
-
category = (
|
93
|
-
element.get("properties", {}).get("category")
|
94
|
-
or element.get("elementProperties", {}).get("category")
|
95
|
-
or element.get("elementType", {}).get("typeName")
|
96
|
-
or ""
|
97
|
-
)
|
98
|
-
for column in columns_list:
|
99
|
-
if column.get("key") in ("category", "type_name"):
|
100
|
-
column["value"] = category
|
101
|
-
|
102
|
-
# Classification names if present
|
103
|
-
class_names = []
|
104
|
-
for c in (element.get("elementHeader", {}).get("classifications") or []):
|
105
|
-
name = c.get("classificationName")
|
106
|
-
if name:
|
107
|
-
class_names.append(name)
|
108
|
-
if class_names:
|
109
|
-
for column in columns_list:
|
110
|
-
if column.get("key") == "classifications":
|
111
|
-
column["value"] = ", ".join(class_names)
|
112
|
-
break
|
113
|
-
|
114
|
-
# Relationship-driven fields (generic handling)
|
115
|
-
col_data = get_required_relationships(element, col_data)
|
116
107
|
|
117
108
|
# Mermaid graph support if present
|
118
109
|
mermaid_val = element.get("mermaidGraph", "") or ""
|
@@ -120,8 +111,33 @@ class AutomatedCuration(Client2):
|
|
120
111
|
if column.get("key") == "mermaid":
|
121
112
|
column["value"] = mermaid_val
|
122
113
|
break
|
123
|
-
|
124
|
-
|
114
|
+
elif column.get("key") == "catalog_template_specs":
|
115
|
+
specs = ""
|
116
|
+
for template in catalog_templates:
|
117
|
+
for placeholder in template['specification']['placeholderProperty']:
|
118
|
+
specs += (f"* Placeholder Property: {placeholder['placeholderPropertyName']}\n\t"
|
119
|
+
f"Type: {placeholder.get('dataType',"")}\n\t"
|
120
|
+
f"Description: {placeholder.get('description',"")}\n\t"
|
121
|
+
f"Required: {placeholder.get("required","")}\n\t"
|
122
|
+
f"Example: {placeholder.get("example","")}\n\n")
|
123
|
+
column["value"] = specs
|
124
|
+
elif column.get("key") == "catalog_templates":
|
125
|
+
column["value"] =catalog_templates
|
126
|
+
elif column.get("key") == "guid":
|
127
|
+
column["value"] = guid
|
128
|
+
elif column.get("key") == "qualified_name":
|
129
|
+
column["value"] = qualified_name
|
130
|
+
elif column.get("key") == "display_name":
|
131
|
+
column["value"] = display_name
|
132
|
+
elif column.get("key") == "description":
|
133
|
+
column["value"] = description
|
134
|
+
elif column.get("key") == "external_references":
|
135
|
+
column["value"] = external_references
|
136
|
+
elif column.get("key") == "ref_url":
|
137
|
+
column["value"] = external_references[0]['relatedElement']['properties'].get('url',"")
|
138
|
+
|
139
|
+
columns_struct["formats"]["columns"] = columns_list
|
140
|
+
return columns_struct
|
125
141
|
|
126
142
|
def _generate_tech_type_output(
|
127
143
|
self,
|
@@ -1737,154 +1753,6 @@ class AutomatedCuration(Client2):
|
|
1737
1753
|
#
|
1738
1754
|
# Engine Actions
|
1739
1755
|
#
|
1740
|
-
async def _async_get_engine_actions(
|
1741
|
-
self, start_from: int = 0, page_size: int = 0, body: dict | GetRequestBody = None,
|
1742
|
-
output_format: str = "JSON", output_format_set: str | dict = "EngineAction"
|
1743
|
-
) -> list | str:
|
1744
|
-
"""Retrieve the engine actions that are known to the server. Async version.
|
1745
|
-
Parameters
|
1746
|
-
----------
|
1747
|
-
|
1748
|
-
start_from : int, optional
|
1749
|
-
The starting index of the actions to retrieve. Default is 0.
|
1750
|
-
page_size : int, optional
|
1751
|
-
The maximum number of actions to retrieve per page. Default is the global maximum paging size.
|
1752
|
-
body: dict, optional
|
1753
|
-
If provided, supersedes the other parameters. Allows advanced options.
|
1754
|
-
|
1755
|
-
Returns
|
1756
|
-
-------
|
1757
|
-
[dict]
|
1758
|
-
A list of engine action descriptions as JSON.
|
1759
|
-
|
1760
|
-
Raises
|
1761
|
-
------
|
1762
|
-
PyegeriaException
|
1763
|
-
ValidationError
|
1764
|
-
|
1765
|
-
Notes
|
1766
|
-
-----
|
1767
|
-
For more information see: https://egeria-project.org/concepts/engine-action
|
1768
|
-
sample body:
|
1769
|
-
{
|
1770
|
-
"class": "GetRequestBody",
|
1771
|
-
"asOfTime": "{{$isoTimestamp}}",
|
1772
|
-
"effectiveTime": "{{$isoTimestamp}}",
|
1773
|
-
"forLineage": false,
|
1774
|
-
"forDuplicateProcessing": false
|
1775
|
-
}
|
1776
|
-
"""
|
1777
|
-
url = (
|
1778
|
-
f"{self.curation_command_root}/engine-actions?startFrom={start_from}&pageSize={page_size}"
|
1779
|
-
)
|
1780
|
-
|
1781
|
-
# return await self._async_get_guid_request(url, "EngineAction", _generate_default_output,
|
1782
|
-
# output_format="JSON", output_format_set="Referenceable", body=body )
|
1783
|
-
response = await self._async_make_request("GET", url)
|
1784
|
-
elements = response.json().get("elements", "No element found")
|
1785
|
-
# Apply formatter if not raw JSON requested
|
1786
|
-
return self._generate_engine_action_output(elements, None, self.ENGINE_ACTION_LABEL,
|
1787
|
-
output_format=output_format, output_format_set=output_format_set)
|
1788
|
-
|
1789
|
-
def get_engine_actions(
|
1790
|
-
self, start_from: int = 0, page_size: int = 0, body: dict | GetRequestBody = None,
|
1791
|
-
output_format: str = "JSON", output_format_set: str | dict = "EngineAction"
|
1792
|
-
) -> list | str:
|
1793
|
-
"""Retrieve the engine actions that are known to the server.
|
1794
|
-
Parameters
|
1795
|
-
----------
|
1796
|
-
start_from : int, optional
|
1797
|
-
The starting index of the actions to retrieve. Default is 0.
|
1798
|
-
page_size : int, optional
|
1799
|
-
The maximum number of actions to retrieve per page. Default is the global maximum paging size.
|
1800
|
-
body: dict, optional
|
1801
|
-
If provided, supersedes the other parameters. Allows advanced options.
|
1802
|
-
|
1803
|
-
Returns
|
1804
|
-
-------
|
1805
|
-
[dict]
|
1806
|
-
A list of engine action descriptions as JSON.
|
1807
|
-
|
1808
|
-
Raises
|
1809
|
-
------
|
1810
|
-
PyegeriaException
|
1811
|
-
ValidationError
|
1812
|
-
|
1813
|
-
Notes
|
1814
|
-
-----
|
1815
|
-
For more information see: https://egeria-project.org/concepts/engine-action
|
1816
|
-
sample body:
|
1817
|
-
{
|
1818
|
-
"class": "GetRequestBody",
|
1819
|
-
"asOfTime": "{{$isoTimestamp}}",
|
1820
|
-
"effectiveTime": "{{$isoTimestamp}}",
|
1821
|
-
"forLineage": false,
|
1822
|
-
"forDuplicateProcessing": false
|
1823
|
-
}
|
1824
|
-
"""
|
1825
|
-
loop = asyncio.get_event_loop()
|
1826
|
-
response = loop.run_until_complete(
|
1827
|
-
self._async_get_engine_actions(start_from, page_size, body,
|
1828
|
-
output_format=output_format, output_format_set=output_format_set)
|
1829
|
-
)
|
1830
|
-
return response
|
1831
|
-
|
1832
|
-
async def _async_get_engine_action(self, engine_action_guid: str) -> dict:
|
1833
|
-
"""Request the status and properties of an executing engine action request. Async version.
|
1834
|
-
Parameters
|
1835
|
-
----------
|
1836
|
-
engine_action_guid : str
|
1837
|
-
The GUID of the engine action to retrieve.
|
1838
|
-
|
1839
|
-
|
1840
|
-
|
1841
|
-
Returns
|
1842
|
-
-------
|
1843
|
-
dict
|
1844
|
-
The JSON representation of the engine action.
|
1845
|
-
|
1846
|
-
Raises
|
1847
|
-
------
|
1848
|
-
PyegeriaException
|
1849
|
-
ValidationError
|
1850
|
-
|
1851
|
-
|
1852
|
-
Notes
|
1853
|
-
-----
|
1854
|
-
For more information see: https://egeria-project.org/concepts/engine-action
|
1855
|
-
"""
|
1856
|
-
|
1857
|
-
url = f"{self.curation_command_root}/engine-actions/{engine_action_guid}"
|
1858
|
-
|
1859
|
-
response = await self._async_make_request("GET", url)
|
1860
|
-
return response.json().get("element", "No element found")
|
1861
|
-
|
1862
|
-
def get_engine_action(self, engine_action_guid: str) -> dict:
|
1863
|
-
"""Request the status and properties of an executing engine action request.
|
1864
|
-
Parameters
|
1865
|
-
----------
|
1866
|
-
engine_action_guid : str
|
1867
|
-
The GUID of the engine action to retrieve.
|
1868
|
-
|
1869
|
-
|
1870
|
-
|
1871
|
-
Returns
|
1872
|
-
-------
|
1873
|
-
dict
|
1874
|
-
The JSON representation of the engine action.
|
1875
|
-
|
1876
|
-
Raises
|
1877
|
-
------
|
1878
|
-
PyegeriaException
|
1879
|
-
Notes
|
1880
|
-
-----
|
1881
|
-
For more information see: https://egeria-project.org/concepts/engine-action
|
1882
|
-
"""
|
1883
|
-
loop = asyncio.get_event_loop()
|
1884
|
-
response = loop.run_until_complete(
|
1885
|
-
self._async_get_engine_action(engine_action_guid)
|
1886
|
-
)
|
1887
|
-
return response
|
1888
1756
|
|
1889
1757
|
async def _async_cancel_engine_action(self, engine_action_guid: str) -> None:
|
1890
1758
|
"""Request that an engine action request is cancelled and any running governance service is stopped. Async Ver.
|
@@ -1944,7 +1812,7 @@ class AutomatedCuration(Client2):
|
|
1944
1812
|
|
1945
1813
|
async def _async_get_active_engine_actions(
|
1946
1814
|
self, start_from: int = 0, page_size: int = 0,
|
1947
|
-
output_format: str = "JSON", output_format_set: str | dict = "EngineAction"
|
1815
|
+
output_format: str = "JSON", output_format_set: str | dict = "EngineAction",
|
1948
1816
|
) -> list | str:
|
1949
1817
|
"""Retrieve the engine actions that are still in process. Async Version.
|
1950
1818
|
|
@@ -1976,13 +1844,20 @@ class AutomatedCuration(Client2):
|
|
1976
1844
|
)
|
1977
1845
|
|
1978
1846
|
response = await self._async_make_request("GET", url)
|
1979
|
-
elements = response.json().get("elements", "
|
1980
|
-
|
1981
|
-
|
1847
|
+
elements = response.json().get("elements", "No actions found")
|
1848
|
+
if type(elements) is str:
|
1849
|
+
logger.info("No Actions Found")
|
1850
|
+
return "No Actions Found"
|
1851
|
+
|
1852
|
+
if output_format.upper() != 'JSON': # return a simplified markdown representation
|
1853
|
+
# logger.info(f"Found elements, output format: {output_format} and output_format_set: {output_format_set}")
|
1854
|
+
return self._generate_engine_action_output(elements, None, "EngineAction",
|
1855
|
+
output_format, output_format_set)
|
1856
|
+
return elements
|
1982
1857
|
|
1983
1858
|
def get_active_engine_actions(
|
1984
1859
|
self, start_from: int = 0, page_size: int = 0,
|
1985
|
-
output_format: str = "JSON", output_format_set: str | dict = "EngineAction"
|
1860
|
+
output_format: str = "JSON", output_format_set: str | dict = "EngineAction",
|
1986
1861
|
) -> list | str:
|
1987
1862
|
"""Retrieve the engine actions that are still in process.
|
1988
1863
|
|
@@ -3447,7 +3322,7 @@ class AutomatedCuration(Client2):
|
|
3447
3322
|
)
|
3448
3323
|
return response
|
3449
3324
|
|
3450
|
-
async def _async_get_technology_type_detail(self, type_name: str,
|
3325
|
+
async def _async_get_technology_type_detail(self, type_name: str,
|
3451
3326
|
body: dict | FilterRequestBody = None,
|
3452
3327
|
output_format: str = "JSON",
|
3453
3328
|
output_format_set: str | dict = "TechType") -> list | str:
|
@@ -3457,13 +3332,9 @@ class AutomatedCuration(Client2):
|
|
3457
3332
|
----------
|
3458
3333
|
type_name : str
|
3459
3334
|
The name of the technology type to retrieve detailed information for.
|
3460
|
-
template_only : bool
|
3461
|
-
If true, only the template information will be returned.
|
3462
3335
|
body: dict | FilterRequestBody
|
3463
3336
|
If provided, the information in the body supersedes the other parameters and allows more advanced requests.
|
3464
3337
|
|
3465
|
-
|
3466
|
-
|
3467
3338
|
Returns
|
3468
3339
|
-------
|
3469
3340
|
list[dict] | str
|
@@ -3497,27 +3368,24 @@ class AutomatedCuration(Client2):
|
|
3497
3368
|
# validate_name(type_name)
|
3498
3369
|
url = str(HttpUrl(f"{self.curation_command_root}/technology-types/by-name"))
|
3499
3370
|
if body is None:
|
3500
|
-
classified_elements = ["Template"] if template_only else []
|
3501
3371
|
body = {
|
3502
3372
|
"class": "FilterRequestBody",
|
3503
|
-
"filter": type_name
|
3504
|
-
"includeOnlyClassifiedElements": classified_elements,
|
3373
|
+
"filter": type_name
|
3505
3374
|
}
|
3506
|
-
response = await self._async_get_name_request(
|
3507
|
-
url,
|
3508
|
-
_type=self.TECH_TYPE_ENTITY_LABEL,
|
3509
|
-
_gen_output=self._generate_tech_type_output,
|
3510
|
-
filter_string=type_name,
|
3511
|
-
classification_names=classified_elements if template_only else None,
|
3512
|
-
start_from=0,
|
3513
|
-
page_size=0,
|
3514
|
-
output_format=output_format,
|
3515
|
-
output_format_set=output_format_set,
|
3516
|
-
body=body,
|
3517
|
-
)
|
3518
|
-
return response
|
3519
3375
|
|
3520
|
-
|
3376
|
+
response = await self._async_make_request("POST", url, body)
|
3377
|
+
element = response.json().get("element", NO_ELEMENTS_FOUND)
|
3378
|
+
if type(element) is str:
|
3379
|
+
logger.info(NO_ELEMENTS_FOUND)
|
3380
|
+
return NO_ELEMENTS_FOUND
|
3381
|
+
|
3382
|
+
if output_format != 'JSON': # return a simplified markdown representation
|
3383
|
+
logger.info(f"Found elements, output format: {output_format} and output_format_set: {output_format_set}")
|
3384
|
+
return self._generate_tech_type_output(element, type_name, "ValidMetadataValue",
|
3385
|
+
output_format, output_format_set)
|
3386
|
+
return element
|
3387
|
+
|
3388
|
+
def get_technology_type_detail(self, type_name: str,
|
3521
3389
|
body: dict | FilterRequestBody = None,
|
3522
3390
|
output_format: str = "JSON",
|
3523
3391
|
output_format_set: str | dict = "TechType") -> list | str:
|
@@ -3527,13 +3395,9 @@ class AutomatedCuration(Client2):
|
|
3527
3395
|
----------
|
3528
3396
|
type_name : str
|
3529
3397
|
The name of the technology type to retrieve detailed information for.
|
3530
|
-
template_only : bool
|
3531
|
-
If true, only the template information will be returned.
|
3532
3398
|
body: dict | FilterRequestBody
|
3533
3399
|
If provided, the information in the body supersedes the other parameters and allows more advanced requests.
|
3534
3400
|
|
3535
|
-
|
3536
|
-
|
3537
3401
|
Returns
|
3538
3402
|
-------
|
3539
3403
|
list[dict] | str
|
@@ -3566,7 +3430,7 @@ class AutomatedCuration(Client2):
|
|
3566
3430
|
|
3567
3431
|
loop = asyncio.get_event_loop()
|
3568
3432
|
response = loop.run_until_complete(
|
3569
|
-
self._async_get_technology_type_detail(type_name,
|
3433
|
+
self._async_get_technology_type_detail(type_name, body=body,
|
3570
3434
|
output_format=output_format,
|
3571
3435
|
output_format_set=output_format_set)
|
3572
3436
|
)
|
pyegeria/collection_manager.py
CHANGED
@@ -209,7 +209,7 @@ class CollectionManager(Client2):
|
|
209
209
|
|
210
210
|
url = (f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/collection-manager/"
|
211
211
|
f"metadata-elements/{parent_guid}/collections")
|
212
|
-
|
212
|
+
|
213
213
|
response = await self._async_make_request("POST", url, body_slimmer(body))
|
214
214
|
elements = response.json().get("elements", NO_ELEMENTS_FOUND)
|
215
215
|
if type(elements) is str:
|
pyegeria/external_references.py
CHANGED
@@ -1403,7 +1403,7 @@ class ExternalReferences(Client2):
|
|
1403
1403
|
The principle specified by the user_id does not have authorization for the requested action
|
1404
1404
|
"""
|
1405
1405
|
url = str(HttpUrl(f"{self.command_root}/external-references/by-name"))
|
1406
|
-
response = await self._async_get_name_request(url, _type="
|
1406
|
+
response = await self._async_get_name_request(url, _type="ExternalReference",
|
1407
1407
|
_gen_output=self._generate_external_reference_output,
|
1408
1408
|
filter_string=filter_string,
|
1409
1409
|
classification_names=classification_names,
|
pyegeria/mermaid_utilities.py
CHANGED
pyegeria/output_formatter.py
CHANGED
@@ -23,7 +23,9 @@ Console = Console(width=settings.Environment.console_width)
|
|
23
23
|
|
24
24
|
def _extract_referenceable_properties(element: dict[str, Any]) -> dict[str, Any]:
|
25
25
|
# Get general header attributes
|
26
|
-
guid = element
|
26
|
+
guid = element.get('elementHeader', {}).get("guid", None)
|
27
|
+
if guid is None:
|
28
|
+
return {}
|
27
29
|
metadata_collection_id = element['elementHeader']['origin'].get("homeMetadataCollectionId", None)
|
28
30
|
metadata_collection_name = element['elementHeader']['origin'].get("homeMetadataCollectionName", None)
|
29
31
|
origin_category = element['elementHeader'].get("origin_category", None)
|
pyegeria/solution_architect.py
CHANGED
@@ -1619,7 +1619,8 @@ class SolutionArchitect(Client2):
|
|
1619
1619
|
|
1620
1620
|
return self.find_information_supply_chains("*", classification_names, metadata_element_types, starts_with, ends_with, ignore_case, start_from, page_size, output_format, output_format_set, body)
|
1621
1621
|
|
1622
|
-
async def _async_find_information_supply_chains(self, search_string: str = "*",
|
1622
|
+
async def _async_find_information_supply_chains(self, search_string: str = "*", add_implementation: bool = True,
|
1623
|
+
classification_names: list[str] = None,
|
1623
1624
|
metadata_element_types: list[str] = None,
|
1624
1625
|
starts_with: bool = True, ends_with: bool = False,
|
1625
1626
|
ignore_case: bool = False, start_from: int = 0,
|
@@ -1682,7 +1683,7 @@ class SolutionArchitect(Client2):
|
|
1682
1683
|
|
1683
1684
|
"""
|
1684
1685
|
|
1685
|
-
url = f"{self.solution_architect_command_root}/information-supply-chains/by-search-string"
|
1686
|
+
url = f"{self.solution_architect_command_root}/information-supply-chains/by-search-string?addImplementation={add_implementation}"
|
1686
1687
|
return await self._async_find_request(url, _type="GovernanceDefinition",
|
1687
1688
|
_gen_output=self.generate_info_supply_chain_output,
|
1688
1689
|
search_string=search_string, classification_names=classification_names,
|
@@ -1694,7 +1695,8 @@ class SolutionArchitect(Client2):
|
|
1694
1695
|
|
1695
1696
|
|
1696
1697
|
|
1697
|
-
def find_information_supply_chains(self, search_string: str = "*",
|
1698
|
+
def find_information_supply_chains(self, search_string: str = "*", add_implementation: bool = False,
|
1699
|
+
classification_names: list[str] = None,
|
1698
1700
|
metadata_element_types: list[str] = None,
|
1699
1701
|
starts_with: bool = True, ends_with: bool = False,
|
1700
1702
|
ignore_case: bool = False, start_from: int = 0,
|
@@ -1763,7 +1765,7 @@ class SolutionArchitect(Client2):
|
|
1763
1765
|
|
1764
1766
|
loop = asyncio.get_event_loop()
|
1765
1767
|
response = loop.run_until_complete(
|
1766
|
-
self._async_find_information_supply_chains(search_string, classification_names, metadata_element_types,
|
1768
|
+
self._async_find_information_supply_chains(search_string, add_implementation,classification_names, metadata_element_types,
|
1767
1769
|
starts_with, ends_with, ignore_case,
|
1768
1770
|
start_from, page_size, output_format,
|
1769
1771
|
output_format_set, body))
|
@@ -48,7 +48,7 @@ commands/ops/list_archives.py,sha256=jKm_easQUjJNRkuasILvuVpQBFuyyBlBHE-L0i0FGgQ
|
|
48
48
|
commands/ops/list_catalog_targets.py,sha256=imtWWp71xObsN_-FDyUCcSjgzFKcAPXCtVRNm8ee_m4,7665
|
49
49
|
commands/ops/load_archive.py,sha256=DRmwPq2MOaaW87icgM3vu8oSSAD4vwtCaA2DGr3brBU,3008
|
50
50
|
commands/ops/monitor_asset_events.py,sha256=5XXWt5yvl9mGq1Lve9gdrWT0dvvTWpFr_lFWO-_WdaU,3883
|
51
|
-
commands/ops/monitor_engine_activity.py,sha256=
|
51
|
+
commands/ops/monitor_engine_activity.py,sha256=7PFDTZmOs8b2Uy_8VgSvUu5PH1tVefAKNrnY-ZF2kww,9904
|
52
52
|
commands/ops/monitor_engine_activity_c.py,sha256=OlN72BaK_Abgp_HlYWa-aF8jhL0JqhZl7wFK9_QvzwY,10774
|
53
53
|
commands/ops/monitor_gov_eng_status.py,sha256=gK5HXewXKnLEjCBRkbEyzbGtWs998P-AoFKaMCAQBLs,9917
|
54
54
|
commands/ops/monitor_integ_daemon_status.py,sha256=N09KaP1eA3OiGfRS4GgbjKxnkheMYK6oQojNbuO6KRo,11828
|
@@ -98,12 +98,12 @@ md_processing/data/generated_format_sets.json,sha256=TXvGK_Gm5ieq9i6u9M1j4CaNPzo
|
|
98
98
|
md_processing/data/generated_format_sets.py,sha256=2BfRzb5G5n8Cz6VwirQXlBq1fHBISIh4x7jquXg6QEw,36402
|
99
99
|
md_processing/md_commands/__init__.py,sha256=ssEojzFlSYtY2bHqqOoKo8PFaANZ_kq_gIbtlXnuc2s,93
|
100
100
|
md_processing/md_commands/data_designer_commands.py,sha256=WGCDlTPmGhcETdmus89w6Y8a3EhyQJ86SJURvphnM24,65516
|
101
|
-
md_processing/md_commands/ext_ref_commands.py,sha256=
|
101
|
+
md_processing/md_commands/ext_ref_commands.py,sha256=zYKRKlyw6Wlxd1eXZqZUDNPb3obwN5TQwbFPhge47ZY,23380
|
102
102
|
md_processing/md_commands/glossary_commands.py,sha256=g0SHac8Gu_rtaUcscJYZHEbKDlK_NLqL2G_dno_Vhpk,33391
|
103
103
|
md_processing/md_commands/governance_officer_commands.py,sha256=c7SnJqQooPr3zCebDzeztAM8wZq9G7ZB4EpJ-uR5moI,26479
|
104
104
|
md_processing/md_commands/product_manager_commands.py,sha256=4YKKdd_2tI5ekZlSJBiJJGqFISD7X6m0rfEd2wEL_PY,57790
|
105
105
|
md_processing/md_commands/project_commands.py,sha256=GXipp2o40o1syakH8pJ8lFO2y5mrZw4UZVcjTSPiIF8,17107
|
106
|
-
md_processing/md_commands/solution_architect_commands.py,sha256=
|
106
|
+
md_processing/md_commands/solution_architect_commands.py,sha256=FKBn-kO6Eqs39D04zhBDYM3CUl6HJP2Wt1yNORtRkkc,52561
|
107
107
|
md_processing/md_commands/view_commands.py,sha256=bIOSw0GVluOcpZMQNioeO1Srr4Y_84YNz-VHMKpPfVE,12092
|
108
108
|
md_processing/md_processing_utils/__init__.py,sha256=LxAmxlcji26ziKV4gGar01d95gL9vgToRIeJW8N-Ifs,80
|
109
109
|
md_processing/md_processing_utils/common_md_proc_utils.py,sha256=gT9Xc2BlZZe7MBRpENfz2As95N3oGk4LRko1dg9AGyI,58673
|
@@ -118,19 +118,19 @@ md_processing/md_processing_utils/md_processing_constants.py,sha256=_j8FSsB1mZ2S
|
|
118
118
|
md_processing/md_processing_utils/message_constants.py,sha256=UBf18obM83umM6zplR7ychre4xLRbBnTzidHDZ2gNvM,548
|
119
119
|
pyegeria/__init__.py,sha256=jbqMHk7Txugk-oRCz5hws4el-brzv1njjK0gwOgiQb8,4536
|
120
120
|
pyegeria/_client.py,sha256=hJHn5pD8sbelP_M9dK-M5Z2CYqpRXzXfg1UCgAdQ6dQ,33416
|
121
|
-
pyegeria/_client_new.py,sha256=
|
121
|
+
pyegeria/_client_new.py,sha256=RCyRMqgiEt8RGi1NNNk-GOpGVgLDwHj4CJ7WjtvtJPQ,92754
|
122
122
|
pyegeria/_deprecated_gov_engine.py,sha256=dWNcwVsE5__dF2u4QiIyQrssozzzOjBbLld8MdpmVCQ,17264
|
123
123
|
pyegeria/_exceptions.py,sha256=1SrnV194V4_YJNnNAU0myTHQ3dhLn4GF2B2gZcj1u90,18153
|
124
124
|
pyegeria/_exceptions_new.py,sha256=srmrlqoWy7VvOJOhPcYFKW32MCIovgEg5J7PrYDxzQA,19706
|
125
125
|
pyegeria/_globals.py,sha256=EY4IR6wnET11GgoxFIllj8fXFrMWBZwl2vsbl1zAfAQ,8520
|
126
126
|
pyegeria/_output_format_models.py,sha256=p9fTYaIa5KyTMIR4-JAbE9g66_gGMPTnUqjIq20Zr1o,14494
|
127
|
-
pyegeria/_output_formats.py,sha256=
|
127
|
+
pyegeria/_output_formats.py,sha256=FG7K0OVH_NSfTntbJZ-Oy7vtsXzffBoKwafBIeOcO0g,185108
|
128
128
|
pyegeria/_validators.py,sha256=pNxND0dN2qvyuGE52N74l1Ezfrh2p9Hao2ziR_t1ENI,7425
|
129
129
|
pyegeria/asset_catalog_omvs.py,sha256=sBXPgkRe_ZFOunZ-xoZe4qndILf9L0dPRHpQb_95bHw,29030
|
130
|
-
pyegeria/automated_curation.py,sha256=
|
130
|
+
pyegeria/automated_curation.py,sha256=QIYDT9ThXMCe6-UdTPHEG0hV1aI4edNaA-5lC2_rukk,143021
|
131
131
|
pyegeria/classification_manager.py,sha256=wT42fqcdtu9qt3N9_gazxDzkjK63tc5Xg6uG801Opmk,250435
|
132
132
|
pyegeria/classification_manager_omvs.py,sha256=QkcH33BmdoOnyM9Ojwi084ULC3BaesZV6_a-pNyYkcU,184192
|
133
|
-
pyegeria/collection_manager.py,sha256=
|
133
|
+
pyegeria/collection_manager.py,sha256=no1SPwHT-oxrQjPib1E1An8YaXYvTyIufWl35P7u5lo,239100
|
134
134
|
pyegeria/collection_models.py,sha256=d3DdWONqDdAeuUQgussiCNfvhKIDFpaI35cdW_Tv4_0,5315
|
135
135
|
pyegeria/config.py,sha256=N-qHq74GN29Mwfp8MbXvj7uEsKCIXotL7MDwFcj3nIU,29380
|
136
136
|
pyegeria/core_omag_server_config.py,sha256=pNQpocICkZx8sRsTw5DPUe-TFyxlIo1U88qqgci_f7I,97764
|
@@ -141,7 +141,7 @@ pyegeria/egeria_client.py,sha256=N_CvaUgb8tQtRLsy8dfLNJ2lPPiCrfW-AFiLBxqIlyI,610
|
|
141
141
|
pyegeria/egeria_config_client.py,sha256=YkgndiZ6-CfhwVeBW9ErS7l95SIrd0G9--H8kAfeBJY,2479
|
142
142
|
pyegeria/egeria_my_client.py,sha256=3dSBUlrivzih75hodNHe-2BM9pGB8AQVLru-_NbhYNE,3186
|
143
143
|
pyegeria/egeria_tech_client.py,sha256=zHuhLe6s3wihS9LMqu3pIm_fLjL9wXqdRpkOW-LyrjI,4863
|
144
|
-
pyegeria/external_references.py,sha256=
|
144
|
+
pyegeria/external_references.py,sha256=w4xl3pOMNatZkbhSqI-bGA4iv7jwTdAbVK2scywPIGw,74758
|
145
145
|
pyegeria/feedback_manager_omvs.py,sha256=0xBs0p54vmdfVYYgQ8pOanLC4fxfgTk1Z61Y6D1U7_I,152978
|
146
146
|
pyegeria/format_set_executor.py,sha256=schuaWyb1q9XjGV28gLArsI1rWx0OuItzfJhaeQLmac,11571
|
147
147
|
pyegeria/full_omag_server_config.py,sha256=832EiMX7oeTHQxWf_4NQ4gXze9PMA9Vsx1jn9m9a_Mw,47457
|
@@ -153,25 +153,25 @@ pyegeria/mcp_adapter.py,sha256=GGyHmXLI6TxVh5vlm8x2ldzyIkStU9WGEFPvXNaQrCs,4971
|
|
153
153
|
pyegeria/mcp_server.py,sha256=nycijG18RiabYJ-iY6D079sboYbcy29-vaUI7dcjg4Y,8349
|
154
154
|
pyegeria/md_processing_utils.py,sha256=U0a07f-yeopDb06PW3G9jwotewm2FJT3yLU64jG2QYc,99106
|
155
155
|
pyegeria/md_processing_utils_orig.py,sha256=CCZ7IPdHtf_o1oeGTf8K-yc_tzGwNkxxhTVUEeA_Yno,52599
|
156
|
-
pyegeria/mermaid_utilities.py,sha256=
|
156
|
+
pyegeria/mermaid_utilities.py,sha256=G0zPyy_xRBs-3jA6Ws0q6KyvB7N5--IzWSHNjt3htnE,48080
|
157
157
|
pyegeria/metadata_explorer_omvs.py,sha256=xHnZTQKbd6XwOhYia-RiIisrvZcqHi0SL1l6OCf04Gk,86911
|
158
158
|
pyegeria/models.py,sha256=Ar7Yg26vODjsITT1kxJz26G8m2-W5S9AC0OtczYIT0A,20580
|
159
159
|
pyegeria/my_profile_omvs.py,sha256=d0oJYCJG7pS9BINPuGciVa00ac0jwPHNANXDCLginEc,34720
|
160
|
-
pyegeria/output_formatter.py,sha256=
|
160
|
+
pyegeria/output_formatter.py,sha256=N7ByHgx6VLjTK6VIG_app4-bORVIBI0lcRDZU9AtrMQ,43723
|
161
161
|
pyegeria/platform_services.py,sha256=AJNa8n2mKfAMK68q886YCD-p5bpCxIlCxBsRdr0R9O4,41708
|
162
162
|
pyegeria/project_manager.py,sha256=erATGo7KrcvPdGdM8uGMhuXLqyGub7M2HJI17nyGmSA,66341
|
163
163
|
pyegeria/reference_data.py,sha256=QWyTjrk-xfpIs578GxQO9gtOyl1gdc4PXhD12mbkwwI,42074
|
164
164
|
pyegeria/registered_info.py,sha256=y0-LgDIQXpph0lEWxIOG3_HsqX_Z2iAIb3xu4Aa4B70,6344
|
165
165
|
pyegeria/runtime_manager_omvs.py,sha256=k0lwSuOrbql_UoJ7Rf4fgh-SQQbiii4CQbvOUlaejyM,80302
|
166
166
|
pyegeria/server_operations.py,sha256=dTqUEmX1B77b0x61OSU0aonsW8KwIpfzb3eioRpwaiI,16832
|
167
|
-
pyegeria/solution_architect.py,sha256=
|
167
|
+
pyegeria/solution_architect.py,sha256=dqtHIYMNug8vb4x7juyb_moWGDOeh4bkAwHuhz53GXA,233914
|
168
168
|
pyegeria/template_manager_omvs.py,sha256=chBljs1vy5wr9DRAtbvIt4Cob_7HxGfxLkCNlDTM-rQ,42755
|
169
169
|
pyegeria/utils.py,sha256=xOTxk9PH8ZGZmgIwz_a6rczTVLADLEjucr10ZJTUnY4,9272
|
170
170
|
pyegeria/valid_metadata_omvs.py,sha256=Xq9DqBQvBFFJzaFIRKcVZ2k4gJvSh9yeXs_j-O3vn1w,65050
|
171
171
|
pyegeria/x_action_author_omvs.py,sha256=XyRsUgN-xnWR-cJayzo5RtY4Xv1uBDML4pwaKHrwC1w,6430
|
172
|
-
pyegeria-5.4.7.
|
173
|
-
pyegeria-5.4.7.
|
174
|
-
pyegeria-5.4.7.
|
175
|
-
pyegeria-5.4.7.
|
176
|
-
pyegeria-5.4.7.
|
177
|
-
pyegeria-5.4.7.
|
172
|
+
pyegeria-5.4.7.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
173
|
+
pyegeria-5.4.7.7.dist-info/METADATA,sha256=V2XTIO-Kgv5pRrTBEOYoooFvAFyUlk9wJG8UIBrXxBU,5898
|
174
|
+
pyegeria-5.4.7.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
175
|
+
pyegeria-5.4.7.7.dist-info/entry_points.txt,sha256=Ig9cZyl-nq_RohLvahgWXzZbcpHzLS3Zdc1A8qvdPG0,6595
|
176
|
+
pyegeria-5.4.7.7.dist-info/top_level.txt,sha256=48Mt-O3p8yO7jiEv6-Y9bUsryqJn9BQsiyV0BqSn8tk,32
|
177
|
+
pyegeria-5.4.7.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|