diff options
-rw-r--r-- | CHANGES.txt | 2 | ||||
-rwxr-xr-x | pep8.py | 12 | ||||
-rw-r--r-- | testsuite/E25.py | 5 |
3 files changed, 18 insertions, 1 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 774a90d..91a2095 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -34,6 +34,8 @@ Changes: * Do not report E121 or E126 in the default configuration. (Issues #256 / #316) +* 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,7 @@ 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): E251: def complex(real, imag = 0.0): E251: return magic(r = real, i = imag) @@ -761,6 +762,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,10 +777,17 @@ def whitespace_around_named_parameter_equals(logical_line, tokens): parens += 1 elif text == ')': parens -= 1 - elif parens and text == '=': + elif in_def and text == ':' and parens == 1: + annotated_func_arg = True + elif parens and text == ',' and parens == 1: + annotated_func_arg = False + elif parens and text == '=' and not annotated_func_arg: no_space = True if start != prev_end: yield (prev_end, message) + if not parens: + annotated_func_arg = False + prev_end = end diff --git a/testsuite/E25.py b/testsuite/E25.py index 9b7ff69..ad8db88 100644 --- a/testsuite/E25.py +++ b/testsuite/E25.py @@ -29,3 +29,8 @@ foo(bar=(1 >= 1)) foo(bar=(1 <= 1)) (options, args) = parser.parse_args() d[type(None)] = _deepcopy_atomic + +# Annotated Function Definitions +#: Okay +def munge(input: AnyStr, sep: AnyStr = None, limit=1000) -> AnyStr: + pass |