【发布时间】:2022-01-04 16:56:58
【问题描述】:
我正在研究this Python 项目模板。他们使用poetry 来定义dev dependencies
[tool.poetry.dev-dependencies]
black = {version = "*", allow-prereleases = true}
flake8 = "*"
isort = "^5.6"
mypy = ">0.900,<1"
...
他们还使用 pre-commit 来检查 git 和 CI 工作流程的内务处理(例如,格式化、linting、issorting 等):
minimum_pre_commit_version: 2.8.0
default_stages: [commit, push, manual]
repos:
- repo: https://github.com/psf/black
rev: 21.11b1
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
rev: 4.0.1
hooks:
- id: flake8
args: [--max-line-length=88]
- repo: https://github.com/pycqa/isort
rev: 5.10.1
hooks:
- id: isort
args: [--filter-files]
- ...
就我而言,我绝对想要一个本地版本的开发包,由我的 IDE 管理,并且我还想利用预提交框架“按原样”,无需切换到language: system。以这种方式工作,我需要在两个不同的地方管理每个包版本。
有没有一种非手动的方式来保持开发包版本(即。black、flake8、isort、mypy、...)与单一事实来源保持一致? 一个 Coockiecutter 模板可能是一种选择,但它看起来有点矫枉过正。
【问题讨论】:
-
在某些时候,您需要在两个地方提供信息 - 模板在
poetry.lock中也有版本,因此您需要一些代码来同步两者 -
是的,没错。一个选项可能是使用 e 元模板来同步它们。谢谢。
-
最后,我创建了一个预提交挂钩来完成这项工作。请在下面查看我的答案
标签: python pre-commit-hook python-poetry pre-commit.com