史上最不妥协的Python代码格式化工具!
项目描述
deTHkLOK
我们在这里制作咖啡金属。我们将制作一切金属。比最黑暗的黑色还要黑,无限地黑。
- Nathan Explosion, Dethklok
史上最不妥协的Python代码格式化工具!
deTHkLOK在底层使用了一些代码格式化工具
- astunparse -- 从CPython源代码中提取并改进了 unparse.py。此脚本从AST获取并将其格式化为代码,而不知道代码之前的任何信息。从Python 3.9开始,它是标准库的一部分: ast.unparse.
- autopep8 -- 一个强大且成熟的代码格式化工具。我们运行它来使生成的代码更美观一些。
安装
支持的Python版本受astunparse支持的限制。目前,它是Python <=3.7。
python3 -m pip install --user dethklok
使用
python3 -m dethklok format **/*.py
常见问题解答
问:它与flake8兼容吗?
几乎兼容。该工具将一些语句输出为单行。最明显的例子是文档字符串。我尝试过的所有自动格式化工具都无法使其再次成为多行。
问:我应该何时使用它?
简短答案是“永远不”。这是一个实验性项目,表明不考虑初始格式化而生成相同的抽象语法树(AST)并不能使代码易于阅读。虽然我是一个平庸的开发者[1],但我的代码格式化仍有意图,并使代码更易读:我分组元素,添加注释,对齐列,对复杂算术操作的某些部分进行括号化。虽然代码的某些部分可以轻松地进行自动格式化而不会破坏它,但某些部分则不应进行格式化。
问:这是在开玩笑说 black 吗?
有点。Black的目标是重新格式化一切,对每个Python代码部分都有自己的看法。我钦佩这个目标,并真心希望这个项目有一天能够成长并变得成熟。然而,目前它[2]还不够稳定,试图修复它目前还无法修复的问题。
在其他语言中也有一些具有类似哲学的格式化工具(如go format
、cargo format
、elixir format
),它们非常出色。不同之处在于,这些语言的格式化工具在设计时就已经考虑在内,并且每个新功能都会仔细地与格式化工具集成,以确保结果既美观又符合惯例。Python则不同。
问:我应该使用什么替代品。
幸运的是,有很多酷炫的格式化工具。它们只完成一个小任务,但处理得非常好。以下是一些值得注意的例子:
- autopep8 只修复 flake8 报告的代码部分。
- isort 对导入进行分组和排序。
- add-trailing-comma 添加尾随逗号并格式化长函数调用语句。
- unify 根据您喜欢的样式将单引号改为双引号,或反之。
在 awesome-python-code-formatters 中查看完整列表。
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装软件包 的信息。
源代码分发
构建分发
dethklok-1.0.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d261656839a44535c5deac911df95c972a59f63340d27b0e978696857479ae9f |
|
MD5 | e5ab42e334dffc0a9a9e18b94b12b292 |
|
BLAKE2b-256 | 3dd04ff7ced7a05094c50abbbed38dfd093dae88bf7f39d01ef4056c9f9aa73e |
dethklok-1.0.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4a09306030e32aa175d95199984cfcff36a4ce6130f49404965dc819a27e738a |
|
MD5 | cca19ddc57d2c9455af002232a870de6 |
|
BLAKE2b-256 | 3fb778dd447d5b9116b0549789a972151c2451e9194d78efc63b3d192ebadaa0 |