pyegeria 5.4.8__py3-none-any.whl → 5.4.8.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. md_processing/__init__.py +2 -1
  2. md_processing/data/commands.json +59579 -52198
  3. md_processing/dr_egeria.py +7 -5
  4. md_processing/md_commands/solution_architect_commands.py +54 -10
  5. md_processing/md_processing_utils/common_md_proc_utils.py +8 -4
  6. md_processing/md_processing_utils/common_md_utils.py +41 -2
  7. pyegeria/_base_client.py +1 -17
  8. pyegeria/_client_new.py +1008 -323
  9. pyegeria/_client_new_backup.py +5359 -0
  10. pyegeria/_exceptions_new.py +6 -1
  11. pyegeria/base_report_formats.py +31 -2
  12. pyegeria/classification_manager.py +1430 -357
  13. pyegeria/collection_manager.py +52 -54
  14. pyegeria/config.py +1 -0
  15. pyegeria/data_designer.py +41 -41
  16. pyegeria/external_links.py +26 -26
  17. pyegeria/feedback_manager_omvs.py +13 -31
  18. pyegeria/glossary_manager.py +32 -35
  19. pyegeria/governance_officer.py +31 -31
  20. pyegeria/output_formatter.py +36 -11
  21. pyegeria/output_formatter_with_machine_keys.py +1127 -0
  22. pyegeria/project_manager.py +21 -21
  23. pyegeria/reference_data.py +2 -2
  24. pyegeria/solution_architect.py +112 -91
  25. {pyegeria-5.4.8.dist-info → pyegeria-5.4.8.3.dist-info}/METADATA +6 -5
  26. {pyegeria-5.4.8.dist-info → pyegeria-5.4.8.3.dist-info}/RECORD +30 -29
  27. pyegeria/md_processing_utils_orig.py +0 -1103
  28. {pyegeria-5.4.8.dist-info → pyegeria-5.4.8.3.dist-info}/WHEEL +0 -0
  29. {pyegeria-5.4.8.dist-info → pyegeria-5.4.8.3.dist-info}/entry_points.txt +0 -0
  30. {pyegeria-5.4.8.dist-info → pyegeria-5.4.8.3.dist-info}/licenses/LICENSE +0 -0
  31. {pyegeria-5.4.8.dist-info → pyegeria-5.4.8.3.dist-info}/top_level.txt +0 -0
pyegeria/data_designer.py CHANGED
@@ -16,7 +16,7 @@ from pyegeria.base_report_formats import select_report_spec, get_report_spec_mat
16
16
  from pyegeria.models import (SearchStringRequestBody, FilterRequestBody, GetRequestBody, NewElementRequestBody,
17
17
  TemplateRequestBody,
18
18
  UpdateElementRequestBody, NewRelationshipRequestBody,
19
- DeleteRequestBody)
19
+ DeleteElementRequestBody, DeleteRelationshipRequestBody)
20
20
  from pyegeria.output_formatter import (extract_mermaid_only, extract_basic_dict, populate_columns_from_properties,
21
21
  get_required_relationships, populate_common_columns)
