pyegeria 5.4.7.3__py3-none-any.whl → 5.4.7.4__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.
Files changed (39) hide show
  1. commands/cat/dr_egeria_md.py +1 -1
  2. commands/cat/list_format_set.py +6 -1
  3. commands/ops/list_catalog_targets.py +17 -14
  4. commands/ops/monitor_engine_activity.py +1 -1
  5. commands/ops/monitor_engine_activity_c.py +1 -1
  6. commands/tech/list_gov_action_processes.py +4 -8
  7. md_processing/dr_egeria.py +1 -1
  8. md_processing/md_commands/ext_ref_commands.py +1 -2
  9. md_processing/md_commands/glossary_commands.py +1 -2
  10. md_processing/md_commands/project_commands.py +1 -2
  11. pyegeria/__init__.py +3 -95
  12. pyegeria/_client_new.py +390 -10
  13. pyegeria/_globals.py +95 -1
  14. pyegeria/_output_formats.py +1 -1
  15. pyegeria/asset_catalog_omvs.py +1 -1
  16. pyegeria/automated_curation.py +33 -92
  17. pyegeria/classification_manager.py +5636 -0
  18. pyegeria/classification_manager_omvs.py +1989 -1853
  19. pyegeria/collection_manager.py +14 -2
  20. pyegeria/data_designer.py +1 -2
  21. pyegeria/egeria_tech_client.py +3 -0
  22. pyegeria/format_set_executor.py +8 -9
  23. pyegeria/full_omag_server_config.py +1 -1
  24. pyegeria/mcp_adapter.py +1 -1
  25. pyegeria/mcp_server.py +36 -21
  26. pyegeria/md_processing_utils.py +3 -3
  27. pyegeria/md_processing_utils_orig.py +3 -3
  28. pyegeria/mermaid_utilities.py +0 -152
  29. pyegeria/models.py +5 -0
  30. pyegeria/output_formatter.py +1 -1
  31. pyegeria/runtime_manager_omvs.py +1 -1
  32. pyegeria/solution_architect.py +1 -1
  33. {pyegeria-5.4.7.3.dist-info → pyegeria-5.4.7.4.dist-info}/METADATA +1 -1
  34. {pyegeria-5.4.7.3.dist-info → pyegeria-5.4.7.4.dist-info}/RECORD +38 -38
  35. pyegeria/md_processing_helpers.py +0 -58
  36. {pyegeria-5.4.7.3.dist-info → pyegeria-5.4.7.4.dist-info}/WHEEL +0 -0
  37. {pyegeria-5.4.7.3.dist-info → pyegeria-5.4.7.4.dist-info}/entry_points.txt +0 -0
  38. {pyegeria-5.4.7.3.dist-info → pyegeria-5.4.7.4.dist-info}/licenses/LICENSE +0 -0
  39. {pyegeria-5.4.7.3.dist-info → pyegeria-5.4.7.4.dist-info}/top_level.txt +0 -0
pyegeria/_client_new.py CHANGED
@@ -12,6 +12,7 @@ import inspect
12
12
  import json
13
13
  import os
14
14
  import re
15
+ import sys
15
16
  from collections.abc import Callable
16
17
  from typing import Any
17
18
 
@@ -26,7 +27,7 @@ from pyegeria._exceptions_new import (
26
27
  PyegeriaAPIException, PyegeriaConnectionException, PyegeriaInvalidParameterException,
27
28
  PyegeriaUnknownException, PyegeriaClientException
28
29
  )
29
- from pyegeria._globals import enable_ssl_check, max_paging_size, NO_ELEMENTS_FOUND
30
+ from pyegeria._globals import enable_ssl_check, max_paging_size, NO_ELEMENTS_FOUND, default_time_out
30
31
  from pyegeria._validators import (
31
32
  validate_name,
32
33
  validate_server_name,
@@ -34,9 +35,14 @@ from pyegeria._validators import (
34
35
  validate_user_id,
35
36
  )
36
37
  from pyegeria.models import (SearchStringRequestBody, FilterRequestBody, GetRequestBody, NewElementRequestBody,
37
- TemplateRequestBody, UpdateStatusRequestBody, UpdateElementRequestBody, NewRelationshipRequestBody,
38
- DeleteRequestBody, UpdateRelationshipRequestBody, ResultsRequestBody, NewClassificationRequestBody,
39
- DeleteElementRequestBody, DeleteRelationshipRequestBody, DeleteClassificationRequestBody)
38
+ TemplateRequestBody, UpdateStatusRequestBody, UpdateElementRequestBody,
39
+ NewRelationshipRequestBody,
40
+ DeleteRequestBody, UpdateRelationshipRequestBody, ResultsRequestBody,
41
+ NewClassificationRequestBody,
42
+ DeleteElementRequestBody, DeleteRelationshipRequestBody, DeleteClassificationRequestBody,
43
+ LevelIdentifierQueryBody)
44
+
45
+ from pyegeria.output_formatter import populate_common_columns, resolve_output_formats, generate_output
40
46
  from pyegeria.utils import body_slimmer, dynamic_catch
