sapiopycommons 2025.10.9a776__tar.gz → 2025.10.10a778__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.10.9a776 → sapiopycommons-2025.10.10a778}/PKG-INFO +1 -1
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/pyproject.toml +1 -1
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/agent_service_base.py +35 -1
- sapiopycommons-2025.10.10a778/src/sapiopycommons/ai/external_credentials.py +37 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/.gitignore +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/LICENSE +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/README.md +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/converter_service_base.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/externalcredentials/external_credentials_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/fielddefinitions/fields_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/fielddefinitions/velox_field_def_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/converter/converter_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/converter/converter_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/converter/converter_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/item/item_container_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/item/item_container_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/item/item_container_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/script/script_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/script/script_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/script/script_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/step_output_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/step_output_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/step_output_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/step_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/step_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/step_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/tool/entry_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/tool/entry_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/tool/entry_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/tool/tool_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/tool/tool_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/plan/tool/tool_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2.pyi +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protoapi/session/sapio_conn_info_pb2_grpc.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/protobuf_utils.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/request_validation.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/server.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/test_client.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/callbacks/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/callbacks/callback_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/callbacks/field_builder.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/chem/IndigoMolecules.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/chem/Molecules.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/chem/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/customreport/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/customreport/auto_pagers.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/customreport/column_builder.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/customreport/custom_report_builder.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/customreport/term_builder.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/datatype/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/datatype/attachment_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/datatype/data_fields.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/datatype/pseudo_data_types.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/eln/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/eln/experiment_cache.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/eln/experiment_handler.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/eln/experiment_report_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/eln/experiment_step_factory.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/eln/experiment_tags.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/eln/plate_designer.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/eln/step_creation.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/assay_plate_reader.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/complex_data_loader.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/file_bridge.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/file_bridge_handler.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/file_data_handler.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/file_text_converter.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/file_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/file_validator.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/file_writer.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/temp_files.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/flowcyto/flow_cyto.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/flowcyto/flowcyto_data.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/accession_service.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/aliases.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/audit_log.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/custom_report_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/data_structure_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/directive_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/exceptions.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/html_formatter.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/popup_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/sapio_links.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/storage_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/general/time_util.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/multimodal/multimodal.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/multimodal/multimodal_data.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/processtracking/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/processtracking/custom_workflow_handler.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/processtracking/endpoints.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/recordmodel/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/recordmodel/record_handler.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/rules/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/rules/eln_rule_handler.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/rules/on_save_rule_handler.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/samples/aliquot.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/sftpconnect/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/sftpconnect/sftp_builder.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/webhook/__init__.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/webhook/webhook_context.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/webhook/webhook_handlers.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/webhook/webservice_handlers.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/AF-A0A009IHW8-F1-model_v4.cif +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/_do_not_add_init_py_here +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/accession_test.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/aliquot_test.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/assay_plate_reader/BMGLabtech96.txt +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/assay_plate_reader/assay_plate_processing_test.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/bio_reg_test.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/chem_test.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/chem_test_curation_queue.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/curation_queue_test.sdf +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/data_type_models.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/file_compression_tests.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/flowcyto/8_color_ICS.wsp +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/flowcyto_test.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/kappa.chains.fasta +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/mafft_test.py +0 -0
- {sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/test.gb +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: sapiopycommons
|
|
3
|
-
Version: 2025.10.
|
|
3
|
+
Version: 2025.10.10a778
|
|
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>
|
|
@@ -17,6 +17,8 @@ from grpc import ServicerContext
|
|
|
17
17
|
from sapiopylib.rest.User import SapioUser, ensure_logger_initialized
|
|
18
18
|
from sapiopylib.rest.pojo.datatype.FieldDefinition import AbstractVeloxFieldDefinition
|
|
19
19
|
|
|
20
|
+
from sapiopycommons.ai.external_credentials import ExternalCredentials
|
|
21
|
+
from sapiopycommons.ai.protoapi.externalcredentials.external_credentials_pb2 import ExternalCredentialsPbo
|
|
20
22
|
from sapiopycommons.ai.protoapi.fielddefinitions.fields_pb2 import FieldValueMapPbo, FieldValuePbo
|
|
21
23
|
from sapiopycommons.ai.protoapi.fielddefinitions.velox_field_def_pb2 import VeloxFieldDefPbo, FieldTypePbo, \
|
|
22
24
|
SelectionPropertiesPbo, IntegerPropertiesPbo, DoublePropertiesPbo, BooleanPropertiesPbo, StringPropertiesPbo, \
|
|
@@ -278,7 +280,7 @@ class AgentServiceBase(ToolServiceServicer, ABC):
|
|
|
278
280
|
:param info: The SapioConnectionInfo proto object.
|
|
279
281
|
:param timeout_seconds: The request timeout for calls made from this user object.
|
|
280
282
|
"""
|
|
281
|
-
user = SapioUser(info.webservice_url, True, timeout_seconds, guid=info.app_guid)
|
|
283
|
+
user = SapioUser(info.webservice_url.rstrip("/"), True, timeout_seconds, guid=info.app_guid)
|
|
282
284
|
match info.secret_type:
|
|
283
285
|
case SapioUserSecretTypePbo.SESSION_TOKEN:
|
|
284
286
|
user.api_token = info.secret
|
|
@@ -876,6 +878,38 @@ class AgentBase(ABC):
|
|
|
876
878
|
"""
|
|
877
879
|
pass
|
|
878
880
|
|
|
881
|
+
def get_credentials(self, category: str = None, host: str = None) -> ExternalCredentials:
|
|
882
|
+
"""
|
|
883
|
+
Get credentials for the given category and host.
|
|
884
|
+
|
|
885
|
+
:param category: The category of the credentials to retrieve.
|
|
886
|
+
:param host: The host for which to retrieve the credentials.
|
|
887
|
+
:return: An ExternalCredentials object containing the credentials for the given category and host.
|
|
888
|
+
"""
|
|
889
|
+
# Remove leading/trailing whitespace
|
|
890
|
+
category = category.strip() if category else None
|
|
891
|
+
host = host.strip() if host else None
|
|
892
|
+
|
|
893
|
+
matching_creds: list[ExternalCredentialsPbo] = []
|
|
894
|
+
for cred in self.request.external_credential:
|
|
895
|
+
# Do case insensitive comparison
|
|
896
|
+
if category and cred.category.lower() != category.lower():
|
|
897
|
+
continue
|
|
898
|
+
if host:
|
|
899
|
+
# Parse the URL to get the host and compare
|
|
900
|
+
from urllib.parse import urlparse
|
|
901
|
+
parsed_url = urlparse(cred.url)
|
|
902
|
+
if parsed_url.hostname is None or parsed_url.hostname.lower() != host.lower():
|
|
903
|
+
continue
|
|
904
|
+
|
|
905
|
+
matching_creds.append(cred)
|
|
906
|
+
if len(matching_creds) == 0:
|
|
907
|
+
raise ValueError(f"No credentials found for category '{category}' and host '{host}'.")
|
|
908
|
+
if len(matching_creds) > 1:
|
|
909
|
+
raise ValueError(f"Multiple credentials found for category '{category}' and host '{host}'.")
|
|
910
|
+
|
|
911
|
+
return ExternalCredentials(matching_creds[0])
|
|
912
|
+
|
|
879
913
|
def call_subprocess(self,
|
|
880
914
|
args: str | bytes | PathLike[str] | PathLike[bytes] | Sequence[str | bytes | PathLike[str] | PathLike[bytes]],
|
|
881
915
|
cwd: str | bytes | PathLike[str] | PathLike[bytes] | None = None,
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from sapiopycommons.ai.protoapi.externalcredentials.external_credentials_pb2 import ExternalCredentialsPbo
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ExternalCredentials:
|
|
5
|
+
"""
|
|
6
|
+
A class representing external credentials.
|
|
7
|
+
"""
|
|
8
|
+
id: str
|
|
9
|
+
display_name: str
|
|
10
|
+
description: str
|
|
11
|
+
category: str
|
|
12
|
+
url: str
|
|
13
|
+
username: str
|
|
14
|
+
password: str
|
|
15
|
+
token: str
|
|
16
|
+
custom_fields: dict[str, str]
|
|
17
|
+
|
|
18
|
+
def __init__(self, pbo: ExternalCredentialsPbo):
|
|
19
|
+
self.id = pbo.id
|
|
20
|
+
self.display_name = pbo.display_name
|
|
21
|
+
self.description = pbo.description
|
|
22
|
+
self.category = pbo.category
|
|
23
|
+
self.url = pbo.url
|
|
24
|
+
self.username = pbo.username
|
|
25
|
+
self.password = pbo.password
|
|
26
|
+
self.token = pbo.token
|
|
27
|
+
self.custom_fields = dict(pbo.custom_field)
|
|
28
|
+
|
|
29
|
+
def get_custom_field(self, key: str, default: str = None) -> str | None:
|
|
30
|
+
"""
|
|
31
|
+
Get a custom field by key.
|
|
32
|
+
|
|
33
|
+
:param key: The key of the custom field to retrieve.
|
|
34
|
+
:param default: The value to return if the key does not exist.
|
|
35
|
+
:return: The value of the custom field, or None if the key does not exist.
|
|
36
|
+
"""
|
|
37
|
+
return self.custom_fields.get(key, default)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/__init__.py
RENAMED
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/server.py
RENAMED
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/ai/test_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/chem/Molecules.py
RENAMED
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/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.10.9a776 → sapiopycommons-2025.10.10a778}/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.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/files/file_util.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.10.9a776 → sapiopycommons-2025.10.10a778}/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.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/rules/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/src/sapiopycommons/samples/aliquot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/AF-A0A009IHW8-F1-model_v4.cif
RENAMED
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/_do_not_add_init_py_here
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/chem_test_curation_queue.py
RENAMED
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/curation_queue_test.sdf
RENAMED
|
File without changes
|
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/file_compression_tests.py
RENAMED
|
File without changes
|
{sapiopycommons-2025.10.9a776 → sapiopycommons-2025.10.10a778}/tests/flowcyto/8_color_ICS.wsp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|