Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

python

What is ast.ImportFrom(module, names, level) in Python?

Abdul Monum
Abstract Syntax Tree

ast.ImportFrom(module, names, level) is a class defined in the ast module that is used to express the from x import y statement in Python in the form of an Abstract Syntax Treetree representation of source code.

When the parse() method of ast is called on a Python source code that contains the import keyword preceded by from, the ast.ImportFrom class is invoked, which expresses the from x import y statement to a node in an ast tree data structure.

The ast.Import class represents the ImportFrom node type in the ast tree. The module in the class parameter contains the name of the module, names contains the list of alias nodes representing the methods imported from the module, and level is an integer representing the level of import. For instance, 00 means absolute import.

Note: If the import statement is NOT preceded by the from keyword, then the ast.Import class is invoked instead.

Example

import ast
from pprint import pprint

class ImportFromVisitor(ast.NodeVisitor):

    def visit_ImportFrom(self, node):
        print('Node type: ImportFrom\nFields:', node._fields)
        ast.NodeVisitor.generic_visit(self, node)

    def visit_alias(self, node):
        print('Node type: alias\nFields:', node._fields)
        ast.NodeVisitor.generic_visit(self, node)
    


visitor = ImportFromVisitor()
tree = ast.parse('from ast import parse, dump')
pprint(ast.dump(tree))
visitor.visit(tree)

Explanation

  • We define an ImportFromVisitor class that extends from the parent class ast.NodeVisitor. We override the predefined visit_ImportFrom and visit_alias methods in the parent class, which receive the ImportFrom and alias nodes, respectively. In the method, we print the type and the fields inside the node and call the generic_visit() method, which invokes the propagation of visit on the children nodes of the input node.
  • We initialize a visitor object of the class ImportFromVisitor.
  • We write the Python statement from ast import parse, dump and send it to the ast.parse() method, which returns the result of the expression after evaluation, and then store it in tree.
  • The ast.dump() method returns a formatted string of the tree structure in tree.
  • The visit method available to the visitor object visits all the nodes in the tree structure.

RELATED TAGS

python

CONTRIBUTOR

Abdul Monum
Copyright ©2022 Educative, Inc. All rights reserved
RELATED COURSES

View all Courses

Keep Exploring