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.
@@ -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.get_engine_actions()
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 == "RelatedMedia":
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 == "CitedDocument":
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": "NewSolutionElementRequestBody",
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("element", NO_ELEMENTS_FOUND)
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
@@ -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",
@@ -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
- return col_data
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", "no actions")
1980
- return self._generate_engine_action_output(elements, None, self.ENGINE_ACTION_LABEL,
1981
- output_format=output_format, output_format_set=output_format_set)
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, template_only: bool = False,
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
- def get_technology_type_detail(self, type_name: str, template_only: bool = False,
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, template_only=template_only, body=body,
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
  )
@@ -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
- return await self._async_get_name_request(url, body, output_format, output_format_set)
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:
@@ -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="Collection",
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,
@@ -46,7 +46,7 @@ def load_mermaid():
46
46
  <script>
47
47
  document.addEventListener('DOMContentLoaded', function() {
48
48
  mermaid.initialize({startOnLoad: true},
49
- {maxTextSize: 300000});
49
+ {maxTextSize: 300000}, {securityLevel: 'loose'});
50
50
  });
51
51
  </script>
52
52
 
@@ -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['elementHeader'].get("guid", None)
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)
@@ -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 = "*", classification_names: list[str] = None,
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 = "*", classification_names: list[str] = None,
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))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyegeria
3
- Version: 5.4.7.5
3
+ Version: 5.4.7.7
4
4
  Summary: A python client for Egeria
5
5
  Author-email: Dan Wolfson <dan.wolfson@pdr-associates.com>
6
6
  License-Expression: Apache-2.0
@@ -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=AVSOtxlKBSM5yrh9YsOk5agevZMhLGPjT8j0uaVWjqU,9897
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=vrUDcDiCIDC2MdG8ghIaQC2AxOkhxn2bHoYcwl_7Ygg,23124
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=4Ghb8j2wlDdWtHoSCrx5jCJFEJfqII4mnFJ_tqduRKI,52569
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=nXR4RXw-FYdYO5Hyv7wgPFjALcHWComTBjFOmivwsS0,92753
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=0IXO8ol5nuZAtttBfQPYoUyEa3qX1RlkMLons2Xrmi8,184307
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=yI06WLkaCEVgmVJIMr-jNAqk7c7Ef9aXSUamBgs8Avs,146949
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=kNIo1XXoG5b7tQpSZWNnkjZ8lp8X8pTamyvGZmmkqe8,239194
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=8cTB02N1NhUAz-QFYzHoBhypVsELMNf0nPBEqrUHj2U,74751
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=HMmikLQwQbg1X3rWeL_YN_LD5fTuSw5zJKiBdhuoMdE,48054
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=huSGkVyve8hd3OocvxI_5Vz-44eoiZ4UY5FjVER1Ztc,43676
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=WQtbAJLOPeU2db9wT6IoOJikoTAmxASVw2fgath-QUc,233700
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.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
173
- pyegeria-5.4.7.5.dist-info/METADATA,sha256=cOZDV2TIQinDhnTDxqH7UvDd0vZZrl38_5rnuvXt96o,5898
174
- pyegeria-5.4.7.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
175
- pyegeria-5.4.7.5.dist-info/entry_points.txt,sha256=Ig9cZyl-nq_RohLvahgWXzZbcpHzLS3Zdc1A8qvdPG0,6595
176
- pyegeria-5.4.7.5.dist-info/top_level.txt,sha256=48Mt-O3p8yO7jiEv6-Y9bUsryqJn9BQsiyV0BqSn8tk,32
177
- pyegeria-5.4.7.5.dist-info/RECORD,,
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,,