41
47
 
42
48
  ...
@@ -156,6 +162,8 @@ class Client2:
156
162
  self._template_request_adapter = TypeAdapter(TemplateRequestBody)
157
163
  self._update_relationship_request_adapter = TypeAdapter(UpdateRelationshipRequestBody)
158
164
  self._results_request_adapter = TypeAdapter(ResultsRequestBody)
165
+ self._level_identifier_query_body = TypeAdapter(LevelIdentifierQueryBody)
166
+
159
167
  try:
160
168
  result = self.check_connection()
161
169
  logger.info(f"client initialized, platform origin is: {result}")
@@ -203,7 +211,7 @@ class Client2:
203
211
  return
204
212
 
205
213
  async def _async_create_egeria_bearer_token(
206
- self, user_id: str = None, password: str = None
214
+ self, user_id: str , password: str
207
215
  ) -> str:
208
216
  """Create and set an Egeria Bearer Token for the user. Async version
209
217
  Parameters
@@ -234,10 +242,8 @@ class Client2:
234
242
 
235
243
  """
236
244
  if user_id is None:
237
- validate_user_id(self.user_id)
238
245
  user_id = self.user_id
239
246
  if password is None:
240
- validate_name(self.user_pwd)
241
247
  password = self.user_pwd
242
248
 
243
249
  url = f"{self.platform_url}/api/token"
@@ -639,7 +645,7 @@ class Client2:
639
645
  }
640
646
  url = (
641
647
  f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/classification-manager/"
642
- f"elements/guid-by-unique-name?forLineage=false&forDuplicateProcessing=false"
648
+ f"elements/guid-by-unique-name"
643
649
  )
644
650
 
645
651
  result = await self._async_make_request("POST", url, body_slimmer(body))
@@ -691,6 +697,9 @@ class Client2:
691
697
  f"qualified_name={qualified_name}, tech_type={tech_type}")
692
698
  }
693
699
  raise PyegeriaInvalidParameterException(None, None, additional_info)
700
+ #
701
+ # Include basic functions for finding elements and relationships.
702
+ #
694
703
 
