sapiopycommons 2025.10.21a791__tar.gz → 2025.10.30a798__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 (130) hide show
  1. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/PKG-INFO +1 -1
  2. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/pyproject.toml +1 -1
  3. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/agent_service_base.py +7 -12
  4. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/test_client.py +20 -5
  5. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/.gitignore +0 -0
  6. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/LICENSE +0 -0
  7. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/README.md +0 -0
  8. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/__init__.py +0 -0
  9. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/__init__.py +0 -0
  10. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/converter_service_base.py +0 -0
  11. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/external_credentials.py +0 -0
  12. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2.py +0 -0
  13. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2.pyi +0 -0
  14. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2_grpc.py +0 -0
  15. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2.py +0 -0
  16. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2.pyi +0 -0
  17. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2_grpc.py +0 -0
  18. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2.py +0 -0
  19. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2.pyi +0 -0
  20. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2_grpc.py +0 -0
  21. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/converter/converter_pb2.py +0 -0
  22. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/converter/converter_pb2.pyi +0 -0
  23. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/converter/converter_pb2_grpc.py +0 -0
  24. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/item/item_container_pb2.py +0 -0
  25. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/item/item_container_pb2.pyi +0 -0
  26. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/item/item_container_pb2_grpc.py +0 -0
  27. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/script/script_pb2.py +0 -0
  28. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/script/script_pb2.pyi +0 -0
  29. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/script/script_pb2_grpc.py +0 -0
  30. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/step_output_pb2.py +0 -0
  31. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/step_output_pb2.pyi +0 -0
  32. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/step_output_pb2_grpc.py +0 -0
  33. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/step_pb2.py +0 -0
  34. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/step_pb2.pyi +0 -0
  35. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/step_pb2_grpc.py +0 -0
  36. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/tool/entry_pb2.py +0 -0
  37. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/tool/entry_pb2.pyi +0 -0
  38. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/tool/entry_pb2_grpc.py +0 -0
  39. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/tool/tool_pb2.py +0 -0
  40. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/tool/tool_pb2.pyi +0 -0
  41. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/plan/tool/tool_pb2_grpc.py +0 -0
  42. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2.py +0 -0
  43. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2.pyi +0 -0
  44. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2_grpc.py +0 -0
  45. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/protobuf_utils.py +0 -0
  46. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/request_validation.py +0 -0
  47. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/ai/server.py +0 -0
  48. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/callbacks/__init__.py +0 -0
  49. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/callbacks/callback_util.py +0 -0
  50. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/callbacks/field_builder.py +0 -0
  51. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/chem/IndigoMolecules.py +0 -0
  52. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/chem/Molecules.py +0 -0
  53. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/chem/__init__.py +0 -0
  54. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/customreport/__init__.py +0 -0
  55. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/customreport/auto_pagers.py +0 -0
  56. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/customreport/column_builder.py +0 -0
  57. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/customreport/custom_report_builder.py +0 -0
  58. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/customreport/term_builder.py +0 -0
  59. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/datatype/__init__.py +0 -0
  60. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/datatype/attachment_util.py +0 -0
  61. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/datatype/data_fields.py +0 -0
  62. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/datatype/pseudo_data_types.py +0 -0
  63. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/eln/__init__.py +0 -0
  64. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/eln/experiment_cache.py +0 -0
  65. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/eln/experiment_handler.py +0 -0
  66. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/eln/experiment_report_util.py +0 -0
  67. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/eln/experiment_step_factory.py +0 -0
  68. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/eln/experiment_tags.py +0 -0
  69. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/eln/plate_designer.py +0 -0
  70. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/eln/step_creation.py +0 -0
  71. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/__init__.py +0 -0
  72. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/assay_plate_reader.py +0 -0
  73. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/complex_data_loader.py +0 -0
  74. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/file_bridge.py +0 -0
  75. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/file_bridge_handler.py +0 -0
  76. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/file_data_handler.py +0 -0
  77. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/file_text_converter.py +0 -0
  78. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/file_util.py +0 -0
  79. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/file_validator.py +0 -0
  80. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/file_writer.py +0 -0
  81. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/files/temp_files.py +0 -0
  82. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/flowcyto/flow_cyto.py +0 -0
  83. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/flowcyto/flowcyto_data.py +0 -0
  84. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/__init__.py +0 -0
  85. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/accession_service.py +0 -0
  86. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/aliases.py +0 -0
  87. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/audit_log.py +0 -0
  88. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/custom_report_util.py +0 -0
  89. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/data_structure_util.py +0 -0
  90. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/directive_util.py +0 -0
  91. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/exceptions.py +0 -0
  92. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/html_formatter.py +0 -0
  93. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/popup_util.py +0 -0
  94. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/sapio_links.py +0 -0
  95. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/storage_util.py +0 -0
  96. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/general/time_util.py +0 -0
  97. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/multimodal/multimodal.py +0 -0
  98. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/multimodal/multimodal_data.py +0 -0
  99. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/processtracking/__init__.py +0 -0
  100. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/processtracking/custom_workflow_handler.py +0 -0
  101. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/processtracking/endpoints.py +0 -0
  102. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/recordmodel/__init__.py +0 -0
  103. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/recordmodel/record_handler.py +0 -0
  104. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/rules/__init__.py +0 -0
  105. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/rules/eln_rule_handler.py +0 -0
  106. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/rules/on_save_rule_handler.py +0 -0
  107. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/samples/aliquot.py +0 -0
  108. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/sftpconnect/__init__.py +0 -0
  109. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/sftpconnect/sftp_builder.py +0 -0
  110. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/webhook/__init__.py +0 -0
  111. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/webhook/webhook_context.py +0 -0
  112. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/webhook/webhook_handlers.py +0 -0
  113. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/src/sapiopycommons/webhook/webservice_handlers.py +0 -0
  114. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/AF-A0A009IHW8-F1-model_v4.cif +0 -0
  115. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/_do_not_add_init_py_here +0 -0
  116. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/accession_test.py +0 -0
  117. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/aliquot_test.py +0 -0
  118. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/assay_plate_reader/BMGLabtech96.txt +0 -0
  119. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/assay_plate_reader/assay_plate_processing_test.py +0 -0
  120. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/bio_reg_test.py +0 -0
  121. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/chem_test.py +0 -0
  122. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/chem_test_curation_queue.py +0 -0
  123. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/curation_queue_test.sdf +0 -0
  124. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/data_type_models.py +0 -0
  125. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/file_compression_tests.py +0 -0
  126. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/flowcyto/8_color_ICS.wsp +0 -0
  127. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/flowcyto_test.py +0 -0
  128. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/kappa.chains.fasta +0 -0
  129. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/mafft_test.py +0 -0
  130. {sapiopycommons-2025.10.21a791 → sapiopycommons-2025.10.30a798}/tests/test.gb +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sapiopycommons
