跳转到主要内容

`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-codemoddjango-upgrade

ssort 项目 对 Python 模块的内部内容进行排序,以便将语句放置在其依赖项之后,以便更容易地进行导航和设计的一致性。

Semgrep 支持一些自动修复,具有广泛语言的模式。这包括各种安全和样式检查,建议手动检查结果。

变更日志

补丁说明可以在 CHANGELOG.md 中找到

项目详情


发布历史 发布通知 | RSS 源

下载文件

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

源分布

shed-2024.3.1.tar.gz (39.5 kB 查看哈希)

上传时间

构建分布

shed-2024.3.1-py3-none-any.whl (36.3 kB 查看哈希)

上传时间 Python 3

支持