22
22
  from pyegeria.output_formatter import (generate_output,
@@ -579,7 +579,7 @@ class DataDesigner(Client2):
579
579
 
580
580
  @dynamic_catch
581
581
  async def _async_detach_member_data_field(self, parent_data_struct_guid: str, member_data_field_guid: str,
582
- body: dict | DeleteRequestBody = None,
582
+ body: dict | DeleteRelationshipRequestBody = None,
583
583
  cascade_delete: bool = False) -> None:
584
584
  """
585
585
  Detach a data class from a data structure. Request body is optional. Async version.
@@ -612,7 +612,7 @@ class DataDesigner(Client2):
612
612
 
613
613
  Full sample body:
614
614
  {
615
- "class": "DeleteRequestBody",
615
+ "class": "DeleteRelationshipRequestBody",
616
616
  "cascadedDelete": false,
617
617
  "deleteMethod": "LOOK_FOR_LINEAGE",
618
618
  "externalSourceGUID": "add guid here",
@@ -628,12 +628,12 @@ class DataDesigner(Client2):
628
628
  url = (f"{self.data_designer_root}/data-structures/{parent_data_struct_guid}"
629
629
  f"/member-data-fields/{member_data_field_guid}/detach")
630
630
 
631
- await self._async_delete_request(url, body, cascade_delete)
631
+ await self._async_delete_relationship_request(url, body, cascade_delete)
632
632
  logger.info(f"Data field {member_data_field_guid} detached from data structure {parent_data_struct_guid}.")
633
633
 
634
634
  @dynamic_catch
635
635
  def detach_member_data_field(self, parent_data_struct_guid: str, member_data_field_guid: str,
636
- body: dict = None | DeleteRequestBody, cascade_delete: bool = False) -> None:
636
+ body: dict = None | DeleteRelationshipRequestBody, cascade_delete: bool = False) -> None:
637
637
  """
638
638
  Detach a data class from a data structure. Request body is optional.
639
639
 
@@ -664,7 +664,7 @@ class DataDesigner(Client2):
664
664
 
665
665
  Full sample body:
666
666
  {
667
- "class": "DeleteRequestBody",
667
+ "class": "DeleteRelationshipRequestBody",
668
668
  "cascadedDelete": false,
669
669
  "deleteMethod": "LOOK_FOR_LINEAGE",
670
670
  "externalSourceGUID": "add guid here",
@@ -715,7 +715,7 @@ class DataDesigner(Client2):
715
715
  Full sample body:
716
716
 
717
717
  {
718
- "class": "DeleteRequestBody",
718
+ "class": "DeleteRelationshipRequestBody",
719
719
  "cascadedDelete": false,
720
720
  "deleteMethod": "LOOK_FOR_LINEAGE",
721
721
  "externalSourceGUID": "add guid here",
@@ -729,7 +729,7 @@ class DataDesigner(Client2):
729
729
 
730
730
  url = f"{self.data_designer_root}/data-structures/{data_struct_guid}/delete"
731
731
 
732
- await self._async_delete_request(url, body, cascade_delete)
732
+ await self._async_delete_element_request(url, body, cascade_delete)
733
733
  logger.info(f"Data structure {data_struct_guid} deleted.")
734
734
 
735
735
  @dynamic_catch
@@ -765,7 +765,7 @@ class DataDesigner(Client2):
765
765
  Full sample body:
766
766
 
767
767
  {
768
- "class": "DeleteRequestBody",
768
+ "class": "DeleteRelationshipRequestBody",
769
769
  "cascadedDelete": false,
770
770
  "deleteMethod": "LOOK_FOR_LINEAGE",
771
771
  "externalSourceGUID": "add guid here",
@@ -1286,11 +1286,11 @@ class DataDesigner(Client2):
1286
1286
  data_structure_guids.append(guid)
1287
1287
  data_structure_names.append(display_name)
1288
1288
  data_structure_qnames.append(qualified_name)
1289
-
1290
- elif type == "DataField":
1291
- parent_guids.append(guid)
1292
- parent_names.append(display_name)
1293
- parent_qnames.append(qualified_name)
1289
+ # Todo - check the logic here
1290
+ # elif type == "DataField":
1291
+ # parent_guids.append(guid)
1292
+ # parent_names.append(display_name)
1293
+ # parent_qnames.append(qualified_name)
1294
1294
 
1295
1295
  member_of_collections = el_struct.get("memberOfCollections", {})
1296
1296
  for collection in member_of_collections:
@@ -2027,7 +2027,7 @@ class DataDesigner(Client2):
2027
2027
 
2028
2028
  @dynamic_catch
2029
2029
  async def _async_detach_nested_data_field(self, parent_data_field_guid: str, nested_data_field_guid: str,
2030
- body: dict | DeleteRequestBody = None) -> None:
2030
+ body: dict | DeleteRelationshipRequestBody = None) -> None:
2031
2031
  """
2032
2032
  Detach a nested data class from a data class. Request body is optional. Async version.
2033
2033
 
@@ -2073,12 +2073,12 @@ class DataDesigner(Client2):
2073
2073
  url = (f"{base_path(self, self.view_server)}/data-fields/{parent_data_field_guid}"
2074
2074
  f"/member-data-fields/{nested_data_field_guid}/detach")
2075
2075
 
2076
- await self._async_delete_request(url, body)
2076
+ await self._async_delete_relationship_request(url, body)
2077
2077
  logger.info(f"Data field {parent_data_field_guid} detached from data structure {nested_data_field_guid}.")
2078
2078
 
2079
2079
  @dynamic_catch
2080
2080
  def detach_nested_data_field(self, parent_data_field_guid: str, nested_data_field_guid: str,
2081
- body: dict | DeleteRequestBody = None) -> None:
2081
+ body: dict | DeleteRelationshipRequestBody = None) -> None:
2082
2082
  """
2083
2083
  Detach a nested data class from a data class. Request body is optional.
2084
2084
 
@@ -2125,7 +2125,7 @@ class DataDesigner(Client2):
2125
2125
  self._async_detach_nested_data_field(parent_data_field_guid, nested_data_field_guid, body))
2126
2126
 
2127
2127
  @dynamic_catch
2128
- async def _async_delete_data_field(self, data_field_guid: str, body: dict | DeleteRequestBody = None,
2128
+ async def _async_delete_data_field(self, data_field_guid: str, body: dict | DeleteElementRequestBody = None,
2129
2129
  cascade_delete: bool = False) -> None:
2130
2130
  """
2131
2131
  Delete a data class. Request body is optional. Async version.
@@ -2134,7 +2134,7 @@ class DataDesigner(Client2):
2134
2134
  ----------
2135
2135
  data_field_guid: str
2136
2136
  - the GUID of the data class to delete.
2137
- body: dict, optional
2137
+ body: dict| DeleteElementRequestBody, optional
2138
2138
  - a dictionary containing additional properties.
2139
2139
  cascade: bool, optional
2140
2140
  - if True, then all child data fields will be deleted as well.
@@ -2159,7 +2159,7 @@ class DataDesigner(Client2):
2159
2159
  Full sample body:
2160
2160
 
2161
2161
  {
2162
- "class": "MetadataSourceRequestBody",
2162
+ "class": "DeleteElementRequestBody",
2163
2163
  "externalSourceGUID": "add guid here",
2164
2164
  "externalSourceName": "add qualified name here",
2165
2165
  "effectiveTime": "{{$isoTimestamp}}",
@@ -2172,11 +2172,11 @@ class DataDesigner(Client2):
2172
2172
 
2173
2173
  url = f"{base_path(self, self.view_server)}/data-fields/{data_field_guid}/delete"
2174
2174
 
2175
- await self._async_delete_request(url, body, cascade_delete)
2175
+ await self._async_delete_element_request(url, body, cascade_delete)
2176
2176
  logger.info(f"Data Field {data_field_guid} deleted.")
2177
2177
 
2178
2178
  @dynamic_catch
2179
- def delete_data_field(self, data_field_guid: str, body: dict | DeleteRequestBody = None,
2179
+ def delete_data_field(self, data_field_guid: str, body: dict | DeleteElementRequestBody = None,
2180
2180
  cascade_delete: bool = False) -> None:
2181
2181
  """
2182
2182
  Delete a data class. Request body is optional.
@@ -2185,7 +2185,7 @@ class DataDesigner(Client2):
2185
2185
  ----------
2186
2186
  data_field_guid: str
2187
2187
  - the GUID of the data class the data class to delete.
2188
- body: dict, optional
2188
+ body: dict | DeleteElementRequestBody, optional
2189
2189
  - a dictionary containing additional properties.
2190
2190
  cascade: bool, optional
2191
2191
  - if True, then all child data fields will be deleted as well.
@@ -3258,7 +3258,7 @@ class DataDesigner(Client2):
3258
3258
 
3259
3259
  @dynamic_catch
3260
3260
  async def _async_detach_nested_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
3261
- body: dict | DeleteRequestBody = None,
3261
+ body: dict | DeleteRelationshipRequestBody = None,
3262
3262
  cascade_delete: bool = False) -> None:
3263
3263
  """
3264
3264
  Detach two nested data classes from each other. Request body is optional. Async version.
@@ -3305,12 +3305,12 @@ class DataDesigner(Client2):
3305
3305
  url = (f"{base_path(self, self.view_server)}/data-classes/{parent_data_class_guid}"
3306
3306
  f"/nested-data-classes/{child_data_class_guid}/detach")
3307
3307
 
3308
- await self._async_delete_request(url, body, cascade_delete)
3308
+ await self._async_delete_relationship_request(url, body, cascade_delete)
3309
3309
  logger.info(f"Data Class {child_data_class_guid} detached from data structure {parent_data_class_guid}.")
3310
3310
 
3311
3311
  @dynamic_catch
3312
3312
  def detach_nested_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
3313
- body: dict | DeleteRequestBody = None, cascade_delete: bool = False) -> None:
3313
+ body: dict | DeleteRelationshipRequestBody = None, cascade_delete: bool = False) -> None:
3314
3314
  """
3315
3315
  Detach two nested data classes from each other. Request body is optional.
3316
3316
 
@@ -3457,7 +3457,7 @@ class DataDesigner(Client2):
3457
3457
 
3458
3458
  @dynamic_catch
3459
3459
  async def _async_detach_specialized_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
3460
- body: dict | DeleteRequestBody = None,
3460
+ body: dict | DeleteRelationshipRequestBody = None,
3461
3461
  cascade_delete: bool = False) -> None:
3462
3462
  """
3463
3463
  Detach two data classes from each other. Request body is optional. Async version.
@@ -3504,12 +3504,12 @@ class DataDesigner(Client2):
3504
3504
  url = (f"{base_path(self, self.view_server)}/data-classes/{parent_data_class_guid}"
3505
3505
  f"/specialized-data-classes/{child_data_class_guid}/detach")
3506
3506
 
3507
- await self._async_delete_request(url, body, cascade_delete)
3507
+ await self._async_delete_relationship_request(url, body, cascade_delete)
3508
3508
  logger.info(f"Data field {child_data_class_guid} detached from data structure {parent_data_class_guid}.")
3509
3509
 
3510
3510
  @dynamic_catch
3511
3511
  def detach_specialized_data_class(self, parent_data_class_guid: str, child_data_class_guid: str,
3512
- body: dict | DeleteRequestBody = None, cascade_delete: bool = False) -> None:
3512
+ body: dict | DeleteRelationshipRequestBody = None, cascade_delete: bool = False) -> None:
3513
3513
  """
3514
3514
  Detach two data classes from each other. Request body is optional.
3515
3515
 
@@ -3557,7 +3557,7 @@ class DataDesigner(Client2):
3557
3557
  cascade_delete))
