在本地存储库中预提交additional_dependencies

Ibo*_*lit 2 pre-commit.com

我正在尝试介绍pre-commit我们的项目。该项目位于单一存储库中,我们希望所有支票也位于同一存储库中。我们有一个flake8插件,我正在尝试配置 flake8 以使用该插件,但是我不知道如何pre-commit从本地存储库安装我们的插件。

我已将其添加到.pre-commit-config.yaml

repos:

  - repo: https://github.com/PyCQA/flake8
    rev: 5.0.4
    hooks:
      - id: flake8
        additional_dependencies:
          - ./my_flake8_plugin
Run Code Online (Sandbox Code Playgroud)

但是当我运行时pre-commit run --all我收到此错误:

An unexpected error has occurred: CalledProcessError: command: ('/Users/dtv/.cache/pre-commit/repo0620p39l/py_env-python3.10/bin/python', '-mpip', 'install', '.', './my_flake8_plugin')
Run Code Online (Sandbox Code Playgroud)

我确实意识到我可以指定插件的绝对路径,但这在 CI 或其他开发人员的机器上不起作用。我在文档中找不到有关“变量”或“占位符”的任何内容(例如,人们可以编写类似- $(PROJECT_DIR)/my_flake8_plugin.

除了编写单独的插件之外,还有正确的方法吗pre-commit

Ant*_*ile 6

预提交永远不会从被测试的存储库安装——只能从配置文件安装(否则缓存很难处理)

你最好的选择可能是打包你的 flake8 插件并从包索引服务器安装或利用 的flake8功能local-plugins

例如,如果您的插件存在./sub-dir并提供您可以设置的module.path:Plugin代码:ABC

[flake8:local-plugins]
extension =
   ABC = module.path:Plugin
paths = ./sub-dir
Run Code Online (Sandbox Code Playgroud)

在你的 flake8 配置中


免责声明:我创建了预提交,并且我是当前的 flake8 维护者