pyegeria 5.4.3.1__py3-none-any.whl → 5.4.3.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. commands/cat/debug_log.2025-09-01_07-02-58_818650.log.zip +0 -0
  2. commands/cat/debug_log.log +4242 -8144
  3. md_processing/data/commands.json +1255 -612
  4. md_processing/dr_egeria_inbox/data_spec_test.md +38 -86
  5. md_processing/dr_egeria_inbox/gov_def.md +239 -3
  6. md_processing/dr_egeria_inbox/product.md +6 -6
  7. md_processing/dr_egeria_outbox/monday/processed-2025-09-01 14:03-product.md +209 -0
  8. md_processing/dr_egeria_outbox/monday/processed-2025-09-01 14:24-product.md +263 -0
  9. md_processing/dr_egeria_outbox/monday/processed-2025-09-01 16:03-data_spec_test.md +2374 -0
  10. md_processing/dr_egeria_outbox/monday/processed-2025-09-01 16:05-data_spec_test.md +2374 -0
  11. md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:28-data_spec_test.md +2321 -0
  12. md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:37-data_spec_test.md +2304 -0
  13. md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:56-data_spec_test.md +2324 -0
  14. md_processing/dr_egeria_outbox/monday/processed-2025-09-02 09:00-data_spec_test.md +2324 -0
  15. md_processing/dr_egeria_outbox/tuesday/processed-2025-09-02 13:07-gov_def.md +492 -0
  16. md_processing/dr_egeria_outbox/tuesday/processed-2025-09-02 13:25-gov_def.md +520 -0
  17. md_processing/dr_egeria_outbox/tuesday/processed-2025-09-02 16:43-gov_def.md +636 -0
  18. md_processing/dr_egeria_outbox/tuesday/processed-2025-09-02 16:46-gov_def.md +636 -0
  19. md_processing/md_commands/data_designer_commands.py +88 -153
  20. md_processing/md_commands/product_manager_commands.py +1 -1
  21. md_processing/md_processing_utils/common_md_utils.py +5 -12
  22. pyegeria/___external_references.py +3267 -0
  23. pyegeria/data_designer.py +6 -7
  24. pyegeria/project_manager.py +1 -1
  25. {pyegeria-5.4.3.1.dist-info → pyegeria-5.4.3.3.dist-info}/METADATA +1 -1
  26. {pyegeria-5.4.3.1.dist-info → pyegeria-5.4.3.3.dist-info}/RECORD +29 -21
  27. md_processing/dr_egeria_outbox/friday/processed-2025-08-29 16:30-output_tests.md +0 -103
  28. md_processing/dr_egeria_outbox/friday/processed-2025-08-29 16:40-output_tests.md +0 -115
  29. md_processing/dr_egeria_outbox/friday/processed-2025-08-30 21:15-glossary_test1.md +0 -326
  30. md_processing/dr_egeria_outbox/friday/processed-2025-08-31 13:27-glossary_test1.md +0 -369
  31. md_processing/dr_egeria_outbox/friday/processed-2025-08-31 13:33-glossary_test1.md +0 -392
  32. md_processing/dr_egeria_outbox/friday/processed-2025-08-31 20:57-glossary_test1.md +0 -400
  33. {pyegeria-5.4.3.1.dist-info → pyegeria-5.4.3.3.dist-info}/LICENSE +0 -0
  34. {pyegeria-5.4.3.1.dist-info → pyegeria-5.4.3.3.dist-info}/WHEEL +0 -0
  35. {pyegeria-5.4.3.1.dist-info → pyegeria-5.4.3.3.dist-info}/entry_points.txt +0 -0
@@ -11,8 +11,10 @@ from rich import print
11
11
  from rich.console import Console
12
12
  from rich.markdown import Markdown
13
13
 
