sql.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:tumanov_castleoaks 作者: Roamdev 项目源码 文件源码
def get_stack_calls():
    stack = []
    currentframe = inspect.currentframe()
    if currentframe is None:
        return stack

    try:
        stackframes = inspect.getouterframes(currentframe)
    except IndexError:
        # ???????? ?????? Jinja2
        stackframes = traceback.extract_stack()
        for record in stackframes[2:]:
            filename, lineno, funcname, line = record
            if filename.startswith(BASE_PATTERN) and 'devserver' not in filename:
                filename = filename[len(BASE_PATTERN):]
                caller = '%s (func %r, line %s)' % (filename, funcname, lineno)
                stack.append(caller)
    else:
        for record in stackframes[2:]:
            frame, filename, lineno, funcname, lines, index = record
            if filename in (TEMPLATE_BASE, TEMPLATE_DEBUG):
                # ????? ?? ???????
                node = frame.f_locals.get('node') or frame.f_locals.get('self')
                if isinstance(node, Node):
                    loader = node.source[0]
                    offsets = node.source[1]
                    with open(loader.name, newline='') as source:
                        start = source.read(offsets[0])
                        line_num = start.count('\n') + 1
                        token = source.read(offsets[1] - offsets[0])

                    caller = '%s (node %r, line %s)' % (loader.loadname, token, line_num)
                    stack.append(caller)
                    break
            elif filename.startswith(BASE_PATTERN) and 'devserver' not in filename:
                # ????? ?? ????
                filename = filename[len(BASE_PATTERN):]
                caller = '%s (func %r, line %s)' % (filename, funcname, lineno)
                stack.append(caller)

    return reversed(stack)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号