sapiopycommons 2025.7.22a651__tar.gz → 2025.7.23a659__tar.gz

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.

Potentially problematic release.


This version of sapiopycommons might be problematic. Click here for more details.

Files changed (115) hide show
  1. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/PKG-INFO +1 -1
  2. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/pyproject.toml +1 -1
  3. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/protobuf_utils.py +12 -13
  4. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/test_client.py +20 -8
  5. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/tool_service_base.py +1 -1
  6. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/.gitignore +0 -0
  7. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/LICENSE +0 -0
  8. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/README.md +0 -0
  9. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/__init__.py +0 -0
  10. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/__init__.py +0 -0
  11. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/fielddefinitions/proto/fields_pb2.py +0 -0
  12. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/fielddefinitions/proto/fields_pb2.pyi +0 -0
  13. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/fielddefinitions/proto/fields_pb2_grpc.py +0 -0
  14. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2.py +0 -0
  15. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2.pyi +0 -0
  16. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2_grpc.py +0 -0
  17. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/proto/step_output_pb2.py +0 -0
  18. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/proto/step_output_pb2.pyi +0 -0
  19. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/proto/step_output_pb2_grpc.py +0 -0
  20. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/proto/step_pb2.py +0 -0
  21. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/proto/step_pb2.pyi +0 -0
  22. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/proto/step_pb2_grpc.py +0 -0
  23. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/script/proto/script_pb2.py +0 -0
  24. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/script/proto/script_pb2.pyi +0 -0
  25. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/script/proto/script_pb2_grpc.py +0 -0
  26. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/tool/proto/entry_pb2.py +0 -0
  27. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/tool/proto/entry_pb2.pyi +0 -0
  28. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/tool/proto/entry_pb2_grpc.py +0 -0
  29. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/tool/proto/tool_pb2.py +0 -0
  30. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/tool/proto/tool_pb2.pyi +0 -0
  31. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/plan/tool/proto/tool_pb2_grpc.py +0 -0
  32. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2.py +0 -0
  33. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2.pyi +0 -0
  34. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2_grpc.py +0 -0
  35. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/callbacks/__init__.py +0 -0
  36. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/callbacks/callback_util.py +0 -0
  37. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/callbacks/field_builder.py +0 -0
  38. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/chem/IndigoMolecules.py +0 -0
  39. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/chem/Molecules.py +0 -0
  40. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/chem/__init__.py +0 -0
  41. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/customreport/__init__.py +0 -0
  42. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/customreport/auto_pagers.py +0 -0
  43. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/customreport/column_builder.py +0 -0
  44. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/customreport/custom_report_builder.py +0 -0
  45. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/customreport/term_builder.py +0 -0
  46. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/datatype/__init__.py +0 -0
  47. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/datatype/attachment_util.py +0 -0
  48. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/datatype/data_fields.py +0 -0
  49. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/datatype/pseudo_data_types.py +0 -0
  50. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/eln/__init__.py +0 -0
  51. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/eln/experiment_cache.py +0 -0
  52. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/eln/experiment_handler.py +0 -0
  53. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/eln/experiment_report_util.py +0 -0
  54. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/eln/experiment_step_factory.py +0 -0
  55. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/eln/experiment_tags.py +0 -0
  56. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/eln/plate_designer.py +0 -0
  57. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/eln/step_creation.py +0 -0
  58. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/files/__init__.py +0 -0
  59. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/files/complex_data_loader.py +0 -0
  60. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/files/file_bridge.py +0 -0
  61. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/files/file_bridge_handler.py +0 -0
  62. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/files/file_data_handler.py +0 -0
  63. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/files/file_util.py +0 -0
  64. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/files/file_validator.py +0 -0
  65. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/files/file_writer.py +0 -0
  66. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/flowcyto/flow_cyto.py +0 -0
  67. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/flowcyto/flowcyto_data.py +0 -0
  68. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/__init__.py +0 -0
  69. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/accession_service.py +0 -0
  70. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/aliases.py +0 -0
  71. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/audit_log.py +0 -0
  72. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/custom_report_util.py +0 -0
  73. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/data_structure_util.py +0 -0
  74. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/directive_util.py +0 -0
  75. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/exceptions.py +0 -0
  76. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/html_formatter.py +0 -0
  77. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/popup_util.py +0 -0
  78. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/sapio_links.py +0 -0
  79. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/storage_util.py +0 -0
  80. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/general/time_util.py +0 -0
  81. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/multimodal/multimodal.py +0 -0
  82. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/multimodal/multimodal_data.py +0 -0
  83. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/processtracking/__init__.py +0 -0
  84. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/processtracking/custom_workflow_handler.py +0 -0
  85. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/processtracking/endpoints.py +0 -0
  86. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/recordmodel/__init__.py +0 -0
  87. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/recordmodel/record_handler.py +0 -0
  88. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/rules/__init__.py +0 -0
  89. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/rules/eln_rule_handler.py +0 -0
  90. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/rules/on_save_rule_handler.py +0 -0
  91. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/samples/aliquot.py +0 -0
  92. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/sftpconnect/__init__.py +0 -0
  93. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/sftpconnect/sftp_builder.py +0 -0
  94. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/webhook/__init__.py +0 -0
  95. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/webhook/webhook_context.py +0 -0
  96. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/webhook/webhook_handlers.py +0 -0
  97. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/src/sapiopycommons/webhook/webservice_handlers.py +0 -0
  98. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/AF-A0A009IHW8-F1-model_v4.cif +0 -0
  99. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/_do_not_add_init_py_here +0 -0
  100. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/accession_test.py +0 -0
  101. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/aliquot_test.py +0 -0
  102. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/bio_reg_test.py +0 -0
  103. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/chem_test.py +0 -0
  104. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/chem_test_curation_queue.py +0 -0
  105. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/curation_queue_test.sdf +0 -0
  106. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/data_type_models.py +0 -0
  107. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/flowcyto/101_DEN084Y5_15_E01_008_clean.fcs +0 -0
  108. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/flowcyto/101_DEN084Y5_15_E03_009_clean.fcs +0 -0
  109. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/flowcyto/101_DEN084Y5_15_E05_010_clean.fcs +0 -0
  110. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/flowcyto/8_color_ICS.wsp +0 -0
  111. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/flowcyto/COVID19_W_001_O.fcs +0 -0
  112. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/flowcyto_test.py +0 -0
  113. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/kappa.chains.fasta +0 -0
  114. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/mafft_test.py +0 -0
  115. {sapiopycommons-2025.7.22a651 → sapiopycommons-2025.7.23a659}/tests/test.gb +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sapiopycommons
