diff options
author | Walter Bender <walter@sugarlabs.org> | 2010-08-12 17:57:55 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2010-08-12 17:57:55 (GMT) |
commit | c2937d9fdd30b1b896caf66851d6677924d07488 (patch) | |
tree | c242386fa59755d4adea7fb414b72466181a2a2e /TurtleArt/tajail.py | |
parent | 98caa09b7eadbd14776b73f01095bc59cb39cc18 (diff) |
reorg of module heirarchy
Diffstat (limited to 'TurtleArt/tajail.py')
-rw-r--r-- | TurtleArt/tajail.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/TurtleArt/tajail.py b/TurtleArt/tajail.py new file mode 100644 index 0000000..091557b --- /dev/null +++ b/TurtleArt/tajail.py @@ -0,0 +1,69 @@ +#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 +#in the Software without restriction, including without limitation the rights +#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +#copies of the Software, and to permit persons to whom the Software is +#furnished to do so, subject to the following conditions: + +#The above copyright notice and this permission notice shall be included in +#all copies or substantial portions of the Software. + +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +#THE SOFTWARE. + +# 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 ImportError: + _logger.error("could not import numpy") + +def myfunc(f, args): + # check to make sure no import calls are made + 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 f in globals(), userdefined + return userdefined['myblock'](lc, x) + except: + traceback.print_exc() + return None |