class_docstr: Generates a dot description of a ssa block
docstr: Append edges connecting parents of op to the op
code: def visit(self, block, op, nodename_prefix=""):
      """
      Append edges connecting parents of op to the op
      """
  
      if op in self.visited_memo:
          return self
  
      label = self.alternate_labeller(op)
      self.visited_memo[op] = 1
  
      if op.name in self.highlights and op.name not in [
          o.name for o in block.outputs
      ]:
          self.result.append(
              '"'
              + nodename_prefix
              + "op: "
              + op.name
              + '"'
              + '[label="'
              + label
              + '",fillcolor=%s,style=filled,fontcolor=%s]'
              % (self.highlights[op.name], "violetred")
          )
      else:
          self.result.append(
              '"'
              + nodename_prefix
              + "op: "
              + op.name
              + '"'
              + '[label="'
              + label
              + '",fontcolor=%s]' % ("violetred")
          )
  
      for input_var in _get_input_vars(op, only_nonconst_vars=True):
          if input_var.op is not None:
              input_name = "op: " + input_var.op.name
          else:
              input_name = input_var.name
  
          edge = (
              '"'
              + nodename_prefix
              + input_name
              + '"'
              + " -> "
              + '"'
              + nodename_prefix
              + "op: "
              + op.name
              + '"'
          )
          self.result.append(edge)
          if input_var.op is not None:
              self.visit(block, input_var.op, nodename_prefix)
          else:
              self.visit_input_var(input_var, nodename_prefix)
  
      return self
  
file_path: coremltools/coremltools/converters/mil/mil/visitors/dot_visitor.py
imports: from ..var import Var
label_desc: Use image node_id 4 for calling the DotVisitor obj's underlying member method code with example usage: obj.visit(block, op, nodename_prefix) and returns: self, self