让Python包开发有完整的工作流

如果Pyscaffold已经配置好了,那么还有一些小工具可以帮助Python包的开发,如flake8、pre-commit、pyformat等。

pre-commit

pre-commit的主要用处是在git commit前执行一些hook,主要是格式检查,用来保证不同开发者的代码细节风格一致,特别是一些空格、括号风格等。pyscaffold的对应选项开启后,会通过.pre-commit-config.yaml文件默认配置pre-commit-hooksisortblackflake8。均是常用的hook。

对于规模较大的项目,建议使用更严格的规则,建议参考 https://wemake-python-stylegui.de/en/latest/pages/usage/violations/ 使用wemake-python-styleguide的规则码和ci进行工作流层次的style约定,主要是以以下代码替换掉.pre-commit-config.yamlisortblackflake8的默认设置:(参考 https://wemake-python-stylegui.de/en/latest/pages/usage/integrations/plugins.html

1
2
3
4
5
6
7
8
9
- repo: local
hooks:
- id: flake8
name: flake8
description: wemake-python-styleguide enforcement
entry: flake8
args: [ "--config=setup.cfg" ]
language: python
types: [ python ]

pre-commit在使用前需要安装,即conda install pre-commitpre-commit install

github actions

主要推荐:

一个建议

在开一个新python包的时候按如下步骤做:

  • pyscaffold准备框架
  • 配置好pre-commit(conda install pre-commitpre-commit install
  • 使用wemake-python-styleguide的话安装(pip install wemake-python-styleguide),并修改好.pre-commit-config.yaml
  • 修改好文件让flake8开心(×
  • 配置好github action,主要是pyscaffold自带ci、release-please和wemake-python-styleguide。
  • 按照Conventional Commit Messages( https://www.conventionalcommits.org/en/v1.0.0/ )提交和合并代码

(当然如果是自己一个人开发则以上统统不需要,怎么开心怎么来)