Detect '@' dotted_name '(' ')' NEWLINE as a simple decorator (#2182)

Previously the RELAXED_DECORATOR detection would be falsely True on that
example. The problem was that an argument-less parentheses pair didn't
pass the `is_simple_decorator_trailer` check even it should. OTOH a
parentheses pair containing an argument or more passed as expected.
This commit is contained in:
Richard Si 2021-05-04 04:46:46 -04:00 committed by GitHub
parent a18c7bc099
commit e42f9921e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 0 deletions

View File

@ -7,6 +7,9 @@
- Set `--pyi` mode if `--stdin-filename` ends in `.pyi` (#2169)
- Add `--no-diff` to black-primer to suppress formatting changes (#2187)
- Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are
being called but with no arguments (#2182)
### 21.4b2
#### _Black_

View File

@ -5761,6 +5761,13 @@ def is_simple_decorator_trailer(node: LN, last: bool = False) -> bool:
and node.children[0].type == token.DOT
and node.children[1].type == token.NAME
)
# last trailer can be an argument-less parentheses pair
or (
last
and len(node.children) == 2
and node.children[0].type == token.LPAR
and node.children[1].type == token.RPAR
)
# last trailer can be arguments
or (
last

View File

@ -13,6 +13,12 @@ def f():
##
@decorator()
def f():
...
##
@decorator(arg)
def f():
...