Extracts the stack from given frame while excluded any symbolized frame.

    :param frame: Frame.
    :type frame: Frame
    :param context: Context to extract.
    :type context: int
    :param exceptionsFrameSymbol: Stack trace frame tag.
    :type exceptionsFrameSymbol: unicode
    :return: Stack.
    :rtype: list

def extract_stack(frame, context=10, exceptionsFrameSymbol=EXCEPTIONS_FRAME_SYMBOL):
    """
    Extracts the stack from given frame while excluded any symbolized frame.

    :param frame: Frame.
    :type frame: Frame
    :param context: Context to extract.
    :type context: int
    :param exceptionsFrameSymbol: Stack trace frame tag.
    :type exceptionsFrameSymbol: unicode
    :return: Stack.
    :rtype: list
    """

    decode = lambda x: unicode(x, Constants.default_codec, Constants.codec_error)

    stack = []

    for frame, file_name, line_number, name, context, index in inspect.getouterframes(frame, context):
        if frame.f_locals.get(exceptionsFrameSymbol):
            continue

        stack.append((frame,
                      decode(file_name),
                      line_number,
                      decode(name),
                      context if context is not None else [],
                      index if index is not None else -1))

    return list(reversed(stack))