3558
3558
 
3559
3559
  @dynamic_catch
3560
- async def _async_delete_data_class(self, data_class_guid: str, body: dict | DeleteRequestBody = None,
3560
+ async def _async_delete_data_class(self, data_class_guid: str, body: dict | DeleteElementRequestBody = None,
3561
3561
  cascade_delete: bool = False) -> None:
3562
3562
  """
3563
3563
  Delete a data class. Request body is optional. Async version.
@@ -3604,13 +3604,13 @@ class DataDesigner(Client2):
3604
3604
 
3605
3605
  url = f"{base_path(self, self.view_server)}/data-classes/{data_class_guid}/delete"
3606
3606
 
3607
- await self._async_delete_request(url, body, cascade_delete)
3607
+ await self._async_delete_element_request(url, body, cascade_delete)
3608
3608
  logger.info(f"Data structure {data_class_guid} deleted.")
3609
3609
 
3610
3610
  @dynamic_catch
3611
3611
  def delete_data_class(self,
3612
3612
  data_class_guid: str,
3613
- body: dict | DeleteRequestBody = None,
3613
+ body: dict | DeleteElementRequestBody = None,
3614
3614
  cascade_delete: bool = False) -> None:
3615
3615
  """
3616
3616
  Delete a data class. Request body is optional.
@@ -4171,7 +4171,7 @@ class DataDesigner(Client2):
4171
4171
 
4172
4172
  @dynamic_catch
4173
4173
  async def _async_detach_data_class_definition(self, data_definition_guid: str, data_class_guid: str,
4174
- body: dict | DeleteRequestBody = None,
4174
+ body: dict | DeleteRelationshipRequestBody = None,
4175
4175
  cascade_delete: bool = False) -> None:
4176
4176
  """
4177
4177
  Detach a data definition from a data class. Request body is optional. Async version.
@@ -4218,12 +4218,12 @@ class DataDesigner(Client2):
4218
4218
  url = (f"{base_path(self, self.view_server)}/data-definitions/{data_definition_guid}"
4219
4219
  f"/data-class-definition/{data_class_guid}/detach")
4220
4220
 
4221
- await self._async_delete_request(url, body, cascade_delete)
4221
+ await self._async_delete_relationship_request(url, body, cascade_delete)
4222
4222
  logger.info(f"Data class {data_class_guid} detached from data definition {data_definition_guid}.")
4223
4223
 
4224
4224
  @dynamic_catch
4225
4225
  def detach_data_class_definition(self, data_definition_guid: str, data_class_guid: str,
4226
- body: dict | DeleteRequestBody = None, cascade_delete: bool = False) -> None:
4226
+ body: dict | DeleteRelationshipRequestBody = None, cascade_delete: bool = False) -> None:
4227
4227
  """
4228
4228
  Detach a data definition from a data class. Request body is optional.
4229
4229
 
@@ -4373,7 +4373,7 @@ class DataDesigner(Client2):
4373
4373
 
4374
4374
  @dynamic_catch
4375
4375
  async def _async_detach_semantic_definition(self, data_definition_guid: str, glossary_term_guid: str,
4376
- body: dict | DeleteRequestBody = None,
4376
+ body: dict | DeleteRelationshipRequestBody = None,
4377
4377
  cascade_delete: bool = False) -> None:
4378
4378
  """
4379
4379
  Detach a data definition from a glossary term. Request body is optional. Async version.
@@ -4419,12 +4419,12 @@ class DataDesigner(Client2):
4419
4419
 
4420
4420
  url = (f"{base_path(self, self.view_server)}/data-definitions/{data_definition_guid}"
4421
4421
  f"/semantic-definition/{glossary_term_guid}/detach")
4422
- await self._async_delete_request(url, body, cascade_delete)
4422
+ await self._async_delete_relationship_request(url, body, cascade_delete)
4423
4423
  logger.info(f"Data definition {data_definition_guid} detached from term {glossary_term_guid}.")
4424
4424
 
4425
4425
  @dynamic_catch
4426
4426
  def detach_semantic_definition(self, data_definition_guid: str, glossary_term_guid: str,
4427
- body: dict | DeleteRequestBody = None, cascade_delete: bool = False) -> None:
4427
+ body: dict | DeleteRelationshipRequestBody = None, cascade_delete: bool = False) -> None:
4428
4428
  """
4429
4429
  Detach a data definition from a glossary term. Request body is optional.
4430
4430
 
@@ -4579,7 +4579,7 @@ class DataDesigner(Client2):
4579
4579
  self._async_link_certification_type_to_data_structure(certification_type_guid, data_structure_guid, body))
