def visit_FunctionDef(self, node): """Visitor for AST FunctionDef nodes add relevant information about the node to the context for use in tests which inspect function definitions. Add the function name to the current namespace for all descendants. :param node: The node that is being inspected :return: - """ self.context["function"] = node if self.debug: logger.debug("visit_FunctionDef called (%s)", ast.dump(node)) qualname = self.namespace + "." + b_utils.get_func_name(node) name = qualname.split(".")[-1] self.context["qualname"] = qualname self.context["name"] = name # For all child nodes and any tests run, add this function name to # current namespace self.namespace = b_utils.namespace_path_join(self.namespace, name) self.update_scores(self.tester.run_tests(self.context, "FunctionDef")) self.generic_visit(node) self.namespace = b_utils.namespace_path_split(self.namespace)[0]
def visit_FunctionDef(self, node): '''Visitor for AST FunctionDef nodes add relevant information about the node to the context for use in tests which inspect function definitions. Add the function name to the current namespace for all descendants. :param node: The node that is being inspected :return: - ''' self.context['function'] = node if self.debug: self.logger.debug("visit_FunctionDef called (%s)", ast.dump(node)) qualname = self.namespace + '.' + b_utils.get_func_name(node) name = qualname.split('.')[-1] self.context['qualname'] = qualname self.context['name'] = name # For all child nodes and any tests run, add this function name to # current namespace self.namespace = b_utils.namespace_path_join(self.namespace, name) self.update_scores(self.tester.run_tests(self.context, 'FunctionDef')) self.generic_visit(node) self.namespace = b_utils.namespace_path_split(self.namespace)[0]
def post_visit(self, node): self.depth -= 1 LOG.debug("%s\texiting : %s", self.depth, hex(id(node))) # HACK(tkelsey): this is needed to clean up post-recursion stuff that # gets setup in the visit methods for these node types. if isinstance(node, ast.FunctionDef) or isinstance(node, ast.ClassDef): self.namespace = b_utils.namespace_path_split(self.namespace)[0]
def post_visit(self, node): self.depth -= 1 logger.debug("%s\texiting : %s", self.depth, hex(id(node))) # HACK(tkelsey): this is needed to clean up post-recursion stuff that # gets setup in the visit methods for these node types. if isinstance(node, ast.FunctionDef) or isinstance(node, ast.ClassDef): self.namespace = b_utils.namespace_path_split(self.namespace)[0]
def visit_ClassDef(self, node): """Visitor for AST ClassDef node Add class name to current namespace for all descendants. :param node: Node being inspected :return: - """ if self.debug: logger.debug("visit_ClassDef called (%s)", ast.dump(node)) # For all child nodes, add this class name to current namespace self.namespace = b_utils.namespace_path_join(self.namespace, node.name) self.generic_visit(node) self.namespace = b_utils.namespace_path_split(self.namespace)[0]
def visit_ClassDef(self, node): '''Visitor for AST ClassDef node Add class name to current namespace for all descendants. :param node: Node being inspected :return: - ''' if self.debug: self.logger.debug("visit_ClassDef called (%s)", ast.dump(node)) # For all child nodes, add this class name to current namespace self.namespace = b_utils.namespace_path_join(self.namespace, node.name) self.generic_visit(node) self.namespace = b_utils.namespace_path_split(self.namespace)[0]
def test_namespace_path_split(self): (head, tail) = b_utils.namespace_path_split('base1.base2.name') self.assertEqual('base1.base2', head) self.assertEqual('name', tail)
def test_namespace_path_split(self): (head, tail) = b_utils.namespace_path_split("base1.base2.name") self.assertEqual("base1.base2", head) self.assertEqual("name", tail)