暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 pre-commit 配合 black、isort 自动格式化 Python 文件

4104
为了保证 Python 的代码规范,在使用 `git commit` 提交代码之前,需要使用 blake、isort 工具对提交的文件进行格式化,如果提交的代码符合规法则 commit 成功,否则自动格式化文件,然后重新 commit

整个工作流大概是这样子: 

其中 black
是代码格式化工具,可以通过 pip install black
后直接使用,使用方法如下:

black {source_file_or_directory}...

同时也支持配置文件自定义规则,详细内容可以参考官方文档 The uncompromising code formatter — Black

isort
 则是用来规范 python 库的引入的,按字母顺序对 packages 进行排序,并自动分为不同的部分和类型,同样可以通过 pip install isort
后直接使用,使用方法如下:

isort mypythonfile.py mypython file2.py

black
一样也支持配置文件自定义规则,具体内容参考官网 isort (pycqa.github.io)

pre-commit
是整个工作流最重要的一环,pre-commit
git-hooks
中的一个重要的钩子,它在键入提交信息前运行。可以用于检查即将提交的快照,例如,检查是否有所遗漏,确保测试运行,以及核查代码。如果该钩子以非零值退出,Git 将放弃此次提交。 上面提到的机制是整个工作流可以进行的关键。

完全可以自定义 pre-commit
钩子的,但是如果只是为了检验的话,可以使用现成的方案 pre-commit/pre-commit,用 Python 构建,支持多语言的管理器。通过 pre-commit
这个库,简单地几步就可以实现自动化工作流。

  1. 安装 pre-commit
pip install pre-commit

然后通过 pre-commit --version
确定是否安装成功

$ pre-commit --version
pre-commit 2.16.0

  1. 添加 .pre-commit-config.yaml
    的配置文件

可以通过 pre-commit sample-config
生成一个默认的配置文件,这里贴一下关于 black
isort
的配置文件

repos:  
-   repo: https://github.com/psf/black  
 rev: 21.12b0  
 hooks:  
    - id: black  
  
-   repo: https://github.com/PyCQA/isort  
 rev: 5.10.1  
 hooks:  
    - id: isort

支持的配置项很多,具体参考 plugins

  1. 安装 git hooks 脚本
$ pre-commit install
pre-commit installed at .git/hooks/pre-commit

然后就就大功告成了

点击阅读原文,阅读体验更好


文章转载自桃子的学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论