3
- Version: 2025.7.22a651
3
+ Version: 2025.7.23a659
4
4
  Summary: Official Sapio Python API Utilities Package
5
5
  Project-URL: Homepage, https://github.com/sapiosciences
6
6
  Author-email: Jonathan Steck <jsteck@sapiosciences.com>, Yechen Qiao <yqiao@sapiosciences.com>
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sapiopycommons"
7
- version='2025.07.22a651'
7
+ version='2025.07.23a659'
8
8
  authors = [
9
9
  { name="Jonathan Steck", email="jsteck@sapiosciences.com" },
10
10
  { name="Yechen Qiao", email="yqiao@sapiosciences.com" },
@@ -435,24 +435,23 @@ class ProtobufUtils:
435
435
  )
436
436
 
437
437
  @staticmethod
438
- def field_pbo_to_value(field: Any, value: FieldValuePbo) -> FieldValue:
438
+ def field_pbo_to_value(value: FieldValuePbo) -> FieldValue:
439
439
  """
440
- Convert a StepRecordFieldValue to its corresponding Python value based on the field type.
440
+ Convert a StepRecordFieldValue to its corresponding Python value.
441
441
 
442
- :param field: The VeloxFieldDefPbo or FieldTypePbo object for the given value.
443
442
  :param value: The StepRecordFieldValue object.
444
443
  :return: The corresponding Python value.
445
444
  """
446
- field_type = field.data_field_type if hasattr(field, "data_field_type") else field
447
- match field_type:
448
- case FieldTypePbo.BOOLEAN:
449
- return value.bool_value
450
- case FieldTypePbo.DOUBLE:
451
- return value.double_value
452
- case FieldTypePbo.ENUM | FieldTypePbo.INTEGER | FieldTypePbo.LONG | FieldTypePbo.SHORT:
453
- return value.int_value
454
- case _:
455
- return value.string_value
445
+ if value.HasField("string_value"):
446
+ return value.string_value
447
+ elif value.HasField("int_value"):
448
+ return value.int_value
449
+ elif value.HasField("double_value"):
450
+ return value.double_value
451
+ elif value.HasField("bool_value"):
452
+ return value.bool_value
453
+ else:
454
+ return None
456
455
 
457
456
  @staticmethod
458
457
  def field_def_pbo_to_default_value(field_def: VeloxFieldDefPbo) -> FieldValue:
@@ -13,6 +13,8 @@ from sapiopycommons.ai.api.plan.tool.proto.tool_pb2 import ProcessStepResponsePb
13
13
  ToolDetailsRequestPbo, ToolDetailsResponsePbo, ProcessStepResponseStatusPbo
14
14
  from sapiopycommons.ai.api.plan.tool.proto.tool_pb2_grpc import ToolServiceStub
15
15
  from sapiopycommons.ai.api.session.proto.sapio_conn_info_pb2 import SapioConnectionInfoPbo, SapioUserSecretTypePbo
