(klass, frame_gen, *, limit=None, lookup_lines=True,
            capture_locals=False)
return result
Create a StackSummary from a traceback or stack object.

        :param frame_gen: A generator that yields (frame, lineno) tuples to
            include in the stack.
        :param limit: None to include all frames or the number of frames to
            include.
        :param lookup_lines: If True, lookup lines for each frame immediately,
            otherwise lookup is deferred until the frame is rendered.
        :param capture_locals: If True, the local variables from each frame will
            be captured as object representations into the FrameSummary.
Create a StackSummary from a traceback or stack object.
Create a StackSummary from a traceback or stack object .
def extract(klass, frame_gen, *, limit=None, lookup_lines=True,
            capture_locals=False):
        """Create a StackSummary from a traceback or stack object.

        :param frame_gen: A generator that yields (frame, lineno) tuples to
            include in the stack.
        :param limit: None to include all frames or the number of frames to
            include.
        :param lookup_lines: If True, lookup lines for each frame immediately,
            otherwise lookup is deferred until the frame is rendered.
        :param capture_locals: If True, the local variables from each frame will
            be captured as object representations into the FrameSummary.
        """
        if limit is None:
            limit = getattr(sys, 'tracebacklimit', None)
            if limit is not None and limit < 0:
                limit = 0
        if limit is not None:
            if limit >= 0:
                frame_gen = itertools.islice(frame_gen, limit)
            else:
                frame_gen = collections.deque(frame_gen, maxlen=-limit)

        result = klass()
        fnames = set()
        for f, lineno in frame_gen:
            co = f.f_code
            filename = co.co_filename
            name = co.co_name

            fnames.add(filename)
            linecache.lazycache(filename, f.f_globals)
            # Must defer line lookups until we have called checkcache.
            if capture_locals:
                f_locals = f.f_locals
            else:
                f_locals = None
            result.append(FrameSummary(
                filename, lineno, name, lookup_line=False, locals=f_locals))
        for filename in fnames:
            linecache.checkcache(filename)
        # If immediate lookup was desired, trigger lookups now.
        if lookup_lines:
            for f in result:
                f.line
        return result
def extract ( klass , frame_gen , * , limit = None , lookup_lines = True , capture_locals = False ) : if limit is None : limit = getattr ( sys , 'tracebacklimit' , None ) if limit is not None and limit < 0 : limit = 0 if limit is not None : if limit >= 0 : frame_gen = itertools . islice ( frame_gen , limit ) else : frame_gen = collections . deque ( frame_gen , maxlen = - limit ) result = klass ( ) fnames = set ( ) for f , lineno in frame_gen : co = f . f_code filename = co . co_filename name = co . co_name fnames . add ( filename ) linecache . lazycache ( filename , f . f_globals ) # Must defer line lookups until we have called checkcache. if capture_locals : f_locals = f . f_locals else : f_locals = None result . append ( FrameSummary ( filename , lineno , name , lookup_line = False , locals = f_locals ) ) for filename in fnames : linecache . checkcache ( filename ) # If immediate lookup was desired, trigger lookups now. if lookup_lines : for f in result : f . line return result