def generic_visit(self, node): for field, value in ast.iter_fields(node): if isinstance(value, list): for item in value: if self.is_node(item): self.visit(item) elif self.is_node(value): self.visit(value)
def generic_visit(self, node): """Called if no explicit visitor function exists for a node.""" for field, value in ast.iter_fields(node): if isinstance(value, list): for item in value: if isinstance(item, ast.AST): self.visit(item) elif isinstance(value, ast.AST) or isinstance(value, Generable): self.visit(value)
def visit(self, node): eql = False if node.__class__ == self.original.__class__: eql = True for (field, value) in ast.iter_fields(self.original): if field != 'ctx' and node.__getattribute__(field) != value: debug_print( str(node.__getattribute__(field)) + " != " + str(value) ) eql = False if eql: import copy debug_print( "Found something to replace!!!!" ) return copy.deepcopy(self.replacement) else: return self.generic_visit(node)
def visit(self, node): eql = False if node.__class__ == self.original.__class__: eql = True for (field, value) in ast.iter_fields(self.original): if field != 'ctx' and node.__getattribute__(field) != value: debug_print( str(node.__getattribute__(field)) + " != " + str(value) ) eql = False break if eql: import copy debug_print( "Found something to replace!!!!" ) return copy.deepcopy(self.replacement) else: return self.generic_visit(node)
def generic_visit(self, node): for field, old_value in ast.iter_fields(node): old_value = getattr(node, field, None) if isinstance(old_value, list): new_values = [] for value in old_value: if isinstance(value, ast.AST) or isinstance(value, Generable): value = self.visit(value) if value is None: continue elif not (isinstance(value, ast.AST) or isinstance(value, Generable)): new_values.extend(value) continue new_values.append(value) old_value[:] = new_values elif isinstance(old_value, ast.AST) or isinstance(old_value, Generable): new_node = self.visit(old_value) if new_node is None: delattr(node, field) else: setattr(node, field, new_node) return node