1u""" 2Fixer for os.getcwd() -> os.getcwdu(). 3Also warns about "from os import getcwd", suggesting the above form. 4""" 5 6from lib2to3 import fixer_base 7from lib2to3.fixer_util import Name 8 9class FixGetcwd(fixer_base.BaseFix): 10 11 PATTERN = u""" 12 power< 'os' trailer< dot='.' name='getcwd' > any* > 13 | 14 import_from< 'from' 'os' 'import' bad='getcwd' > 15 """ 16 17 def transform(self, node, results): 18 if u"name" in results: 19 name = results[u"name"] 20 name.replace(Name(u"getcwdu", prefix=name.prefix)) 21 elif u"bad" in results: 22 # Can't convert to getcwdu and then expect to catch every use. 23 self.cannot_convert(node, u"import os, use os.getcwd() instead.") 24 return 25 else: 26 raise ValueError(u"For some reason, the pattern matcher failed.") 27