695
704
  def __get_guid__(
696
705
  self,
@@ -734,7 +743,157 @@ class Client2:
734
743
  q_name = f"{q_name}::{version_identifier}"
735
744
  return q_name
736
745
 
737
- async def _async_get_element_by_guid_(self, element_guid: str) -> dict | str:
746
+ async def _async_get_relationships_with_property_value(
747
+ self,
748
+ relationship_type: str,
749
+ property_value: str,
750
+ property_names: [str],
751
+ effective_time: str = None,
752
+ for_lineage: bool = None,
753
+ for_duplicate_processing: bool = None,
754
+ start_from: int = 0,
755
+ page_size: int = max_paging_size,
756
+ time_out: int = default_time_out,
757
+ ) -> list | str:
758
+ """
759
+ Retrieve relationships of the requested relationship type name and with the requested a value found in
760
+ one of the relationship's properties specified. The value must match exactly. Async version.
761
+
762
+ https://egeria-project.org/types/
763
+
764
+ Parameters
765
+ ----------
766
+ relationship_type: str
767
+ - the type of relationship to navigate to related elements
768
+ property_value: str
769
+ - property value to be searched.
770
+ property_names: [str]
771
+ - property names to search in.
772
+ effective_time: str, default = None
773
+ - Time format is "YYYY-MM-DDTHH:MM:SS" (ISO 8601)
774
+ for_lineage: bool, default is set by server
775
+ - determines if elements classified as Memento should be returned - normally false
776
+ for_duplicate_processing: bool, default is set by server
777
+ - Normally false. Set true when the caller is part of a deduplication function
778
+ start_from: int, default = 0
779
+ - index of the list to start from (0 for start).
780
+ page_size
781
+ - maximum number of elements to return.
782
+
783
+
784
+ time_out: int, default = default_time_out
785
+ - http request timeout for this request
786
+
787
+ Returns
788
+ -------
789
+ [dict] | str
790
+ Returns a string if no elements found and a list of dict of elements with the results.
791
+
792
+ Raises
793
+ ------
794
+ InvalidParameterException
795
+ one of the parameters is null or invalid or
796
+ PropertyServerException
797
+ There is a problem adding the element properties to the metadata repository or
798
+ UserNotAuthorizedException
799
+ the requesting user is not authorized to issue this request.
800
+ """
801
+
802
+
803
+
804
+ body = {
805
+ "class": "FindPropertyNamesProperties",
806
+ "openMetadataType": relationship_type,
807
+ "propertyValue": property_value,
808
+ "propertyNames": property_names,
809
+ "effectiveTime": effective_time,
810
+ }
811
+
812
+ url = (
813
+ f"{self.platform_url}/servers/{self.server_name}/api/open-metadata/classification-manager/relationships/"
814
+ f"with-exact-property-value"
815
+ )
816
+
817
+ response: Response = await self._async_make_request(
818
+ "POST", url, body_slimmer(body), time_out=time_out
819
+ )
820
+ rels = response.json().get("relationships", NO_ELEMENTS_FOUND)
821
+ if type(rels) is list:
822
+ if len(rels) == 0:
823
+ return NO_ELEMENTS_FOUND
824
+ return rels
825
+
826
+ def get_relationships_with_property_value(
827
+ self,
828
+ relationship_type: str,
829
+ property_value: str,
830
+ property_names: [str],
831
+ effective_time: str = None,
832
+ for_lineage: bool = None,
833
+ for_duplicate_processing: bool = None,
834
+ start_from: int = 0,
835
+ page_size: int = max_paging_size,
836
+ time_out: int = default_time_out,
837
+ ) -> list | str:
838
+ """
839
+ Retrieve relationships of the requested relationship type name and with the requested a value found in
840
+ one of the relationship's properties specified. The value must match exactly.
841
+
842
+ Parameters
843
+ ----------
844
+ relationship_type: str
845
+ - the type of relationship to navigate to related elements
846
+ property_value: str
847
+ - property value to be searched.
848
+ property_names: [str]
849
+ - property names to search in.
850
+ effective_time: str, default = None
851
+ - Time format is "YYYY-MM-DDTHH:MM:SS" (ISO 8601)
852
+ for_lineage: bool, default is set by server
853
+ - determines if elements classified as Memento should be returned - normally false
854
+ for_duplicate_processing: bool, default is set by server
855
+ - Normally false. Set true when the caller is part of a deduplication function
856
+ start_from: int, default = 0
857
+ - index of the list to start from (0 for start).
858
+ page_size
859
+ - maximum number of elements to return.
860
+
861
+
862
+ time_out: int, default = default_time_out
863
+ - http request timeout for this request
864
+
865
+ Returns
866
+ -------
867
+ [dict] | str
868
+ Returns a string if no elements found and a list of dict of elements with the results.
869
+
870
+ Raises
871
+ ------
872
+ InvalidParameterException
873
+ one of the parameters is null or invalid or
874
+ PropertyServerException
875
+ There is a problem adding the element properties to the metadata repository or
876
+ UserNotAuthorizedException
877
+ the requesting user is not authorized to issue this request.
878
+ """
879
+
880
+ loop = asyncio.get_event_loop()
881
+ response = loop.run_until_complete(
882
+ self._async_get_relationships_with_property_value(
883
+ relationship_type,
884
+ property_value,
885
+ property_names,
886
+ effective_time,
887
+ for_lineage,
888
+ for_duplicate_processing,
889
+ start_from,
890
+ page_size,
891
+ time_out,
892
+ )
893
+ )
894
+ return response
895
+
896
+ async def async_get_element_by_guid_(self, element_guid: str) -> dict | str:
738
897
  """
739
898
  Simplified, internal version of get_element_by_guid found in Classification Manager.
740
899
  Retrieve an element by its guid. Async version.
@@ -773,6 +932,169 @@ class Client2:
773
932
 
774
933
  return elements
775
934
 
935
+
936
+ async def async_get_connector_guid(self, connector_name: str) -> str:
937
+ """Get the guid of a connector. Async version.
938
+ Parameters:
939
+ connector_name (str): The name of the connector to retrieve the guid for.
940
+ Returns:
941
+ str: The guid of the connector.
942
+ """
943
+ rel = await self.async_get_relationships_with_property_value(relationship_type="RegisteredIntegrationConnector",
944
+ property_names=["connectorName"],
945
+ property_value=connector_name,
946
+ )
947
+ if rel == "No elements found":
948
+ logger.error(f"\n\n===> No connector found with name '{connector_name}'\n\n")
949
+ return "No connector found"
950
+ connector_guid = rel[0]['end2']['guid']
951
+
952
+ if connector_guid is None:
953
+ logger.error(f"\n\n===> No connector found with name '{connector_name}'\n\n")
954
+ return "No connector found"
955
+
956
+ return connector_guid
957
+
958
+
959
+ def get_connector_guid(self, connector_name: str) -> str:
960
+ """Get the guid of a connector.
961
+ Parameters:
962
+ connector_name (str): The name of the connector to retrieve the guid for.
963
+ Returns:
964
+ str: The guid of the connector.
965
+ """
966
+
967
+ loop = asyncio.get_event_loop()
968
+ result = loop.run_until_complete(
969
+ self.async_get_connector_guid(
970
+ connector_name
971
+ )
972
+ )
973
+ return result
974
+
975
+ # async def async_get_catalog_template_guids(
976
+ # self,
977
+ # element_name: str
978
+ # ) -> lists | str:
979
+ # """
980
+ # Retrieve template guids for an element.
981
+ # Parameters
982
+ # ----------
983
+ # element_name: str
984
+ # - unique identifier for the element to retrieve the guids for.
985
+ #
986
+ # Returns
987
+ # -------
988
+ # [str]] | str
989
+ # Returns a string if no elements found and a list of dict of elements with the results.
990
+ #
991
+ # Raises
992
+ # ------
993
+ # InvalidParameterException
994
+ # one of the parameters is null or invalid or
995
+ # PropertyServerException
996
+ # There is a problem adding the element properties to the metadata repository or
997
+ # UserNotAuthorizedException
998
+ # the requesting user is not authorized to issue this request.
999
+ # """
1000
+ #
1001
+ # body = {
1002
+ # "class": "FindPropertyNamesProperties",
1003
+ # "openMetadataType": relationship_type,
1004
+ # "propertyValue": property_value,
1005
+ # "propertyNames": property_names,
1006
+ # "effectiveTime": effective_time,
1007
+ # }
1008
+ #
1009
+ # url = (
1010
+ # f"{self.platform_url}/servers/{self.server_name}/api/open-metadata/classification-manager/relationships/"
1011
+ # f"with-exact-property-value"
1012
+ # )
1013
+ #
1014
+ # response: Response = await self._async_make_request(
1015
+ # "POST", url, body_slimmer(body), time_out=time_out
1016
+ # )
1017
+ # rels = response.json().get("relationships", NO_ELEMENTS_FOUND)
1018
+ # if type(rels) is list:
1019
+ # if len(rels) == 0:
1020
+ # return NO_ELEMENTS_FOUND
1021
+ # return rels
1022
+ #
1023
+ # def get_relationships_with_property_value(
1024
+ # self,
1025
+ # relationship_type: str,
1026
+ # property_value: str,
1027
+ # property_names: [str],
1028
+ # effective_time: str = None,
1029
+ # for_lineage: bool = None,
1030
+ # for_duplicate_processing: bool = None,
1031
+ # start_from: int = 0,
1032
+ # page_size: int = max_paging_size,
1033
+ # time_out: int = default_time_out,
1034
+ # ) -> list | str:
1035
+ # """
1036
+ # Retrieve relationships of the requested relationship type name and with the requested a value found in
1037
+ # one of the relationship's properties specified. The value must match exactly.
1038
+ #
1039
+ # Parameters
1040
+ # ----------
1041
+ # relationship_type: str
1042
+ # - the type of relationship to navigate to related elements
1043
+ # property_value: str
1044
+ # - property value to be searched.
1045
+ # property_names: [str]
1046
+ # - property names to search in.
1047
+ # effective_time: str, default = None
1048
+ # - Time format is "YYYY-MM-DDTHH:MM:SS" (ISO 8601)
1049
+ # for_lineage: bool, default is set by server
1050
+ # - determines if elements classified as Memento should be returned - normally false
1051
+ # for_duplicate_processing: bool, default is set by server
1052
+ # - Normally false. Set true when the caller is part of a deduplication function
1053
+ # start_from: int, default = 0
1054
+ # - index of the list to start from (0 for start).
1055
+ # page_size
1056
+ # - maximum number of elements to return.
1057
+ #
1058
+ #
1059
+ # time_out: int, default = default_time_out
1060
+ # - http request timeout for this request
1061
+ #
1062
+ # Returns
1063
+ # -------
1064
+ # [dict] | str
1065
+ # Returns a string if no elements found and a list of dict of elements with the results.
1066
+ #
1067
+ # Raises
1068
+ # ------
1069
+ # InvalidParameterException
1070
+ # one of the parameters is null or invalid or
1071
+ # PropertyServerException
1072
+ # There is a problem adding the element properties to the metadata repository or
1073
+ # UserNotAuthorizedException
1074
+ # the requesting user is not authorized to issue this request.
1075
+ # """
1076
+ #
1077
+ # loop = asyncio.get_event_loop()
1078
+ # response = loop.run_until_complete(
1079
+ # self._async_get_relationships_with_property_value(
1080
+ # relationship_type,
1081
+ # property_value,
1082
+ # property_names,
1083
+ # effective_time,
1084
+ # for_lineage,
1085
+ # for_duplicate_processing,
1086
+ # start_from,
1087
+ # page_size,
1088
+ # time_out,
1089
+ # )
1090
+ # )
1091
+ # return response
1092
+
1093
+ #
1094
+ # Helper functions for requests
1095
+ #
1096
+
1097
+
776
1098
  def validate_new_element_request(self, body: dict | NewElementRequestBody,
777
1099
  prop: list[str]) -> NewElementRequestBody | None:
778
1100
  if isinstance(body, NewElementRequestBody):
@@ -1101,6 +1423,35 @@ class Client2:
1101
1423
  output_format, output_format_set)
