diff options
-rw-r--r-- | CHANGES.txt | 2 | ||||
-rwxr-xr-x | pep8.py | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index d0ae802..b61ee7f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -32,6 +32,8 @@ Changes: * Add ``.tox/`` to default excludes. (Issue #335) +* Allow spaces around the equals sign in an annotated function. (Issue #357) + Bug fixes: * Don't crash if Checker.build_tokens_line() returns None. (Issue #306) @@ -754,6 +754,8 @@ def whitespace_around_named_parameter_equals(logical_line, tokens): Okay: boolean(a != b) Okay: boolean(a <= b) Okay: boolean(a >= b) + Okay: def foo(arg: int = 42): + Okay: def f(x: int, y=15, z: float = 0.123) -> list: E251: def complex(real, imag = 0.0): E251: return magic(r = real, i = imag) @@ -761,6 +763,8 @@ def whitespace_around_named_parameter_equals(logical_line, tokens): parens = 0 no_space = False prev_end = None + annotated_func_arg = False + in_def = logical_line.startswith('def') message = "E251 unexpected spaces around keyword / parameter equals" for token_type, text, start, end, line in tokens: if token_type == tokenize.NL: @@ -774,7 +778,11 @@ def whitespace_around_named_parameter_equals(logical_line, tokens): parens += 1 elif text == ')': parens -= 1 - elif parens and text == '=': + elif in_def and text == ':': + annotated_func_arg = True + elif parens and text == ',': + annotated_func_arg = False + elif parens and text == '=' and not annotated_func_arg: no_space = True if start != prev_end: yield (prev_end, message) |