From eaf09d1ae4a92bd0982b5757f2872d0583f7a3d3 Mon Sep 17 00:00:00 2001 From: Ian Lee Date: Thu, 18 Dec 2014 01:54:20 -0800 Subject: Allow spaces around equals sign of an annotated function definition parameter; issue #357 --- CHANGES.txt | 2 ++ pep8.py | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) 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) diff --git a/pep8.py b/pep8.py index 940a272..1f7358e 100755 --- a/pep8.py +++ b/pep8.py @@ -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) -- cgit v1.2.1