4580
4580
 
4581
4581
  async def _async_detach_certification_type_from_data_structure(self, certification_type_guid: str,
4582
- data_structure_guid: str, body: dict | DeleteRequestBody = None, cascade_delete: bool = False) -> None:
4582
+ data_structure_guid: str, body: dict | DeleteRelationshipRequestBody = None, cascade_delete: bool = False) -> None:
4583
4583
  """
4584
4584
  Detach a data structure from a certification type. Request body is optional. Async version.
4585
4585
 
@@ -4624,12 +4624,12 @@ class DataDesigner(Client2):
4624
4624
  url = (f"{base_path(self, self.view_server)}/certification-stypes/{certification_type_guid}"
4625
4625
  f"/data-structure-definition/{data_structure_guid}/detach")
4626
4626
 
4627
- await self._async_delete_request(url, body, cascade_delete)
4627
+ await self._async_delete_relationship_request(url, body, cascade_delete)
4628
4628
  logger.info(f"Certification type {certification_type_guid} detached from data structure {data_structure_guid}.")
4629
4629
 
4630
4630
 
4631
4631
  def detach_certification_type_from_data_structure(self, certification_type_guid: str, data_structure_guid: str,
4632
- body: dict | DeleteRequestBody= None, cascade_delete: bool = False) -> None:
4632
+ body: dict | DeleteRelationshipRequestBody= None, cascade_delete: bool = False) -> None:
4633
4633
  """