3
- Version: 2025.10.21a791
3
+ Version: 2025.10.30a798
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.10.21a791'
7
+ version='2025.10.30a798'
8
8
  authors = [
9
9
  { name="Jonathan Steck", email="jsteck@sapiosciences.com" },
10
10
  { name="Yechen Qiao", email="yqiao@sapiosciences.com" },
@@ -979,37 +979,32 @@ class AgentBase(ABC):
979
979
  """
980
980
  pass
981
981
 
982
- def get_credentials(self, category: str = None, host: str = None) -> ExternalCredentials:
982
+ def get_credentials(self, name: str | None = None, category: str | None = None) -> ExternalCredentials:
983
983
  """
984
984
  Get credentials for the given category and host.
985
985
 
986
+ :param name: The host name of the credentials to retrieve.
986
987
  :param category: The category of the credentials to retrieve.
987
- :param host: The host for which to retrieve the credentials.
988
988
  :return: An ExternalCredentials object containing the credentials for the given category and host.
989
989
  """
990
990
  if not self.__is_setup:
991
991
  raise Exception("Cannot call this function before the agent has been set up to respond to a request.")
992
992
  # Remove leading/trailing whitespace
993
+ name = name.strip() if name else None
993
994
  category = category.strip() if category else None
994
- host = host.strip() if host else None
995
995
 
996
996
  matching_creds: list[ExternalCredentialsPbo] = []
997
997
  for cred in self.request.external_credential:
998
998
  # Do case insensitive comparison
999
+ if name and cred.display_name.lower != name.lower():
1000
+ continue
999
1001
  if category and cred.category.lower() != category.lower():
1000
1002
  continue
1001
- if host:
1002
- # Parse the URL to get the host and compare
1003
- from urllib.parse import urlparse
1004
- parsed_url = urlparse(cred.url)
1005
- if parsed_url.hostname is None or parsed_url.hostname.lower() != host.lower():
1006
- continue
1007
-
1008
1003
  matching_creds.append(cred)
1009
1004
  if len(matching_creds) == 0:
1010
- raise ValueError(f"No credentials found for category '{category}' and host '{host}'.")
1005
+ raise ValueError(f"No credentials found for name '{name}' and category '{category}'.")
1011
1006
  if len(matching_creds) > 1:
1012
- raise ValueError(f"Multiple credentials found for category '{category}' and host '{host}'.")
1007
+ raise ValueError(f"Multiple credentials found for name '{name}' and category '{category}'.")
1013
1008
 
1014
1009
  return ExternalCredentials.from_pbo(matching_creds[0])
1015
1010
 
@@ -126,7 +126,10 @@ class AgentOutput:
126
126
  for i, output in enumerate(self.binary_output, start=1):
127
127
  output: list[bytes]
128
128
  ret_val += f"\tBinary Output {i}:\n"
129
- for binary in output:
129
+ for j, binary in enumerate(output):
130
+ if j > 5:
131
+ ret_val += f"\t\tAnd {len(output) - 5} more binary items...\n"
132
+ break
130
133
  ret_val += f"\t\t{len(binary)} byte(s): {binary[:50]}...\n"
131
134
 
132
135
  ret_val += f"CSV Output: {sum(len(x) for x in self.csv_output)} item(s) across {len(self.csv_output)} output(s)\n"
@@ -134,14 +137,20 @@ class AgentOutput:
134
137
  output: list[dict[str, Any]]
135
138
  ret_val += f"\tCSV Output {i}:\n"
136
139
  ret_val += f"\t\tHeaders: {', '.join(output[0].keys())}\n"
137
- for j, csv_row in enumerate(output):
140
+ for j, csv_row in enumerate(output, start=1):
141
+ if j > 5:
142
+ ret_val += f"\t\tAnd {len(output) - 5} more CSV rows...\n"
143
+ break
138
144
  ret_val += f"\t\t{j}: {', '.join(f'{v}' for k, v in csv_row.items())}\n"
139
145
 
140
146
  ret_val += f"JSON Output: {sum(len(x) for x in self.json_output)} item(s) across {len(self.json_output)} output(s)\n"
141
147
  for i, output in enumerate(self.json_output, start=1):
142
148
  output: list[Any]
143
149
  ret_val += f"\tJSON Output {i}:\n"
144
- for json_obj in output:
150
+ for j, json_obj in enumerate(output, start=1):
151
+ if j > 5:
152
+ ret_val += f"\t\tAnd {len(output) - 5} more JSON items...\n"
153
+ break
145
154
  ret_val += f"\t\t"
146
155
  ret_val += json.dumps(json_obj, indent=2).replace("\n", "\n\t\t") + "\n"
147
156
 
@@ -149,11 +158,17 @@ class AgentOutput:
149
158
  for i, output in enumerate(self.text_output, start=1):
150
159
  output: list[str]
151
160
  ret_val += f"\tText Output {i}:\n"
152
- for text in output:
161
+ for j, text in enumerate(output, start=1):
162
+ if j > 5:
163
+ ret_val += f"\t\tAnd {len(output) - 5} more text items...\n"
164
+ break
153
165
  ret_val += f"\t\t{text}\n"
154
166
 
155
167
  ret_val += f"New Records: {len(self.new_records)} item(s)\n"
156
- for record in self.new_records:
168
+ for i, record in enumerate(self.new_records, start=1):
169
+ if i > 5:
170
+ ret_val += f"\tAnd {len(self.new_records) - 5} more new records...\n"
171
+ break
157
172
  ret_val += f"{json.dumps(record, indent=2)}\n"
158
173
 
159
174
  ret_val += f"Logs: {len(self.logs)} item(s)\n"