impunity.visitor
- class impunity.visitor.Visitor(fun, ignore_warnings, ignore_methods)
- Bases: - NodeTransformer- Impunity AST visitor class checking for Annotations to transform the code if necessary - Attributes:
- impunity_funcdict[tuple[str, str], Callable]
- Dictionnary of Callables to keep track of functions tracked by impunity 
- uregpint.UnitRegistry
- Unit Registry from Pint to manage UoMs. 
 
 - generic_visit(node)
- Called if no explicit visitor function exists for a node. 
 - get_annotation_unit(node)
- Return a UoM from an AST Node. Return None if the node is not compatible. - Parameters:
- node (ast.expr with annotation) – Node with an annotation 
- Returns:
- Optional str of the UoM 
- Return type:
- Optional[str] 
 
 - get_annotations(name, module=None)
- Get annotations of a function found in the impunity_func class dict. Returns None if the function is not annotated. - Parameters:
- namestr
- name of the function for which annotations are required 
 
 
- Returns:
- Optional dict of annotations 
 
 
 - get_node_unit(node)
- Method to induce the unit of a node through recursive calls on children if any. - Return type:
 - Args:
- node (ast.AST): input node 
- Returns:
- QuantityNode: QuantityNode(node, induced_unit) 
 
 - node_convert(expected_unit, received_unit, received_node)
- check if the expected and the received units are coherents with each other by using the Pint library. Modify the received node accordingly and returns it. - Return type:
- expr
 - Parameters:
- expected_unitstr
- expected Unit of Measure string 
 
- received_unitstr
- received Unit of Measure string 
 
- received_nodeQuantityNode
- received Quantity Node 
 
 
- Returns:
- QuantityNode: Input Quantity Node, eventually modified for unit 
 - coherence. 
 
 - visit(root)
- Initiate the visit of the root AST. Returns a checked ast.AST eventually modified to keep UoM coherence. - Return type:
 - Args:
- rootast.AST
- root of the AST to visit 
 
 
 - visit_AnnAssign(node)
- Method called by the visitor if the visited node is an Annotated Assignement node. Checks the units in the node and returns it eventually modified. - Return type:
 - Args:
- node (ast.AnnAssign): input node 
 
 - visit_Assign(node)
- Method called by the visitor if the visited node is an Assignement node. Checks the units in the node and returns it eventually modified. - Return type:
 - Args:
- node (ast.Assign): input node 
 
 - visit_Call(node)
- Method called by the visitor if the visited node is a Call node. Checks the units in the node and returns it eventually modified. - Return type:
 - Args:
- node (ast.Call): input node 
 
 - visit_ClassDef(node)
- Method called by the visitor if the visited node is a class defintion. Is can be the root node in impunity - Return type:
 - Args:
- node (ast.ClassDef): Visited Class Definition 
 
 - visit_For(node)
- Method called by the visitor if the visited node is a for loop node. Checks the units in the node and returns it eventually modified. - Return type:
 - Args:
- node (ast.For): input node 
 
 - visit_FunctionDef(node)
- Method called by the visitor if the visited node is function defintion. Is usually the root node in impunity - Return type:
 - Args:
- node (ast.FunctionDef): Visited Function Definition 
 
 - visit_ListComp(node)
- Method called by the visitor if the visited node is a List Comprehension node. Checks the units in the node and returns it eventually modified. - Return type:
 - Args:
- node (ast.ListComp): input node 
 
 - visit_Return(node)
- Method called by the visitor if the visited node is a Return node. Checks the units in the node and returns it eventually modified. - Return type:
 - Args:
- node (ast.Return): input node 
 
 - visit_comprehension(node)
- Method called by the visitor if the visited node is a Comprehension node. Checks the units in the node and returns it eventually modified. - Return type:
 - Args:
- node (ast.comprehension): input node