`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 支持一些自动修复,具有广泛语言的模式。这包括各种安全和样式检查,建议手动检查结果。
变更日志
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。