environment/lib/python2.7/site-packages/nose/inspector.py
def inspect_traceback(tb):
    """Inspect a traceback and its frame, returning source for the expression
    where the exception was raised, with simple variable replacement performed
    and the line on which the exception was raised marked with '>>'
    """
    log.debug('inspect traceback %s', tb)

    # we only want the innermost frame, where the exception was raised
    while tb.tb_next:
        tb = tb.tb_next
        
    frame = tb.tb_frame
    lines, exc_line = tbsource(tb)
        
    # figure out the set of lines to grab.
    inspect_lines, mark_line = find_inspectable_lines(lines, exc_line)
    src = StringIO(textwrap.dedent(''.join(inspect_lines)))
    exp = Expander(frame.f_locals, frame.f_globals)

    while inspect_lines:
        try:
            for tok in tokenize.generate_tokens(src.readline):
                exp(*tok)
        except tokenize.TokenError, e:
            # this can happen if our inspectable region happens to butt up
            # against the end of a construct like a docstring with the closing
            # """ on separate line
            log.debug("Tokenizer error: %s", e)
            inspect_lines.pop(0)
            mark_line -= 1
            src = StringIO(textwrap.dedent(''.join(inspect_lines)))
            exp = Expander(frame.f_locals, frame.f_globals)
            continue
        break
    padded = []
    if exp.expanded_source:
        exp_lines = exp.expanded_source.split('\n')
        ep = 0
        for line in exp_lines:
            if ep == mark_line:
                padded.append('>>  ' + line)
            else:
                padded.append('    ' + line)
            ep += 1
    return '\n'.join(padded)
def inspect_traceback(tb):
    """Inspect a traceback and its frame, returning source for the expression
    where the exception was raised, with simple variable replacement performed
    and the line on which the exception was raised marked with '>>'
    """
    log.debug('inspect traceback %s', tb)

    # we only want the innermost frame, where the exception was raised
    while tb.tb_next:
        tb = tb.tb_next
        
    frame = tb.tb_frame
    lines, exc_line = tbsource(tb)
        
    # figure out the set of lines to grab.
    inspect_lines, mark_line = find_inspectable_lines(lines, exc_line)
    src = StringIO(textwrap.dedent(''.join(inspect_lines)))
    exp = Expander(frame.f_locals, frame.f_globals)

    while inspect_lines:
        try:
            for tok in tokenize.generate_tokens(src.readline):
                exp(*tok)
        except tokenize.TokenError, e:
            # this can happen if our inspectable region happens to butt up
            # against the end of a construct like a docstring with the closing
            # """ on separate line
            log.debug("Tokenizer error: %s", e)
            inspect_lines.pop(0)
            mark_line -= 1
            src = StringIO(textwrap.dedent(''.join(inspect_lines)))
            exp = Expander(frame.f_locals, frame.f_globals)
            continue
        break
    padded = []
    if exp.expanded_source:
        exp_lines = exp.expanded_source.split('\n')
        ep = 0
        for line in exp_lines:
            if ep == mark_line:
                padded.append('>>  ' + line)
            else:
                padded.append('    ' + line)
            ep += 1
    return '\n'.join(padded)
def inspect_traceback ( tb ) : log . debug ( 'inspect traceback %s' , tb ) # we only want the innermost frame, where the exception was raised while tb . tb_next : tb = tb . tb_next frame = tb . tb_frame lines , exc_line = tbsource ( tb ) # figure out the set of lines to grab. inspect_lines , mark_line = find_inspectable_lines ( lines , exc_line ) src = StringIO ( textwrap . dedent ( '' . join ( inspect_lines ) ) ) exp = Expander ( frame . f_locals , frame . f_globals ) while inspect_lines : try : for tok in tokenize . generate_tokens ( src . readline ) : exp ( * tok ) except tokenize . TokenError , e : # this can happen if our inspectable region happens to butt up # against the end of a construct like a docstring with the closing # """ on separate line log . debug ( "Tokenizer error: %s" , e ) inspect_lines . pop ( 0 ) mark_line -= 1 src = StringIO ( textwrap . dedent ( '' . join ( inspect_lines ) ) ) exp = Expander ( frame . f_locals , frame . f_globals ) continue break padded = [ ] if exp . expanded_source : exp_lines = exp . expanded_source . split ( '\n' ) ep = 0 for line in exp_lines : if ep == mark_line : padded . append ( '>>  ' + line ) else : padded . append ( '    ' + line ) ep += 1 return '\n' . join ( padded )
Inspect a traceback and its frame, returning source for the expression
    where the exception was raised, with simple variable replacement performed
    and the line on which the exception was raised marked with '>>'
Inspect a traceback and its frame returning source for the expression where the exception was raised with simple variable replacement performed and the line on which the exception was raised marked with >>