是否可以将 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)
在强制执行代码风格时,我的团队更喜欢使用 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)