diff --git a/integrations/weaviate/src/haystack_integrations/document_stores/weaviate/document_store.py b/integrations/weaviate/src/haystack_integrations/document_stores/weaviate/document_store.py index 3afbb104f3..2ad8c2d236 100644 --- a/integrations/weaviate/src/haystack_integrations/document_stores/weaviate/document_store.py +++ b/integrations/weaviate/src/haystack_integrations/document_stores/weaviate/document_store.py @@ -325,6 +325,8 @@ def to_dict(self) -> dict[str, Any]: return default_to_dict( self, url=self._url, + grpc_port=self._grpc_port, + grpc_secure=self._grpc_secure, collection_settings=self._collection_settings, auth_client_secret=self._auth_client_secret.to_dict() if self._auth_client_secret else None, additional_headers=self._additional_headers, diff --git a/integrations/weaviate/tests/test_bm25_retriever.py b/integrations/weaviate/tests/test_bm25_retriever.py index 8809ec5ada..fcad99f31c 100644 --- a/integrations/weaviate/tests/test_bm25_retriever.py +++ b/integrations/weaviate/tests/test_bm25_retriever.py @@ -40,6 +40,8 @@ def test_to_dict(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, @@ -74,6 +76,8 @@ def test_from_dict(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, @@ -111,6 +115,8 @@ def test_from_dict_no_filter_policy(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, diff --git a/integrations/weaviate/tests/test_document_store.py b/integrations/weaviate/tests/test_document_store.py index e7bdfdf739..a2dc9c0315 100644 --- a/integrations/weaviate/tests/test_document_store.py +++ b/integrations/weaviate/tests/test_document_store.py @@ -355,6 +355,8 @@ def test_to_dict(self, _mock_weaviate, monkeypatch): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": "http://localhost:8080", + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, @@ -397,6 +399,25 @@ def test_to_dict(self, _mock_weaviate, monkeypatch): }, } + @patch("haystack_integrations.document_stores.weaviate.document_store.weaviate") + def test_to_dict_and_from_dict_preserves_grpc_settings(self, _mock_weaviate): + """`grpc_port`/`grpc_secure` configure the gRPC connection and must + survive a to_dict/from_dict round-trip; otherwise a reloaded store + silently falls back to the default gRPC port/security.""" + document_store = WeaviateDocumentStore( + url="http://localhost:8080", + grpc_port=50052, + grpc_secure=True, + ) + + serialized = document_store.to_dict() + assert serialized["init_parameters"]["grpc_port"] == 50052 + assert serialized["init_parameters"]["grpc_secure"] is True + + restored = WeaviateDocumentStore.from_dict(serialized) + assert restored._grpc_port == 50052 + assert restored._grpc_secure is True + @patch("haystack_integrations.document_stores.weaviate.document_store.weaviate") def test_from_dict(self, _mock_weaviate, monkeypatch): monkeypatch.setenv("WEAVIATE_API_KEY", "my_api_key") diff --git a/integrations/weaviate/tests/test_embedding_retriever.py b/integrations/weaviate/tests/test_embedding_retriever.py index 443716c6c2..7e56b3a668 100644 --- a/integrations/weaviate/tests/test_embedding_retriever.py +++ b/integrations/weaviate/tests/test_embedding_retriever.py @@ -50,6 +50,8 @@ def test_to_dict(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, @@ -86,6 +88,8 @@ def test_from_dict(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, @@ -127,6 +131,8 @@ def test_from_dict_no_filter_policy(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, diff --git a/integrations/weaviate/tests/test_hybrid_retriever.py b/integrations/weaviate/tests/test_hybrid_retriever.py index 305cff61ac..3e18e9d09d 100644 --- a/integrations/weaviate/tests/test_hybrid_retriever.py +++ b/integrations/weaviate/tests/test_hybrid_retriever.py @@ -63,6 +63,8 @@ def test_to_dict(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, @@ -119,6 +121,8 @@ def test_from_dict(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, @@ -162,6 +166,8 @@ def test_from_dict_with_parameters(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True}, @@ -300,6 +306,8 @@ def test_from_dict_no_filter_policy(_mock_weaviate): "type": "haystack_integrations.document_stores.weaviate.document_store.WeaviateDocumentStore", "init_parameters": { "url": None, + "grpc_port": 50051, + "grpc_secure": False, "collection_settings": { "class": "Default", "invertedIndexConfig": {"indexNullState": True},