def type_inference_transformer(self) -> TransformVisitor: """Instantiate a visitor to perform type inference on an AST. """ type_visitor = TransformVisitor() for klass in astroid.ALL_NODE_CLASSES: if hasattr(self, f'visit_{klass.__name__.lower()}'): type_visitor.register_transform(klass, getattr(self, f'visit_{klass.__name__.lower()}')) return type_visitor
def environment_transformer() -> TransformVisitor: """Return a TransformVisitor that sets an environment for every node.""" visitor = TransformVisitor() visitor.register_transform(astroid.FunctionDef, _set_function_def_environment) visitor.register_transform(astroid.Module, _set_module_environment) return visitor
def type_inference_transformer(self) -> TransformVisitor: """Instantiate a visitor to perform type inference on an AST. """ type_visitor = TransformVisitor() for klass in astroid.ALL_NODE_CLASSES: if hasattr(self, f'visit_{klass.__name__.lower()}'): type_visitor.register_transform(klass, getattr(self, f'visit_{klass.__name__.lower()}')) return type_visitor
def environment_transformer(self) -> TransformVisitor: """Return a TransformVisitor that sets an environment for every node.""" visitor = TransformVisitor() visitor.register_transform(astroid.FunctionDef, self._set_function_def_environment) visitor.register_transform(astroid.ClassDef, self._set_classdef_environment) visitor.register_transform(astroid.Module, self._set_module_environment) visitor.register_transform(astroid.ListComp, self._set_listcomp_environment) visitor.register_transform(astroid.DictComp, self._set_dictcomp_environment) visitor.register_transform(astroid.SetComp, self._set_setcomp_environment) return visitor
def environment_transformer(self) -> TransformVisitor: """Return a TransformVisitor that sets an environment for every node.""" visitor = TransformVisitor() visitor.register_transform(astroid.FunctionDef, self._set_function_def_environment) visitor.register_transform(astroid.ClassDef, self._set_classdef_environment) visitor.register_transform(astroid.Module, self._set_module_environment) visitor.register_transform(astroid.ListComp, self._set_listcomp_environment) visitor.register_transform(astroid.DictComp, self._set_dictcomp_environment) visitor.register_transform(astroid.SetComp, self._set_setcomp_environment) return visitor
def init_register_ending_setters(source_code): """Instantiate a visitor to transform the nodes. Register the transform functions on an instance of TransformVisitor. @type source_code: list of strings @rtype: TransformVisitor """ ending_transformer = TransformVisitor() # Check consistency of astroid-provided fromlineno and col_offset attributes. for node_class in astroid.ALL_NODE_CLASSES: ending_transformer.register_transform( node_class, fix_start_attributes, lambda node: node.fromlineno is None or node.col_offset is None) # Ad hoc transformations ending_transformer.register_transform(astroid.Tuple, _set_start_from_first_child) ending_transformer.register_transform(astroid.Arguments, fix_start_attributes) ending_transformer.register_transform(astroid.Arguments, set_arguments) ending_transformer.register_transform(astroid.Slice, fix_slice(source_code)) for node_class in NODES_WITHOUT_CHILDREN: ending_transformer.register_transform(node_class, set_without_children) for node_class in NODES_WITH_CHILDREN: ending_transformer.register_transform(node_class, set_from_last_child) # Nodes where the source code must also be provided. # source_code and the predicate functions get stored in the TransformVisitor for node_class, start_pred, end_pred in NODES_REQUIRING_SOURCE: if start_pred is not None: ending_transformer.register_transform( node_class, start_setter_from_source(source_code, start_pred)) if end_pred is not None: # This is for searching for a trailing comma after a tuple's final element if node_class is astroid.Tuple: ending_transformer.register_transform( node_class, end_setter_from_source(source_code, end_pred, True)) else: ending_transformer.register_transform( node_class, end_setter_from_source(source_code, end_pred)) # Nodes where extra parentheses are included ending_transformer.register_transform(astroid.Const, add_parens_to_const(source_code)) ending_transformer.register_transform(astroid.Tuple, add_parens_to_const(source_code)) return ending_transformer
def environment_transformer(self) -> TransformVisitor: """Return a TransformVisitor that sets an environment for every node.""" visitor = TransformVisitor() visitor.register_transform(astroid.FunctionDef, self._set_function_def_environment) visitor.register_transform(astroid.AsyncFunctionDef, self._set_function_def_environment) visitor.register_transform(astroid.ClassDef, self._set_classdef_environment) visitor.register_transform(astroid.Module, self._set_module_environment) visitor.register_transform(astroid.ListComp, self._set_comprehension_environment) visitor.register_transform(astroid.DictComp, self._set_comprehension_environment) visitor.register_transform(astroid.SetComp, self._set_comprehension_environment) visitor.register_transform(astroid.GeneratorExp, self._set_comprehension_environment) visitor.register_transform(astroid.Lambda, self._set_comprehension_environment) return visitor
def environment_transformer(self) -> TransformVisitor: """Return a TransformVisitor that sets an environment for every node.""" visitor = TransformVisitor() visitor.register_transform(astroid.FunctionDef, self._set_function_def_environment) visitor.register_transform(astroid.AsyncFunctionDef, self._set_function_def_environment) visitor.register_transform(astroid.ClassDef, self._set_classdef_environment) visitor.register_transform(astroid.Module, self._set_module_environment) visitor.register_transform(astroid.ListComp, self._set_comprehension_environment) visitor.register_transform(astroid.DictComp, self._set_comprehension_environment) visitor.register_transform(astroid.SetComp, self._set_comprehension_environment) visitor.register_transform(astroid.GeneratorExp, self._set_comprehension_environment) visitor.register_transform(astroid.Lambda, self._set_comprehension_environment) return visitor
def register_type_constraints_setter(): """Instantiate a visitor to transform the nodes. Register the transform functions on an instance of TransformVisitor. """ type_visitor = TransformVisitor() type_visitor.register_transform(astroid.Const, set_const_type_constraints) type_visitor.register_transform(astroid.Tuple, set_tuple_type_constraints) type_visitor.register_transform(astroid.List, set_list_type_constraints) type_visitor.register_transform(astroid.Dict, set_dict_type_constraints) type_visitor.register_transform(astroid.Name, set_name_type_constraints) type_visitor.register_transform(astroid.BinOp, set_binop_type_constraints) type_visitor.register_transform(astroid.UnaryOp, set_unaryop_type_constraints) type_visitor.register_transform(astroid.Index, set_index_type_constraints) type_visitor.register_transform(astroid.Subscript, set_subscript_type_constraints) type_visitor.register_transform(astroid.Compare, set_compare_type_constraints) type_visitor.register_transform(astroid.BoolOp, set_boolop_type_constraints) type_visitor.register_transform(astroid.Expr, set_expr_type_constraints) type_visitor.register_transform(astroid.Assign, set_assign_type_constraints) type_visitor.register_transform(astroid.Return, set_return_type_constraints) type_visitor.register_transform(astroid.FunctionDef, set_functiondef_type_constraints) type_visitor.register_transform(astroid.Call, set_call_type_constraints) type_visitor.register_transform(astroid.Module, set_module_type_constraints) return type_visitor