'@param count true iff it should count number of times each
line is executed
@param trace true iff it should print out each line that is
being counted
@param countfuncs true iff it should just output a list of
(filename, modulename, funcname,) for functions
that were called at least once;  This overrides
`count\' and `trace\'
@param ignoremods a list of the names of modules to ignore
@param ignoredirs a list of the names of directories to ignore
all of the (recursive) contents of
@param infile file from which to read stored counts to be
added into the results
@param outfile file in which to write the results
@param timing true iff timing information be displayed'

def __init__(self, count=1, trace=1, countfuncs=0, countcallers=0, ignoremods=(), ignoredirs=(), infile=None, outfile=None, timing=False):

    self.infile = infile
    self.outfile = outfile
    self.ignore = Ignore(ignoremods, ignoredirs)
    self.counts = {}
    self.blabbed = {}
    self.pathtobasename = {}
    self.donothing = 0
    self.trace = trace
    self._calledfuncs = {}
    self._callers = {}
    self._caller_cache = {}
    self.start_time = None
    if timing:
        self.start_time = time.time()
    if countcallers:
        self.globaltrace = self.globaltrace_trackcallers
    elif countfuncs:
        self.globaltrace = self.globaltrace_countfuncs
    elif (trace and count):
        self.globaltrace = self.globaltrace_lt
        self.localtrace = self.localtrace_trace_and_count
    elif trace:
        self.globaltrace = self.globaltrace_lt
        self.localtrace = self.localtrace_trace
    elif count:
        self.globaltrace = self.globaltrace_lt
        self.localtrace = self.localtrace_count
    else:
        self.donothing = 1
