1"""Optional fixer that changes all unprefixed string literals "..." to b"...". 2 3br'abcd' is a SyntaxError on Python 2 but valid on Python 3. 4ur'abcd' is a SyntaxError on Python 3 but valid on Python 2. 5 6""" 7from __future__ import unicode_literals 8 9import re 10from lib2to3.pgen2 import token 11from lib2to3 import fixer_base 12 13_literal_re = re.compile(r"[^bBuUrR]?[\'\"]") 14 15class FixBytes(fixer_base.BaseFix): 16 BM_compatible = True 17 PATTERN = "STRING" 18 19 def transform(self, node, results): 20 if node.type == token.STRING: 21 if _literal_re.match(node.value): 22 new = node.clone() 23 new.value = u'b' + new.value 24 return new 25