Skip to main content

一个修复 Python 中可怕的回溯显示的实用程序,使它们更具可读性。

项目描述

https://www.codeshelter.co/static/badges/badge-flat.svg https://img.shields.io/badge/code%20style-black-000000.svg

TBVaccine 是一个漂亮地打印 Python 回溯的实用程序。它会自动突出显示您关心的行并淡化您不关心的行,并为回溯中的各种元素着色以使其更易于解析。

这是一些屏幕截图。这是之前的:

杂项/之前.png

这是之后:

杂项/after.png

如果在代码中添加钩子或调用 TBVaccine,它还可以打印每个堆栈帧中的所有变量。也就是说,它变成了这样:

杂项/之前-vars.png

进入这个:

杂项/after-vars.png

安装

要安装,请使用pip

pip install tbvaccine

你完成了!

全球使用

你可以让 TBVaccine 将自己全部插入到你的系统中,并将它的触手插入你所有的库中,就像一个可爱、有用的 Cthulhu 一样。这样,您系统中的每一个 Python 回溯都会很漂亮。只需将TBVACCINE环境变量设置为 1,就完成了。

例如对于 bash:

export TBVACCINE=1

或鱼:

set -x TBVACCINE=1

用作命令行实用程序

TBVaccine 可以通过多种方式从命令行使用:

python -m tbvaccine myscript.py

或者只是从您要观看的节目中将 STDERR 导入其中:

./myscript.py 2>&1 | tbvaccine

现在所有的回溯都会很漂亮!

用作 Python 库

有多种方法可以将 TBVaccine 用作 Python 库。

像这样初始化它:

from tbvaccine import TBVaccine
tbv = TBVaccine(
    code_dir="/my/code/dir",
    isolate=True
)

code_dir标记我们编码的目录。该目录下出现在回溯中的文件将突出显示。如果未通过,将使用os.getcwd()返回的当前目录。

如果isolateFalse,所有行都被着色,并且code_dir被忽略。

如果show_varsFalse,变量将不会在每个堆栈帧中打印。

要在except块中使用它:

from tbvaccine import TBVaccine
try:
    some_stuff()
except:
    print(TBVaccine().format_exc())

要使其成为打印回溯的默认方式,请使用add_hook()(它也接受TBVaccine类所做的任何参数):

import tbvaccine
tbvaccine.add_hook(isolate=False)

1 / 0

砰!即时漂亮的追溯。

日志集成

您可以将 TBVaccine 与日志记录集成,如下所示:

class TbVaccineFormatter(logging.Formatter):
    def  formatException(self, exc_info):
        return TBVaccine(isolate=True).format_exc()

sh = logging.StreamHandler()
sh.setFormatter(TbVaccineFormatter('[%(levelname)s] %(asctime)s : %(message)s', '%Y-%m-%d %H:%M:%S'))
logger.addHandler(sh)

结语

这个库还是很新的,如果有什么不能按预期工作,请贡献补丁,也请告诉你的朋友!希望有一天它会在 Python 解释器本身中实现。

– 斯塔夫罗斯

下载文件

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

源分布

tbvaccine-0.3.1.tar.gz (7.4 kB 查看哈希

已上传 source

内置分布

tbvaccine-0.3.1-py2.py3-none-any.whl (8.2 kB 查看哈希

已上传 3 6