code: def view_dot_graph(graph, filename=None, view=False):
      
      # Optionally depends on graphviz package
      import graphviz as gv
  
      src = gv.Source(graph)
      if view:
          # Returns the output file path
          return src.render(filename, view=view)
      else:
          # Attempts to show the graph in IPython notebook
          try:
              __IPYTHON__
          except NameError:
              return src
          else:
              import IPython.display as display
              format = 'svg'
              return display.SVG(data=src.pipe(format))
docs: View the given DOT source.  If view is True, the image is rendered
      and viewed by the default application in the system.  The file path of
      the output is returned.  If view is False, a graphviz.Source object is
      returned.  If view is False and the environment is in a IPython session,
      an IPython image object is returned and can be displayed inline in the
      notebook.
  
      This function requires the graphviz package.
  
      Args
      ----
      - graph [str]: a DOT source code
      - filename [str]: optional.  if given and view is True, this specifies
                        the file path for the rendered output to write to.
      - view [bool]: if True, opens the rendered output file.