问题标签 [pre-commit.com]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
300 浏览

python - flake8 e999 在 python2 中使用 fstrings (with future_fstrings)

我在 python2 中使用 fstrings,pip install future-fstrings如下所示:

但是,将这样的文件提交到我的项目时,我得到:

为什么会发生这种情况,我该如何解决?

# noqa E999没有帮助...

0 投票
1 回答
933 浏览

python - 在 Docker 映像的预提交挂钩中为 python 2.7 和 3.7 运行 pylint

我正在尝试使用 CircleCI 运行一个预提交挂钩,该挂钩为 Python 2.7 和 3.7 运行 pylint。

.circleci/config.yml为 Python 2 和 Python 3 运行预提交:

除其他外,预提交运行 pylint:

这里的问题是没有与 Python 2.7 和 3.7 兼容的 pylint 版本:Python 2.7 需要 pylint 1.x,而 Python 3.7 需要 pylint 2.x。

如何让 Circle CI 使用不同版本的 pylint 运行两个 linting 作业?

我正在考虑几种选择:

  • 在预提交配置中添加 pylint 两次(使用不同的别名)并在作业定义中 禁用其中一个或另一个
    • 似乎 pre-commit在查看变量之前SKIP尝试安装依赖项,因此 Python 2.7 运行无论如何都会尝试安装 pylint 2,并且出现错误ERROR: Could not find a version that satisfies the requirement pylint==2.3.1 (from pre-commit-dummy-package==0.0.0)
  • 使用具有两个 Python 版本的 Docker 映像,并在钩子级别 设置 Python 版本
    • 这需要构建我自己的 Docker 镜像
  • 在其中一项 linting 工作中跳过 pylint
  • 放弃 2.7 或 3.7 支持
0 投票
1 回答
1601 浏览

git - 如果检测到匹配的文件,则运行一次 pre-commit.com 挂钩(不是针对每个文件)

我有一个钩子,可以从源文件生成文档文件,使用pre-commit.com 框架构建。在该挂钩中调用的函数没有文件参数,因此它只是为目录中的所有源文件创建文档。钩子是一个system钩子,即只是一个 bash 脚本,我在其中调用该函数来创建文档。但是,在 pre-commit.com 框架中,文件被传递给钩子,逻辑是在每个文件上执行一个钩子,这在大多数情况下是有意义的(例如,分别对每个文件进行 lint)。所以我的问题是:如果有任何源文件发生更改,我如何确保文档挂钩运行一次,而不是在单个文件上多次运行(并行或顺序)?具体来说,我的钩子正在生成 R 文档,roxygen2::roxygenize()可以在这里找到。

0 投票
0 回答
524 浏览

python - Autopep8 和预提交不遵守 --global-config

我正在尝试将 pre-commit 与运行命令的 autopep8 一起使用pre-commit run --all-files。我的树和文件如下:

.pre-commit-config.yaml

.flake8

但是,当我运行时pre-commit run --all-files,我的 .flake8 文件没有被拾取,所以我尝试将 --global-config 添加到 .flake8:

但这只会导致错误:

我究竟做错了什么?

我的预提交版本是 1.18.2。

0 投票
1 回答
4151 浏览

jupyterhub - pre-commit run 路径python3.6(来自--python=python3.6)不存在

我正在尝试关注JupyterHub 的贡献文档,并且在运行时遇到错误pre-commit run

该错误与我的 python 版本有关。3.6即使所有东西都是用 Python 安装的,出于某种原因,它仍然存在3.7.3。这是运行命令的输出:

如果我检查日志,这就是它所说的:

我试图清除缓存,因为它看起来像是在引用我使用 python 3.6 时可能已经存在的缓存

但它根本没有改变错误或日志。

有谁知道这是什么吗?如果没有,希望我能尽快弄清楚并在我这样做时添加答案...... :)

0 投票
1 回答
6371 浏览

python-3.x - Python 项目的预提交挂钩失败

我有一个Python项目,当我尝试(通过 miniconda)提交时:

我得到以下失败:

最后一行失败。

关于如何解决这个问题的任何想法?

谢谢!

0 投票
4 回答
13000 浏览

git - 黑色作为预提交钩子总是使我的提交失败

我正在尝试使用预提交来管理Black作为 Git 预提交挂钩,但我一定做错了。

在我的预提交配置文件中,我有:

我期望发生的事情是让 Black 只修改暂存文件,并让提交成功。因为 Black 的全部意义在于它自动执行 Python 代码样式规则,所以没有任何问题。

当我暂存一个(不符合黑色标准的)文件并尝试提交时实际发生了什么:Black 继续修改文件以使其符合预期......但问题是它返回“失败”。所以提交失败。然后我必须取消暂存文件,然后在再次提交之前重新暂存它......只有这样提交才能成功。

这是一个巨大的烦恼,不可能是预期的工作流程?

我究竟做错了什么?

0 投票
0 回答
909 浏览

python - 如何在预提交挂钩之前运行 shell 脚本

在 python 项目中,我有 pre-commit-config.yaml 和黑色和 mypy 检查器。目标是在检查错误之前先运行 black 。和 mypy ./ 修复可能的错误,然后运行钩子。

0 投票
0 回答
1903 浏览

python - 运行预提交运行时出错

我已经安装并配置了预提交。运行时,pre-commit run我收到此信息,后跟一条错误消息:

我使用 anaconda bash 从 Windows 运行它。我将 git 放在路径上,以便 pre-commit 找到 repo。我已经尝试从外部 anaconda 环境运行它,但即使停用它并再次安装预提交,错误仍然存​​在。我也尝试过运行pre-commit clean,它已经解决了以前的问题(起初它找不到我的“pre-commit-hooks.yaml”文件”),但这个错误仍然存​​在。

0 投票
0 回答
159 浏览

push - 尝试使用预提交设置预推送挂钩

我正在尝试使用 pre-commit https://pre-commit.com/设置一个 pre-push 钩子, 当我制作一个 pre-commit 钩子时,它工作正常,就像在提交所有检查工作之前一样,但如果没有推送钩子运行这就是我的 .pre-commit-config-yaml 在推送的情况下的样子

有谁知道做错了什么?