Fix bug in STAT graph
This commit is contained in:
parent
935eba2357
commit
011f71a442
@ -149,6 +149,7 @@ def __init__(self):
|
||||
self._frontier = None # frontier
|
||||
self._nodes = None # dict from name -> node
|
||||
self._prev_state = None # State of previous line
|
||||
self._prev_index = None # Index of expansion point of prev line
|
||||
|
||||
|
||||
def _indent(self):
|
||||
@ -195,15 +196,19 @@ def _connect_deps(self, i, deps, label=None):
|
||||
|
||||
collapse = True
|
||||
if self._prev_state == EXPAND_RIGHT:
|
||||
# Special case for when prev. line expanded (spacing is off by 1)
|
||||
# Need two lines here even when distance in frontier is 1.
|
||||
self._back_edge_line([], j, i+1, True, label + "-1.5 " + str((i,j)))
|
||||
# Special case where previous line expanded and i is off by 1.
|
||||
self._back_edge_line([], j, i+1, True, label + "-1.5 " + str((i+1,j)))
|
||||
collapse = False
|
||||
|
||||
elif i-j > 1:
|
||||
# We need two lines to connect if distance > 1
|
||||
self._back_edge_line([], j, i, True, label + "-1 " + str((i,j)))
|
||||
collapse = False
|
||||
else:
|
||||
# Previous node also expanded here, so i is off by one.
|
||||
if self._prev_state == NODE and self._prev_index < i:
|
||||
i += 1
|
||||
|
||||
if i-j > 1:
|
||||
# We need two lines to connect if distance > 1
|
||||
self._back_edge_line([], j, i, True, label + "-1 " + str((i,j)))
|
||||
collapse = False
|
||||
|
||||
self._back_edge_line([j], -1, -1, collapse, label + "-2 " + str((i,j)))
|
||||
return True
|
||||
@ -213,10 +218,11 @@ def _connect_deps(self, i, deps, label=None):
|
||||
return False
|
||||
|
||||
|
||||
def _set_state(self, state, label=None):
|
||||
def _set_state(self, state, index, label=None):
|
||||
if state not in states:
|
||||
raise ValueError("Invalid graph state!")
|
||||
self._prev_state = state
|
||||
self._prev_index = index
|
||||
|
||||
if self.debug:
|
||||
self._out.write(" " * 20)
|
||||
@ -296,7 +302,7 @@ def advance(to_pos, edges):
|
||||
else:
|
||||
advance(flen, lambda: [("| ", self._pos)] )
|
||||
|
||||
self._set_state(BACK_EDGE, label)
|
||||
self._set_state(BACK_EDGE, end, label)
|
||||
self._out.write("\n")
|
||||
|
||||
|
||||
@ -312,7 +318,7 @@ def _node_line(self, index, name):
|
||||
self._write_edge("| ", c)
|
||||
|
||||
self._out.write(" %s" % name)
|
||||
self._set_state(NODE)
|
||||
self._set_state(NODE, index)
|
||||
self._out.write("\n")
|
||||
|
||||
|
||||
@ -324,7 +330,7 @@ def _collapse_line(self, index):
|
||||
for c in range(index, len(self._frontier)):
|
||||
self._write_edge(" /", c)
|
||||
|
||||
self._set_state(COLLAPSE)
|
||||
self._set_state(COLLAPSE, index)
|
||||
self._out.write("\n")
|
||||
|
||||
|
||||
@ -338,7 +344,7 @@ def _merge_right_line(self, index):
|
||||
for c in range(index+1, len(self._frontier)):
|
||||
self._write_edge("| ", c )
|
||||
|
||||
self._set_state(MERGE_RIGHT)
|
||||
self._set_state(MERGE_RIGHT, index)
|
||||
self._out.write("\n")
|
||||
|
||||
|
||||
@ -353,7 +359,7 @@ def _expand_right_line(self, index):
|
||||
for c in range(index+2, len(self._frontier)):
|
||||
self._write_edge(" \\", c)
|
||||
|
||||
self._set_state(EXPAND_RIGHT)
|
||||
self._set_state(EXPAND_RIGHT, index)
|
||||
self._out.write("\n")
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user