virtualEnvironment/lib/python2.7/site-packages/coverage/collector.py
def _trace(self, frame, event, arg_unused):
        """The trace function passed to sys.settrace."""

        if self.stopped:
            return

        if 0:
            sys.stderr.write("trace event: %s %r @%d\n" % (
                event, frame.f_code.co_filename, frame.f_lineno
            ))

        if self.last_exc_back:
            if frame == self.last_exc_back:
                # Someone forgot a return event.
                if self.arcs and self.cur_file_data:
                    pair = (self.last_line, -self.last_exc_firstlineno)
                    self.cur_file_data[pair] = None
                self.cur_file_data, self.last_line = self.data_stack.pop()
            self.last_exc_back = None

        if event == 'call':
            # Entering a new function context.  Decide if we should trace
            # in this file.
            self.data_stack.append((self.cur_file_data, self.last_line))
            filename = frame.f_code.co_filename
            if filename not in self.should_trace_cache:
                tracename = self.should_trace(filename, frame)
                self.should_trace_cache[filename] = tracename
            else:
                tracename = self.should_trace_cache[filename]
            #print("called, stack is %d deep, tracename is %r" % (
            #               len(self.data_stack), tracename))
            if tracename:
                if tracename not in self.data:
                    self.data[tracename] = {}
                self.cur_file_data = self.data[tracename]
            else:
                self.cur_file_data = None
            # Set the last_line to -1 because the next arc will be entering a
            # code block, indicated by (-1, n).
            self.last_line = -1
        elif event == 'line':
            # Record an executed line.
            if self.cur_file_data is not None:
                if self.arcs:
                    #print("lin", self.last_line, frame.f_lineno)
                    self.cur_file_data[(self.last_line, frame.f_lineno)] = None
                else:
                    #print("lin", frame.f_lineno)
                    self.cur_file_data[frame.f_lineno] = None
            self.last_line = frame.f_lineno
        elif event == 'return':
            if self.arcs and self.cur_file_data:
                first = frame.f_code.co_firstlineno
                self.cur_file_data[(self.last_line, -first)] = None
            # Leaving this function, pop the filename stack.
            self.cur_file_data, self.last_line = self.data_stack.pop()
            #print("returned, stack is %d deep" % (len(self.data_stack)))
        elif event == 'exception':
            #print("exc", self.last_line, frame.f_lineno)
            self.last_exc_back = frame.f_back
            self.last_exc_firstlineno = frame.f_code.co_firstlineno
        return self._trace
def _trace(self, frame, event, arg_unused):
        if self.stopped:
            return

        if 0:
            sys.stderr.write("trace event: %s %r @%d\n" % (
                event, frame.f_code.co_filename, frame.f_lineno
            ))

        if self.last_exc_back:
            if frame == self.last_exc_back:
                # Someone forgot a return event.
                if self.arcs and self.cur_file_data:
                    pair = (self.last_line, -self.last_exc_firstlineno)
                    self.cur_file_data[pair] = None
                self.cur_file_data, self.last_line = self.data_stack.pop()
            self.last_exc_back = None

        if event == 'call':
            # Entering a new function context.  Decide if we should trace
            # in this file.
            self.data_stack.append((self.cur_file_data, self.last_line))
            filename = frame.f_code.co_filename
            if filename not in self.should_trace_cache:
                tracename = self.should_trace(filename, frame)
                self.should_trace_cache[filename] = tracename
            else:
                tracename = self.should_trace_cache[filename]
            #print("called, stack is %d deep, tracename is %r" % (
            #               len(self.data_stack), tracename))
            if tracename:
                if tracename not in self.data:
                    self.data[tracename] = {}
                self.cur_file_data = self.data[tracename]
            else:
                self.cur_file_data = None
            # Set the last_line to -1 because the next arc will be entering a
            # code block, indicated by (-1, n).
            self.last_line = -1
        elif event == 'line':
            # Record an executed line.
            if self.cur_file_data is not None:
                if self.arcs:
                    #print("lin", self.last_line, frame.f_lineno)
                    self.cur_file_data[(self.last_line, frame.f_lineno)] = None
                else:
                    #print("lin", frame.f_lineno)
                    self.cur_file_data[frame.f_lineno] = None
            self.last_line = frame.f_lineno
        elif event == 'return':
            if self.arcs and self.cur_file_data:
                first = frame.f_code.co_firstlineno
                self.cur_file_data[(self.last_line, -first)] = None
            # Leaving this function, pop the filename stack.
            self.cur_file_data, self.last_line = self.data_stack.pop()
            #print("returned, stack is %d deep" % (len(self.data_stack)))
        elif event == 'exception':
            #print("exc", self.last_line, frame.f_lineno)
            self.last_exc_back = frame.f_back
            self.last_exc_firstlineno = frame.f_code.co_firstlineno
        return self._trace
def _trace ( self , frame , event , arg_unused ) : if self . stopped : return if 0 : sys . stderr . write ( "trace event: %s %r @%d\n" % ( event , frame . f_code . co_filename , frame . f_lineno ) ) if self . last_exc_back : if frame == self . last_exc_back : # Someone forgot a return event. if self . arcs and self . cur_file_data : pair = ( self . last_line , - self . last_exc_firstlineno ) self . cur_file_data [ pair ] = None self . cur_file_data , self . last_line = self . data_stack . pop ( ) self . last_exc_back = None if event == 'call' : # Entering a new function context.  Decide if we should trace # in this file. self . data_stack . append ( ( self . cur_file_data , self . last_line ) ) filename = frame . f_code . co_filename if filename not in self . should_trace_cache : tracename = self . should_trace ( filename , frame ) self . should_trace_cache [ filename ] = tracename else : tracename = self . should_trace_cache [ filename ] #print("called, stack is %d deep, tracename is %r" % ( #               len(self.data_stack), tracename)) if tracename : if tracename not in self . data : self . data [ tracename ] = { } self . cur_file_data = self . data [ tracename ] else : self . cur_file_data = None # Set the last_line to -1 because the next arc will be entering a # code block, indicated by (-1, n). self . last_line = - 1 elif event == 'line' : # Record an executed line. if self . cur_file_data is not None : if self . arcs : #print("lin", self.last_line, frame.f_lineno) self . cur_file_data [ ( self . last_line , frame . f_lineno ) ] = None else : #print("lin", frame.f_lineno) self . cur_file_data [ frame . f_lineno ] = None self . last_line = frame . f_lineno elif event == 'return' : if self . arcs and self . cur_file_data : first = frame . f_code . co_firstlineno self . cur_file_data [ ( self . last_line , - first ) ] = None # Leaving this function, pop the filename stack. self . cur_file_data , self . last_line = self . data_stack . pop ( ) #print("returned, stack is %d deep" % (len(self.data_stack))) elif event == 'exception' : #print("exc", self.last_line, frame.f_lineno) self . last_exc_back = frame . f_back self . last_exc_firstlineno = frame . f_code . co_firstlineno return self . _trace
The trace function passed to sys.settrace.
The trace function passed to sys . settrace .