1 min read

使用 pre-commit 规整你的 Python 代码(最佳实践)

使用 pre-commit 规整你的 Python 代码(最佳实践)
per-commit

首先 pre-commit 做不到什么

  • 并不能提高你的代码质量
  • 也不能提高你的逻辑思维能力

pre-commit 能做什么

  • 帮助你格式化代码
  • 减少再代码格式上的信仰冲突
  • 节省更多的时间,讨论逻辑,优化算法。

precommit_pipeline.png


安装

pip install pre-commit

pip freeze | grep pre-commit >> requiremests.txt 

配置 pre-commit

在你的项目目录下创建一个 .pre-commit-config.yaml 文件

repos:
-   repo: https://github.com/ambv/black
    rev: stable
    hooks:
    - id: black
      language_version: python3.7
-   repo: https://github.com/PyCQA/flake8
    rev: 3.7.9
    hooks:
    - id: flake8

添加以上配置在 .pre-commit-config.yaml 中

这里使用了 black 和 flake8 格式化你的代码,当然还有其他很多插件。
比如: isort

配置 black

在你的项目下, 创建 pyproject.toml 文件

[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
    \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | __pycache__
  | build
  | dist
)/
'''

配置 flake8

在你的项目下, 创建 .flake8 文件

[flake8]
ignore = E203, E231, E266, E501, W503, F403, F405, F401
exclude =
		.git,
		__pycache__,
		build,
		dist
max-line-length = 79
max-complexity = 18
select = B,C,E,F,W,T4,B9

安装 git-commit-hook

pre-commit install 

运行 pre-commit

pre-commit run -a 

结论

因此有了一个流水线,可以保护项目不被错误格式化的代码侵害。