code: def render(self, filename, cmd='dot', format='ps', unflatten=False):
          
          if self.objects == []:
              return False
  
          data = self._get_graphviz_data()
  
          options = ('-Nfontsize=10',
                     '-Efontsize=10',
                     '-Nstyle=filled',
                     '-Nfillcolor=#E5EDB8',
                     '-Ncolor=#CCCCCC')
          cmdline = (cmd, '-T%s' % format, '-o', filename) + options
  
          if unflatten:
              p1 = Popen(('unflatten', '-l7'), stdin=PIPE, stdout=PIPE,
                  **popen_flags)
              p2 = Popen(cmdline, stdin=p1.stdout, **popen_flags)
              p1.communicate(encode4pipe(data))
              p2.communicate()
              return p2.returncode == 0
          else:
              p = Popen(cmdline, stdin=PIPE, **popen_flags)
              p.communicate(encode4pipe(data))
              return p.returncode == 0
docs: Render the graph to `filename` using graphviz. The graphviz invocation
          command may be overriden by specifying `cmd`. The `format` may be any
          specifier recognized by the graph renderer ('-Txxx' command).  The graph
          can be preprocessed by the *unflatten* tool if the `unflatten` parameter
          is True.  If there are no objects to illustrate, the method does not
          invoke graphviz and returns False. If the renderer returns successfully
          (return code 0), True is returned.
  
          An `OSError` is raised if the graphviz tool cannot be found.