flo*_*urr 23 python pre-commit-hook python-poetry pre-commit.com
我正在研究这个Python 项目模板。它们用于poetry定义开发依赖项
[tool.poetry.dev-dependencies]
black = {version = "*", allow-prereleases = true}
flake8 = "*"
isort = "^5.6"
mypy = ">0.900,<1"
...
Run Code Online (Sandbox Code Playgroud)
它们还用于pre-commit检查 git 和 CI 工作流程的内务工作(例如,格式化、linting、分类等):
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]
- ...
Run Code Online (Sandbox Code Playgroud)
就我而言,我肯定想要一个由 Poetry 为我的 IDE 管理的本地版本的开发包,并且我还想“按原样”利用预提交框架,而不需要切换到language: system. 通过这种方式,我需要在两个不同的地方管理每个包版本。
是否有一种非手动方法可以使开发包版本(即,.,,,, black... flake8)与单一事实来源保持一致?isortmypy Coockiecutter 模板可能是一种选择,但它看起来有点过分了。
flo*_*urr 18
最后,我创建了一个预提交挂钩来完成这项工作:https://github.com/floatingpurr/sync_with_poetry
编辑:如果你使用PDM,可以参考这个: https: //github.com/floatingpurr/sync_with_pdm
rev这个钩子只是使存储库与.pre-commit-config.yaml锁定到的软件包版本保持同步poetry.lock。
如果您使用:
这个元钩子对于为你提高(取消)repos rev 很有用。
我建议仅将 linter 内容保留在pre-commit.
pre-commit不一定作为预提交挂钩运行。您可以每次运行检查,pre-commit run --all-files或者如果您只想在给定文件上运行检查pre-commit run --files path/to/file。
您甚至可以说出应该运行哪个检查,例如pre-commit run black --all-files
| 归档时间: |
|
| 查看次数: |
9290 次 |
| 最近记录: |