1102
1424
  return elements
1103
1425
 
1426
+ async def _async_get_level_identifier_query_body_request(self, url: str, _gen_output: Callable[..., Any],
1427
+ output_format: str = 'JSON',
1428
+ output_format_set: str | dict = None,
1429
+ body: dict | ResultsRequestBody = None) -> Any:
1430
+ if isinstance(body, LevelIdentifierQueryBody):
1431
+ validated_body = body
1432
+ elif isinstance(body, dict):
1433
+ validated_body = self._level_identifier_query_body.validate_python(body)
1434
+ else:
1435
+ return None
1436
+
1437
+ json_body = validated_body.model_dump_json(indent=2, exclude_none=True)
1438
+
1439
+ response = await self._async_make_request("POST", url, json_body)
1440
+ elements = response.json().get("elements", None)
1441
+ if elements is None:
1442
+ elements = response.json().get("element", NO_ELEMENTS_FOUND)
1443
+
1444
+ if type(elements) is str:
1445
+ logger.info(NO_ELEMENTS_FOUND)
1446
+ return NO_ELEMENTS_FOUND
1447
+
1448
+ if output_format != 'JSON': # return a simplified markdown representation
1449
+ logger.info(f"Found elements, output format: {output_format} and output_format_set: {output_format_set}")
1450
+ return _gen_output(elements, "", "Referenceable",
1451
+ output_format, output_format_set)
1452
+ return elements
1453
+
1454
+
1104
1455
  async def _async_create_element_body_request(self, url: str, prop: list[str],
1105
1456
  body: dict | NewElementRequestBody = None) -> str:
