spack.util.unparse package

spack.util.unparse.unparse(tree, py_ver_consistent=False)[source]

Submodules

spack.util.unparse.unparser module

Usage: unparse.py <path to source file>

class spack.util.unparse.unparser.NodeVisitor[source]

Bases: object

A node visitor base class that walks the abstract syntax tree and calls a visitor function for every node found. This function may return a value which is forwarded by the visit method.

This class is meant to be subclassed, with the subclass adding visitor methods.

Per default the visitor functions for the nodes are 'visit_' + class name of the node. So a TryFinally node visit function would be visit_TryFinally. This behavior can be changed by overriding the visit method. If no visitor function exists for a node (return value None) the generic_visit visitor is used instead.

Don’t use the NodeVisitor if you want to apply changes to nodes during traversing. For this a special visitor exists (NodeTransformer) that allows modifications.

generic_visit(node)[source]

Called if no explicit visitor function exists for a node.

visit(node)[source]

Visit a node.

class spack.util.unparse.unparser.Unparser(py_ver_consistent=False, _avoid_backslashes=False)[source]

Bases: NodeVisitor

Methods in this class recursively traverse an AST and output source code for the abstract syntax; original formatting is disregarded.

binop
binop_precedence
binop_rassoc
block(*, extra=None)[source]

A context manager for preparing the source for blocks. It adds the character’:’, increases the indentation on enter and decreases the indentation on exit. If extra is given, it will be directly appended after the colon character.

boolop_precedence
boolops
buffered(buffer=None)[source]
cmpops
delimit(start, end)[source]

A context manager for preparing the source for expressions. It adds start to the buffer and enters, after exit it adds end.

delimit_if(start, end, condition)[source]
do_visit_try(node)[source]
fill(text='')[source]

Indent a piece of text and append it, according to the current indentation level

get_precedence(node)[source]
get_raw_docstring(node)[source]

If a docstring node is found in the body of the node parameter, return that docstring node, None otherwise.

Logic mirrored from _PyAST_GetDocString.

get_type_comment(node)[source]
interleave(inter, f, seq)[source]

Call f on each item in seq, calling inter() in between.

items_view(traverser, items)[source]

Traverse and separate the given items with a comma and append it to the buffer. If items is a single item sequence, a trailing comma will be added.

maybe_newline()[source]

Adds a newline if it isn’t the start of generated source

require_parens(precedence, node)[source]

Shortcut to adding precedence related parens

set_precedence(precedence, *nodes)[source]
traverse(node)[source]
unop
unop_precedence
visit(node)[source]

Outputs a source code string that, if converted back to an ast (using ast.parse) will generate an AST equivalent to node

visit_AnnAssign(node)[source]
visit_Assert(node)[source]
visit_Assign(node)[source]
visit_AsyncFor(node)[source]
visit_AsyncFunctionDef(node)[source]
visit_AsyncWith(node)[source]
visit_Attribute(node: Attribute)[source]
visit_AugAssign(node)[source]
visit_Await(node)[source]
visit_BinOp(node)[source]
visit_BoolOp(node)[source]
visit_Break(node)[source]
visit_Call(node)[source]
visit_ClassDef(node)[source]
visit_Compare(node)[source]
visit_Constant(node)[source]
visit_Continue(node)[source]
visit_Delete(node)[source]
visit_Dict(node)[source]
visit_DictComp(node)[source]
visit_ExceptHandler(node)[source]
visit_Expr(node)[source]
visit_ExtSlice(node)[source]
visit_For(node)[source]
visit_FormattedValue(node)[source]
visit_FunctionDef(node)[source]
visit_FunctionType(node)[source]
visit_GeneratorExp(node)[source]
visit_Global(node)[source]
visit_If(node)[source]
visit_IfExp(node)[source]
visit_Import(node)[source]
visit_ImportFrom(node)[source]
visit_Index(node)[source]
visit_Interpolation(node)[source]
visit_JoinedStr(node)[source]
visit_Lambda(node)[source]
visit_List(node)[source]
visit_ListComp(node)[source]
visit_Match(node)[source]
visit_MatchAs(node)[source]
visit_MatchClass(node)[source]
visit_MatchMapping(node)[source]
visit_MatchOr(node)[source]
visit_MatchSequence(node)[source]
visit_MatchSingleton(node)[source]
visit_MatchStar(node)[source]
visit_MatchValue(node)[source]
visit_Module(node)[source]
visit_Name(node)[source]
visit_NamedExpr(node)[source]
visit_Nonlocal(node)[source]
visit_ParamSpec(node)[source]
visit_Pass(node)[source]
visit_Raise(node)[source]
visit_Return(node)[source]
visit_Set(node)[source]
visit_SetComp(node)[source]
visit_Slice(node)[source]
visit_Starred(node)[source]
visit_Subscript(node)[source]
visit_TemplateStr(node)[source]
visit_Try(node)[source]
visit_TryStar(node)[source]
visit_Tuple(node)[source]
visit_TypeAlias(node)[source]
visit_TypeVar(node)[source]
visit_TypeVarTuple(node)[source]
visit_UnaryOp(node)[source]
visit_While(node)[source]
visit_With(node)[source]
visit_Yield(node)[source]
visit_YieldFrom(node)[source]
visit_alias(node)[source]
visit_arg(node)[source]
visit_arguments(node)[source]
visit_comprehension(node)[source]
visit_keyword(node)[source]
visit_match_case(node)[source]
visit_withitem(node)[source]
write(*text)[source]

Add new source parts

spack.util.unparse.unparser.is_non_empty_non_star_tuple(slice_value)[source]

True for (1, 2), False for () and (1, *b)

spack.util.unparse.unparser.iter_fields(node)[source]

Yield a tuple of (fieldname, value) for each field in node._fields that is present on node.

spack.util.unparse.unparser.nullcontext()[source]