4634
4634
  Detach a data structure from a certification type. Request body is optional.
4635
4635
 
@@ -18,7 +18,7 @@ from pyegeria.config import settings
18
18
  from pyegeria.models import (SearchStringRequestBody, FilterRequestBody, GetRequestBody, NewElementRequestBody,
19
19
  TemplateRequestBody,
20
20
  UpdateElementRequestBody, NewRelationshipRequestBody,
21
- DeleteRequestBody)
21
+ DeleteElementRequestBody, DeleteRelationshipRequestBody)
22
22
  from pyegeria.output_formatter import (generate_output,
23
23
  _extract_referenceable_properties, populate_columns_from_properties,
24
24
  get_required_relationships)
@@ -635,7 +635,7 @@ class ExternalReferences(Client2):
635
635
 
636
636
  @dynamic_catch
637
637
  async def _async_detach_external_reference(self, element_guid: str, ext_ref_guid: str,
638
- body: dict | DeleteRequestBody = None) -> None:
638
+ body: dict | DeleteRelationshipRequestBody = None) -> None:
639
639
  """ Detach an element from an external reference; body is optional. Async version.
640
640
 
641
641
  Parameters
@@ -644,7 +644,7 @@ class ExternalReferences(Client2):
644
644
  The unique identifier of the subscriber.
645
645
  ext_ref_guid: str
646
646
  The unique identifier of the subscription.
647
- body: dict | DeleteRequestBody, optional, default = None
647
+ body: dict | DeleteRelationshipRequestBody, optional, default = None
648
648
  A structure representing the details of the relationship.
649
649
 
650
650
  Returns
@@ -664,7 +664,7 @@ class ExternalReferences(Client2):
664
664
  -----
665
665
  JSON Structure looks like:
666
666
  {
667
- "class": "DeleteRequestBody",
667
+ "class": "DeleteRelationshipRequestBody",
668
668
  "externalSourceGUID": "add guid here",
669
669
  "externalSourceName": "add qualified name here",
670
670
  "effectiveTime": "{{$isoTimestamp}}",
@@ -674,10 +674,10 @@ class ExternalReferences(Client2):
674
674
  """
