跳转到主要内容

一个用于解决Python中糟糕的跟踪信息显示的实用程序,使其更易于阅读。

项目描述

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

TBVaccine是一个实用程序,它以美观的格式打印Python跟踪信息。它会自动突出显示你关心的行,并淡化你不关心的行,并通过着色跟踪信息中的各个元素来使其更容易解析。

以下是截图。这是之前的

misc/before.png

这是之后的

misc/after.png

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

misc/before-vars.png

变成这样

misc/after-vars.png

安装

要安装,请使用 pip

pip install tbvaccine

你完成了!

全局使用

你可以让TBVaccine在你的整个系统中插入自己,并将它的触角伸入所有库中,就像一个可爱、有用的克苏鲁。这样,系统中每个Python跟踪信息都将变得美观。只需设置 TBVACCINE 环境变量为1即可。

例如,对于bash

export TBVACCINE=1

或者fish

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 解释器本身中。

– Stavros

项目详情


下载文件

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

源分布

tbvaccine-0.3.1.tar.gz (7.4 kB 查看散列)

上传时间

构建分布

tbvaccine-0.3.1-py2.py3-none-any.whl (8.2 kB 查看散列)

上传时间 Python 2 Python 3

支持者: