示例#1
0
def transform_flask_from_import(node):
    '''Translates a flask.ext from-style import into a non-magical import.

    Translates:
        from flask.ext import wtf, bcrypt as fcrypt
    Into:
        import flask_wtf as wtf, flask_bcrypt as fcrypt

    '''
    new_names = []
    # node.names is a list of 2-tuples. Each tuple consists of (name, as_name).
    # So, the import would be represented as:
    #
    #    from flask.ext import wtf as ftw, admin
    #
    # node.names = [('wtf', 'ftw'), ('admin', None)]
    for (name, as_name) in node.names:
        actual_module_name = 'flask_{}'.format(name)
        new_names.append((actual_module_name, as_name or name))

    new_node = nodes.Import()
    copy_node_info(node, new_node)
    new_node.names = new_names
    mark_transformed(new_node)
    return new_node
示例#2
0
 def visit_import(self, node, parent):
     """visit a Import node by returning a fresh instance of it"""
     names = [(alias.name, alias.asname) for alias in node.names]
     newnode = nodes.Import(names, getattr(node, 'lineno', None),
                            getattr(node, 'col_offset', None), parent)
     # save import names in parent's locals:
     for (name, asname) in newnode.names:
         name = asname or name
         parent.set_local(name.split('.')[0], newnode)
     return newnode
示例#3
0
 def visit_import(self, node, parent):
     """visit a Import node by returning a fresh instance of it"""
     newnode = new.Import()
     _set_infos(node, newnode, parent)
     newnode.names = [(alias.name, alias.asname) for alias in node.names]
     # save import names in parent's locals:
     for (name, asname) in newnode.names:
         name = asname or name
         newnode.parent.set_local(name.split('.')[0], newnode)
     return newnode
示例#4
0
def transform_flask_bare_import(node):
    '''Translates a flask.ext.wtf bare import into a non-magical import.

    Translates:
        import flask.ext.admin as admin
    Into:
        import flask_admin as admin
    '''

    new_names = []
    for (name, as_name) in node.names:
        match = re.match(r'flask\.ext\.(.*)', name)
        from_name = match.group(1)
        actual_module_name = 'flask_{}'.format(from_name)
        new_names.append((actual_module_name, as_name))

    new_node = nodes.Import()
    copy_node_info(node, new_node)
    new_node.names = new_names
    mark_transformed(new_node)
    return new_node