跳转到主要内容

史上最不妥协的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 formatcargo formatelixir format),它们非常出色。不同之处在于,这些语言的格式化工具在设计时就已经考虑在内,并且每个新功能都会仔细地与格式化工具集成,以确保结果既美观又符合惯例。Python则不同。

问:我应该使用什么替代品。

幸运的是,有很多酷炫的格式化工具。它们只完成一个小任务,但处理得非常好。以下是一些值得注意的例子:

  • autopep8 只修复 flake8 报告的代码部分。
  • isort 对导入进行分组和排序。
  • add-trailing-comma 添加尾随逗号并格式化长函数调用语句。
  • unify 根据您喜欢的样式将单引号改为双引号,或反之。

awesome-python-code-formatters 中查看完整列表。

项目详情


下载文件

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

源代码分发

dethklok-1.0.0.tar.gz (4.6 kB 查看哈希)

上传时间 源代码

构建分发

dethklok-1.0.0-py3-none-any.whl (5.2 kB 查看哈希)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面