summaryrefslogtreecommitdiffstats
path: root/Lib/ihooks.py
diff options
context:
space:
mode:
authorGustavo Niemeyer <gustavo@niemeyer.net>2002-12-16 13:11:57 (GMT)
committerGustavo Niemeyer <gustavo@niemeyer.net>2002-12-16 13:11:57 (GMT)
commitd5ae01a8037d5cba917aef531a3281760e82ed77 (patch)
treea610da98e483885db7363f1b28fa9c1af0c5e48c /Lib/ihooks.py
parent822a77fcc761b3c9992950ddf48b3f0bec917b4d (diff)
downloadcpython-d5ae01a8037d5cba917aef531a3281760e82ed77.zip
cpython-d5ae01a8037d5cba917aef531a3281760e82ed77.tar.gz
cpython-d5ae01a8037d5cba917aef531a3281760e82ed77.tar.bz2
Applying patch
[#636769] Fix for major rexec bugs * Lib/rexec.py (FileBase): Added 'xreadlines' and '__iter__' to allowed file methods. (FileWrapper.__init__): Removed unnecessary self.f variable, which gave direct access to the file object. (RExec): Added 'xreadlines' and '_weakref' to allowed modules. (RExec.r_open): Convert string subclasses to a real string classes before doing comparisons with mode parameter. * Lib/ihooks.py (BasicModuleImporter.import_module/reload/unload): Convert the module name to a real string before working with it. (ModuleImporter.import_module/import_it/reload): Convert the module name to a real strings before working with it. * Misc/NEWS Document the change.
Diffstat (limited to 'Lib/ihooks.py')
-rw-r--r--Lib/ihooks.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/Lib/ihooks.py b/Lib/ihooks.py
index 7b00837..f01862d 100644
--- a/Lib/ihooks.py
+++ b/Lib/ihooks.py
@@ -352,6 +352,7 @@ class BasicModuleImporter(_Verbose):
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)
@@ -360,14 +361,14 @@ class BasicModuleImporter(_Verbose):
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):
@@ -394,7 +395,7 @@ class ModuleImporter(BasicModuleImporter):
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
@@ -480,16 +481,18 @@ class ModuleImporter(BasicModuleImporter):
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('.')