summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2013-04-28 15:58:31 (GMT)
committerBrett Cannon <brett@python.org>2013-04-28 15:58:31 (GMT)
commite1d30f24ee2594ead4d4b28a65d706bd8e03ca2d (patch)
treee168fa0169549fc26418fb2feb710dc22c534749
parentd4c1b36c39b792f1b001979ebf2858444a4df095 (diff)
parent5a4c233a9e6450919ddea78d7df22a76b4758322 (diff)
downloadcpython-e1d30f24ee2594ead4d4b28a65d706bd8e03ca2d.zip
cpython-e1d30f24ee2594ead4d4b28a65d706bd8e03ca2d.tar.gz
cpython-e1d30f24ee2594ead4d4b28a65d706bd8e03ca2d.tar.bz2
merge for issue #17358
-rw-r--r--Lib/imp.py14
-rw-r--r--Misc/NEWS3
2 files changed, 15 insertions, 2 deletions
diff --git a/Lib/imp.py b/Lib/imp.py
index 7a7079f..6d156d3 100644
--- a/Lib/imp.py
+++ b/Lib/imp.py
@@ -111,7 +111,12 @@ def load_source(name, pathname, file=None):
'importlib.machinery.SourceFileLoader(name, pathname).load_module()'
' instead')
warnings.warn(msg, DeprecationWarning, 2)
- return _LoadSourceCompatibility(name, pathname, file).load_module(name)
+ _LoadSourceCompatibility(name, pathname, file).load_module(name)
+ module = sys.modules[name]
+ # To allow reloading to potentially work, use a non-hacked loader which
+ # won't rely on a now-closed file object.
+ module.__loader__ = _bootstrap.SourceFileLoader(name, pathname)
+ return module
class _LoadCompiledCompatibility(_HackedGetData,
@@ -125,7 +130,12 @@ def load_compiled(name, pathname, file=None):
'importlib.machinery.SourcelessFileLoader(name, pathname).'
'load_module() instead ')
warnings.warn(msg, DeprecationWarning, 2)
- return _LoadCompiledCompatibility(name, pathname, file).load_module(name)
+ _LoadCompiledCompatibility(name, pathname, file).load_module(name)
+ module = sys.modules[name]
+ # To allow reloading to potentially work, use a non-hacked loader which
+ # won't rely on a now-closed file object.
+ module.__loader__ = _bootstrap.SourcelessFileLoader(name, pathname)
+ return module
def load_package(name, path):
diff --git a/Misc/NEWS b/Misc/NEWS
index 828e8e5..d67cf6e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -52,6 +52,9 @@ Core and Builtins
Library
-------
+- Issue #17358: Modules loaded by imp.load_source() and load_compiled() (and by
+ extention load_module()) now have a better chance of working when reloaded.
+
- Issue #17804: New function ``struct.iter_unpack`` allows for streaming
struct unpacking.