1- from typing import Any , Dict , List , Set , Union
2-
3- import ray
1+ from typing import TYPE_CHECKING , Any , Dict , List , Set , Union
42
53from graphgen .bases .base_storage import BaseGraphStorage , BaseKVStorage
64
5+ if TYPE_CHECKING :
6+ import ray
7+
78
89class KVStorageActor :
910 def __init__ (self , backend : str , working_dir : str , namespace : str ):
@@ -146,124 +147,192 @@ def ready(self) -> bool:
146147
147148
148149class RemoteKVStorageProxy (BaseKVStorage ):
149- def __init__ (self , actor_handle : ray .actor .ActorHandle ):
150+ def __init__ (self , actor_handle : " ray.actor.ActorHandle" ):
150151 super ().__init__ ()
151152 self .actor = actor_handle
152153
153154 def data (self ) -> Dict [str , Any ]:
155+ import ray
156+
154157 return ray .get (self .actor .data .remote ())
155158
156159 def all_keys (self ) -> list [str ]:
160+ import ray
161+
157162 return ray .get (self .actor .all_keys .remote ())
158163
159164 def index_done_callback (self ):
165+ import ray
166+
160167 return ray .get (self .actor .index_done_callback .remote ())
161168
162169 def get_by_id (self , id : str ) -> Union [Any , None ]:
170+ import ray
171+
163172 return ray .get (self .actor .get_by_id .remote (id ))
164173
165174 def get_by_ids (self , ids : list [str ], fields = None ) -> list [Any ]:
175+ import ray
176+
166177 return ray .get (self .actor .get_by_ids .remote (ids , fields ))
167178
168179 def get_all (self ) -> Dict [str , Any ]:
180+ import ray
181+
169182 return ray .get (self .actor .get_all .remote ())
170183
171184 def filter_keys (self , data : list [str ]) -> set [str ]:
185+ import ray
186+
172187 return ray .get (self .actor .filter_keys .remote (data ))
173188
174189 def upsert (self , data : Dict [str , Any ]):
190+ import ray
191+
175192 return ray .get (self .actor .upsert .remote (data ))
176193
177194 def update (self , data : Dict [str , Any ]):
195+ import ray
196+
178197 return ray .get (self .actor .update .remote (data ))
179198
180199 def delete (self , ids : list [str ]):
200+ import ray
201+
181202 return ray .get (self .actor .delete .remote (ids ))
182203
183204 def drop (self ):
205+ import ray
206+
184207 return ray .get (self .actor .drop .remote ())
185208
186209 def reload (self ):
210+ import ray
211+
187212 return ray .get (self .actor .reload .remote ())
188213
189214
190215class RemoteGraphStorageProxy (BaseGraphStorage ):
191- def __init__ (self , actor_handle : ray .actor .ActorHandle ):
216+ def __init__ (self , actor_handle : " ray.actor.ActorHandle" ):
192217 super ().__init__ ()
193218 self .actor = actor_handle
194219
195220 def index_done_callback (self ):
221+ import ray
222+
196223 return ray .get (self .actor .index_done_callback .remote ())
197224
198225 def is_directed (self ) -> bool :
226+ import ray
227+
199228 return ray .get (self .actor .is_directed .remote ())
200229
201230 def get_all_node_degrees (self ) -> Dict [str , int ]:
231+ import ray
232+
202233 return ray .get (self .actor .get_all_node_degrees .remote ())
203234
204235 def get_node_count (self ) -> int :
236+ import ray
237+
205238 return ray .get (self .actor .get_node_count .remote ())
206239
207240 def get_edge_count (self ) -> int :
241+ import ray
242+
208243 return ray .get (self .actor .get_edge_count .remote ())
209244
210245 def get_connected_components (self , undirected : bool = True ) -> List [Set [str ]]:
246+ import ray
247+
211248 return ray .get (self .actor .get_connected_components .remote (undirected ))
212249
213250 def has_node (self , node_id : str ) -> bool :
251+ import ray
252+
214253 return ray .get (self .actor .has_node .remote (node_id ))
215254
216255 def has_edge (self , source_node_id : str , target_node_id : str ):
256+ import ray
257+
217258 return ray .get (self .actor .has_edge .remote (source_node_id , target_node_id ))
218259
219260 def node_degree (self , node_id : str ) -> int :
261+ import ray
262+
220263 return ray .get (self .actor .node_degree .remote (node_id ))
221264
222265 def edge_degree (self , src_id : str , tgt_id : str ) -> int :
266+ import ray
267+
223268 return ray .get (self .actor .edge_degree .remote (src_id , tgt_id ))
224269
225270 def get_node (self , node_id : str ) -> Any :
271+ import ray
272+
226273 return ray .get (self .actor .get_node .remote (node_id ))
227274
228275 def update_node (self , node_id : str , node_data : dict [str , str ]):
276+ import ray
277+
229278 return ray .get (self .actor .update_node .remote (node_id , node_data ))
230279
231280 def get_all_nodes (self ) -> Any :
281+ import ray
282+
232283 return ray .get (self .actor .get_all_nodes .remote ())
233284
234285 def get_edge (self , source_node_id : str , target_node_id : str ):
286+ import ray
287+
235288 return ray .get (self .actor .get_edge .remote (source_node_id , target_node_id ))
236289
237290 def update_edge (
238291 self , source_node_id : str , target_node_id : str , edge_data : dict [str , str ]
239292 ):
293+ import ray
294+
240295 return ray .get (
241296 self .actor .update_edge .remote (source_node_id , target_node_id , edge_data )
242297 )
243298
244299 def get_all_edges (self ) -> Any :
300+ import ray
301+
245302 return ray .get (self .actor .get_all_edges .remote ())
246303
247304 def get_node_edges (self , source_node_id : str ) -> Any :
305+ import ray
306+
248307 return ray .get (self .actor .get_node_edges .remote (source_node_id ))
249308
250309 def upsert_node (self , node_id : str , node_data : dict [str , str ]):
310+ import ray
311+
251312 return ray .get (self .actor .upsert_node .remote (node_id , node_data ))
252313
253314 def upsert_edge (
254315 self , source_node_id : str , target_node_id : str , edge_data : dict [str , str ]
255316 ):
317+ import ray
318+
256319 return ray .get (
257320 self .actor .upsert_edge .remote (source_node_id , target_node_id , edge_data )
258321 )
259322
260323 def delete_node (self , node_id : str ):
324+ import ray
325+
261326 return ray .get (self .actor .delete_node .remote (node_id ))
262327
263328 def get_neighbors (self , node_id : str ) -> List [str ]:
329+ import ray
330+
264331 return ray .get (self .actor .get_neighbors .remote (node_id ))
265332
266333 def reload (self ):
334+ import ray
335+
267336 return ray .get (self .actor .reload .remote ())
268337
269338
@@ -274,6 +343,8 @@ class StorageFactory:
274343
275344 @staticmethod
276345 def create_storage (backend : str , working_dir : str , namespace : str ):
346+ import ray
347+
277348 if backend in ["json_kv" , "rocksdb" ]:
278349 actor_name = f"Actor_KV_{ namespace } "
279350 actor_class = KVStorageActor
0 commit comments