16
+ from sapiopycommons.ai.protobuf_utils import ProtobufUtils
17
+ from sapiopycommons.general.aliases import FieldValue
16
18
 
17
19
 
18
20
  # FR-47422: Created class.
@@ -32,7 +34,7 @@ class ToolOutput:
32
34
  image_output: list[bytes]
33
35
  text_output: list[str]
34
36
 
35
- new_records: list[Mapping[str, FieldValuePbo]]
37
+ new_records: list[dict[str, FieldValue]]
36
38
 
37
39
  logs: list[str]
38
40
 
@@ -51,28 +53,35 @@ class ToolOutput:
51
53
  ret_val += f"\tStatus: {self.status}\n"
52
54
  ret_val += f"\tMessage: {self.message}\n"
53
55
  ret_val += "-" * 25 + "\n"
56
+
54
57
  ret_val += f"Binary Output: {len(self.binary_output)} item(s)\n"
55
58
  for binary in self.binary_output:
56
59
  ret_val += f"\t{len(binary)} byte(s)\n"
57
60
  ret_val += f"\t{binary[:50]}...\n"
61
+
58
62
  ret_val += f"CSV Output: {len(self.csv_output)} item(s)\n"
59
63
  if self.csv_output:
60
64
  ret_val += f"\tHeaders: {', '.join(self.csv_output[0].keys())}\n"
61
65
  for i, csv_row in enumerate(self.csv_output):
62
66
  ret_val += f"\t{i}: {', '.join(f'{v}' for k, v in csv_row.items())}\n"
67
+
63
68
  ret_val += f"JSON Output: {len(self.json_output)} item(s)\n"
64
69
  if self.json_output:
65
- ret_val += f"\t{json.dumps(self.json_output, indent=2)}\n"
70
+ ret_val += f"{json.dumps(self.json_output, indent=2)}\n"
71
+
66
72
  ret_val += f"Image Output: {len(self.image_output)} item(s)\n"
67
73
  for image in self.image_output:
68
74
  ret_val += f"\t{len(image)} bytes\n"
69
75
  ret_val += f"\t{image[:50]}...\n"
76
+
70
77
  ret_val += f"Text Output: {len(self.text_output)} item(s)\n"
71
78
  for text in self.text_output:
72
- ret_val += f"\t{text}...\n"
79
+ ret_val += f"\t{text}\n"
80
+
73
81
  ret_val += f"New Records: {len(self.new_records)} item(s)\n"
74
82
  for record in self.new_records:
75
- ret_val += f"\t{json.dumps(record, indent=2)}\n"
83
+ ret_val += f"{json.dumps(record, indent=2)}\n"
84
+
76
85
  ret_val += f"Logs: {len(self.logs)} item(s)\n"
77
86
  for log in self.logs:
78
87
  ret_val += f"\t{log}\n"
@@ -237,16 +246,17 @@ class TestClient:
237
246
  sapio_user=self.connection,
238
247
  tool_name=tool_name,
239
248
  config_field_values=self._config_fields,
249
+ dry_run=is_dry_run,
250
+ verbose_logging=True,
240
251
  input=[
241
252
  StepInputBatchPbo(is_partial=False, item_container=item)
242
253
  for item in self._request_inputs
243
- ],
244
- dry_run=is_dry_run,
245
- verbose_logging=True
254
+ ]
246
255
  )
247
256
  )
248
257
 
249
258
  results = ToolOutput(tool_name)
259
+
250
260
  match response.status:
251
261
  case ProcessStepResponseStatusPbo.SUCCESS:
252
262
  results.status = "Success"
@@ -255,6 +265,7 @@ class TestClient:
255
265
  case _:
256
266
  results.status = "Unknown"
257
267
  results.message = response.status_message
268
+
258
269
  for item in response.output:
259
270
  container = item.item_container
260
271
 
@@ -269,7 +280,8 @@ class TestClient:
269
280
  results.text_output.extend(container.text_container.items)
270
281
 
271
282
  for record in response.new_records:
272
- results.new_records.append(record.fields)
283
+ field_map: dict[str, Any] = {x: ProtobufUtils.field_pbo_to_value(y) for x, y in record.fields.items()}
284
+ results.new_records.append(field_map)
273
285
 
274
286
  results.logs.extend(response.log)
275
287
 
@@ -893,7 +893,7 @@ class ToolBase(ABC):
893
893
  if field_name not in raw_configs:
894
894
  config_fields[field_name] = ProtobufUtils.field_def_pbo_to_default_value(field_def)
895
895
  else:
896
- config_fields[field_name] = ProtobufUtils.field_pbo_to_value(field_def, raw_configs[field_name])
896
+ config_fields[field_name] = ProtobufUtils.field_pbo_to_value(raw_configs[field_name])
897
897
  return config_fields
898
898
 
899
899
  @staticmethod