675
675
  url = (f"{self.command_root}/elements/{element_guid}/external_references/{ext_ref_guid}/detach")
676
676
 
677
- await self._async_delete_request(url, body)
677
+ await self._async_delete_element_request(url, body)
678
678
  logger.info(f"Detached element {element_guid} from external reference {ext_ref_guid}")
679
679
 
680
- def detach_external_reference(self, element_guid: str, ext_ref_guid: str, body: dict | DeleteRequestBody = None):
680
+ def detach_external_reference(self, element_guid: str, ext_ref_guid: str, body: dict | DeleteRelationshipRequestBody = None):
681
681
  """ Detach an element from an external reference. Request body is optional.
682
682
 
683
683
  Parameters
@@ -706,7 +706,7 @@ class ExternalReferences(Client2):
706
706
  -----
707
707
  JSON Structure looks like:
708
708
  {
709
- "class": "DeleteRequestBody",
709
+ "class": "DeleteRelationshipRequestBody",
710
710
  "externalSourceGUID": "add guid here",
711
711
  "externalSourceName": "add qualified name here",
712
712
  "effectiveTime": "{{$isoTimestamp}}",
@@ -861,7 +861,7 @@ class ExternalReferences(Client2):
861
861
 
862
862
  @dynamic_catch
863
863
  async def _async_detach_media_reference(self, element_guid: str, media_ref_guid: str,
864
- body: dict | DeleteRequestBody = None) -> None:
864
+ body: dict | DeleteRelationshipRequestBody = None) -> None:
865
865
  """ Detach an element from an external media reference; body is optional. Async version.
866
866
 
867
867
  Parameters
@@ -870,7 +870,7 @@ class ExternalReferences(Client2):
870
870
  The unique identifier of the subscriber.
871
871
  media_ref_guid: str
872
872
  The unique identifier of the subscription.
873
- body: dict | DeleteRequestBody, optional, default = None
873
+ body: dict | DeleteRelationshipRequestBody, optional, default = None
874
874
  A structure representing the details of the relationship.
875
875
 
876
876
  Returns
@@ -890,7 +890,7 @@ class ExternalReferences(Client2):
890
890
  -----
891
891
  JSON Structure looks like:
