]> code.delx.au - offlineimap/blob - offlineimap/localeval.py
Update FSF address
[offlineimap] / offlineimap / localeval.py
1 """Eval python code with global namespace of a python source file."""
2
3 # Copyright (C) 2002 John Goerzen
4 # <jgoerzen@complete.org>
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
20 import imp
21 try:
22 import errno
23 except:
24 pass
25
26 class LocalEval:
27 def __init__(self, path=None):
28 self.namespace={}
29
30 if path is not None:
31 file=open(path, 'r')
32 module=imp.load_module(
33 '<none>',
34 file,
35 path,
36 ('', 'r', imp.PY_SOURCE))
37 for attr in dir(module):
38 self.namespace[attr]=getattr(module, attr)
39
40 def eval(self, text, namespace=None):
41 names = {}
42 names.update(self.namespace)
43 if namespace is not None:
44 names.update(namespace)
45 return eval(text, names)