parameters: (self, show_missing=True, summary=False, coverdir=None)
docstring: @param coverdir
function: def write_results(self, show_missing=True, summary=False, coverdir=None):
          """
          @param coverdir
          """
          if self.calledfuncs:
              print
              print "functions called:"
              calls = self.calledfuncs.keys()
              calls.sort()
              for filename, modulename, funcname in calls:
                  print ("filename: %s, modulename: %s, funcname: %s"
                         % (filename, modulename, funcname))
  
          if self.callers:
              print
              print "calling relationships:"
              calls = self.callers.keys()
              calls.sort()
              lastfile = lastcfile = ""
              for ((pfile, pmod, pfunc), (cfile, cmod, cfunc)) in calls:
                  if pfile != lastfile:
                      print
                      print "***", pfile, "***"
                      lastfile = pfile
                      lastcfile = ""
                  if cfile != pfile and lastcfile != cfile:
                      print "  -->", cfile
                      lastcfile = cfile
                  print "    %s.%s -> %s.%s" % (pmod, pfunc, cmod, cfunc)
  
          # turn the counts data ("(filename, lineno) = count") into something
          # accessible on a per-file basis
          per_file = {}
          for filename, lineno in self.counts.keys():
              lines_hit = per_file[filename] = per_file.get(filename, {})
              lines_hit[lineno] = self.counts[(filename, lineno)]
  
          # accumulate summary info, if needed
          sums = {}
  
          for filename, count in per_file.iteritems():
              # skip some "files" we don't care about...
              if filename == "<string>":
                  continue
              if filename.startswith("<doctest "):
                  continue
  
              if filename.endswith((".pyc", ".pyo")):
                  filename = filename[:-1]
  
              if coverdir is None:
                  dir = os.path.dirname(os.path.abspath(filename))
                  modulename = modname(filename)
              else:
                  dir = coverdir
                  if not os.path.exists(dir):
                      os.makedirs(dir)
                  modulename = fullmodname(filename)
  
              # If desired, get a list of the line numbers which represent
              # executable content (returned as a dict for better lookup speed)
              if show_missing:
                  lnotab = find_executable_linenos(filename)
              else:
                  lnotab = {}
  
              source = linecache.getlines(filename)
              coverpath = os.path.join(dir, modulename + ".cover")
              n_hits, n_lines = self.write_results_file(coverpath, source,
                                                        lnotab, count)
  
              if summary and n_lines:
                  percent = 100 * n_hits // n_lines
                  sums[modulename] = n_lines, percent, modulename, filename
  
          if summary and sums:
              mods = sums.keys()
              mods.sort()
              print "lines   cov%   module   (path)"
              for m in mods:
                  n_lines, percent, modulename, filename = sums[m]
                  print "%5d   %3d%%   %s   (%s)" % sums[m]
  
          if self.outfile:
              # try and store counts and module info into self.outfile
              try:
                  pickle.dump((self.counts, self.calledfuncs, self.callers),
                              open(self.outfile, 'wb'), 1)
              except IOError, err:
                  print >> sys.stderr, "Can't save counts files because %s" % err
function_tokens: def write_results ( self , show_missing = True , summary = False , coverdir = None ) : if self . calledfuncs : print print "functions called:" calls = self . calledfuncs . keys ( ) calls . sort ( ) for filename , modulename , funcname in calls : print ( "filename: %s, modulename: %s, funcname: %s" % ( filename , modulename , funcname ) ) if self . callers : print print "calling relationships:" calls = self . callers . keys ( ) calls . sort ( ) lastfile = lastcfile = "" for ( ( pfile , pmod , pfunc ) , ( cfile , cmod , cfunc ) ) in calls : if pfile != lastfile : print print "***" , pfile , "***" lastfile = pfile lastcfile = "" if cfile != pfile and lastcfile != cfile : print "  -->" , cfile lastcfile = cfile print "    %s.%s -> %s.%s" % ( pmod , pfunc , cmod , cfunc ) # turn the counts data ("(filename, lineno) = count") into something # accessible on a per-file basis per_file = { } for filename , lineno in self . counts . keys ( ) : lines_hit = per_file [ filename ] = per_file . get ( filename , { } ) lines_hit [ lineno ] = self . counts [ ( filename , lineno ) ] # accumulate summary info, if needed sums = { } for filename , count in per_file . iteritems ( ) : # skip some "files" we don't care about... if filename == "<string>" : continue if filename . startswith ( "<doctest " ) : continue if filename . endswith ( ( ".pyc" , ".pyo" ) ) : filename = filename [ : - 1 ] if coverdir is None : dir = os . path . dirname ( os . path . abspath ( filename ) ) modulename = modname ( filename ) else : dir = coverdir if not os . path . exists ( dir ) : os . makedirs ( dir ) modulename = fullmodname ( filename ) # If desired, get a list of the line numbers which represent # executable content (returned as a dict for better lookup speed) if show_missing : lnotab = find_executable_linenos ( filename ) else : lnotab = { } source = linecache . getlines ( filename ) coverpath = os . path . join ( dir , modulename + ".cover" ) n_hits , n_lines = self . write_results_file ( coverpath , source , lnotab , count ) if summary and n_lines : percent = 100 * n_hits // n_lines sums [ modulename ] = n_lines , percent , modulename , filename if summary and sums : mods = sums . keys ( ) mods . sort ( ) print "lines   cov%   module   (path)" for m in mods : n_lines , percent , modulename , filename = sums [ m ] print "%5d   %3d%%   %s   (%s)" % sums [ m ] if self . outfile : # try and store counts and module info into self.outfile try : pickle . dump ( ( self . counts , self . calledfuncs , self . callers ) , open ( self . outfile , 'wb' ) , 1 ) except IOError , err : print >> sys . stderr , "Can't save counts files because %s" % err