1106
1457
  validated_body = self.validate_new_element_request(body, prop)
@@ -1633,4 +1984,33 @@ class Client2:
1633
1984
  # }
1634
1985
  # """
1635
1986
  # loop = asyncio.get_event_loop()
1636
- # loop.run_until_complete(self._async_update_element_status(guid, status, body))
1987
+ # loop.run_until_complete(self._async_update_element_status(guid, status, body))
1988
+
1989
+ @dynamic_catch
1990
+ def _extract_referenceable_properties(self, element: dict, columns_struct: dict) -> dict:
1991
+ """Populate default Referenceable columns for output using common population pipeline."""
1992
+ return populate_common_columns(element, columns_struct)
1993
+
1994
+ @dynamic_catch
1995
+ def _generate_referenceable_output(self, elements: dict | list[dict], search_string: str | None,
1996
+ element_type_name: str | None,
1997
+ output_format: str = "JSON",
1998
+ output_format_set: dict | str = None) -> str | list[dict]:
1999
+ """Generate formatted output for generic Referenceable elements.
2000
+
2001
+ If output_format is 'JSON', returns elements unchanged. Otherwise, resolves an
2002
+ output format set and delegates to generate_output with a standard extractor.
2003
+ """
2004
+ if output_format == "JSON":
2005
+ return elements
2006
+ entity_type = element_type_name or "Referenceable"
2007
+ output_formats = resolve_output_formats(entity_type, output_format, output_format_set, default_label=entity_type)
2008
+ return generate_output(
2009
+ elements=elements,
2010
+ search_string=search_string,
2011
+ entity_type=entity_type,
2012
+ output_format=output_format,
2013
+ extract_properties_func=self._extract_referenceable_properties,
2014
+ get_additional_props_func=None,
2015
+ columns_struct=output_formats,
2016
+ )
pyegeria/_globals.py CHANGED
@@ -46,4 +46,98 @@ NO_ELEMENT_FOUND = "No element found"
46
46
  NO_PROJECTS_FOUND = "No projects found"
47
47
  NO_COLLECTION_FOUND = "No collection found"
48
48
  NO_GUID_RETURNED = "No guid returned"
