docs: def create_layout(graph, graphviz_prog=DEFAULT_GRAPHVIZ_PROG):
      """Return {node: position} for given graph"""
      graphviz_layout = graphutils.graphviz_layout(graph, prog=graphviz_prog)
      # print('GRAPHIZ LAYOUT:', graphviz_layout)
      layout = {k: (int(x // 10), int(y // 10))
                for k, (x, y) in graphviz_layout.items()}
      # apply an offset for layouts to get all position >= 0
      max_x = max(layout.values(), key=lambda t: t[0])[0]
      min_x = min(layout.values(), key=lambda t: t[0])[0]
      max_y = max(layout.values(), key=lambda t: t[1])[1]
      min_y = min(layout.values(), key=lambda t: t[1])[1]
      offset_x = - min(0, min_x)
      offset_y = - min(0, min_y)
      return {
          node: (offset_x + x, offset_y + y)
          for node, (x, y) in layout.items()
      }