What is ast.Await(value) in Python?

Python ast module

The ast module (Abstract Syntax Tree)tree representation of source code allows us to interact with and modify Python code. Python comes with abstract syntax grammar that is subject to change with every Python release.

This module helps applications to process trees of syntax and find out what the current syntax grammar looks like programmatically. Abstract syntax trees are great tools for program analysis and program transformation systems.

ast.Await method

ast.Await(value) is a class defined in the ast module that expresses an await statement in Python in the form of an Abstract Syntax Tree.

When the parse() method of ast is called on a Python source code that contains await statements, the ast.Await class is invoked. This expresses the await statement to a node in an ast tree data structure. The ast.Await class represents the Await node type in the ast tree.

The ast.Await class is only invoked in the body of an Async function.

Parameters

  • value: contains the value for which some function waits.

Example

The following Python code illustrates an example of the ast.Await class.

import ast
from pprint import pprint
class AwaitVisitor(ast.NodeVisitor):
def visit_Await(self, node):
print('Node type: Await\nFields: ', node._fields)
self.generic_visit(node)
def visit_Call(self,node):
print('Node type: Call\nFields: ', node._fields)
ast.NodeVisitor.generic_visit(self, node)
def visit_Name(self,node):
print('Node type: Name\nFields: ', node._fields)
ast.NodeVisitor.generic_visit(self, node)
visitor = AwaitVisitor()
tree = ast.parse("""
async def someFunc():
await other_func()
""")
pprint(ast.dump(tree))
visitor.visit(tree)

Code description

  • We define a AwaitVisitor class that extends from the ast.NodeVisitor parent class. We override the predefined visit_Await, visit_Call, and visit_Name methods in the parent class, which receive the Await, Call, and Name nodes, respectively.
  • In these methods, we print the type and the fields inside the node and call the generic_visit() method to visit the children nodes of the input node.
  • We initialize a visitor object of the class AwaitVisitor (line 18).
  • We write a definition of a Python asynchronous function and send it to the ast.parse() method, which returns the result of the expression after evaluation, and then stores this result in tree.
  • The ast.dump() method returns a formatted string of the tree structure in tree. You can observe the string returned by the dump function in the output of the code.
  • The inbuilt visit method available to the visitor object visits all the nodes in the tree structure.