1"""Fixer that changes 'a ,b' into 'a, b'. 2 3This also changes '{a :b}' into '{a: b}', but does not touch other 4uses of colons. It does not touch other uses of whitespace. 5 6""" 7 8from .. import pytree 9from ..pgen2 import token 10from .. import fixer_base 11 12class FixWsComma(fixer_base.BaseFix): 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 40