diff options
author | Anthony Sottile <asottile@umich.edu> | 2022-11-21 14:22:37 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-21 14:22:37 -0500 |
commit | b38878283c6e4898df7bf438fb4dc03cd204ca14 (patch) | |
tree | a70f3ce5cd62cc4546c87232f5e6db9db50cea71 | |
parent | 7498309c2d59ff2ac69e6fae264f507a4ee2feb3 (diff) | |
parent | 798d620cd461a1e7abac1cbba5aab66274aa3229 (diff) | |
download | pep8-b38878283c6e4898df7bf438fb4dc03cd204ca14.tar.gz |
Merge pull request #1123 from PyCQA/fix-E741-again
fix ambiguous identifiers in lambda bodies inside braces
-rwxr-xr-x | pycodestyle.py | 13 | ||||
-rw-r--r-- | testsuite/E74.py | 9 |
2 files changed, 18 insertions, 4 deletions
diff --git a/pycodestyle.py b/pycodestyle.py index b75eed0..f06f923 100755 --- a/pycodestyle.py +++ b/pycodestyle.py @@ -1517,7 +1517,7 @@ def ambiguous_identifier(logical_line, tokens): E742: class I(object): E743: def l(x): """ - is_func_def = False # Set to true if 'def' or 'lambda' is found + func_depth = None # set to brace depth if 'def' or 'lambda' is found seen_colon = False # set to true if we're done with function parameters brace_depth = 0 idents_to_avoid = ('l', 'O', 'I') @@ -1527,8 +1527,13 @@ def ambiguous_identifier(logical_line, tokens): ident = pos = None # find function definitions if prev_text in {'def', 'lambda'}: - is_func_def = True - elif is_func_def and text == ':' and brace_depth == 0: + func_depth = brace_depth + seen_colon = False + elif ( + func_depth is not None and + text == ':' and + brace_depth == func_depth + ): seen_colon = True # update parameter parentheses level if text in '([{': @@ -1548,7 +1553,7 @@ def ambiguous_identifier(logical_line, tokens): pos = start # function / lambda parameter definitions if ( - is_func_def and + func_depth is not None and not seen_colon and index < len(tokens) - 1 and tokens[index + 1][1] in ':,=)' and prev_text in {'lambda', ',', '*', '**', '('} and diff --git a/testsuite/E74.py b/testsuite/E74.py index 93d6c13..9bb4c58 100644 --- a/testsuite/E74.py +++ b/testsuite/E74.py @@ -2,3 +2,12 @@ lambda l: dict(zip(l, range(len(l)))) #: E741:1:7 E704:1:1 def f(l): print(l, l, l) +#: E741:2:12 +x = ( + lambda l: dict(zip(l, range(len(l)))), +) +#: E741:2:12 E741:3:12 +x = ( + lambda l: dict(zip(l, range(len(l)))), + lambda l: dict(zip(l, range(len(l)))), +) |