14
- from md_processing.md_processing_utils.common_md_proc_utils import (parse_upsert_command, parse_view_command)
15
- from md_processing.md_processing_utils.common_md_utils import update_element_dictionary
14
+ from md_processing.md_processing_utils.common_md_proc_utils import (parse_upsert_command, parse_view_command )
15
+ from md_processing.md_processing_utils.common_md_utils import (update_element_dictionary, set_find_body, set_create_body,
16
+ set_element_prop_body, set_update_body, set_create_body, set_find_body, set_rel_request_body, set_update_status_body,
17
+ set_rel_prop_body)
16
18
  from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, update_a_command)
17
19
  from md_processing.md_processing_utils.md_processing_constants import (load_commands, ERROR)
18
20
  from pyegeria import DEBUG_LEVEL, body_slimmer
@@ -53,7 +55,7 @@ def add_member_to_data_collections(egeria_client: EgeriaTech, collection_list: l
53
55
  Add member to data dictionaries and data specifications.
54
56
  """
55
57
  body = {
56
- "class": "RelationshipRequestBody", "properties": {
58
+ "class": "NewRelationshipRequestBody", "properties": {
57
59
  "class": "CollectionMembershipProperties", "membershipRationale": "User Specified",
58
60
  "notes": "Added by Dr.Egeria"
59
61
  }
@@ -431,29 +433,9 @@ def process_data_spec_upsert_command(egeria_client: EgeriaTech, txt: str, direct
431
433
  logger.debug(json.dumps(parsed_output, indent=4))
432
434
 
433
435
  attributes = parsed_output['attributes']
434
- description = attributes['Description'].get('value', None)
435
- display_name = attributes['Display Name'].get('value', None)
436
- anchor_guid = attributes.get('Anchor ID', {}).get('guid', None)
437
- parent_guid = attributes.get('Parent ID', {}).get('guid', None)
438
- parent_relationship_type_name = attributes.get('Parent Relationship Type Name', {}).get('value',
439
- "CollectionMembership")
440
- parent_at_end1 = attributes.get('Parent at End1', {}).get('value', True)
441
-
442
- anchor_scope_guid = attributes.get('Anchor Scope GUID', {}).get('value', None)
443
- is_own_anchor = attributes.get('Is Own Anchor', {}).get('value', True)
444
- if parent_guid is None:
445
- is_own_anchor = True
446
-
447
- collection_type = attributes.get('Collection Type', {}).get('value', None)
448
-
449
- replace_all_props = not attributes.get('Merge Update', {}).get('value', True)
450
-
451
- additional_prop = attributes.get('Additional Properties', {}).get('value', None)
452
- additional_properties = json.loads(additional_prop) if additional_prop is not None else None
453
- extended_prop = attributes.get('Extended Properties', {}).get('value', None)
454
- extended_properties = json.loads(extended_prop) if extended_prop is not None else None
436
+ display_name = attributes.get('Display Name', {}).get('value', "None Found")
437
+ status = attributes.get('Status', {}).get('value', None)
455
438
 
456
- replace_all_props = not attributes.get('Merge Update', {}).get('value', True)
457
439
  in_data_spec_list = attributes.get('In Data Specification', {}).get('value', None)
458
440
  in_data_spec_valid = attributes.get('In Data Specification', {}).get('valid', None)
459
441
  in_data_spec_exists = attributes.get('In Data Specification', {}).get('exists', None)
@@ -469,6 +451,7 @@ def process_data_spec_upsert_command(egeria_client: EgeriaTech, txt: str, direct
469
451
  return valid
470
452
 
471
453
  elif directive == "process":
454
+
472
455
  try:
473
456
  if object_action == "Update":
474
457
  if not exists:
@@ -482,17 +465,20 @@ def process_data_spec_upsert_command(egeria_client: EgeriaTech, txt: str, direct
482
465
  print(Markdown(
483
466
  f"==> Validation of {command} completed successfully! Proceeding to apply the changes.\n"))
484
467
 
485
- egeria_client.update_collection(guid, qualified_name, display_name, description, collection_type,
486
- additional_properties,
487
- extended_properties, replace_all_props)
468
+ body = set_update_body(object_type, attributes)
469
+ body['properties'] = set_element_prop_body("Data Spec", qualified_name, attributes)
470
+
471
+ egeria_client.update_collection(guid, body)
472
+ if status:
473
+ egeria_client.update_collection_status(guid, status)
474
+
488
475
  logger.success(f"Updated {object_type} `{display_name}` with GUID {guid}\n\n___")
489
476
  update_element_dictionary(qualified_name, {
490
477
  'guid': guid, 'display_name': display_name
491
- })
492
- return egeria_client.get_collection_by_guid(guid, collection_type='Data Specification',
478
+ })
479
+ return egeria_client.get_collection_by_guid(guid, element_type='Data Specification',
493
480
  output_format='MD')
494
481
 
495
-
496
482
  elif object_action == "Create":
497
483
  if valid is False and exists:
498
484
  msg = (f" Data Specification `{display_name}` already exists and result document updated changing "
@@ -505,24 +491,27 @@ def process_data_spec_upsert_command(egeria_client: EgeriaTech, txt: str, direct
505
491
  logger.error(msg)
506
492
  return None
507
493
  else:
508
- guid = egeria_client.create_data_spec_collection(display_name, description, qualified_name,
509
- is_own_anchor, anchor_guid, parent_guid,
510
- parent_relationship_type_name, parent_at_end1,
511
- collection_type, anchor_scope_guid,
512
- additional_properties, extended_properties)
494
+ body = set_create_body(object_type, attributes)
495
+ body["properties"] = set_element_prop_body(object_type, qualified_name, attributes)
496
+ parent_guid = body.get('parentGuid', None)
497
+ if parent_guid:
498
+ body['parentRelationshipTypeName'] = "CollectionMembership"
499
+ body['parentAtEnd1'] = True
500
+
501
+ guid = egeria_client.create_collection(body=body)
513
502
  if guid:
514
503
  update_element_dictionary(qualified_name, {
515
504
  'guid': guid, 'display_name': display_name
516
- })
505
+ })
517
506
  msg = f"Created Element `{display_name}` with GUID {guid}\n\n___"
518
507
  logger.success(msg)
519
- return egeria_client.get_collection_by_guid(guid, collection_type='Data Specification',
520
- output_format='MD')
508
+ return egeria_client.get_collection_by_guid(guid, object_type, output_format='MD')
521
509
  else:
522
510
  msg = f"Failed to create element `{display_name}` with GUID {guid}\n\n___"
523
511
  logger.error(msg)
524
512
  return None
525
513
 
514
+
526
515
  except Exception as e:
527
516
  logger.error(f"Error performing {command}: {e}")
528
517
  return None
@@ -644,8 +633,8 @@ def process_data_dict_upsert_command(egeria_client: EgeriaTech, txt: str, direct
644
633
 
645
634
 
646
635
  @logger.catch
647
- def process_data_structure_upsert_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[
648
- str]:
636
+ def process_data_structure_upsert_command(egeria_client: EgeriaTech, txt: str,
637
+ directive: str = "display") -> Optional[str]:
649
638
  """
650
639
  Processes a data structure create or update object_action by extracting key attributes such as
651
640
  spec name, parent_guid, parent_relationship_type, parent_at_end_1, category
@@ -655,9 +644,7 @@ def process_data_structure_upsert_command(egeria_client: EgeriaTech, txt: str, d
655
644
  :param directive: an optional string indicating the directive to be used - display, validate or execute
656
645
  :return: A string summarizing the outcome of the processing.
657
646
  """
658
- from md_processing.md_processing_utils.common_md_utils import set_debug_level
659
647
 
660
- set_debug_level(directive)
661
648
 
662
649
  command, object_type, object_action = extract_command_plus(txt)
663
650
  print(Markdown(f"# {command}\n"))
@@ -685,48 +672,16 @@ def process_data_structure_upsert_command(egeria_client: EgeriaTech, txt: str, d
685
672
  elif directive == "process":
686
673
  logger.debug(json.dumps(parsed_output, indent=4))
687
674
  attributes = parsed_output['attributes']
688
-
689
- external_source_guid = attributes.get('External Source Name', {}).get('guid', None)
690
- external_source_name = attributes.get('External Source Name', {}).get('value', None)
691
- effective_time = attributes.get('Effective Time', {}).get('value', None)
692
- for_lineage = attributes.get('For Lineage', {}).get('value', None)
693
- for_duplicate_processing = attributes.get('For Duplicate Processing', {}).get('value', None)
694
- anchor_guid = attributes.get('Anchor ID', {}).get('guid', None)
695
- is_own_anchor = attributes.get('Is Own Anchor', {}).get('value', None)
696
- parent_id = attributes.get('Parent ID', {}).get('value', None)
697
- parent_guid = attributes.get('Parent ID', {}).get('guid', None)
698
- parent_relationship_type_name = attributes.get('Parent Relationship Type Name', {}).get('value', None)
699
- parent_relationship_properties = attributes.get('Parent Relationship Properties', {}).get('value', None)
700
- parent_at_end1 = attributes.get('Parent at End1', {}).get('value', None)
701
-
702
- display_name = attributes['Display Name'].get('value', None)
703
-
704
- namespace = attributes.get('Namespace', {}).get('value', None)
705
- description = attributes.get('Description', {}).get('value', None)
706
- version_id = attributes.get('Version Identifier', {}).get('value', None)
707
- aliases = attributes.get('Aliases', {}).get('value', None)
708
- name_patterns = attributes.get('Name Patterns', {}).get('value', None)
709
- is_nullable = attributes.get('Is Nullable', {}).get('value', None)
710
- default_value = attributes.get('Default Value', {}).get('value', None)
711
- data_type = attributes.get('Data Type', {}).get('value', None)
712
- min_length = attributes.get('Minimum Length', {}).get('value', None)
713
- length = attributes.get('Length', {}).get('value', None)
714
- precision = attributes.get('Precision', {}).get('value', None)
715
- ordered_values = attributes.get('Ordered Values', {}).get('value', None)
716
- sort_order = attributes.get('Sort Order', {}).get('value', None)
717
- additional_properties = attributes.get('Additional Properties', {}).get('value', None)
718
- effective_from = attributes.get('Effective From', {}).get('value', None)
719
- effective_to = attributes.get('Effective To', {}).get('value', None)
720
-
721
- position = attributes.get('Position', {}).get('value', None)
722
- min_cardinality = attributes.get('Minimum Cardinality', {}).get('value', None)
723
- max_cardinality = attributes.get('Maximum Cardinality', {}).get('value', None)
724
- in_data_structure = attributes.get('In Data Structure', {}).get('value', None)
725
- data_class = attributes.get('Data Class', {}).get('value', None)
726
- glossary_term = attributes.get('Glossary Term', {}).get('value', None)
727
- glossary_term_guid = attributes.get('Glossary Term', {}).get('guid', None)
728
-
729
- # name_details_list = attributes.get("dict_list", None)
675
+ display_name = attributes.get('Display Name', {}).get('value', None)
676
+ qualified_name = attributes.get('Qualified Name',{}).get('value', None)
677
+ if qualified_name is None:
678
+ qualified_name = attributes.get('Display Name',{}).get('qualified_name', None)
679
+ if qualified_name is None:
680
+ logger.error(f"Element `{display_name}` does not have a valid specification? No qualified name..Review..\n\n___ ")
681
+ return None
682
+ prop_body = set_element_prop_body(object_type, qualified_name, attributes)
683
+ prop_body['namespace'] = attributes.get('Namespace', {}).get('value', None)
684
+ display_name = attributes.get('Display Name',{}).get('value', None)
730
685
 
731
686
  data_spec_name_list = attributes.get("In Data Specification", {}).get("name_list", "")
732
687
  data_spec_value = attributes.get("In Data Specification", {}).get("value", None)
@@ -736,79 +691,58 @@ def process_data_structure_upsert_command(egeria_client: EgeriaTech, txt: str, d
736
691
  data_dict_name_list = attributes.get('In Data Dictionary', {}).get('name_list', "")
737
692
  data_dict_value_list = attributes.get('In Data Dictionary', {}).get('value', None)
738
693
  data_dict_guid_list = attributes.get("In Data Dictionary", {}).get("guid_list", None)
739
-
740
- parent_data_field = attributes.get('Parent Data Field', {}).get('value', None)
741
- parent_data_field_guid = attributes.get('Parent Data Field', {}).get('guid', None)
742
-
743
- anchor_scope_guid = attributes.get('Anchor Scope GUID', {}).get('value', None)
744
-
745
- collection_type = object_type
746
- replace_all_props = True
747
- if not valid:
748
- if exists and object_action == "Create":
749
- msg = (f"Create failed because Element `{display_name}` exists - changing `Create` to `Update` in "
750
- f"processed output \n\n___")
751
- logger.error(msg)
752
- return update_a_command(txt, object_action, object_type, qualified_name, guid)
753
- else:
754
- return None
755
- elif object_action == "Update" and not exists:
756
- logger.error(f"Element `{display_name}` does not exist! Updating result document with Create "
757
- f"object_action\n\n___")
758
- return update_a_command(txt, object_action, object_type, qualified_name, guid)
759
-
760
- else:
761
- print(Markdown(f"==> Validation of {command} completed successfully! Proceeding to apply the changes.\n"))
694
+ merge_update = attributes.get('Merge Update', {}).get('value', True)
762
695
 
763
696
  try:
764
697
  if object_action == "Update":
765
- body = {
766
- "class": "UpdateElementRequestBody", "externalSourceGUID": external_source_guid,
767
- "externalSourceName": external_source_name, "effectiveTime": effective_time,
768
- "forLineage": for_lineage, "forDuplicateProcessing": for_duplicate_processing, "properties": {
769
- "class": "DataStructureProperties", "qualifiedName": qualified_name,
770
- "displayName": display_name, "description": description, "namespace": namespace,
771
- "versionIdentifier": version_id, "additionalProperties": additional_properties,
772
- "effectiveFrom": effective_from, "effectiveTo": effective_to
773
- }
774
- }
775
- egeria_client.update_data_structure_w_body(guid, body, replace_all_props)
776
- logger.info(f"Updated element `{display_name}` with GUID {guid}")
777
- core_props = egeria_client.get_data_structure_by_guid(guid, output_format='MD')
778
-
779
- update_element_dictionary(qualified_name, {
780
- 'guid': guid, 'display_name': display_name
698
+ if not exists:
699
+ logger.error(f"Element `{qualified_name}` does not exist! Updating result document with Create "
700
+ f"object_action\n\n___")
701
+ return update_a_command(txt, object_action, object_type, qualified_name, guid)
702
+ elif not valid:
703
+ logger.error(f"Element `{qualified_name}` does not have a valid specification? Review..\n\n___ ")
704
+ return None
705
+ else:
706
+ update_body = set_update_body(object_type,attributes)
707
+ update_body['properties'] = prop_body
708
+ egeria_client.update_data_structure(guid, update_body)
709
+ update_element_dictionary(qualified_name, {
710
+ 'guid': guid, 'display_name': display_name
711
+ })
712
+ logger.success(f"Updated {object_type} `{display_name}` with GUID {guid}\n\n___")
713
+
714
+ core_props = egeria_client.get_data_structure_by_guid(guid, output_format='MD')
715
+
716
+ update_element_dictionary(qualified_name, {
717
+ 'guid': guid, 'display_name': display_name
781
718
  })
782
719
 
783
- update_data_collection_memberships(egeria_client, object_type, data_spec_guid_list, "DataSpec", guid,
784
- display_name, replace_all_props)
785
- core_props += f"## In Data Dictionary\n\n{data_dict_name_list}\n\n"
786
- core_props += f"## In Data Specification\n\n{data_spec_name_list}\n\n"
787
- logger.success(f"Updated {object_type} `{display_name}` with GUID {guid}\n\n___")
788
- return core_props
720
+ update_data_collection_memberships(egeria_client, object_type, data_spec_guid_list, "DataSpec", guid,
721
+ display_name, merge_update)
722
+ core_props += f"## In Data Dictionary\n\n{data_dict_name_list}\n\n"
723
+ core_props += f"## In Data Specification\n\n{data_spec_name_list}\n\n"
724
+ logger.success(f"Updated {object_type} `{display_name}` with GUID {guid}\n\n___")
725
+ return core_props
726
+
727
+
728
+ if not valid:
729
+ if exists and object_action == "Create":
730
+ msg = (f"Create failed because Element `{display_name}` exists - changing `Create` to `Update` in "
731
+ f"processed output \n\n___")
732
+ logger.error(msg)
733
+ return update_a_command(txt, object_action, object_type, qualified_name, guid)
734
+ else:
735
+ return None
736
+
789
737
 
790
738
  elif object_action == "Create":
791
739
  if exists:
792
740
  logger.warning(f"\nTerm `{display_name}` already exists and result document updated\n\n___")
793
741
  return update_a_command(txt, object_action, object_type, qualified_name, guid)
794
742
  else:
795
-
796
- body = {
797
- "class": "NewElementRequestBody", "externalSourceGUID": external_source_guid,
798
- "externalSourceName": external_source_name, "effectiveTime": effective_time,
799
- "forLineage": False, "forDuplicateProcessing": False, "anchorGUID": anchor_guid,
800
- "isOwnAnchor": is_own_anchor, "parentGUID": parent_guid,
801
- "parentRelationshipTypeName": parent_relationship_type_name,
802
- "parentRelationshipProperties": parent_relationship_properties, "parentAtEnd1": parent_at_end1,
803
- "properties": {
804
- "class": "DataStructureProperties", "qualifiedName": qualified_name,
805
- "displayName": display_name, "description": description, "namespace": namespace,
806
- "versionIdentifier": version_id, "additionalProperties": additional_properties,
807
- "effectiveFrom": effective_from, "effectiveTo": effective_to
808
- }
809
- }
810
-
811
- guid = egeria_client.create_data_structure_w_body(body_slimmer(body))
743
+ body = set_create_body(object_type, attributes)
744
+ body['properties'] = prop_body
745
+ guid = egeria_client.create_data_structure(body_slimmer(body))
812
746
  if guid:
813
747
  update_element_dictionary(qualified_name, {
814
748
  'guid': guid, 'display_name': display_name
@@ -834,12 +768,11 @@ def process_data_structure_upsert_command(egeria_client: EgeriaTech, txt: str, d
834
768
  logger.error(f"Failed to create Data Structure `{display_name}`\n\n___")
835
769
  return None
836
770
 
837
-
838
771
  except Exception as e:
839
772
  logger.error(f"Error performing {object_action}: {e}\n\n___")
840
773
  return None
841
- else:
842
- return None
774
+ else:
775
+ return None
843
776
 
844
777
 
845
778
  @logger.catch
@@ -1461,7 +1394,8 @@ def process_data_collection_list_command(egeria_client: EgeriaTech, txt: str, di
1461
1394
  return None
1462
1395
 
1463
1396
 
1464
- def process_data_structure_list_command(egeria_client: EgeriaTech, txt: str, directive: str = "display") -> Optional[
1397
+ def process_data_structure_list_command(egeria_client: EgeriaTech, txt: str,
1398
+ directive: str = "display") -> Optional[
1465
1399
  str]:
1466
1400
  """
1467
1401
  Processes a Data Dictionary list object_action by extracting key attributes such as
@@ -1495,9 +1429,10 @@ def process_data_structure_list_command(egeria_client: EgeriaTech, txt: str, dir
1495
1429
 
1496
1430
  elif directive == "process":
1497
1431
  attributes = parsed_output['attributes']
1432
+ body = set_find_body(object_type, attributes)
1498
1433
  search_string = attributes.get('Search String', {}).get('value', '*')
1434
+ output_format_set = attributes.get('Output Format Set', {}).get('value', 'Data Structure')
1499
1435
  output_format = attributes.get('Output Format', {}).get('value', 'LIST')
1500
- detailed = attributes.get('Detailed', {}).get('value', False)
1501
1436
 
1502
1437
  try:
1503
1438
  if not valid: # First validate the command before we process it
@@ -1506,7 +1441,7 @@ def process_data_structure_list_command(egeria_client: EgeriaTech, txt: str, dir
1506
1441
  return None
1507
1442
 
1508
1443
  list_md = f"\n# `{object_type}` with filter: `{search_string}`\n\n"
1509
- struct = egeria_client.find_data_structures(search_string, output_format=output_format)
1444
+ struct = egeria_client.find_data_structures(search_string, body = body, output_format=output_format, output_format_set=output_format_set )
1510
1445
 
1511
1446
  if output_format == "DICT":
1512
1447
  list_md += f"```\n{json.dumps(struct, indent=4)}\n```\n"
@@ -953,7 +953,7 @@ def process_attach_subscriber_command(egeria_client: EgeriaTech, txt: str,
953
953
  logger.debug(json.dumps(parsed_output, indent=4))
954
954
 
955
955
  attributes = parsed_output['attributes']
956
- subscriber_guid = attributes.get('Subscriber', {}).get('guid', None)
956
+ subscriber_guid = attributes.get('Subscriber Id', {}).get('guid', None)
957
957
  subscription_guid = attributes.get('Subscription', {}).get('guid', None)
958
958
 
959
959
  valid = parsed_output['valid']
@@ -216,23 +216,17 @@ def find_key_with_value(value: str) -> str | None:
216
216
 
217
217
  def set_find_body(object_type: str, attributes: dict)->dict:
218
218
  prop_name = object_type.replace(" ", "")
219
-
220
- start = attributes.get('Start From', {}).get('value', 0)
221
- start_from = int(start) if start else 0
222
- page = attributes.get('Page Size', {}).get('value', 0)
223
- page_size = int(page) if page else 0
224
- depth = attributes.get('Graph Query Depth', {}).get('value', 0)
225
- depth = int(depth) if depth else 0
226
-
219
+ s = attributes.get('Search String', {}).get('value', None)
220
+ search_string = None if s =='*' else s
227
221
 
228
222
 
229
223
  body = {
230
224
  "class": "SearchStringRequestBody",
231
- "searchString": attributes.get('Search String', {}).get('value', None),
225
+ "searchString": search_string,
232
226
  "startsWith": attributes.get('Start With', {}).get('value', True),
233
227
  "endWith": attributes.get('End With', {}).get('value', False),
234
228
  "ignoreCase": attributes.get('Ignore Case', {}).get('value', False),
235
- "limitResultsByStatus": attributes.get('Limit Results By Status', {}).get('value', False),
229
+ "limitResultsByStatus": attributes.get('Limit Results By Status', {}).get('value', []),
236
230
  "startFrom": int(attributes.get('Start From', {}).get('value', 0)),
237
231
  "pageSize": int(attributes.get('Page Size', {}).get('value', 0)),
238
232
  # "metadataElementSubtypeNames": attributes.get('Metadata Element Subtype Name', {}).get('value', None),
@@ -240,8 +234,7 @@ def set_find_body(object_type: str, attributes: dict)->dict:
240
234
  "effectiveTime": attributes.get('Effective Time', {}).get('value', None),
241
235
  "governanceZoneFilter" : attributes.get('Governance Zone Filter', {}).get('value', None),
242
236
  "graphQueryDepth": int(attributes.get('Graph Query Depth', {}).get('value', 0)),
243
- "initialStatus": attributes.get('Status', {}).get('value', "ACTIVE"),
244
- "initialClassifications": {}}
237
+ }
245
238
 
246
239
  return body
247
240