1818from queue import Queue
1919from typing import TYPE_CHECKING , Any , cast
2020
21- import sift_stream_bindings
2221from sift .ingestion_configs .v2 .ingestion_configs_pb2 import (
2322 GetIngestionConfigRequest ,
2423 ListIngestionConfigFlowsResponse ,
2524 ListIngestionConfigsRequest ,
2625 ListIngestionConfigsResponse ,
2726)
28- from sift .ingestion_configs .v2 .ingestion_configs_pb2_grpc import IngestionConfigServiceStub
29- from sift_stream_bindings import (
30- IngestionConfigFormPy ,
31- IngestWithConfigDataStreamRequestPy ,
27+ from sift .ingestion_configs .v2 .ingestion_configs_pb2_grpc import (
28+ IngestionConfigServiceStub ,
3229)
3330
3431from sift_client ._internal .low_level_wrappers .base import (
4441if TYPE_CHECKING :
4542 from datetime import datetime
4643
44+ from sift_stream_bindings import (
45+ IngestionConfigFormPy ,
46+ IngestWithConfigDataStreamRequestPy ,
47+ SiftStreamBuilderPy ,
48+ )
49+
4750
4851class IngestionThread (threading .Thread ):
4952 """Manages ingestion for a single ingestion config."""
@@ -54,7 +57,7 @@ class IngestionThread(threading.Thread):
5457
5558 def __init__ (
5659 self ,
57- sift_stream_builder : sift_stream_bindings . SiftStreamBuilderPy ,
60+ sift_stream_builder : SiftStreamBuilderPy ,
5861 data_queue : Queue ,
5962 ingestion_config : IngestionConfigFormPy ,
6063 no_data_timeout : int = 1 ,
@@ -154,7 +157,7 @@ class IngestionLowLevelClient(LowLevelClientBase, WithGrpcClient):
154157
155158 CacheEntry = namedtuple ("CacheEntry" , ["data_queue" , "ingestion_config" , "thread" ])
156159
157- sift_stream_builder : sift_stream_bindings . SiftStreamBuilderPy
160+ sift_stream_builder : SiftStreamBuilderPy
158161 stream_cache : dict [str , CacheEntry ]
159162
160163 def __init__ (self , grpc_client : GrpcClient ):
@@ -163,21 +166,25 @@ def __init__(self, grpc_client: GrpcClient):
163166 Args:
164167 grpc_client: The gRPC client to use for making API calls.
165168 """
169+ from sift_stream_bindings import (
170+ RecoveryStrategyPy ,
171+ RetryPolicyPy ,
172+ SiftStreamBuilderPy ,
173+ )
174+
166175 super ().__init__ (grpc_client = grpc_client )
167176 # Rust GRPC client expects URI to have http(s):// prefix.
168177 uri = grpc_client ._config .uri
169178 if not uri .startswith ("http" ):
170179 uri = f"https://{ uri } " if grpc_client ._config .use_ssl else f"http://{ uri } "
171- self .sift_stream_builder = sift_stream_bindings . SiftStreamBuilderPy (
180+ self .sift_stream_builder = SiftStreamBuilderPy (
172181 uri = uri ,
173182 apikey = grpc_client ._config .api_key ,
174183 )
175184 self .sift_stream_builder .enable_tls = grpc_client ._config .use_ssl
176185 # FD-177: Expose configuration for recovery strategy.
177- self .sift_stream_builder .recovery_strategy = (
178- sift_stream_bindings .RecoveryStrategyPy .retry_only (
179- sift_stream_bindings .RetryPolicyPy .default ()
180- )
186+ self .sift_stream_builder .recovery_strategy = RecoveryStrategyPy .retry_only (
187+ RetryPolicyPy .default ()
181188 )
182189 self .stream_cache = {}
183190
@@ -229,7 +236,9 @@ async def get_ingestion_config_id_from_client_key(self, client_key: str) -> str
229236 return ingestion_configs [0 ].id_
230237
231238 def _new_ingestion_thread (
232- self , ingestion_config_id : str , ingestion_config : IngestionConfigFormPy | None = None
239+ self ,
240+ ingestion_config_id : str ,
241+ ingestion_config : IngestionConfigFormPy | None = None ,
233242 ):
234243 """Start a new ingestion thread.
235244 This allows ingestion to happen in the background regardless of if the user is using the sync or async client
0 commit comments