'BUILD_MAP': 1,
'COMPARE_OP': -1,
'STORE_FAST': -1,
+ 'IMPORT_STAR': -1,
+ 'IMPORT_NAME': 0,
+ 'IMPORT_FROM': 1,
}
# use pattern match
patterns = [
('BINARY_', -1),
('LOAD_', 1),
- ('IMPORT_', 1),
]
# special cases:
for name, alias in node.names:
if name == '*':
self.namespace = 0
- self.emit('IMPORT_FROM', name)
- self._resolveDots(name)
- self.storeName(alias or name)
+ self.emit('IMPORT_STAR')
+ # There can only be one name w/ from ... import *
+ assert len(node.names) == 1
+ return
+ else:
+ self.emit('IMPORT_FROM', name)
+ self._resolveDots(name)
+ self.storeName(alias or name)
self.emit('POP_TOP')
def _resolveDots(self, name):
return dot, node[3][1]
def com_import_as_name(self, node):
+ if node == '*':
+ return '*', None
if node[0] == token.NAME:
return node[1], None
assert len(node) == 4
'BUILD_MAP': 1,
'COMPARE_OP': -1,
'STORE_FAST': -1,
+ 'IMPORT_STAR': -1,
+ 'IMPORT_NAME': 0,
+ 'IMPORT_FROM': 1,
}
# use pattern match
patterns = [
('BINARY_', -1),
('LOAD_', 1),
- ('IMPORT_', 1),
]
# special cases:
for name, alias in node.names:
if name == '*':
self.namespace = 0
- self.emit('IMPORT_FROM', name)
- self._resolveDots(name)
- self.storeName(alias or name)
+ self.emit('IMPORT_STAR')
+ # There can only be one name w/ from ... import *
+ assert len(node.names) == 1
+ return
+ else:
+ self.emit('IMPORT_FROM', name)
+ self._resolveDots(name)
+ self.storeName(alias or name)
self.emit('POP_TOP')
def _resolveDots(self, name):
return dot, node[3][1]
def com_import_as_name(self, node):
+ if node == '*':
+ return '*', None
if node[0] == token.NAME:
return node[1], None
assert len(node) == 4