Example #1
0
 def _visit_child_scope(self, node):
     pyobject = (
         self.pyobject.get_module().get_scope().get_inner_scope_for_line(
             node.lineno).pyobject)
     visitor = _LocalUnboundNameFinder(pyobject, self)
     for child in ast.get_child_nodes(node):
         ast.walk(child, visitor)
Example #2
0
 def _handle_conditional_node(self, node):
     self.conditional = True
     try:
         for child in ast.get_child_nodes(node):
             ast.walk(child, self)
     finally:
         self.conditional = False
Example #3
0
 def _create_structural_attributes(self):
     if self.visitor_class is None:
         return {}
     new_visitor = self.visitor_class(self.pycore, self)
     for child in ast.get_child_nodes(self.ast_node):
         ast.walk(child, new_visitor)
     self.defineds = new_visitor.defineds
     return new_visitor.names
Example #4
0
 def _create_structural_attributes(self):
     if self.visitor_class is None:
         return {}
     new_visitor = self.visitor_class(self.pycore, self)
     for child in ast.get_child_nodes(self.ast_node):
         ast.walk(child, new_visitor)
     self.defineds = new_visitor.defineds
     return new_visitor.names
Example #5
0
 def _FunctionDef(self, node):
     _ScopeVisitor._FunctionDef(self, node)
     if len(node.args.args) > 0:
         first = node.args.args[0]
         if isinstance(first, ast.arg):
             new_visitor = _ClassInitVisitor(self, first.arg)
             for child in ast.get_child_nodes(node):
                 ast.walk(child, new_visitor)
Example #6
0
 def _FunctionDef(self, node):
     _ScopeVisitor._FunctionDef(self, node)
     if len(node.args.args) > 0:
         first = node.args.args[0]
         if isinstance(first, ast.Name):
             new_visitor = _ClassInitVisitor(self, first.id)
             for child in ast.get_child_nodes(node):
                 ast.walk(child, new_visitor)
Example #7
0
 def _visit_comprehension(self):
     if self.names is None:
         new_visitor = self.visitor(self.pycore, self.pyobject)
         for node in ast.get_child_nodes(self.pyobject.get_ast()):
             ast.walk(node, new_visitor)
         self.names = dict(self.parent.get_names())
         self.names.update(new_visitor.names)
         self.defineds = new_visitor.defineds
Example #8
0
 def _Tuple(self, node):
     new_levels = []
     if self.levels is not None:
         new_levels = list(self.levels)
         new_levels.append(self.index)
     self.index += 1
     visitor = _NodeNameCollector(new_levels)
     for child in ast.get_child_nodes(node):
         ast.walk(child, visitor)
     self.names.extend(visitor.names)
Example #9
0
 def _visit_function(self):
     if self.names is None:
         new_visitor = self.visitor(self.pycore, self.pyobject)
         for n in ast.get_child_nodes(self.pyobject.get_ast()):
             ast.walk(n, new_visitor)
         self.names = new_visitor.names
         self.names.update(self.pyobject.get_parameters())
         self.returned_asts = new_visitor.returned_asts
         self.is_generator = new_visitor.generator
         self.defineds = new_visitor.defineds
Example #10
0
 def _Tuple(self, node):
     new_levels = []
     if self.levels is not None:
         new_levels = list(self.levels)
         new_levels.append(self.index)
     self.index += 1
     visitor = _NodeNameCollector(new_levels)
     for child in ast.get_child_nodes(node):
         ast.walk(child, visitor)
     self.names.extend(visitor.names)
 def _get_nearest_roots(self, node):
     if node not in self._nearest_roots:
         result = []
         for child in ast.get_child_nodes(node):
             if child in self.matched_asts:
                 result.append(child)
             else:
                 result.extend(self._get_nearest_roots(child))
         self._nearest_roots[node] = result
     return self._nearest_roots[node]
