Python ast.increment_lineno() Examples
The following are 17
code examples of ast.increment_lineno().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
ast
, or try the search function
.
Example #1
Source File: test_ast.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' ) # issue10869: do not increment lineno of root twice src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src.body, n=3), src.body) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #2
Source File: test_ast.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 6 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' ) # issue10869: do not increment lineno of root twice src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src.body, n=3), src.body) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #3
Source File: test_ast.py From gcblue with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' ) # issue10869: do not increment lineno of root twice src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src.body, n=3), src.body) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #4
Source File: test_ast.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' ) # issue10869: do not increment lineno of root twice src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src.body, n=3), src.body) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #5
Source File: test_ast.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' ) # issue10869: do not increment lineno of root twice src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src.body, n=3), src.body) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #6
Source File: test_ast.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' ) # issue10869: do not increment lineno of root twice src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src.body, n=3), src.body) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #7
Source File: test_ast.py From oss-ftp with MIT License | 6 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' ) # issue10869: do not increment lineno of root twice src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src.body, n=3), src.body) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #8
Source File: test_ast.py From BinderFilter with MIT License | 6 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' ) # issue10869: do not increment lineno of root twice src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src.body, n=3), src.body) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #9
Source File: test_ast.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' ) # issue10869: do not increment lineno of root twice src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src.body, n=3), src.body) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #10
Source File: processor.py From fastats with MIT License | 5 votes |
def parse_snippet(source, filename, mode, flags, firstlineno): """ Like ast.parse, but accepts indented code snippet with a line number offset. """ args = filename, mode, ast.PyCF_ONLY_AST, True prefix = '\n' try: a = compile(prefix + source, *args) except IndentationError: # Already indented? Wrap with dummy compound statement prefix = 'with 0:\n' a = compile(prefix + source, *args) # peel wrapper a.body = a.body[0].body ast.increment_lineno(a, firstlineno - 2) return a
Example #11
Source File: docstring.py From gpkit with MIT License | 5 votes |
def __call__(self, function): # pylint:disable=too-many-locals orig_lines, lineno = inspect.getsourcelines(function) indent_length = 0 while orig_lines[1][indent_length] in [" ", "\t"]: indent_length += 1 first_indent_length = indent_length setup_lines = 1 while "):" not in orig_lines[setup_lines]: setup_lines += 1 next_indented_idx = setup_lines + 1 # get the next indented line while len(orig_lines[next_indented_idx]) <= indent_length + 1: next_indented_idx += 1 while orig_lines[next_indented_idx][indent_length] in [" ", "\t"]: indent_length += 1 second_indent = orig_lines[next_indented_idx][:indent_length] parse_lines = [second_indent + line + "\n" for line in parse_varstring(self.string).split("\n")] parse_lines += [second_indent + '# (@parse_variables spacer line)\n'] parse_lines += [second_indent + '# (setup spacer line)\n']*setup_lines # make ast of these new lines, insert it into the original ast new_lines = (orig_lines[1:setup_lines+1] + parse_lines + orig_lines[setup_lines+1:]) new_src = "\n".join([l[first_indent_length:-1] for l in new_lines if "#" not in l[:first_indent_length]]) new_ast = ast.parse(new_src, "<parse_variables>") ast.increment_lineno(new_ast, n=lineno-len(parse_lines)) code = compile(new_ast, inspect.getsourcefile(function), "exec", dont_inherit=True) # don't inherit __future__ from here out = {} exec(code, self.scopevars, out) # pylint: disable=exec-used return out[function.__name__]
Example #12
Source File: config_scope.py From sacred with MIT License | 5 votes |
def get_function_body_code(func): filename = inspect.getfile(func) func_body, line_offset = get_function_body(func) body_source = dedent_function_body(func_body) try: body_code = compile(body_source, filename, "exec", ast.PyCF_ONLY_AST) body_code = ast.increment_lineno(body_code, n=line_offset) body_code = compile(body_code, filename, "exec") except SyntaxError as e: if e.args[0] == "'return' outside function": filename, lineno, _, statement = e.args[1] raise SyntaxError( "No return statements allowed in ConfigScopes\n" "('{}' in File \"{}\", line {})".format( statement.strip(), filename, lineno ) ) elif e.args[0] == "'yield' outside function": filename, lineno, _, statement = e.args[1] raise SyntaxError( "No yield statements allowed in ConfigScopes\n" "('{}' in File \"{}\", line {})".format( statement.strip(), filename, lineno ) ) else: raise return body_code
Example #13
Source File: test_ast.py From medicare-demo with Apache License 2.0 | 5 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #14
Source File: test_ast.py From CTFCrackTools-V2 with GNU General Public License v3.0 | 5 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #15
Source File: test_ast.py From CTFCrackTools with GNU General Public License v3.0 | 5 votes |
def test_increment_lineno(self): src = ast.parse('1 + 1', mode='eval') self.assertEqual(ast.increment_lineno(src, n=3), src) self.assertEqual(ast.dump(src, include_attributes=True), 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' 'col_offset=0))' )
Example #16
Source File: compilation.py From jishaku with MIT License | 4 votes |
def wrap_code(code: str, args: str = '') -> ast.Module: """ Compiles Python code into an async function or generator, and automatically adds return if the function body is a single evaluation. Also adds inline import expression support. """ mod = import_expression.parse(CORO_CODE.format(args, textwrap.indent(code, ' ' * 8)), mode='exec') definition = mod.body[-1] # async def ...: assert isinstance(definition, ast.AsyncFunctionDef) try_block = definition.body[-1] # try: assert isinstance(try_block, ast.Try) ast.increment_lineno(mod, -16) # bring line numbers back in sync with repl ast.fix_missing_locations(mod) KeywordTransformer().generic_visit(try_block) last_expr = try_block.body[-1] # if the last part isn't an expression, ignore it if not isinstance(last_expr, ast.Expr): return mod # if the last expression is not a yield if not isinstance(last_expr.value, ast.Yield): # copy the value of the expression into a yield yield_stmt = ast.Yield(last_expr.value) ast.copy_location(yield_stmt, last_expr) # place the yield into its own expression yield_expr = ast.Expr(yield_stmt) ast.copy_location(yield_expr, last_expr) # place the yield where the original expression was try_block.body[-1] = yield_expr return mod
Example #17
Source File: rewrite.py From ward with MIT License | 4 votes |
def rewrite_assertion(test: Test) -> Test: # Get the old code and code object code = inspect.getsource(test.fn) indents = textwrap._leading_whitespace_re.findall(code) col_offset = len(indents[0]) if len(indents) > 0 else 0 code = textwrap.dedent(code) code_obj = test.fn.__code__ # Rewrite the AST of the code tree = ast.parse(code) line_no = inspect.getsourcelines(test.fn)[1] ast.increment_lineno(tree, line_no - 1) new_tree = RewriteAssert().visit(tree) # We dedented the code so that it was a valid tree, now re-apply the indent for child in ast.walk(new_tree): if hasattr(child, "col_offset"): child.col_offset = getattr(child, "col_offset", 0) + col_offset # Reconstruct the test function new_mod_code_obj = compile(new_tree, code_obj.co_filename, "exec") # TODO: This probably isn't correct for nested closures clo_glob = {} if test.fn.__closure__: clo_glob = test.fn.__closure__[0].cell_contents.__globals__ for const in new_mod_code_obj.co_consts: if isinstance(const, types.CodeType): new_test_func = types.FunctionType( const, {**assert_func_namespace, **test.fn.__globals__, **clo_glob}, test.fn.__name__, test.fn.__defaults__, ) new_test_func.ward_meta = test.fn.ward_meta return Test( **{k: vars(test)[k] for k in vars(test) if k != "fn"}, fn=new_test_func, ) return test