From 19352ed32a0badacac796ee051a50731feccc2dc Mon Sep 17 00:00:00 2001 From: haruska <2803+haruska@users.noreply.github.com> Date: Tue, 2 Jul 2024 18:59:55 -0500 Subject: [PATCH] do not override port if defined in host --- pinecone/grpc/base.py | 6 ++++-- .../test_grpc_index_initialization.py | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/pinecone/grpc/base.py b/pinecone/grpc/base.py index 75fe4a64..6c6c9f0c 100644 --- a/pinecone/grpc/base.py +++ b/pinecone/grpc/base.py @@ -84,8 +84,10 @@ def stub_class(self): pass def _endpoint(self): - grpcHost = self.config.host.replace("https://", "") - return self._endpoint_override if self._endpoint_override else f"{grpcHost}:443" + grpc_host = self.config.host.replace("https://", "") + if ":" not in grpc_host: + grpc_host = f"{grpc_host}:443" + return self._endpoint_override if self._endpoint_override else grpc_host def _gen_channel(self, options=None): target = self._endpoint() diff --git a/tests/unit_grpc/test_grpc_index_initialization.py b/tests/unit_grpc/test_grpc_index_initialization.py index 6c8a78fd..d8503a66 100644 --- a/tests/unit_grpc/test_grpc_index_initialization.py +++ b/tests/unit_grpc/test_grpc_index_initialization.py @@ -85,6 +85,24 @@ def test_config_passed_when_target_by_host(self): assert index.grpc_client_config.reuse_channel == True assert index.grpc_client_config.conn_timeout == 1 + # Endpoint port defaults to 443 + assert index._endpoint() == "myhost:443" + + def test_config_passed_when_target_by_host_and_port(self): + pc = PineconeGRPC(api_key="YOUR_API_KEY") + config = GRPCClientConfig(timeout=5, secure=False) + index = pc.Index(host="myhost:4343", grpc_config=config) + + assert index.grpc_client_config.timeout == 5 + assert index.grpc_client_config.secure == False + + # Unset fields still get default values + assert index.grpc_client_config.reuse_channel == True + assert index.grpc_client_config.conn_timeout == 1 + + # Endpoint calculation does not override port + assert index._endpoint() == "myhost:4343" + def test_config_passes_source_tag_when_set(self): pc = PineconeGRPC(api_key="YOUR_API_KEY", source_tag="my_source_tag") index = pc.Index(name="my-index", host="host")