49
- NO_MEMBERS_FOUND = "No members found"
49
+ NO_MEMBERS_FOUND = "No members found"
50
+
51
+ #
52
+ TEMPLATE_GUIDS['File System Directory'] = 'c353fd5d-9523-4a5e-a5e2-723ae490fe54'
53
+ INTEGRATION_GUIDS['GeneralFilesMonitor'] = '1b98cdac-dd0a-4621-93db-99ef5a1098bc'
54
+ INTEGRATION_GUIDS['OpenLineageFilePublisher'] = '6271b678-7d22-4cdf-87b1-45b366beaf4e'
55
+ INTEGRATION_GUIDS['ContentPacksMonitor'] = '6bb2181e-7724-4515-ba3c-877cded55980'
56
+ INTEGRATION_GUIDS['HarvestActivity'] = '856501d9-ec29-4e67-9cd7-120f53710ffa'
57
+ INTEGRATION_GUIDS['SampleDataFilesMonitor'] = 'cd6479e1-2fe7-4426-b358-8a0cf70be117'
58
+ TEMPLATE_GUIDS['CSV Data File'] = '13770f93-13c8-42be-9bb8-e0b1b1e52b1f'
59
+ TEMPLATE_GUIDS['Keystore File'] = 'fbcfcc0c-1652-421f-b49b-c3e1c108768f'
60
+ TEMPLATE_GUIDS['Unity Catalog Registered Model Version'] = '1364bfe7-8295-4e99-9243-8840aeac4cf1'
61
+ TEMPLATE_GUIDS['Unity Catalog Server'] = 'dcca9788-b30f-4007-b1ac-ec634aff6879'
62
+ INTEGRATION_GUIDS['UnityCatalogInsideCatalog'] = '74dde22f-2249-4ea3-af2b-b39e73f79b81'
63
+ INTEGRATION_GUIDS['UnityCatalogServer'] = '06d068d9-9e08-4e67-8c59-073bbf1013af'
64
+ TEMPLATE_GUIDS['Databricks Unity Catalog Server'] = '3f7f62f6-4abc-424e-9f92-523306e7d5d5'
65
+ INTEGRATION_GUIDS['JDBC'] = '70dcd0b7-9f06-48ad-ad44-ae4d7a7762aa'
66
+ TEMPLATE_GUIDS['Data File'] = '66d8dda9-00cf-4e59-938c-4b0583596b1e'
67
+ TEMPLATE_GUIDS['Unity Catalog Catalog'] = '5ee006aa-a6d6-411b-9b8d-5f720c079cae'
68
+ TEMPLATE_GUIDS['View Server'] = 'fd61ca01-390d-4aa2-a55d-426826aa4e1b'
69
+ TEMPLATE_GUIDS['Archive File'] = '7578e504-d00f-406d-a194-3fc0a351cdf9'
70
+ TEMPLATE_GUIDS['Executable File'] = '3d99a163-7a13-4576-a212-784010a8302a'
71
+ INTEGRATION_GUIDS['OpenLineageAPIPublisher'] = '2156bc98-973a-4859-908d-4ccc96f53cc5'
72
+ TEMPLATE_GUIDS['PostgreSQL Relational Database'] = '3d398b3f-7ae6-4713-952a-409f3dea8520'
73
+ INTEGRATION_GUIDS['PostgreSQLDatabase'] = 'ef301220-7dfe-4c6c-bb9d-8f92d9f63823'
74
+ TEMPLATE_GUIDS['Unity Catalog Table'] = '6cc1e5f5-4c1e-4290-a80e-e06643ffb13d'
75
+ TEMPLATE_GUIDS['JSON Data File'] = 'c4836635-7e9e-446a-83b5-15e206b1aff3'
76
+ TEMPLATE_GUIDS['File System'] = '522f228c-097c-4f90-9efc-26c1f2696f87'
77
+ TEMPLATE_GUIDS['Source Code File'] = '9c7013ef-f29b-4b01-a8ea-5ea14f64c67a'
78
+ TEMPLATE_GUIDS['Program File'] = '32d27e9c-1fdf-455a-ad2a-42b4d7d99108'
79
+ TEMPLATE_GUIDS['Apple MacBook Pro'] = '32a9fd56-85c9-47fe-a211-9da3871bf4da'
80
+ TEMPLATE_GUIDS['Build Instruction File'] = 'fbb2fa2e-8bcb-402e-9be7-5c6db9f2c504'
81
+ TEMPLATE_GUIDS['Spreadsheet Data File'] = 'e4fabff5-2ba9-4050-9076-6ed917970b4c'
82
+ TEMPLATE_GUIDS['UNIX File System'] = '27117270-8667-41d0-a99a-9118f9b60199'
83
+ TEMPLATE_GUIDS['Video Data File'] = '93b2b722-ec0f-4da4-960a-b8d4922f8bf5'
84
+ TEMPLATE_GUIDS['JDBC Endpoint'] = '3d79ce50-1887-4627-ad71-ba4649aba2bc'
85
+ TEMPLATE_GUIDS['Unity Catalog Function'] = 'a490ba65-6104-4213-9be9-524e16fed8aa'
86
+ TEMPLATE_GUIDS['Unity Catalog Registered Model'] = '0d762ec5-c1f5-4364-aa64-e7e00d27f837'
87
+ TEMPLATE_GUIDS['PostgreSQL Relational Database Schema'] = '82a5417c-d882-4271-8444-4c6a996a8bfc'
88
+ INTEGRATION_GUIDS['HarvestSurveys'] = 'fae162c3-2bfd-467f-9c47-2e3b63a655de'
89
+ INTEGRATION_GUIDS['HarvestActivity'] = '856501d9-ec29-4e67-9cd7-120f53710ffa'
90
+ INTEGRATION_GUIDS['HarvestOpenMetadata'] = 'f8bf326b-d613-4ece-a12e-a1423bc272d7'
91
+ TEMPLATE_GUIDS['PostgreSQL Server'] = '542134e6-b9ce-4dce-8aef-22e8daf34fdb'
92
+ INTEGRATION_GUIDS['PostgreSQLServer'] = '36f69fd0-54ba-4f59-8a44-11ccf2687a34'
93
+ TEMPLATE_GUIDS['Audio Data File'] = '39b4b670-7f15-4744-a5ba-62e8edafbcee'
94
+ TEMPLATE_GUIDS['Document File'] = 'eb6f728d-fa54-4350-9807-1199cbf96851'
95
+ TEMPLATE_GUIDS['Engine Host'] = '1764a891-4234-45f1-8cc3-536af40c790d'
96
+ TEMPLATE_GUIDS['Integration Daemon'] = '6b3516f0-dd13-4786-9601-07215f995197'
97
+ TEMPLATE_GUIDS['XML Data File'] = 'ea67ae71-c674-473e-b38b-689879d2a7d9'
98
+ TEMPLATE_GUIDS['Avro Data File'] = '9f5be428-058e-41dd-b506-3a222283b579'
99
+ TEMPLATE_GUIDS['REST API Endpoint'] = '9ea4bff4-d193-492f-bcad-6e68c07c6f9e'
100
+ TEMPLATE_GUIDS['Unity Catalog Schema'] = '5bf92b0f-3970-41ea-b0a3-aacfbf6fd92e'
101
+ TEMPLATE_GUIDS['Unity Catalog Volume'] = '92d2d2dc-0798-41f0-9512-b10548d312b7'
102
+ TEMPLATE_GUIDS['Parquet Data File'] = '7f6cd744-79c3-4d25-a056-eeb1a91574c3'
103
+ TEMPLATE_GUIDS['File'] = 'ae3067c7-cc72-4a18-88e1-746803c2c86f'
104
+ TEMPLATE_GUIDS['3D Image Data File'] = '0059ea2b-6292-4cac-aa6f-a80a605f1114'
105
+ TEMPLATE_GUIDS['YAML File'] = '2221855b-2b64-4b45-a2ee-c40adc5e2a64'
106
+ TEMPLATE_GUIDS['Apache Kafka Topic'] = 'ea8f81c9-c59c-47de-9525-7cc59d1251e5'
107
+ INTEGRATION_GUIDS['OpenLineageKafkaListener'] = '980b989c-de78-4e6a-a58d-51049d7381bf'
108
+ TEMPLATE_GUIDS['Script File'] = 'dbd5e6bb-1ff8-46f4-a007-fb0485f68c92'
109
+ TEMPLATE_GUIDS['Apache Atlas Server'] = 'fe6dce45-a978-4417-ab55-17f05b8bcea7'
110
+ INTEGRATION_GUIDS['ApacheAtlasServer'] = '5721627a-2dd4-4f95-a274-6cfb128edb97'
111
+ TEMPLATE_GUIDS['Raster Data File'] = '47211156-f03f-4881-8526-015e695a3dac'
112
+ TEMPLATE_GUIDS['Metadata Access Server'] = 'bd8de890-fa79-4c24-aab8-20b41b5893dd'
113
+ TEMPLATE_GUIDS['Data Folder'] = '372a0379-7060-4c9d-8d84-bc709b31794c'
114
+ INTEGRATION_GUIDS['MaintainDataFolderLastUpdateDate'] = 'fd26f07c-ae44-4bc5-b457-37b43112224f'
115
+ INTEGRATION_GUIDS['OpenLineageFilePublisher'] = '6271b678-7d22-4cdf-87b1-45b366beaf4e'
116
+ TEMPLATE_GUIDS['Properties File'] = '3b281111-a0ef-4fc4-99e7-9a0ef84a7636'
117
+ TEMPLATE_GUIDS['Vector Data File'] = 'db1bec7f-55a9-40d3-91c0-a57b76d422e2'
118
+ TEMPLATE_GUIDS['OMAG Server Platform'] = '9b06c4dc-ddc8-47ae-b56b-28775d3a96f0'
119
+ INTEGRATION_GUIDS['OpenAPI'] = 'b89d9a5a-2ea6-49bc-a4fc-e7df9f3ca93e'
120
+ INTEGRATION_GUIDS['OMAGServerPlatform'] = 'dee84e6e-7a96-4975-86c1-152fb3ab759b'
121
+ TEMPLATE_GUIDS['Apache Kafka Server'] = '5e1ff810-5418-43f7-b7c4-e6e062f9aff7'
122
+ INTEGRATION_GUIDS['KafkaTopic'] = 'fa1f711c-0b34-4b57-8e6e-16162b132b0c'
123
+ INTEGRATION_GUIDS['OpenLineageAPIPublisher'] = '2156bc98-973a-4859-908d-4ccc96f53cc5'
124
+ INTEGRATION_GUIDS['JDBCDatabaseCataloguer'] = '70dcd0b7-9f06-48ad-ad44-ae4d7a7762aa'
125
+ INTEGRATION_GUIDS['ApacheKafkaCataloguer'] = 'fa1f711c-0b34-4b57-8e6e-16162b132b0c'
126
+ INTEGRATION_GUIDS['FilesCataloguer'] = '1b98cdac-dd0a-4621-93db-99ef5a1098bc'
127
+ INTEGRATION_GUIDS['UnityCatalogServerSynchronizer'] = '06d068d9-9e08-4e67-8c59-073bbf1013af'
128
+ INTEGRATION_GUIDS['SampleDataCataloguer'] = 'cd6479e1-2fe7-4426-b358-8a0cf70be117'
129
+ INTEGRATION_GUIDS['OpenLineageGovernanceActionPublisher'] = '206f8faf-04da-4b6f-8280-eeee3943afeb'
130
+ INTEGRATION_GUIDS['OMAGServerPlatformCataloguer'] = 'dee84e6e-7a96-4975-86c1-152fb3ab759b'
131
+ INTEGRATION_GUIDS['HarvestActivity'] = '856501d9-ec29-4e67-9cd7-120f53710ffa'
132
+ INTEGRATION_GUIDS['MaintainLastUpdateDate'] = 'fd26f07c-ae44-4bc5-b457-37b43112224f'
133
+ INTEGRATION_GUIDS['UnityCatalogInsideCatalogSynchronizer'] = '74dde22f-2249-4ea3-af2b-b39e73f79b81'
134
+ INTEGRATION_GUIDS['OpenLineageKafkaListener'] = '980b989c-de78-4e6a-a58d-51049d7381bf'
135
+ INTEGRATION_GUIDS['HarvestOpenMetadata'] = 'f8bf326b-d613-4ece-a12e-a1423bc272d7'
136
+ INTEGRATION_GUIDS['OpenAPICataloguer'] = 'b89d9a5a-2ea6-49bc-a4fc-e7df9f3ca93e'
137
+ INTEGRATION_GUIDS['OpenLineageFilePublisher'] = '6271b678-7d22-4cdf-87b1-45b366beaf4e'
138
+ INTEGRATION_GUIDS['PostgreSQLServerCataloguer'] = '36f69fd0-54ba-4f59-8a44-11ccf2687a34'
139
+ INTEGRATION_GUIDS['PostgreSQLDatabaseCataloguer'] = 'ef301220-7dfe-4c6c-bb9d-8f92d9f63823'
140
+ INTEGRATION_GUIDS['ContentPacksCataloguer'] = '6bb2181e-7724-4515-ba3c-877cded55980'
141
+ INTEGRATION_GUIDS['OpenLineageCataloguer'] = '3347ac71-8dd2-403a-bc16-75a71be64bd7'
142
+ INTEGRATION_GUIDS['ApacheAtlasExchange'] = '5721627a-2dd4-4f95-a274-6cfb128edb97'
143
+ INTEGRATION_GUIDS['HarvestSurveys'] = 'fae162c3-2bfd-467f-9c47-2e3b63a655de'
@@ -117,7 +117,7 @@ OPTIONAL_PARAMS = ["page_size", "start_from", "starts_with", "ends_with", "ignor
117
117
  # Define shared elements
118
118
  COMMON_COLUMNS = [
119
119
  Column(name='Display Name', key='display_name'),
120
- Column(name='Qualified Name', key='qualified_name', format=True),
120
+ Column(name='Qualified Name', key='qualified_name', format=False),
121
121
  Column(name='Category', key='category'),
122
122
  Column(name='Description', key='description', format=True),
123
123
  Column(name='Status', key='status'),
@@ -15,7 +15,7 @@ import json
15
15
  from httpx import Response
16
16
  from pyegeria.utils import body_slimmer
17
17
  from pyegeria._client import Client
18
- from pyegeria import TEMPLATE_GUIDS, max_paging_size
18
+ from pyegeria._globals import TEMPLATE_GUIDS, max_paging_size
19
19
  from pyegeria._exceptions import InvalidParameterException
20
20
  from pyegeria._globals import NO_ELEMENTS_FOUND, NO_ASSETS_FOUND
21
21
  from ._validators import validate_search_string