1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
from baron.future import has_print_function, replace_print_by_name
from baron.baron import parse, tokenize
import json
def print_token_is_a_function(code):
return has_print_function(tokenize(code))
def print_is_parsed_as_a_function(parsed_code):
code_json = json.dumps(parsed_code)
return '"type": "name", "value": "print"' in code_json \
or '"value": "print", "type": "name"' in code_json
def test_no_future():
code = "a = 1"
assert not print_token_is_a_function(code)
def test_other_future():
code = "from __future__ import other"
assert not print_token_is_a_function(code)
def test_print_future():
code = "from __future__ import print_function"
assert print_token_is_a_function(code)
def test_print_future_as():
code = "from __future__ import print_function as p_f"
assert print_token_is_a_function(code)
def test_print_future_comma():
code = "from __future__ import a, b, print_function"
assert print_token_is_a_function(code)
def test_print_future_comma_as():
code = "from __future__ import a as c, b as d, print_function as e"
assert print_token_is_a_function(code)
def test_print_no_future_comma_as():
code = "from __future__ import a as c, b as d"
assert not print_token_is_a_function(code)
def test_print_future_in_parenthesis():
code = "from __future__ import (a, b, print_function)"
assert print_token_is_a_function(code)
def test_print_future_in_parenthesis_as():
code = "from __future__ import (a as c, b as d, print_function as e)"
assert print_token_is_a_function(code)
def test_print_no_future_in_parenthesis_as():
code = "from __future__ import (a as c, b as d)"
assert not print_token_is_a_function(code)
def test_print_future_second():
code = """from __future__ import a, b as e
from __future__ import c, print_function"""
assert print_token_is_a_function(code)
def test_auto_print_as_name():
code = "from __future__ import print_function\nprint(a)"
assert print_is_parsed_as_a_function(parse(code))
def test_auto_print_as_print():
code = "print(a)"
assert not print_is_parsed_as_a_function(parse(code))
def test_print_as_name():
code = "print(a)"
assert print_is_parsed_as_a_function(parse(code, True))
def test_print_as_print():
code = "print(a)"
assert not print_is_parsed_as_a_function(parse(code, False))
def test_replace_print_token():
tokens = [('PRINT', 'print'), ('LEFT_PARENTHESIS', '('), ('NAME', 'A'), ('RIGHT_PARENTHESIS', ')'), ('ENDMARKER', '')]
after = [('NAME', 'print'), ('LEFT_PARENTHESIS', '('), ('NAME', 'A'), ('RIGHT_PARENTHESIS', ')'), ('ENDMARKER', '')]
assert after == replace_print_by_name(tokens)
|