meta.asttools - operate on python ast nodes

Module to augment and analize python ast nodes.

This module uses the python ast moduel exclusivly not the depricated compiler.ast.

class meta.asttools.Undedined[source]
meta.asttools.cmp_ast(node1, node2)[source]

Compare if two nodes are equal.

meta.asttools.print_ast(ast, indent=' ', initlevel=0, newline='\n', file=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]

Pretty print an ast node.

Parameters
  • ast – the ast to print.

  • indent – how far to indent a newline.

  • initlevel – starting indent level

  • newline – The newline character.

  • file – file object to print to

To print a short ast you may want to use:

node = ast.parse(source)
print_ast(node, indent='', newline='')
meta.asttools.str_ast(ast, indent=' ', newline='\n')

Returns a string representing the ast.

Parameters
  • ast – the ast to print.

  • indent – how far to indent a newline.

  • newline – The newline character.

meta.asttools.python_source(ast, file=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]

Generate executable python source code from an ast node.

Parameters
  • ast – ast node

  • file – file to write output to.

meta.asttools.dump_python_source(ast)[source]
Returns

a string containing executable python source code from an ast node.

Parameters
  • ast – ast node

  • file – file to write output to.

meta.asttools.lhs(node)[source]

Return a set of symbols in node that are assigned.

Parameters

node – ast node

Returns

set of strings.

meta.asttools.rhs(node)[source]

Return a set of symbols in node that are used.

Parameters

node – ast node

Returns

set of strings.

meta.asttools.conditional_lhs(node)[source]

Group outputs into contitional and stable :param node: ast node

Returns

tuple of (contitional, stable)

meta.asttools.conditional_symbols(node)[source]

Group lhs and rhs into contitional, stable and undefined :param node: ast node

Returns

tuple of (contitional_lhs, stable_lhs),(contitional_rhs, stable_rhs), undefined

meta.asttools.get_symbols(node, ctx_types=(<class '_ast.Load'>, <class '_ast.Store'>))[source]

Returns all symbols defined in an ast node.

if ctx_types is given, then restrict the symbols to ones with that context.

Parameters
  • node – ast node

  • ctx_types – type or tuple of types that may be found assigned to the ctx attribute of an ast Name node.

meta.asttools.make_graph(node, call_deps=False)[source]

Create a dependency graph from an ast node.

Parameters
  • node – ast node.

  • call_deps – if true, then the graph will create a cyclic dependance for all function calls. (i.e for a.b(c) a depends on b and b depends on a)

Returns

a tuple of (graph, undefined)