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