`shed`使Python代码标准化。
项目描述
shed
shed
使Python代码标准化。丢弃你的遗留代码,停止无谓的争论,继续前进。Black++
它做什么?
shed
是一个极富见解的自动格式化工具。它完全是关于 约定优于配置,旨在成为一个单一的、富有见解的工具,可以完全标准化我的代码 - 格式化、导入、更新以及我可能自动化的每个其他修复。
没有任何配置选项,但如果默认设置不适合你,那也行 - 你仍然可以直接使用底层工具并获得大部分相同的效果... 但你必须自己进行配置。
shed
必须在一个git仓库中运行以自动检测要格式化的文件,或者明确在命令行中传递要格式化的文件列表。
功能
shed
...
- 运行
ruff
,以删除未使用的导入和变量,升级代码,排序导入等。 - 运行
black
,自动检测的最小版本 >= py38 - 格式化文档字符串、Markdown和reStructuredText文档中的代码块(基于
blacken-docs
)。 - 如果使用
shed --refactor
,还将运行com2ann
和使用libcst
的自定义重构逻辑。有关 CODEMODS.md 中的代码重构的文档,请参阅文档。
版本检测逻辑由 black
提供。因为 shed
支持与上游相同的 Python 版本,它假定最小版本为 Python 3.8。
如果在 Git 仓库中运行 shed
,则假定根目录的名称为一级导入。也会自动检测 src
布局 包,即任何路径中的 foo
,例如 .../src/foo/__init__.py
。
Jupyter Notebook 支持
我们建议使用 jupytext
将您的笔记本保存为 .py
或 .md
文件,在这种情况下,shed
会原生支持它们。对于快速且简单的流程,您可以使用 nbqa shed notebook.ipynb
- nbqa
对任何代码检查器或格式化程序都有效。
在您的编辑器中使用 shed
我们建议在您的编辑器中使用 black
而不是 shed
,因为 black
提供了我们的核心格式化逻辑,而 shed
的额外智能在您积极编辑代码时可能会产生反效果 - 例如,在添加导入后立即删除“未使用”的导入!
然后,在您完成编辑后,可以从命令行、pre-commit
钩子和您的 CI 系统运行 shed
。
与 pre-commit 一起使用 shed
如果您使用 pre-commit,可以通过将以下内容添加到您的 .pre-commit-config.yaml
来与 Shed 一起使用:
minimum_pre_commit_version: '2.9.0'
repos:
- repo: https://github.com/Zac-HD/shed
rev: 2024.3.1
hooks:
- id: shed
# args: [--refactor, --py311-plus]
types_or: [python, pyi, markdown, rst]
对于大型项目,这通常要快得多,因为 pre-commit
可以避免在未更改的文件上运行 shed
。
另请参阅
shed
继承了 pyupgrade
在转换字符串格式化代码方面的谨慎方法。如果您需要一个更激进的重构工具,并且不介意检查破坏性更改,请查看 flynt
。
有关 Django 升级,请参阅 django-codemod
或 django-upgrade
。
ssort
项目 对 Python 模块的内部内容进行排序,以便将语句放置在其依赖项之后,以便更容易地进行导航和设计的一致性。
Semgrep
支持一些自动修复,具有广泛语言的模式。这包括各种安全和样式检查,建议手动检查结果。
变更日志
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。