预提交未为 pip-tools 选择文件

pre-commit not picking files for pip-tools

提问人:Opal 提问时间:10/12/2023 最后编辑:anthony sottileOpal 更新时间:10/12/2023 访问量:85

问:

我有以下 repo 结构:

libs/
- l1/
 - pyproject.toml
- l2/
 - pyproject.toml

batch/
- b1/
 - pyproject.toml
- b2/
 - pyproject.toml

pipelines/
- p1/
 - pyproject.toml
- p2/
 - pyproject.toml

pyproject.toml

并配置了以下 pre-commit 钩子:

---
files: .(yaml|yml|py|toml)$
repos:
  - repo: https://github.com/jazzband/pip-tools
    rev: 7.3.0
    hooks:
      - id: pip-compile
        name: Run pip-compile for 'prod' env.
        args:
          - -o
          - pyproject.lock
          - --generate-hashes
          - --strip-extras

问题是它只选择存储库根目录的 pyproject.toml 文件。其他的都被跳过了?为什么?我尝试使用选项无济于事。这里有什么问题?files

python pre-commit-hook 预提交 pre-commit.com pip-tools

评论

0赞 Brian61354270 10/12/2023
您能评论一下为什么您拥有/需要这么多不同的分发包吗?所有这些文件的内容是什么?pyproject.toml
1赞 Opal 10/12/2023
@Brian61354270,感谢您的评论 - 这与问题相关吗?这是一个多站点气流 monorepo。
0赞 Brian61354270 10/12/2023
需要许多不同的分发包是不寻常的。在另一个发行版中有一个分发包就更奇怪了,因为这几乎总是使创建可移植的 wheel 文件变得不可能。我只是想确认您的用例是否真的需要许多发行版,或者是否可以采用更简单的方法(例如,使用一个具有多个导入包的发行版)。
0赞 Brian61354270 10/12/2023
发行版是如何连接的?我猜“根”发行版将子项目列为依赖项?file://
0赞 Opal 10/12/2023
不,你的猜测是错误的。 并依赖于发布到一些内部 pypi。batchpipelineslibs

答:

0赞 anthony sottile 10/12/2023 #1

有两种不同的配置 -- 您覆盖了错误的配置。files

顶层的文件是整个存储库过滤器 -- 如果需要,它通常用于缩小到特定范围(在大多数用途中并不常见pre-commit)

你试图覆盖的最初来自钩子本身(它设置文件:^requirements\.(in|txt)$) -- 覆盖你需要把你的 inside the hook 映射:filesfiles

repos:
  - repo: https://github.com/jazzband/pip-tools
    rev: 7.3.0
    hooks:
      - id: pip-compile
        name: Run pip-compile for 'prod' env.
        files: .*requirements*.txt|pyproject.toml$

免责声明:我写了预提交

评论

0赞 Opal 10/12/2023
当然,谢谢。这就是我尝试过的。会再做一次。
0赞 Opal 10/12/2023
不,它仍然处理根存储库中的文件,其余部分保持不变。
1赞 anthony sottile 10/12/2023
你可能需要做更多的事情来让输出部分工作——我不熟悉这个特定的钩子
0赞 Opal 10/13/2023
当然,谢谢你的帮助。