From 0c47f1e0b9f8bb280ea52d0cf42d9aa703b77b34 Mon Sep 17 00:00:00 2001
From: Ned Batchelder <ned@nedbatchelder.com>
Date: Fri, 8 Feb 2013 15:52:43 -0500
Subject: [PATCH] safe_exec can load modules for you.

---
 common/lib/codejail/codejail/safe_exec.py |  9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/common/lib/codejail/codejail/safe_exec.py b/common/lib/codejail/codejail/safe_exec.py
index 64700fb..eeb62d5 100644
--- a/common/lib/codejail/codejail/safe_exec.py
+++ b/common/lib/codejail/codejail/safe_exec.py
@@ -2,6 +2,8 @@
 
 import json
 
+from .lazymod import LazyModule
+
 def straw(v):
     return json.loads(json.dumps(jsonable_dict(v)))
 
@@ -27,6 +29,13 @@ def safe_exec(code, globals_dict, locals_dict=None, future_division=False, assum
     else:
         l_dict = straw(locals_dict)
 
+    for modname in assumed_imports or ():
+        if isinstance(modname, tuple):
+            name, modname = modname
+        else:
+            name = modname
+        g_dict[name] = LazyModule(modname)
+
     exec code in g_dict, l_dict
 
     globals_dict.update(straw(g_dict))
--
libgit2 0.26.0