使用black和µsort进行安全、原子化格式化
项目描述
µfmt
µ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页面
许可证
ufmt版权所有Amethyst Reese,并许可在MIT许可证下。我正在此存储库中以开源许可证的形式向您提供代码。这是我的个人存储库;您对我代码的许可来自我,而不是我的雇主。有关详细信息,请参阅LICENSE
文件。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。