File tree 1 file changed +16
-11
lines changed
1 file changed +16
-11
lines changed Original file line number Diff line number Diff line change @@ -94,21 +94,26 @@ def ascend(lz):
94
94
LazyArray
95
95
"""
96
96
queue = to_queue (lz )
97
- seen = set ()
98
- ready = set ()
97
+ visited = set ()
98
+
99
99
while queue :
100
100
node = queue [- 1 ]
101
- need_to_visit = [c for c in node ._deps if id (c ) not in ready ]
102
- if need_to_visit :
103
- need_to_visit .sort (key = get_depth )
104
- queue .extend (need_to_visit )
105
- else :
106
- node = queue .pop ()
101
+ unvisited_deps = [c for c in node ._deps if id (c ) not in visited ]
102
+ k = len (unvisited_deps )
103
+ if k == 1 :
104
+ # single unvisited dependency, add it to the queue
105
+ queue .append (unvisited_deps [0 ])
106
+ elif k >= 2 :
107
+ # sort dependencies by depth and add them to the queue
108
+ unvisited_deps .sort (key = get_depth )
109
+ queue .extend (unvisited_deps )
110
+ else : # k == 0:
111
+ # all dependencies visited, yield this node
112
+ queue .pop ()
107
113
nid = id (node )
108
- ready .add (nid )
109
- if nid not in seen :
114
+ if nid not in visited :
110
115
yield node
111
- seen .add (nid )
116
+ visited .add (nid )
112
117
113
118
114
119
def compute (lz ):
You can’t perform that action at this time.
0 commit comments