def test_invalid5(): with pytest.raises( Py2VegaSyntaxError, match= 'A `If` node body must contain at least one `if` statement or one `return` statement' ): py2vega(invalid_func5)
def test_whitelist(): with pytest.raises(NameError): py2vega('my_variable') assert py2vega('my_variable', ['my_variable']) == 'my_variable' # Vega constants are accessible by default assert py2vega('PI') == 'PI'
def test_subscript(): code = 'value[0]' assert py2vega(code, whitelist) == 'value[0]' code = '[34, 32][0 if value < 2 else 1]' assert py2vega(code, whitelist) == '[34, 32][((value < 2) ? 0 : 1)]' code = 'value[:2]' assert py2vega(code, whitelist) == 'slice(value, 0, 2)' code = 'value[1:]' assert py2vega(code, whitelist) == 'slice(value, 1)' code = 'value[:]' assert py2vega(code, whitelist) == 'slice(value, 0)' code = 'value[1:2]' assert py2vega(code, whitelist) == 'slice(value, 1, 2)' # Unsupported step parameter code = 'value[::2]' with pytest.raises(Py2VegaSyntaxError): py2vega(code, whitelist) # Unsupported ExtSlice node code = 'value[::2, 1:]' with pytest.raises(Py2VegaSyntaxError): py2vega(code, whitelist)
def test_invalid4(): with pytest.raises( Py2VegaSyntaxError, match= 'A `If` node body cannot contain an `if` or `return` statement if it is not the last element of the body' ): py2vega(invalid_func4)
def test_unary(): code = 'not value' assert py2vega(code, whitelist) == '!(value)' code = '-value' assert py2vega(code, whitelist) == '-value' code = '+value' assert py2vega(code, whitelist) == '+value'
def test_nameconstant(): code = 'False' assert py2vega(code, whitelist) == 'false' code = 'True' assert py2vega(code, whitelist) == 'true' code = 'None' assert py2vega(code, whitelist) == 'null'
def test_binary(): code = 'value or 3' assert py2vega(code, whitelist) == 'value || 3' code = 'value and 3' assert py2vega(code, whitelist) == 'value && 3' code = 'value + 3' assert py2vega(code, whitelist) == 'value + 3' code = 'value**3' assert py2vega(code, whitelist) == 'pow(value, 3)'
def test_compare(): code = '3 < value <= 4' assert py2vega(code, whitelist) == '(3 < value <= 4)' code = 'value in (\'ford\', \'chevrolet\')' assert py2vega( code, whitelist) == '(indexof([\'ford\', \'chevrolet\'], value) != -1)' code = '\'chevrolet\' in value' assert py2vega(code, whitelist) == '(indexof(value, \'chevrolet\') != -1)' code = '\'chevrolet\' not in value' assert py2vega(code, whitelist) == '(indexof(value, \'chevrolet\') == -1)'
def _validate_value(self, proposal): return py2vega( proposal["value"], [ Variable("cell", ["value", "row", "column", "metadata"]), "default_value", ], )
def test_binary(): code = 'value or 3' assert py2vega(code, whitelist) == '(value || 3)' code = 'value and 3' assert py2vega(code, whitelist) == '(value && 3)' code = 'value + 3' assert py2vega(code, whitelist) == '(value + 3)' code = 'value**3' assert py2vega(code, whitelist) == '(pow(value, 3))' # Unsupported operator code = 'value & x' with pytest.raises(Py2VegaSyntaxError): py2vega(code, whitelist)
def test_assign8(): assert py2vega(assign_func8, whitelist) == "if((value < 3), 3, 8)"
def test_assign7(): with pytest.raises(NameError): py2vega(assign_func7, whitelist)
def test_assign6(): assert py2vega(assign_func6, whitelist) == "'Hello'"
def test_math(): assert py2vega(math_func) == 'isNaN(3)'
def test_assign10(): with pytest.raises(Py2VegaSyntaxError, match='Unsupported target'): assert py2vega(assign_func10, whitelist)
def test_assign2(): assert py2vega(assign_func2, whitelist) == "((value < 3) ? 'green' : 'red')"
def test_assign1(): assert py2vega( assign_func1, whitelist ) == "((indexof(['USA', 'Japan'], value) != -1) ? 'red' : 'green')"
def test_if_stmt(): assert py2vega( conditional_func, whitelist ) == "if((value < 3), 'red', if((value < 5), 'green', 'yellow'))"
def test_lambda(): with pytest.raises(RuntimeError): py2vega(lambda value: value)
def test_tuple(): code = '(True, 3, \'hello\')' assert py2vega(code, whitelist) == '[true, 3, \'hello\']' code = '((True, 3, \'hello\'), 3)' assert py2vega(code, whitelist) == '[[true, 3, \'hello\'], 3]'
def test_invalid6(): with pytest.raises(Py2VegaSyntaxError): py2vega(invalid_func6)
def test_assign9(): assert py2vega(assign_func9, whitelist) == "if((value < 3), (isNaN(value) ? 38 : 32), 8)"
def test_dict(): code = '{\'hello\': 3, \'there\': 4}' assert py2vega(code, whitelist) == '{\'hello\': 3, \'there\': 4}' code = '{\'hello\': 3, \'there\': 4}' assert py2vega(code, whitelist) == '{\'hello\': 3, \'there\': 4}'
def test_assign4(): assert py2vega(assign_func4, whitelist) == "'green'"
def test_function(): assert py2vega(func, whitelist) == '((value < 150) ? \'red\' : \'green\')'
def test_assign5(): assert py2vega(assign_func5, whitelist) == "['Hello', 'Hello']"
def test_ternary(): code = '3 if value else 4' assert py2vega(code, whitelist) == '(value ? 3 : 4)'
def test_list(): code = '[True, 3, \'hello\']' assert py2vega(code, whitelist) == '[true, 3, \'hello\']'
def test_assign3(): assert py2vega(assign_func3, whitelist) == "'red'"
def test_str(): code = '\'white\'' assert py2vega(code, whitelist) == '\'white\''