跳转到主要内容

人类可读的堆栈跟踪。

项目描述

Pretty Traceback

Python的人类可读堆栈跟踪。

项目/仓库

MIT License Supported Python Versions CalVer 2024.1021 PyPI Version PyPI Downloads

代码质量/CI

GitHub Build Status GitLab Build Status Type Checked with mypy Code Coverage Code Style: sjfmt

概述

Pretty Traceback将相关内容组合在一起,添加颜色和对齐。所有这些使您更容易看到模式并从噪声中筛选出信号。这种表格格式在宽终端中查看最佳。

换句话说,就是得到这个 😍

logo

而不是这个 🤮

Traceback (most recent call last):
  File "test/test_formatting.py", line 199, in <module>
    main()
  File "test/test_formatting.py", line 190, in main
    run_pingpong()
  File "test/test_formatting.py", line 161, in run_pingpong
    sched3.run()
  File "/home/mbarkhau/miniconda3/envs/pretty-traceback_py38/lib/python3.8/sched.py", line 151, in run
    action(*argument, **kwargs)
  File "/home/mbarkhau/miniconda3/envs/pretty-traceback_py38/lib/python3.8/sched.py", line 151, in run
    action(*argument, **kwargs)
  File "/home/mbarkhau/miniconda3/envs/pretty-traceback_py38/lib/python3.8/sched.py", line 151, in run
    action(*argument, **kwargs)
  File "test/test_formatting.py", line 151, in _ping
    _pong(depth + 1)
  File "test/test_formatting.py", line 129, in _pong
    _ping(depth + 1)
  File "test/test_formatting.py", line 136, in _ping
    sp.check_output(["command_that", "doesnt", "exist"])
  File "/home/mbarkhau/miniconda3/envs/pretty-traceback_py38/lib/python3.8/subprocess.py", line 411, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/home/mbarkhau/miniconda3/envs/pretty-traceback_py38/lib/python3.8/subprocess.py", line 489, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/home/mbarkhau/miniconda3/envs/pretty-traceback_py38/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/home/mbarkhau/miniconda3/envs/pretty-traceback_py38/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'command_that'

如果您的终端足够宽,则可以保留长路径。

logo

用法

将以下内容添加到您的 __main__.py 或等效的入口模块中。

try:
    import pretty_traceback
    pretty_traceback.install()
except ImportError:
    pass    # no need to fail because of missing dev dependency

请勿将此代码添加到例如 __init__.py 或任何其他用户可能导入的模块中。他们可能不希望您修改他们的堆栈跟踪打印方式。

如果您确实强烈希望在其他可能被导入的代码中导入 pretty_traceback,请考虑使用 envvar 参数,这将使安装函数实际上成为一个无操作,除非您设置 ENABLE_PRETTY_TRACEBACK=1

try:
    import pretty_traceback
    pretty_traceback.install(envvar='ENABLE_PRETTY_TRACEBACK')
except ImportError:
    pass    # no need to fail because of missing dev dependency

请注意,只有当现有钩子是默认钩子时,才会安装钩子。在调用 pretty_traceback.install 之前安装的所有现有钩子都将保持原位。

LoggingFormatter

还提供了一个 logging.Formatter 子类(例如,用于与 flask 集成)。

import os
from flask.logging import default_handler

try:
    if os.getenv('FLASK_DEBUG') == "1":
        import pretty_traceback
        default_handler.setFormatter(pretty_traceback.LoggingFormatter())
except ImportError:
    pass    # no need to fail because of missing dev dependency

更多示例

logo

logo

logo

替代方案

Pretty Traceback 受益于 nir0s 的 backtrace 模块nir0s,但还有许多其他模块(按 GitHub 星标排序)。

贡献者

姓名 角色
Manuel Barkhau (mbarkhau@gmail.com) 作者/维护者 2020-08 -

有关 https://github.com/mbarkhau/pretty-traceback 的变更日志

2024.1021

  • 更新:避免在相对路径前添加斜杠。 gh#13

2023.1020

  • 修复:防止在非 TTY 环境中出错 gh#9

2023.1019

  • 更新:将行号添加到文件名中,以便编辑器/IDE 可以解析。 gh#8

2022.1018

  • 添加输出末尾的换行符。请参阅 gh#3

2021.1017

  • 修复宽模式下的高亮显示

2020.1016

  • 缩短 RecursionError 的跟踪记录

2020.1012

  • 改进别名选择

2020.1011

  • 修复 github #1:处理 ./script.py 的无效路径

2020.1010

  • 修复 gitlab #5:仅显示实际使用的别名
  • 修复 gitlab #5:在窄终端上更好地对齐

2020.1009

  • 修复 gitlab #3:异常的上下文为 None 的角落情况
  • 修复 gitlab #2:改进溢出行时的格式化

2020.1008

  • 添加 pretty_traceback.LoggingFormatter

2020.1006

  • 添加宽模式。

2020.1005

  • 更新格式化以更好地处理递归调用。
  • 添加测试

2020.1001

  • 初始发布

项目详情


下载文件

下载适合您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

pretty-traceback-2024.1021.tar.gz (18.1 kB 查看哈希值)

上传时间

构建分布

pretty_traceback-2024.1021-py2.py3-none-any.whl (12.3 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持