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)
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
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
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)
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)
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
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 _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
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]
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)
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)
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)
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)
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)
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)
def _new_scope(self, node): visitor = _WarningsVisitor() for child in ast.get_child_nodes(node): ast.walk(child, visitor) self.warnings.extend(visitor.warnings)