12
12
MAPPING = {'urllib': [
14
14
['URLOpener', 'FancyURLOpener', 'urlretrieve',
15
'_urlopener', 'urlcleanup']),
15
'_urlopener', 'urlopen', 'urlcleanup',
16
'pathname2url', 'url2pathname']),
17
18
['quote', 'quote_plus', 'unquote', 'unquote_plus',
18
'urlencode', 'pathname2url', 'url2pathname', 'splitattr',
19
'splithost', 'splitnport', 'splitpasswd', 'splitport',
20
'splitquery', 'splittag', 'splittype', 'splituser',
19
'urlencode', 'splitattr', 'splithost', 'splitnport',
20
'splitpasswd', 'splitport', 'splitquery', 'splittag',
21
'splittype', 'splituser', 'splitvalue', ]),
23
23
['ContentTooShortError'])],
63
63
yield """import_name< 'import'
64
64
dotted_as_name< module_as=%r 'as' any > >
66
yield """power< module_dot=%r trailer< '.' member=%s > any* >
66
# bare_with_attr has a special significance for FixImports.match().
67
yield """power< bare_with_attr=%r trailer< '.' member=%s > any* >
67
68
""" % (old_module, members)
151
152
def transform_dot(self, node, results):
152
153
"""Transform for calls to module members in code."""
153
module_dot = results.get('module_dot')
154
module_dot = results.get('bare_with_attr')
154
155
member = results.get('member')
155
# this may be a list of length one, or just a node
156
157
if isinstance(member, list):
157
158
member = member[0]
159
159
for change in MAPPING[module_dot.value]:
160
160
if member.value in change[1]:
161
161
new_name = change[0]
164
164
module_dot.replace(Name(new_name,
165
prefix=module_dot.get_prefix()))
165
prefix=module_dot.prefix))
167
167
self.cannot_convert(node, 'This is an invalid module element')
171
171
self.transform_import(node, results)
172
172
elif results.get('mod_member'):
173
173
self.transform_member(node, results)
174
elif results.get('module_dot'):
174
elif results.get('bare_with_attr'):
175
175
self.transform_dot(node, results)
176
176
# Renaming and star imports are not supported for these modules.
177
177
elif results.get('module_star'):