是否可以将 Black 配置为在非文字字典实例化或类似情况下出错或发出警告?

is it possible to configure Black to error or warn on non-literal dict instantiation or similar?

在强制执行代码风格时,我的团队更喜欢使用 dict 文字而不是 dict() 函数调用:

c = { "a": 1 } // good

d = {}         // good

e = dict()     // bad

Black(或 python 的任何 linter 或代码格式化程序)可以做到这一点吗?

黑色的维护者在这里:wave:

Black 不能这样做,因为这将是一个不安全的 AST 转换。不确定 Black 是否会在未来获得 AST 不安全功能,但 IMO 不太可能。

您可以使用 pylint with code R1735 enabled or use flake8-comprehensions with code C408 enabled.

$ cat test.py
c = {"a": 1}  # good

d = {}          # good

e = dict()      # bad

$ flake8 test.py
test.py:5:5: C408 Unnecessary dict call - rewrite as a literal.

$ pylint test.py
************* Module test
test.py:1:0: C0114: Missing module docstring (missing-module-docstring)
test.py:5:4: R1735: Consider using {} instead of dict() (use-dict-literal)

------------------------------------------------------------------
Your code has been rated at 3.33/10 (previous run: 3.33/10, +0.00)