Skip to content

Commit e2ebb35

Browse files
committed
Fix false-positive E211 with match and case
1 parent c4460cb commit e2ebb35

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

pycodestyle.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -811,14 +811,18 @@ def whitespace_before_parameters(logical_line, tokens):
811811
prev_type, prev_text, __, prev_end, __ = tokens[0]
812812
for index in range(1, len(tokens)):
813813
token_type, text, start, end, __ = tokens[index]
814-
if (token_type == tokenize.OP and
814+
if (
815+
token_type == tokenize.OP and
815816
text in '([' and
816817
start != prev_end and
817818
(prev_type == tokenize.NAME or prev_text in '}])') and
818819
# Syntax "class A (B):" is allowed, but avoid it
819820
(index < 2 or tokens[index - 2][1] != 'class') and
820-
# Allow "return (a.foo for a in range(5))"
821-
not keyword.iskeyword(prev_text)):
821+
# Allow "return (a.foo for a in range(5))"
822+
not keyword.iskeyword(prev_text) and
823+
# 'match' and 'case' are only soft keywords
824+
prev_text not in ('match', 'case')
825+
):
822826
yield prev_end, "E211 whitespace before '%s'" % text
823827
prev_type = token_type
824828
prev_text = text

testsuite/python310.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
var, var2 = 1, 2
2+
#: Okay
3+
match (var, var2):
4+
#: Okay
5+
case [2, 3]:
6+
pass
7+
#: Okay
8+
case (1, 2):
9+
pass
10+
#: Okay
11+
case _:
12+
print("Default")

0 commit comments

Comments
 (0)