1- import os
21import inspect
32import logging
3+ import os
44from collections import defaultdict , deque
55from functools import wraps
66from typing import Any , Callable , Dict , List , Set
7- from dotenv import load_dotenv
87
98import ray
109import ray .data
10+ from dotenv import load_dotenv
1111from ray .data import DataContext
1212
1313from graphgen .bases import Config , Node
14- from graphgen .utils import logger
1514from graphgen .common import init_llm , init_storage
15+ from graphgen .utils import logger
1616
1717load_dotenv ()
1818
19+
1920class Engine :
2021 def __init__ (
2122 self , config : Dict [str , Any ], functions : Dict [str , Callable ], ** ray_init_kwargs
@@ -42,7 +43,7 @@ def __init__(
4243 existing_env_vars = ray_init_kwargs ["runtime_env" ].get ("env_vars" , {})
4344 ray_init_kwargs ["runtime_env" ]["env_vars" ] = {
4445 ** all_env_vars ,
45- ** existing_env_vars
46+ ** existing_env_vars ,
4647 }
4748
4849 if not ray .is_initialized ():
@@ -265,24 +266,11 @@ def func_wrapper(row_or_batch: Dict[str, Any]) -> Dict[str, Any]:
265266 f"Unsupported node type { node .type } for node { node .id } "
266267 )
267268
268- @staticmethod
269- def _find_leaf_nodes (nodes : List [Node ]) -> Set [str ]:
270- all_ids = {n .id for n in nodes }
271- deps_set = set ()
272- for n in nodes :
273- deps_set .update (n .dependencies )
274- return all_ids - deps_set
275-
276269 def execute (self , initial_ds : ray .data .Dataset ) -> Dict [str , ray .data .Dataset ]:
277270 sorted_nodes = self ._topo_sort (self .config .nodes )
278271
279272 for node in sorted_nodes :
280273 self ._execute_node (node , initial_ds )
281274
282- leaf_nodes = self ._find_leaf_nodes (sorted_nodes )
283-
284- @ray .remote
285- def _fetch_result (ds : ray .data .Dataset ) -> List [Any ]:
286- return ds .take_all ()
287-
288- return {node_id : self .datasets [node_id ] for node_id in leaf_nodes }
275+ output_nodes = [n for n in sorted_nodes if getattr (n , "save_output" , False )]
276+ return {node .id : self .datasets [node .id ] for node in output_nodes }
0 commit comments