]> code.delx.au - offlineimap/commitdiff
/offlineimap/head: changeset 230
authorjgoerzen <jgoerzen>
Fri, 9 Aug 2002 21:11:12 +0000 (22:11 +0100)
committerjgoerzen <jgoerzen>
Fri, 9 Aug 2002 21:11:12 +0000 (22:11 +0100)
More of part 1 of the patch

offlineimap/head/offlineimap/localeval.py [new file with mode: 0644]

diff --git a/offlineimap/head/offlineimap/localeval.py b/offlineimap/head/offlineimap/localeval.py
new file mode 100644 (file)
index 0000000..6556073
--- /dev/null
@@ -0,0 +1,23 @@
+"""Eval python code with global namespace of a python source file."""
+import imp, errno
+
+class LocalEval:
+    def __init__(self, path=None):
+        self.namespace={}
+
+        if path is not None:
+            file=open(path, 'r')
+            module=imp.load_module(
+                '<none>',
+                file,
+                path,
+                ('', 'r', imp.PY_SOURCE))
+            for attr in dir(module):
+                self.namespace[attr]=getattr(module, attr)
+
+    def eval(self, text, namespace=None):
+        names = {}
+        names.update(self.namespace)
+        if namespace is not None:
+            names.update(namespace)
+        return eval(text, names)