@@ -35,6 +35,22 @@ def _get_len(sorted_node_list: List[Tuple], with_progress_bar: bool) -> int:
3535 return len ([n for n in sorted_node_list ])
3636
3737
38+ def _filter_graph_root_for_visitation (root : FreExNode , is_reversed : bool ):
39+ depth : int = root .depth
40+ sorted_node_list = list (nx .lexicographical_topological_sort (root .graph_ref ))
41+ if is_reversed :
42+ sorted_node_list = list (reversed (sorted_node_list ))
43+
44+ if depth == 0 :
45+ return sorted_node_list
46+ node_content = [
47+ root .graph_ref .nodes [node_id ]["content" ] for node_id in sorted_node_list
48+ ]
49+ if is_reversed :
50+ return [n .id for n in node_content if n .depth <= depth and n .id != root .id ]
51+ return [n .id for n in node_content if n .depth >= depth and n .id != root .id ]
52+
53+
3854class AbstractVisitor :
3955 """Base class for Visitor.
4056
@@ -74,10 +90,7 @@ def visit(self, root: FreExNode) -> bool:
7490 def apply_visitation_ (self , root : FreExNode ) -> bool :
7591 """do not override / directly use. Internal visitation method, use visit(root) instead"""
7692
77- sorted_node_list = list (nx .lexicographical_topological_sort (root .graph_ref ))
78-
79- if self .is_reversed :
80- sorted_node_list = list (reversed (sorted_node_list ))
93+ sorted_node_list = _filter_graph_root_for_visitation (root , self .is_reversed )
8194
8295 with tqdm (
8396 total = _get_len (sorted_node_list , self .with_progress_bar ),
@@ -185,10 +198,7 @@ def visit(self, root: FreExNode) -> bool:
185198 return to_continue
186199
187200 def _composed_visit (self , root : FreExNode ) -> bool :
188- sorted_node_list = list (nx .lexicographical_topological_sort (root .graph_ref ))
189-
190- if self ._is_reversed :
191- sorted_node_list = list (reversed (sorted_node_list ))
201+ sorted_node_list = _filter_graph_root_for_visitation (root , self ._is_reversed )
192202
193203 with tqdm (
194204 total = _get_len (sorted_node_list , self ._with_progress_bar ),
0 commit comments