如何为诗歌和预提交包版本提供单一的真实来源?
How to have a single source of truth for poetry and pre-commit package version?
我正在调查 this Python project template. They use poetry
to define dev dependencies
[tool.poetry.dev-dependencies]
black = {version = "*", allow-prereleases = true}
flake8 = "*"
isort = "^5.6"
mypy = ">0.900,<1"
...
他们还使用 pre-commit
检查内部事务(例如,格式化、linting、分类等),用于 git 和 CI 工作流程:
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]
- ...
就我而言,我绝对想要一个由 poetry 为我的 IDE 管理的本地版本的开发包,而且我还想按原样利用预提交框架 " “,没有切换到 language: system
。以这种方式工作,我需要在两个不同的地方管理每个包版本。
是否有非手动方式来保留开发包版本(即。black
、flake8
、isort
、mypy
、 ...) 与单一事实来源对齐? Coockiecutter 模板可能是一个选项,但它看起来有点过分了。
我建议仅在 pre-commit
.
的配置中保留 linter 内容
pre-commit
不一定 运行 作为预提交挂钩。您可以 运行 每次 pre-commit run --all-files
进行检查,或者如果您想 运行 仅对具有 pre-commit run --files path/to/file
.
的给定文件进行检查
您甚至可以说出应该 运行 进行哪项检查,例如pre-commit run black --all-files
最后,我创建了一个预提交挂钩来完成这项工作:https://github.com/floatingpurr/sync_with_poetry
此挂钩只是使 .pre-commit-config.yaml
中的回购 rev
与锁定在 poetry.lock
.
中的软件包版本保持同步
如果您使用:
- 依赖管理诗
- 您 IDE 的本地开发包(通过 Poetry)
- 预提交挂钩
这个 meta-hook 可以帮助您(取消)提升 repos 版本。
我正在调查 this Python project template. They use poetry
to define dev dependencies
[tool.poetry.dev-dependencies]
black = {version = "*", allow-prereleases = true}
flake8 = "*"
isort = "^5.6"
mypy = ">0.900,<1"
...
他们还使用 pre-commit
检查内部事务(例如,格式化、linting、分类等),用于 git 和 CI 工作流程:
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]
- ...
就我而言,我绝对想要一个由 poetry 为我的 IDE 管理的本地版本的开发包,而且我还想按原样利用预提交框架 " “,没有切换到 language: system
。以这种方式工作,我需要在两个不同的地方管理每个包版本。
是否有非手动方式来保留开发包版本(即。black
、flake8
、isort
、mypy
、 ...) 与单一事实来源对齐? Coockiecutter 模板可能是一个选项,但它看起来有点过分了。
我建议仅在 pre-commit
.
pre-commit
不一定 运行 作为预提交挂钩。您可以 运行 每次 pre-commit run --all-files
进行检查,或者如果您想 运行 仅对具有 pre-commit run --files path/to/file
.
您甚至可以说出应该 运行 进行哪项检查,例如pre-commit run black --all-files
最后,我创建了一个预提交挂钩来完成这项工作:https://github.com/floatingpurr/sync_with_poetry
此挂钩只是使 .pre-commit-config.yaml
中的回购 rev
与锁定在 poetry.lock
.
如果您使用:
- 依赖管理诗
- 您 IDE 的本地开发包(通过 Poetry)
- 预提交挂钩
这个 meta-hook 可以帮助您(取消)提升 repos 版本。