问题标签 [yapf]

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 投票
0 回答
724 浏览

python - 如何添加规则以自动更改字符串以在 yapf 格式化程序中使用双引号并在列表的最后一项之后添加逗号?

在文档中没有可用属性列表,我在 gist.github 中找到了一个包含一些属性的文件,但我没有找到此规则的密钥。

我的问题示例:我有以下代码:

我希望这段代码将被格式化为:

我有setup.cfg一些设置的文件:

0 投票
1 回答
287 浏览

python - 元组中的额外缩进空间

我有以下 python (2.7) 代码行。

audit_row_groups = [(key, list(group), ) for key, group in itertools.groupby(audit_rows, lambda row: (row['date'], row['table_name'], row['user_id']))]

当 yapf 格式化它时,我得到以下信息:

第 3 行缩进 5 个空格而不是 4 个空格。最后一行缩进 9 个空格而不是 8 个空格。然后我的 pylint 检查抱怨第 3 行空格太多。

我正在使用具有以下样式的 yapf 0.30.0:

我已经尝试将 space_between_ending_comma_and_closure_bracket 更改为 False/True。如果我在第 2 行删除元组中的尾随逗号,那么它会按预期工作,但这违背了在元组中使用尾随逗号的建议。

知道如何改进此设置以删除此额外空间吗?

谢谢,格兰特

0 投票
1 回答
132 浏览

python - Python 代码风格:有没有办法配置 linter 将参数拆分为多行?

目前,我正在使用 Django 3.1.4 开发 Python 3.8 项目,我希望以以下方式强制执行代码样式:

将可迭代对象拆分为多行,将括号与其内容保持在不同的行中。例如:

将函数签名参数拆分为多行,其中它们不适合同一行,每行一个参数,以提高可读性。例子:

目前对我来说最重要的是后者。

我曾尝试使用autopep8、和pylint,但尽管尝试了不同的配置,但我目前无法使用自动代码格式化程序来实现这一点。yapfblack

当我使用black时,参数如下所示:

这让我发疯,因为我喜欢“枚举”我的函数/方法立即采用多少参数。

当我使用yapf它时会发生什么:

不幸的是,它仍然不理想,因为我对变量名很冗长,所以从上面的参数继续缩进在很多时候是不可能的,同时还要强制行长度限制。

我习惯于以这种方式编写代码,这种风格让我更有效率,此外还能帮助我发现代码异味和潜在的错误。但是目前我正在自己开发一个中型代码库,并且通过手动格式化来强制执行这种样式占用了我太多的时间。

是否有任何自动代码格式化程序可以帮助我实现这一目标?或者有人知道如何通过上述方法之一实现这一目标吗?

(我确实记得 3 年前在一个项目中工作,我们使用pylintor强制执行这种代码样式black,所以它应该是可行的,但我不知道如何。)

先感谢您。

0 投票
2 回答
349 浏览

python - 在 yapfignore 中包含的文件上预提交 yapf 失败

存储库中设置的预提交挂钩之一是 yapf ( .pre-commit-config.yaml):

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

任何人都知道如何避免 yapf 对包含在.yapfignore?

0 投票
0 回答
58 浏览

python - YAPF 在函数调用而不是逻辑运算符中拆分

我试图找到一个自动代码格式化程序,目前正在评估 YAPF。在一个特定的代码部分,它的格式非常奇特:

我真的不明白为什么它不会给我这个:

行长设置为 120 个字符,所以应该没问题。整个配置都在 GitHub 上,因为这篇文章太长了。

有什么明显的原因为什么 YAPF 会这样格式化这一行?

0 投票
0 回答
26 浏览

python - 在文档字符串中强制执行参数并返回文档

我正在尝试将 linter 添加到 repo 中,以强制执行参数的文档字符串文档并返回函数和方法的值,如Google Python Style Guide中所述。

一般来说,我想强制执行以下文档字符串内容:

我查看了谷歌自己的 Python 格式化工具YAPF,但找不到配置参数和返回值。对这个主题进行更广泛的搜索并没有产生任何结果。

如何使用 linter 在文档字符串中强制执行参数和返回值文档?

0 投票
1 回答
148 浏览

python - 如何将 YAPF 配置为与 Black 相同的格式

黑色无法在我的计算机上运行,​​但我希望 YAPF 以与黑色相同的方式运行。有没有办法将 YAPF 的自定义设置更改为与黑色完全相同的格式?我认为黑色是行业标准,并希望遵循这一标准。我应该更改哪些设置?有没有我可以复制的存储库?

0 投票
1 回答
105 浏览

python - 如何使用 yapf 将参数全部放在一行中?

我正在尝试配置 yapf 以使参数等都在同一行,但我不确定如何获得这种效果,到目前为止,我所看到的只是同一行上的函数参数,但它不适用于一切。

这就是我所拥有的,例如:

这就是我希望它看起来的样子:

到目前为止,我尝试了这些,但它们不适用于我的情况:

我不确定 yapf 可以做我想做的事,所以如果有人知道要使用什么旋钮等,那将是一个巨大的帮助。

0 投票
0 回答
23 浏览

python-3.x - 如何为函数参数配置 yapf?

我的代码由 yapf 格式化,如下所示:

但我希望它的格式如下:

如果函数中有参数,我希望拆分key=val参数。
如何在不更改column_limit设置的情况下配置 yapf?

0 投票
0 回答
120 浏览

pre-commit-hook - 预提交钩子 yapf 返回的结果与在命令行中运行 yapf 不同

使用命令行和 yapf 运行文件时,我的标签如下:

-i --verbose --style “谷歌”

当使用与 args 相同的参数进行预提交时,我的预提交挂钩始终返回“通过”。

这是针对相同文件针对相同更改进行测试的,因此我预计会得到类似的结果。如果我 exclude --style "google",我的 pre-commit 钩子至少会改变我的文件格式,但不会改变我想要的样式。

有人可以告诉我我在 args 上做错了什么吗?

包含示例的 Python 文件:

.pre-commit-config.yaml 文件:

提交时,我的文件将更改,并且预提交告诉我 yapf 已将我的文件更改为以下内容:

如果我回到同一个 python 文件并将我的 .pre-commit-config.yaml 文件更新为:

运行提交将提供Pass而不是进行任何更改,即使是以前的更改

编辑 1: .pre-commit.config.yaml 文件已更新为:

运行pre-commit run只显示Passed而不是重新格式化。我还尝试使用 pep8 和其他任意词来代替 google。这些都导致Passed. 也许在我这边有些东西样式 arg 被忽略并导致所有 yapf 失败?