1 """Fixer that changes 'a ,b' into 'a, b'.
2
3 This also changes '{a :b}' into '{a: b}', but does not touch other
4 uses of colons. It does not touch other uses of whitespace.
5
6 """
7
8 from .. import pytree
9 from ..pgen2 import token
10 from .. import fixer_base
11
12 class ESC[4;38;5;81mFixWsComma(ESC[4;38;5;149mfixer_baseESC[4;38;5;149m.ESC[4;38;5;149mBaseFix):
13
14 explicit = True # The user must ask for this fixers
15
16 PATTERN = """
17 any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]>
18 """
19
20 COMMA = pytree.Leaf(token.COMMA, ",")
21 COLON = pytree.Leaf(token.COLON, ":")
22 SEPS = (COMMA, COLON)
23
24 def transform(self, node, results):
25 new = node.clone()
26 comma = False
27 for child in new.children:
28 if child in self.SEPS:
29 prefix = child.prefix
30 if prefix.isspace() and "\n" not in prefix:
31 child.prefix = ""
32 comma = True
33 else:
34 if comma:
35 prefix = child.prefix
36 if not prefix:
37 child.prefix = " "
38 comma = False
39 return new