在这里,我们将上述一切工具配置为在提交 Python 代码改动时执行(git commit),然后仅在推送时运转 pytest coverage(由于测试要在最后一步)。创立一个新文件 .pre-commit-config.yaml ,配置如下:
repos:
- repo: local
hooks:
- id: isort
name: isort
stages: [commit]
language: system
entry: pipenv run isort
types: [python]
- id: black
name: black
stages: [commit]
language: system
entry: pipenv run black
types: [python]
- id: flake8
name: flake8
stages: [commit]
language: system
entry: pipenv run flake8
types: [python]
exclude: setup.py
- id: mypy
name: mypy
stages: [commit]
language: system
entry: pipenv run mypy
types: [python]
pass_filenames: false
- id: pytest
name: pytest
stages: [commit]
language: system
entry: pipenv run pytest
types: [python]
- id: pytest-cov
name: pytest
stages: [push]
language: system
entry: pipenv run pytest --cov --cov-fail-under=100
types: [python]
pass_filenames: false
假设需求跳过这些 hooks,可以运转 git commit --no-verify 或 git push --no-verify
运用 cookiecutter 生成项目如今,我们曾经知道了理想项目中包含了什么,我们可以将其转换为 模板 [10] 从而可以运用单个命令生成一个包含这些库和配置的新项目:
pipx run cookiecutter gh:sourcery-ai/python-best-practices-cookiecutter
填写项目称号和仓库称号,将为您生成新的项目。
要完成设置,请执行下列步骤:
# Enter project directory
cd <repo_name>
# Initialise git repo
git init
# Install dependencies
pipenv install --dev
# Setup pre-commit and pre-push hooks
pipenv run pre-commit install -t pre-commit
pipenv run pre-commit install -t pre-push
模板项目包含一个十分复杂的 Python 文件和测试,可以试用下面这些工具。在编写完代码觉得没成绩后,就可以执行第一次 git commit ,一切的 hooks 都将运转。
集成到编辑器虽然在提交时知道项目的代码一直保持最高水准是件令人兴奋的事情。但假设在代码已全部修正完成之后(提交时),再发现有成绩还是会让人很不爽。所以,实时暴显露成绩要好得多。
在保存文件时,花一些时间确保代码编辑器运转这些命令。有及时的反应,这意味着你可以在代码还有印象的时分能迅速处置引入的任何小成绩。
我团体运用一些出色的 Vim 插件来完成此义务:
ale [11] 实时运转 flake8 并在保存文件时运转 black、isort 和 mypy
与 projectionist 集成的 [12] vim-test [13] 在文件保存上运转 pytest
【编辑引荐】
Python网络自动化--新时代网工进阶技艺
Windows WDF驱动顺序开发视频课程(**框架)
基于Qt的LibVLC专业开发技术
Python自动化运维视频课程(系统管理进阶篇)
谷歌气球的人工智能为何令开发者本人感到惊奇
(责任编辑:admin)