跳转到主要内容

使用black和µsort进行安全、原子化格式化

项目描述

µfmt

使用blackµsort进行安全、原子化格式化

version documentation changelog license vscode extension

µfmt是一个基于blackµsort的Python安全、原子化代码格式化工具

Black通过生成尽可能小的差异来加速代码审查。黑化代码在阅读的项目中看起来相同。

μsort是一个安全、最小化导入排序器。其主要目标是不要对代码进行“危险”的更改,并且不要对代码风格进行更改。

µfmt首先使用µsort然后使用black对内存中的文件进行格式化,最后将任何更改写回到磁盘。这使得在CI/CD工作流程中检查或格式化文件时,可以结合原子步骤,而不会有导入排序器和代码格式化器之间的冲突或中间更改的风险。

安装

µfmt需要Python 3.8或更高版本。您可以从PyPI安装它

$ pip install ufmt

如果您想防止意外的格式更改破坏您的CI工作流程,请确保将您的传递依赖项(包括black、µsort和µfmt)锁定到您首选的版本。

如果您使用 requirements.txt,这可能看起来像

black==22.6.0
ufmt==2.0.0
usort==1.0.4

使用方法

格式化一个或多个文件或目录

$ ufmt format <path> [<path> ...]

验证文件格式是否正确,例如用于CI工作流程

$ ufmt check <path> [<path> ...]

验证格式并生成必要更改的差异

$ ufmt diff <path> [<path> ...]

集成

有关每个集成的详细信息,请参阅用户指南

GitHub Actions

µfmt提供了一个GitHub Action,可以将它添加到现有工作流程中,或作为单独的工作流程或作业,以在拉取请求中强制执行适当的格式。

jobs:
  ufmt:
    runs-on: ubuntu-latest
    steps:
      - uses: omnilib/ufmt@action-v1
        with:
          path: <PATH TO CHECK>
          requirements: requirements-fmt.txt
          python-version: "3.x"

pre-commit钩子

µfmt提供了一个pre-commit钩子。要在每次提交之前格式化您的差异,请将以下内容添加到您的.pre-commit-config.yaml文件中

  - repo: https://github.com/omnilib/ufmt
    rev: v2.0.0
    hooks:
      - id: ufmt
        additional_dependencies: 
          - black == 22.6.0
          - usort == 1.0.4

Visual Studio Code

µfmt有一个官方的VS Code扩展,可以将µfmt用作Python文件的格式化程序。安装后,您可以使用以下设置将µfmt设置为默认格式化程序

"[python]": {
  "editor.defaultFormatter": "omnilib.ufmt"
}

µfmt可以在以下设置下自动格式化

"[python]": {
  "editor.defaultFormatter": "omnilib.ufmt",
  "editor.formatOnSave": true
}

有关更多详细信息或安装扩展,请参阅Visual Studio Marketplace页面

VS Code extension marketplace Install VS Code extension now

许可证

ufmt版权所有Amethyst Reese,并许可在MIT许可证下。我正在此存储库中以开源许可证的形式向您提供代码。这是我的个人存储库;您对我代码的许可来自我,而不是我的雇主。有关详细信息,请参阅LICENSE文件。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

ufmt-2.7.3.tar.gz (24.4 kB 查看哈希值)

构建分布

ufmt-2.7.3-py3-none-any.whl (28.2 kB 查看哈希值)

上传于 Python 3

支持者