def have_compile():
try:
compile
return True
except NameError:
return False
def test():
global x
c = compile("print(x)", "file", "exec")
try:
exec(c)
except NameError:
print("NameError")
x = 1
exec(c)
exec(c, {"x":2})
exec(c, {}, {"x":3})
exec(compile('print(1 + 1)', 'file', 'single'))
print(eval(compile('1 + 1', 'file', 'eval')))
try:
compile('1', 'file', '')
except ValueError:
print("ValueError")
try:
exec(compile('noexist', 'file', 'exec'))
except NameError:
print("NameError")
print(x)
if have_compile():
test()
else:
print("SKIP")
raise SystemExit