Flake8 检查器,用于检查 raises 中的原始字面量。
项目描述
flake8-errmsg
简介
Flake8 检查器,帮助格式化优美的错误消息。检查包括:
- EM101:检查在 Exception 抛出时对字符串字面量的原始使用。
- EM102:检查在 Exception 抛出时对 f-string 字面量的原始使用。
- EM103:检查在 Exception 抛出时对字符串字面量上的 .format 的原始使用。
- EM104:检查内置异常缺少括号。
- EM105:检查内置异常缺少消息。
问题是 Python 将包含 raise 语句的行包含在默认的 traceback 中(以及像 Rich 和 IPython 这样的大多数其他格式化程序)。这意味着用户会得到这样的消息
sub = "Some value"
raise RuntimeError(f"{sub!r} is incorrect")
Traceback (most recent call last):
File "tmp.py", line 2, in <module>
raise RuntimeError(f"{sub!r} is incorrect")
RuntimeError: 'Some value' is incorrect
如果更长或更复杂,对于不习惯阅读回溯的用户来说,重复可能会非常令人困惑。
而如果您始终将值赋给类似于 msg
的变量,那么您将得到
sub = "Some value"
msg = f"{sub!r} is incorrect"
raise RuntimeError(msg)
Traceback (most recent call last):
File "tmp.py", line 3, in <module>
raise RuntimeError(msg)
RuntimeError: 'Some value' is incorrect
现在有一个更简单的回溯,没有双重消息。如果您有长消息,使用 Black 格式化效果也会更好。
提醒:库应该使用自定义错误类生成回溯,而应用程序应该打印出漂亮的错误信息,通常 不 包含回溯,除非发生了意外的情况。应用程序不应该为已知可以由用户触发的错误打印回溯。
选项
有一个选项,--errmsg-max-string-length
,默认值为 0,但可以设置为一个更大的值。检查将忽略长度小于此长度的字符串字面量。此选项也支持在配置模式下。这将仅影响字符串字面量,而不会影响 f-strings。
用法
只需将其添加到您的 .pre-commit-config.yaml
中的 flake8
检查的 additional_dependencies
下。如果您使用 extend-select
,则可能不需要其他配置。
您还可以通过脚本入口点手动运行此检查(不使用 Flake8 的 noqa
过滤)(pipx run flake8-errmsg <files>
) 或模块入口点 (python -m flake8_errmsg <files>
当已安装时)。
常见问题解答
Q: 为什么是 Python 3.10+?
A: 这是一个静态检查工具,面向开发者。开发和静态检查应该在 3.10 上。而且我很懒,并且匹配语句非常适合这种类型的事情。而且 AST 模块在 3.8 时已经改变了。如果您需要在旧版本上运行,请使用 Ruff(其中包含此插件的检查)。
Q: 其他哪些类型的检查是可以接受的?
A: 有助于生成漂亮错误信息的检查。例如,可能需要使用 raise SystemExit(n)
而不是 sys.exit
、exit
等。可能还需要添加一个检查,用于没有设置 stacklevel
(通常为 2)的 warnings.warn
。
项目详情
flake8_errmsg-0.5.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 60a568d52d1610660f471b3f9eb2dc78726762aa15d994ae6875a7f30c378c32 |
|
MD5 | 94f11b803541bfa214d9a7348777f4c5 |
|
BLAKE2b-256 | 55bf1da816ae0d2b318dc0fa3e27b10a1bdde47f3f42851582aac07d5c49dd0d |
flake8_errmsg-0.5.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1b30fb394dfe034e32d6a2a2aaf6f0a8def779b850db71ff79d744efe9a36e36 |
|
MD5 | ad046fded17ce78fa113d7fae1c7468c |
|
BLAKE2b-256 | b116025b03d40c79ddb2bfbc9575f5f975cf4b58c5a2a5515fa10c391ad10b40 |