return self.loader.set_hooks(hooks)
def import_module(self, name, globals={}, locals={}, fromlist=[]):
+ name = str(name)
if name in self.modules:
return self.modules[name] # Fast path
stuff = self.loader.find_module(name)
return self.loader.load_module(name, stuff)
def reload(self, module, path = None):
- name = module.__name__
+ name = str(module.__name__)
stuff = self.loader.find_module(name, path)
if not stuff:
raise ImportError, "Module %s not found for reload" % name
return self.loader.load_module(name, stuff)
def unload(self, module):
- del self.modules[module.__name__]
+ del self.modules[str(module.__name__)]
# XXX Should this try to clear the module's namespace?
def install(self):
def import_module(self, name, globals=None, locals=None, fromlist=None):
parent = self.determine_parent(globals)
- q, tail = self.find_head_package(parent, name)
+ q, tail = self.find_head_package(parent, str(name))
m = self.load_tail(q, tail)
if not fromlist:
return q
path = parent and parent.__path__
except AttributeError:
return None
+ partname = str(partname)
stuff = self.loader.find_module(partname, path)
if not stuff:
return None
+ fqname = str(fqname)
m = self.loader.load_module(fqname, stuff)
if parent:
setattr(parent, partname, m)
return m
def reload(self, module):
- name = module.__name__
+ name = str(module.__name__)
if '.' not in name:
return self.import_it(name, name, None, force_load=1)
i = name.rfind('.')
class FileBase:
ok_file_methods = ('fileno', 'flush', 'isatty', 'read', 'readline',
- 'readlines', 'seek', 'tell', 'write', 'writelines')
+ 'readlines', 'seek', 'tell', 'write', 'writelines', 'xreadlines',
+ '__iter__')
class FileWrapper(FileBase):
# XXX This is just like a Bastion -- should use that!
def __init__(self, f):
- self.f = f
for m in self.ok_file_methods:
if not hasattr(self, m) and hasattr(f, m):
setattr(self, m, getattr(f, m))
'cmath', 'errno', 'imageop',
'marshal', 'math', 'md5', 'operator',
'parser', 'regex', 'pcre', 'rotor', 'select',
- 'sha', '_sre', 'strop', 'struct', 'time')
+ 'sha', '_sre', 'strop', 'struct', 'time',
+ 'xreadlines', '_weakref')
ok_posix_names = ('error', 'fstat', 'listdir', 'lstat', 'readlink',
'stat', 'times', 'uname', 'getpid', 'getppid',
used to change the policies enforced by a restricted environment.
"""
+ mode = str(mode)
if mode not in ('r', 'rb'):
raise IOError, "can't open files for writing in restricted mode"
return open(file, mode, buf)