diff --git a/maint/scripts/custom_fixers/fix_unicode_literal.py b/maint/scripts/custom_fixers/fix_unicode_literal.py index 560c2776..2c56b29c 100644 --- a/maint/scripts/custom_fixers/fix_unicode_literal.py +++ b/maint/scripts/custom_fixers/fix_unicode_literal.py @@ -1,18 +1,19 @@ -import re -from lib2to3.pgen2 import token from lib2to3 import fixer_base -from lib2to3.fixer_util import Name, Call - -_literal_re = re.compile(r"[uU][rR]?[\'\"]") +from lib2to3.fixer_util import String class FixUnicodeLiteral(fixer_base.BaseFix): BM_compatible = True - PATTERN = """STRING""" + PATTERN = """ + power< 'u' + trailer< + '(' + arg=any + ')' + > + > + """ def transform(self, node, results): - if node.type == token.STRING and _literal_re.match(node.value): - new = node.clone() - new.value = new.value[1:] - new.prefix = '' - node.replace(Call(Name(u'u', prefix=node.prefix), [new])) + arg = results["arg"] + node.replace(String('u'+arg.value, prefix=node.prefix))