25
25
from pinecone .core .client .model .namespace_summary import NamespaceSummary
26
26
from pinecone import FetchResponse , QueryResponse , ScoredVector , SingleQueryResults , UpsertResponse , \
27
27
DescribeIndexStatsResponse
28
- from grpc ._channel import _InactiveRpcError
28
+ from grpc ._channel import _InactiveRpcError , _MultiThreadedRendezvous
29
29
from pinecone .exceptions import PineconeProtocolError , PineconeException
30
30
31
31
__all__ = ["GRPCIndex" , "GRPCVector" , "GRPCQueryVector" ]
@@ -207,6 +207,32 @@ def parse_stats_response(response: dict):
207
207
return DescribeIndexStatsResponse (namespaces = namespace_summaries , dimension = dimension , _check_type = False )
208
208
209
209
210
+ class PineconeGrpcFuture :
211
+ def __init__ (self , delegate ):
212
+ self ._delegate = delegate
213
+
214
+ def cancel (self ):
215
+ return self ._delegate .cancel ()
216
+
217
+ def cancelled (self ):
218
+ return self ._delegate .cancelled ()
219
+
220
+ def running (self ):
221
+ return self ._delegate .running ()
222
+
223
+ def done (self ):
224
+ return self ._delegate .done ()
225
+
226
+ def add_done_callback (self , fun ):
227
+ return self ._delegate .add_done_callback (fun )
228
+
229
+ def result (self , timeout = None ):
230
+ try :
231
+ self ._delegate .result (timeout = timeout )
232
+ except _MultiThreadedRendezvous as e :
233
+ raise PineconeException (e ._state .debug_error_string ) from e
234
+
235
+
210
236
class GRPCIndex (GRPCIndexBase ):
211
237
212
238
@property
@@ -226,7 +252,8 @@ def _vector_transform(item):
226
252
request = UpsertRequest (vectors = list (map (_vector_transform , vectors )), ** kwargs )
227
253
timeout = kwargs .pop ('timeout' , None )
228
254
if async_req :
229
- return self ._wrap_grpc_call (self .stub .Upsert .future , request , timeout = timeout )
255
+ future = self ._wrap_grpc_call (self .stub .Upsert .future , request , timeout = timeout )
256
+ return PineconeGrpcFuture (future )
230
257
else :
231
258
return self ._wrap_grpc_call (self .stub .Upsert , request , timeout = timeout )
232
259
0 commit comments