diff options
author | Walter Bender <walter@sugarlabs.org> | 2010-03-17 18:39:20 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2010-03-17 18:39:20 (GMT) |
commit | 81ba8fd9fa0e2fbbee1ef3534a96104de4cd7079 (patch) | |
tree | 500a2837580b12358f79322621acdbd39b8be5e2 /tajail.py | |
parent | b4e53af65b5bb6a8ec2e3f6f5e5e424ab2c01ea0 (diff) | |
parent | f1d5ed75c29961a718eb3c59fde1663c184f20cf (diff) |
Merge branch 'master' of git://git.sugarlabs.org/turtleart/refactoringv83
Conflicts:
NEWS
activity/activity.info
tagplay.py
tawindow.py
Diffstat (limited to 'tajail.py')
-rw-r--r-- | tajail.py | 55 |
1 files changed, 40 insertions, 15 deletions
@@ -1,4 +1,4 @@ -#Copyright (c) 2009, Walter Bender (on behalf of Sugar Labs) +#Copyright (c) 2009-10, Walter Bender (on behalf of Sugar Labs) #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal @@ -18,27 +18,52 @@ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. -# a naive approach to running myfun in a jail +# A naive approach to running myfunc in a jail +import logging +_logger = logging.getLogger('turtleart-activity') +import traceback from time import * from math import * try: from numpy import * -except: - pass -from taturtle import * +except ImportError: + _logger.error("could not import numpy") -def myfunc(lc, f, x): +def myfunc(f, args): # check to make sure no import calls are made - myf = "def f(x): return " + f.replace("import","") + if len(args) == 1: + myf = "def f(x): return " + f.replace("import","") + userdefined = {} + try: + exec myf in globals(), userdefined + return userdefined.values()[0](args[0]) + except: + traceback.print_exc() + return None + elif len(args) == 2: + myf = "def f(x,y): return " + f.replace("import","") + userdefined = {} + try: + exec myf in globals(), userdefined + return userdefined.values()[0](args[0],args[1]) + except: + traceback.print_exc() + return None + elif len(args) == 3: + myf = "def f(x,y,z): return " + f.replace("import","") + userdefined = {} + try: + exec myf in globals(), userdefined + return userdefined.values()[0](args[0],args[1],args[2]) + except: + traceback.print_exc() + return None + +def myfunc_import(lc, f, x): userdefined = {} try: - exec myf in globals(), userdefined - return userdefined.values()[0](x) + exec f in globals(), userdefined + return userdefined['myblock'](lc, x) except: + traceback.print_exc() return None - -def myfunc_import(lc, f, x): - userdefined = {} - exec f in globals(), userdefined - return userdefined['myblock'](lc,x) - |