Example #12
0
 def _visit_function(self):
     if self.names is None:
         new_visitor = self.visitor(self.pycore, self.pyobject)
         for n in ast.get_child_nodes(self.pyobject.get_ast()):
             ast.walk(n, new_visitor)
         self.names = new_visitor.names
         self.names.update(self.pyobject.get_parameters())
         self.returned_asts = new_visitor.returned_asts
         self.is_generator = new_visitor.generator
         self.defineds = new_visitor.defineds
Example #13
0
 def _FunctionDef(self, node):
     _ScopeVisitor._FunctionDef(self, node)
     if len(node.args.args) > 0:
         first = node.args.args[0]
         new_visitor = None
         if isinstance(first, pycompat.ast_arg_type):
             new_visitor = _ClassInitVisitor(self, pycompat.get_ast_arg_arg(first))
         if new_visitor is not None:
             for child in ast.get_child_nodes(node):
                 ast.walk(child, new_visitor)
Example #14
0
 def _get_nearest_roots(self, node):
     if node not in self._nearest_roots:
         result = []
         for child in ast.get_child_nodes(node):
             if child in self.matched_asts:
                 result.append(child)
             else:
                 result.extend(self._get_nearest_roots(child))
         self._nearest_roots[node] = result
     return self._nearest_roots[node]
Example #15
0
 def _FunctionDef(self, node):
     _ScopeVisitor._FunctionDef(self, node)
     if len(node.args.args) > 0:
         first = node.args.args[0]
         new_visitor = None
         if isinstance(first, pycompat.ast_arg_type):
             new_visitor = _ClassInitVisitor(self, pycompat.get_ast_arg_arg(first))
         if new_visitor is not None:
             for child in ast.get_child_nodes(node):
                 ast.walk(child, new_visitor)
Example #16
0
 def _FunctionDef(self, node):
     _ScopeVisitor._FunctionDef(self, node)
     if len(node.args.args) > 0:
         first = node.args.args[0]
         new_visitor = None
         if hasattr(ast, 'arg'):  # Py3
             if isinstance(first, ast.arg):
                 new_visitor = _ClassInitVisitor(self, first.arg)
         else:  # Py2
             if isinstance(first, ast.Name):
                 new_visitor = _ClassInitVisitor(self, first.id)
         if new_visitor is not None:
             for child in ast.get_child_nodes(node):
                 ast.walk(child, new_visitor)
Example #17
0
 def _FunctionDef(self, node):
     self.written.add(node.name)
     visitor = _VariableReadsAndWritesFinder()
     for child in ast.get_child_nodes(node):
         ast.walk(child, visitor)
     self.read.update(visitor.read - visitor.written)
Example #18
0
def _get_ast_children(node):
    visitor = _ASTDefinedVisitor()
    for child in ast.get_child_nodes(node):
        ast.walk(child, visitor)
    return visitor.result
 def _Tuple(self, node):
     if not isinstance(node.ctx, ast.Store):
         return
     for child in ast.get_child_nodes(node):
         ast.walk(child, self)
Example #20
0
 def start_walking(self, node):
     nodes = [node]
     if isinstance(node, ast.FunctionDef):
         nodes = ast.get_child_nodes(node)
     for child in nodes:
         ast.walk(child, self)
Example #21
0
 def _visit_child_scope(self, node):
     pyobject = self.pyobject.get_module().get_scope().\
         get_inner_scope_for_line(node.lineno).pyobject
     visitor = _LocalUnboundNameFinder(pyobject, self)
     for child in ast.get_child_nodes(node):
         ast.walk(child, visitor)
Example #22
0
 def _Tuple(self, node):
     if not isinstance(node.ctx, ast.Store):
         return
     for child in ast.get_child_nodes(node):
         ast.walk(child, self)
Example #23
0
 def start_walking(self, node):
     nodes = [node]
     if isinstance(node, ast.FunctionDef):
         nodes = ast.get_child_nodes(node)
     for child in nodes:
         ast.walk(child, self)
Example #24
0
 def _new_scope(self, node):
     visitor = _WarningsVisitor()
     for child in ast.get_child_nodes(node):
         ast.walk(child, visitor)
     self.warnings.extend(visitor.warnings)