(root)/
Python-3.12.0/
Lib/
lib2to3/
fixes/
fix_ws_comma.py
       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