Apologies for the noise. Brain in gear.... --r. Begin forwarded message:
From: Russ Ferriday <russf@topia.com> Date: November 3, 2010 12:47:33 PM PDT To: zope-dev <zope-dev@zope.org> Subject: RestrictedPython - inserting variables before doing exec(code)
Good day!
Refs: http://pypi.python.org/pypi/RestrictedPython
I want to pass existing bound variables into the environment of some restricted code before running it.
This is similar to when globals are passed to compile_restricted_function.
The idea...
x = 42 y = 'foo' src="""print x*2; print y; return printed""" code=compile_restricted(src, '<string>', 'exec') code.global['x'] = x # <- just dreaming, here. code.global['y'] = y # <- just dreaming, here. ans = exec(code) in restricted_globals print ans # prints "84\n'foo'\n"
It's clear that passing in arbitrary objects is not feasible. But what if I'm prepared to constrain input to built-in numeric and string types, possibly in or with nested dicts?
In many cases the input will be large integer or float arrays, and I want to avoid any nasty kludge such as printing those inputs into the top lines of the src ;). The src in the demo is a constant, but in the application, it's provided by users via a list of pre-defined and user-created 'macros'.
If I'm missing something obvious, flames welcome!
--r.
Russ Ferriday -- CEO Topia Systems Ltd. russf@topia.com -- +1 (805) 910 7877 -- www.topia.com
Russ Ferriday -- Systems Architect & Entrepreneur CEO Topia Systems Ltd. russf@topia.com -- +1 (805) 910 7877 -- www.topia.com