892
892
  {
893
- "class": "DeleteRequestBody",
893
+ "class": "DeleteRelationshipRequestBody",
894
894
  "externalSourceGUID": "add guid here",
895
895
  "externalSourceName": "add qualified name here",
896
896
  "effectiveTime": "{{$isoTimestamp}}",
@@ -901,11 +901,11 @@ class ExternalReferences(Client2):
901
901
  url = (
902
902
  f"{self.command_root}/elements/{element_guid}/media-references/{media_ref_guid}/detach")
903
903
 
904
- await self._async_delete_request(url, body)
904
+ await self._async_delete_relationship_request(url, body)
905
905
  logger.info(f"Detached element {element_guid} from external media reference {media_ref_guid}")
906
906
 
907
907
  @dynamic_catch
908
- def detach_media_reference(self, element_guid: str, media_ref_guid: str, body: dict | DeleteRequestBody = None):
908
+ def detach_media_reference(self, element_guid: str, media_ref_guid: str, body: dict | DeleteRelationshipRequestBody = None):
909
909
  """ Detach an element from an external media reference. Request body is optional.
910
910
 
911
911
  Parameters
@@ -934,7 +934,7 @@ class ExternalReferences(Client2):
934
934
  -----
935
935
  JSON Structure looks like:
936
936
  {
937
- "class": "DeleteRequestBody",
937
+ "class": "DeleteRelationshipRequestBody",
938
938
  "externalSourceGUID": "add guid here",
939
939
  "externalSourceName": "add qualified name here",
940
940
  "effectiveTime": "{{$isoTimestamp}}",
@@ -1045,7 +1045,7 @@ class ExternalReferences(Client2):
1045
1045
 
1046
1046
  @dynamic_catch
1047
1047
  async def _async_detach_cited_document(self, element_guid: str, cited_doc_guid: str,
1048
- body: dict | DeleteRequestBody = None) -> None:
1048
+ body: dict | DeleteRelationshipRequestBody = None) -> None:
1049
1049
  """ Detach an element from an cited document reference; body is optional. Async version.
1050
1050
 
1051
1051
  Parameters
@@ -1054,7 +1054,7 @@ class ExternalReferences(Client2):
1054
1054
  The unique identifier of the subscriber.
1055
1055
  cited_doc_guid: str
1056
1056
  The unique identifier of the subscription.
1057
- body: dict | DeleteRequestBody, optional, default = None
1057
+ body: dict | DeleteRelationshipRequestBody, optional, default = None
1058
1058
  A structure representing the details of the relationship.
1059
1059
 
1060
1060
  Returns
@@ -1074,7 +1074,7 @@ class ExternalReferences(Client2):
1074
1074
  -----
1075
1075
  JSON Structure looks like:
1076
1076
  {
1077
- "class": "DeleteRequestBody",
1077
+ "class": "DeleteRelationshipRequestBody",
1078
1078
  "externalSourceGUID": "add guid here",
1079
1079
  "externalSourceName": "add qualified name here",
1080
1080
  "effectiveTime": "{{$isoTimestamp}}",
@@ -1084,11 +1084,11 @@ class ExternalReferences(Client2):
1084
1084
  """
1085
1085
  url = f"{self.command_root}/elements/{element_guid}/cited-document-references/{cited_doc_guid}/detach"
1086
1086
 
1087
- await self._async_delete_request(url, body)
1087
+ await self._async_delete_relationship_request(url, body)
1088
1088
  logger.info(f"Detached element {element_guid} from cited document reference {cited_doc_guid}")
1089
1089
 
1090
1090
  @dynamic_catch
1091
- def detach_cited_document(self, element_guid: str, cited_doc_guid: str, body: dict | DeleteRequestBody = None):
1091
+ def detach_cited_document(self, element_guid: str, cited_doc_guid: str, body: dict | DeleteRelationshipRequestBody = None):
1092
1092
  """ Detach an element from acited document reference. Request body is optional.
1093
1093
 
1094
1094
  Parameters
@@ -1117,7 +1117,7 @@ class ExternalReferences(Client2):
1117
1117
  -----
1118
1118
  JSON Structure looks like:
1119
1119
  {
1120
- "class": "DeleteRequestBody",
1120
+ "class": "DeleteRelationshipRequestBody",
1121
1121
  "externalSourceGUID": "add guid here",
1122
1122
  "externalSourceName": "add qualified name here",
1123
1123
  "effectiveTime": "{{$isoTimestamp}}",
@@ -1133,7 +1133,7 @@ class ExternalReferences(Client2):
1133
1133
  #
1134
1134
  @dynamic_catch
1135
1135
  async def _async_delete_external_reference(self, ext_ref_guid: str,
1136
- body: dict | DeleteRequestBody = None,
1136
+ body: dict | DeleteRelationshipRequestBody = None,
1137
1137
  cascade: bool = False) -> None:
1138
1138
  """ Delete an external reference. Async Version.
1139
1139
 
@@ -1145,7 +1145,7 @@ class ExternalReferences(Client2):
1145
1145
  cascade: bool, optional, defaults to True
1146
1146
  If true, a cascade delete is performed.
1147
1147
 
1148
- body: dict DeleteRequestBodyt, optional, default = None
1148
+ body: dict DeleteRelationshipRequestBodyt, optional, default = None
1149
1149
  A dict representing the details of the relationship.
1150
1150
 
1151
1151
  Returns
@@ -1165,7 +1165,7 @@ class ExternalReferences(Client2):
1165
1165
  _____
1166
1166
  JSON Structure looks like:
1167
1167
  {
1168
- "class" : "DeleteRequestBody",
1168
+ "class" : "DeleteRelationshipRequestBody",
1169
1169
  "externalSourceGUID": "add guid here",
1170
1170
  "externalSourceName": "add qualified name here",
1171
1171
  "effectiveTime" : "{{$isoTimestamp}}",
@@ -1175,11 +1175,11 @@ class ExternalReferences(Client2):
1175
1175
  """
1176
1176
  url = f"{self.command_root}/external-references/{ext_ref_guid}/delete"
1177
1177
 
1178
- await self._async_delete_request(url, body, cascade)
1178
+ await self._async_delete_element_request(url, body, cascade)
1179
1179
  logger.info(f"Deleted collection {ext_ref_guid} with cascade {cascade}")
1180
1180
 
1181
1181
  @dynamic_catch
1182
- def delete_external_reference(self, ext_ref_guid: str, body: dict | DeleteRequestBody = None,
1182
+ def delete_external_reference(self, ext_ref_guid: str, body: dict | DeleteElementRequestBody = None,
1183
1183
  cascade: bool = False) -> None:
1184
1184
  """Delete an external reference..
1185
1185
 
@@ -1191,7 +1191,7 @@ class ExternalReferences(Client2):
1191
1191
  cascade: bool, optional, defaults to True
1192
1192
  If true, a cascade delete is performed.
1193
1193
 
1194
- body: dict DeleteRequestBody, optional, default = None
1194
+ body: dict DeleteElementRequestBody, optional, default = None
1195
1195
  A dict representing the details of the relationship.
1196
1196
 
1197
1197
  Returns
@@ -1211,7 +1211,7 @@ class ExternalReferences(Client2):
1211
1211
  _____
1212
1212
  JSON Structure looks like:
1213
1213
  {
1214
- "class" : "DeleteRequestBody",
1214
+ "class" : "DeleteElementRequestBody",
1215
1215
  "externalSourceGUID": "add guid here",
1216
1216
  "externalSourceName": "add qualified name here",
1217
1217
  "effectiveTime" : "{{$isoTimestamp}}",
@@ -2351,22 +2351,13 @@ class FeedbackManager(Client2):
2351
2351
  ## get_elements_by_tag implementation
2352
2352
  #
2353
2353
 
2354
- async def _async_get_elements_by_tag(
2355
- self,
2356
- tag_guid: str,
2357
- body: dict = {},
2358
- start_from: int = 0,
2359
- page_size: int = max_paging_size,
2360
- view_service_url_marker: str = None,
2361
- access_service_url_marker: str = None,
2362
- detailed_response: bool = False,
2363
- ) -> dict | str:
2354
+ async def _async_get_search_keyword_by_guid(self, keyword_guid: str, output_format, report_spec=None) -> dict | str:
2364
2355
  """
2365
2356
  Return the list of unique identifiers for elements that are linked to a specific tag either directly, or via one of its schema elements.
2366
2357
 
2367
2358
  Parameters
2368
2359
  ----------
2369
- tag_guid
2360
+ keyword_guid
2370
2361
  - unique identifier of tag.
2371
2362
  server_name
2372
2363
  - name of the server instances for this request
@@ -2393,28 +2384,23 @@ class FeedbackManager(Client2):
2393
2384
  There is a problem adding the element properties to the metadata repository or
2394
2385
  UserNotAuthorizedException
2395
2386
  the requesting user is not authorized to issue this request.
2387
+
2388
+ Args:
2389
+ output_format ():
2390
+ report_spec ():
2396
2391
  """
2397
2392
 
2398
2393
  url = f"{self.command_root}feedback-manager/tags/update"
2399
2394
  response = await self._async_make_request("POST", url, body)
2400
2395
  return related_elements_response(response.json(), detailed_response)
2401
2396
 
2402
- def get_elements_by_tag(
2403
- self,
2404
- tag_guid: str,
2405
- body: dict = {},
2406
- start_from: int = 0,
2407
- page_size: int = max_paging_size,
2408
- view_service_url_marker: str = None,
2409
- access_service_url_marker: str = None,
2410
- detailed_response: bool = False,
2411
- ) -> dict | str:
2397
+ def get_search_keyword_by_guid(self, keyword_guid: str, output_format, report_spec=None) -> dict | str:
2412
2398
  """
2413
2399
  Return the list of unique identifiers for elements that are linked to a specific tag either directly, or via one of its schema elements.
2414
2400
 
2415
2401
  Parameters
2416
2402
  ----------
2417
- tag_guid
2403
+ keyword_guid
2418
2404
  - unique identifier of tag.
2419
2405
  server_name
2420
2406
  - name of the server instances for this request
@@ -2441,18 +2427,14 @@ class FeedbackManager(Client2):
2441
2427
  There is a problem adding the element properties to the metadata repository or
2442
2428
  UserNotAuthorizedException
2443
2429
  the requesting user is not authorized to issue this request.
2430
+
2431
+ Args:
2432
+ output_format ():
2433
+ report_spec ():
2444
2434
  """
2445
2435
  loop = asyncio.get_event_loop()
2446
2436
  response = loop.run_until_complete(
2447
- self._async_get_elements_by_tag(
2448
- tag_guid,
2449
- body,
2450
- start_from,
2451
- page_size,
2452
- view_service_url_marker,
2453
- access_service_url_marker,
2454
- detailed_response,
2455
- )
2437
+ self._async_get_search_keyword_by_guid(keyword_guid, JSON)
2456
2438
  )
2457
2439
  return response
2458
2440