人类可读的堆栈跟踪。
项目描述
Pretty Traceback
Python的人类可读堆栈跟踪。
项目/仓库
代码质量/CI
概述
Pretty Traceback将相关内容组合在一起,添加颜色和对齐。所有这些使您更容易看到模式并从噪声中筛选出信号。这种表格格式在宽终端中查看最佳。
换句话说,就是得到这个 😍
而不是这个 🤮
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'
如果您的终端足够宽,则可以保留长路径。
用法
将以下内容添加到您的 __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
更多示例
替代方案
Pretty Traceback 受益于 nir0s 的 backtrace 模块nir0s,但还有许多其他模块(按 GitHub 星标排序)。
- https://github.com/qix-/better-exceptions
- https://github.com/cknd/stackprinter
- https://github.com/onelivesleft/PrettyErrors
- https://github.com/skorokithakis/tbvaccine
- https://github.com/aroberge/friendly-traceback
- https://github.com/HallerPatrick/frosch
- https://github.com/nir0s/backtrace
- https://github.com/staticshock/colored-traceback.py
- https://github.com/chillaranand/ptb
- https://github.com/laurb9/rich-traceback
- https://github.com/willmcgugan/rich#tracebacks
贡献者
姓名 | 角色 | 自 | 至 |
---|---|---|---|
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
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c1f351b9e3fce79fb4343a6509a5f2bad16084356c63fe85d3f6bbb0486dd94a |
|
MD5 | b6657c1d10c87bb51cea3f0f6de7126a |
|
BLAKE2b-256 | f309336a8a63f6e85ff57d1ab87c6aa0179e2e68b34c9e113d7064e63fbbb99c |