sapiopycommons 2025.7.22a639__tar.gz → 2025.7.22a651__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.
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/PKG-INFO +1 -1
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/pyproject.toml +1 -1
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/test_client.py +19 -3
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/tool_service_base.py +7 -2
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/webhook/webservice_handlers.py +1 -1
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/.gitignore +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/LICENSE +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/README.md +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/fielddefinitions/proto/fields_pb2.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/fielddefinitions/proto/fields_pb2.pyi +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/fielddefinitions/proto/fields_pb2_grpc.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2.pyi +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/fielddefinitions/proto/velox_field_def_pb2_grpc.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/proto/step_output_pb2.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/proto/step_output_pb2.pyi +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/proto/step_output_pb2_grpc.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/proto/step_pb2.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/proto/step_pb2.pyi +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/proto/step_pb2_grpc.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/script/proto/script_pb2.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/script/proto/script_pb2.pyi +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/script/proto/script_pb2_grpc.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/tool/proto/entry_pb2.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/tool/proto/entry_pb2.pyi +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/tool/proto/entry_pb2_grpc.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/tool/proto/tool_pb2.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/tool/proto/tool_pb2.pyi +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/plan/tool/proto/tool_pb2_grpc.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2.pyi +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/api/session/proto/sapio_conn_info_pb2_grpc.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/protobuf_utils.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/callbacks/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/callbacks/callback_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/callbacks/field_builder.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/chem/IndigoMolecules.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/chem/Molecules.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/chem/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/customreport/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/customreport/auto_pagers.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/customreport/column_builder.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/customreport/custom_report_builder.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/customreport/term_builder.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/datatype/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/datatype/attachment_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/datatype/data_fields.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/datatype/pseudo_data_types.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/eln/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/eln/experiment_cache.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/eln/experiment_handler.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/eln/experiment_report_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/eln/experiment_step_factory.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/eln/experiment_tags.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/eln/plate_designer.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/eln/step_creation.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/complex_data_loader.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/file_bridge.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/file_bridge_handler.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/file_data_handler.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/file_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/file_validator.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/file_writer.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/flowcyto/flow_cyto.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/flowcyto/flowcyto_data.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/accession_service.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/aliases.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/audit_log.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/custom_report_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/data_structure_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/directive_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/exceptions.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/html_formatter.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/popup_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/sapio_links.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/storage_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/time_util.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/multimodal/multimodal.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/multimodal/multimodal_data.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/processtracking/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/processtracking/custom_workflow_handler.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/processtracking/endpoints.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/recordmodel/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/recordmodel/record_handler.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/rules/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/rules/eln_rule_handler.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/rules/on_save_rule_handler.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/samples/aliquot.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/sftpconnect/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/sftpconnect/sftp_builder.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/webhook/__init__.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/webhook/webhook_context.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/webhook/webhook_handlers.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/AF-A0A009IHW8-F1-model_v4.cif +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/_do_not_add_init_py_here +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/accession_test.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/aliquot_test.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/bio_reg_test.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/chem_test.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/chem_test_curation_queue.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/curation_queue_test.sdf +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/data_type_models.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/flowcyto/101_DEN084Y5_15_E01_008_clean.fcs +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/flowcyto/101_DEN084Y5_15_E03_009_clean.fcs +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/flowcyto/101_DEN084Y5_15_E05_010_clean.fcs +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/flowcyto/8_color_ICS.wsp +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/flowcyto/COVID19_W_001_O.fcs +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/flowcyto_test.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/kappa.chains.fasta +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/mafft_test.py +0 -0
- {sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/test.gb +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: sapiopycommons
|
|
3
|
-
Version: 2025.7.
|
|
3
|
+
Version: 2025.7.22a651
|
|
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>
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/test_client.py
RENAMED
|
@@ -10,7 +10,7 @@ from sapiopycommons.ai.api.plan.tool.proto.entry_pb2 import DataTypePbo, StepBin
|
|
|
10
10
|
StepCsvHeaderRowPbo, StepCsvContainerPbo, StepJsonContainerPbo, StepImageContainerPbo, StepTextContainerPbo, \
|
|
11
11
|
StepItemContainerPbo, StepInputBatchPbo
|
|
12
12
|
from sapiopycommons.ai.api.plan.tool.proto.tool_pb2 import ProcessStepResponsePbo, ProcessStepRequestPbo, \
|
|
13
|
-
ToolDetailsRequestPbo, ToolDetailsResponsePbo
|
|
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
16
|
|
|
@@ -23,6 +23,9 @@ class ToolOutput:
|
|
|
23
23
|
"""
|
|
24
24
|
tool_name: str
|
|
25
25
|
|
|
26
|
+
status: str
|
|
27
|
+
message: str
|
|
28
|
+
|
|
26
29
|
binary_output: list[bytes]
|
|
27
30
|
csv_output: list[dict[str, Any]]
|
|
28
31
|
json_output: list[Any]
|
|
@@ -45,6 +48,8 @@ class ToolOutput:
|
|
|
45
48
|
|
|
46
49
|
def __str__(self):
|
|
47
50
|
ret_val: str = f"{self.tool_name} Output:\n"
|
|
51
|
+
ret_val += f"\tStatus: {self.status}\n"
|
|
52
|
+
ret_val += f"\tMessage: {self.message}\n"
|
|
48
53
|
ret_val += "-" * 25 + "\n"
|
|
49
54
|
ret_val += f"Binary Output: {len(self.binary_output)} item(s)\n"
|
|
50
55
|
for binary in self.binary_output:
|
|
@@ -215,12 +220,13 @@ class TestClient:
|
|
|
215
220
|
stub = ToolServiceStub(channel)
|
|
216
221
|
return stub.GetToolDetails(ToolDetailsRequestPbo(sapio_conn_info=self.connection))
|
|
217
222
|
|
|
218
|
-
def call_tool(self, tool_name: str) -> ToolOutput:
|
|
223
|
+
def call_tool(self, tool_name: str, is_dry_run: bool = False) -> ToolOutput:
|
|
219
224
|
"""
|
|
220
225
|
Send the request to the tool service for a particular tool name. This will send all the inputs that have been
|
|
221
226
|
added using the add_X_input functions.
|
|
222
227
|
|
|
223
228
|
:param tool_name: The name of the tool to call on the server.
|
|
229
|
+
:param is_dry_run: If True, the tool will not be executed, but the request will be validated.
|
|
224
230
|
:return: A ToolOutput object containing the results of the tool service call.
|
|
225
231
|
"""
|
|
226
232
|
with grpc.insecure_channel(self.grpc_server_url) as channel:
|
|
@@ -234,11 +240,21 @@ class TestClient:
|
|
|
234
240
|
input=[
|
|
235
241
|
StepInputBatchPbo(is_partial=False, item_container=item)
|
|
236
242
|
for item in self._request_inputs
|
|
237
|
-
]
|
|
243
|
+
],
|
|
244
|
+
dry_run=is_dry_run,
|
|
245
|
+
verbose_logging=True
|
|
238
246
|
)
|
|
239
247
|
)
|
|
240
248
|
|
|
241
249
|
results = ToolOutput(tool_name)
|
|
250
|
+
match response.status:
|
|
251
|
+
case ProcessStepResponseStatusPbo.SUCCESS:
|
|
252
|
+
results.status = "Success"
|
|
253
|
+
case ProcessStepResponseStatusPbo.FAILURE:
|
|
254
|
+
results.status = "Failure"
|
|
255
|
+
case _:
|
|
256
|
+
results.status = "Unknown"
|
|
257
|
+
results.message = response.status_message
|
|
242
258
|
for item in response.output:
|
|
243
259
|
container = item.item_container
|
|
244
260
|
|
|
@@ -252,7 +252,7 @@ class ToolServiceBase(ToolServiceServicer, ABC):
|
|
|
252
252
|
secret: str = info.secret
|
|
253
253
|
if secret.startswith("Basic "):
|
|
254
254
|
secret = secret[6:]
|
|
255
|
-
credentials: list[str] = base64.b64decode(secret).decode().split(":")
|
|
255
|
+
credentials: list[str] = base64.b64decode(secret).decode().split(":", 1)
|
|
256
256
|
user.username = credentials[0]
|
|
257
257
|
user.password = credentials[1]
|
|
258
258
|
case _:
|
|
@@ -301,7 +301,12 @@ class ToolServiceBase(ToolServiceServicer, ABC):
|
|
|
301
301
|
# Setup the tool with details from the request.
|
|
302
302
|
tool.setup(user, request, context)
|
|
303
303
|
# Validate that the provided inputs match the tool's expected inputs.
|
|
304
|
-
|
|
304
|
+
if not request.input:
|
|
305
|
+
msg: str = "No inputs provided to this tool!"
|
|
306
|
+
elif len(request.input) != len(tool.inputs):
|
|
307
|
+
msg: str = f"Expected {len(tool.inputs)} inputs for this tool, but got {len(request.input)} instead."
|
|
308
|
+
else:
|
|
309
|
+
msg: str = tool.validate_input()
|
|
305
310
|
# If there is no error message, then the inputs are valid.
|
|
306
311
|
success: bool = not bool(msg)
|
|
307
312
|
# If this is a dry run, then provide the fixed dry run output.
|
|
@@ -140,7 +140,7 @@ class AbstractWebserviceHandler(AbstractWebhookHandler):
|
|
|
140
140
|
# Get the login credentials from the headers.
|
|
141
141
|
auth: str = headers.get("Authorization")
|
|
142
142
|
if auth and auth.startswith("Basic "):
|
|
143
|
-
credentials: list[str] = b64decode(auth.split("Basic ")[1]).decode().split(":")
|
|
143
|
+
credentials: list[str] = b64decode(auth.split("Basic ")[1]).decode().split(":", 1)
|
|
144
144
|
user = self.basic_auth(url, credentials[0], credentials[1])
|
|
145
145
|
elif auth and auth.startswith("Bearer "):
|
|
146
146
|
user = self.bearer_token_auth(url, auth.split("Bearer ")[1])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/__init__.py
RENAMED
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/ai/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/chem/Molecules.py
RENAMED
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/chem/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/eln/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/files/file_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/general/aliases.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/rules/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/samples/aliquot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/src/sapiopycommons/webhook/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/AF-A0A009IHW8-F1-model_v4.cif
RENAMED
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/_do_not_add_init_py_here
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/chem_test_curation_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/flowcyto/8_color_ICS.wsp
RENAMED
|
File without changes
|
{sapiopycommons-2025.7.22a639 → sapiopycommons-2025.7.22a651}/tests/flowcyto/COVID19_W_001_O.fcs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|