def test_keywords_wildcard(self): apf = ASTPatternFinder(prepare_pattern("f(e=4, ??=??)")) it = apf.scan_ast(self.ast) assert_ast_like(next(it), ast.Call(keywords=[ast.keyword(arg='d'), ast.keyword(arg='e'),]) ) self.assert_no_more(it)
def test_keywords_wildcard(self): apf = ASTPatternFinder(prepare_pattern("f(e=4, ??=??)")) it = apf.scan_ast(self.ast) assert_ast_like( next(it), ast.Call(keywords=[ ast.keyword(arg='d'), ast.keyword(arg='e'), ])) self.assert_no_more(it)
def test_pos_final_wildcard(self): apf = ASTPatternFinder(prepare_pattern("f(1, ??)")) it = apf.scan_ast(self.ast) assert_ast_like(next(it), ast.Call(args=[ast.Num(n=1)])) assert_ast_like(next(it), ast.Call(args=[ast.Num(n=1), ast.Num(n=2)])) assert_ast_like(next(it), ast.Call(starargs=ast.Name(id='c'))) assert_ast_like(next(it), ast.Call(args=[ast.Num(n=1)], keywords=[ast.keyword(arg='d'), ast.keyword(arg='e'), ]) ) assert_ast_like(next(it), ast.Call(kwargs=ast.Name(id='k'))) self.assert_no_more(it)
def test_pos_final_wildcard(self): apf = ASTPatternFinder(prepare_pattern("f(1, ??)")) it = apf.scan_ast(self.ast) assert_ast_like(next(it), ast.Call(args=[ast.Num(n=1)])) assert_ast_like(next(it), ast.Call(args=[ast.Num(n=1), ast.Num(n=2)])) assert_ast_like(next(it), ast.Call(starargs=ast.Name(id='c'))) assert_ast_like( next(it), ast.Call(args=[ast.Num(n=1)], keywords=[ ast.keyword(arg='d'), ast.keyword(arg='e'), ])) assert_ast_like(next(it), ast.Call(kwargs=ast.Name(id='k'))) self.assert_no_more(it)
def get_matching_names(self, pat): apf = ASTPatternFinder(prepare_pattern(pat)) matches = apf.scan_ast(self.ast) return {f.name for f in matches}
def test_single_and_multi_wildcard(self): apf = ASTPatternFinder(prepare_pattern("f(?, ??)")) matches = list(apf.scan_ast(self.ast)) assert len(matches) == 5
def test_mixed_wildcard(self): apf = ASTPatternFinder(prepare_pattern("f(??, d=?)")) matches = list(apf.scan_ast(self.ast)) assert len(matches) == 4 assert_ast_like(matches[-1], ast.Call(kwargs=ast.Name(id='k')))
def test_keywords_wildcard2(self): apf = ASTPatternFinder(prepare_pattern("f(d=?, ??=??)")) matches = list(apf.scan_ast(self.ast)) assert len(matches) == 2
def test_pos_leading_wildcard(self): apf = ASTPatternFinder(prepare_pattern("f(??, 2)")) it = apf.scan_ast(self.ast) assert_ast_like(next(it), ast.Call(args=[ast.Num(n=1), ast.Num(n=2)])) self.assert_no_more(it)
def test_wildcard_all(self): apf = ASTPatternFinder(prepare_pattern("f(??)")) matches = list(apf.scan_ast(self.ast)) assert len(matches) == 8