首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在yapfignore中包含的文件上预提交yapf失败。

在yapfignore中包含的文件上预提交yapf失败。
EN

Stack Overflow用户
提问于 2021-07-06 16:18:17
回答 2查看 666关注 0票数 1

在回购中设置的预提交挂钩之一是yapf (.pre-commit-config.yaml):

代码语言:javascript
复制
repos:
# Note: the YAPF config is found in `.style.yapf` and `.yapfignore`
-   repo: https://github.com/pre-commit/mirrors-yapf
    rev: v0.29.0
    hooks:
    -   id: yapf

每当我对.yapfignore中包含的文件进行更改并运行预提交钩子时,钩子就会失败:

代码语言:javascript
复制
pre-commit run yapf                                                                                                                                                                                         
[WARNING] Unstaged files detected.
[INFO] Stashing unstaged files to ****************
yapf.....................................................................Failed
- hook id: yapf
- exit code: 1

yapf: Input filenames did not match any python files

任何人都知道如何避免.yapfignore中包含的文件出现yapf失败。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-07 00:03:53

好的,造成问题的原因是yapf将.yapfignore中的文件视为不存在的文件,因此您将得到一个:

代码语言:javascript
复制
yapf: Input filenames did not match any python files

如果对.yapfignore文件中的任何文件运行yapf,则出错。为了解决pre-commit中的这个问题,我添加了一个现有的python文件,而不是在.yapfignore中作为参数,所以yapf总是有一个文件可以运行。

票数 0
EN

Stack Overflow用户

发布于 2021-07-07 01:13:36

在您的输出和您正在看到的行为中发生了一些事情,因此我将分别解释它们:

代码语言:javascript
复制
$ pre-commit run yapf                                                                                                                                                                                         
[WARNING] Unstaged files detected.
[INFO] Stashing unstaged files to ****************

这里的输出表明,pre-commit采用了您未分阶段的更改,并放弃了它们,很可能没有显示您预期的结果。在演示发生了什么事情时,您可能想要pre-commit run yapf --all-files

关于实际的问题。

预提交不知道您使用的任何工具的实现细节(在某种程度上,yapf也不知道!)

当一个文件在.yapfignore中,并将它传递给yapf时,它的行为就好像它不存在一样(这很奇怪!)

代码语言:javascript
复制
$ tail -n999 hello_wat.py .yapfignore 
==> hello_wat.py <==
x =     5+  4

==> .yapfignore <==
hello*.py

$ yapf hello_wat.py 
yapf: Input filenames did not match any python files

您可能想要做的是利用pre-commitexclude,使文件永远不会传递给yapf!以我的例子为例(您没有共享您的.yapfignore,也没有共享最小的情况)。

代码语言:javascript
复制
repos:
-   repo: https://github.com/pre-commit/mirrors-yapf
    rev: v0.29.0
    hooks:
    -   id: yapf
        exclude: ^hello\.*\.py$

现在yapf不会和hello*.py竞争了!

免责声明:我是预提交的创建者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68274102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档