[Python-checkins] r65563 - in python/trunk: Lib/test/test_imp.py Misc/NEWS Python/import.c

brett.cannon python-checkins at python.org
Thu Aug 7 00:28:10 CEST 2008


Author: brett.cannon
Date: Thu Aug  7 00:28:09 2008
New Revision: 65563

Log:
Add imp.reload(). This to help with transitioning to 3.0 the reload() built-in
has been removed there.


Modified:
   python/trunk/Lib/test/test_imp.py
   python/trunk/Misc/NEWS
   python/trunk/Python/import.c

Modified: python/trunk/Lib/test/test_imp.py
==============================================================================
--- python/trunk/Lib/test/test_imp.py	(original)
+++ python/trunk/Lib/test/test_imp.py	Thu Aug  7 00:28:09 2008
@@ -37,9 +37,28 @@
                 self.fail("release_lock() without lock should raise "
                             "RuntimeError")
 
+class ReloadTests(unittest.TestCase):
+
+    """Very basic tests to make sure that imp.reload() operates just like
+    reload()."""
+
+    def test_source(self):
+        import os
+        imp.reload(os)
+
+    def test_extension(self):
+        import time
+        imp.reload(time)
+
+    def test_builtin(self):
+        import marshal
+        imp.reload(marshal)
+
+
 def test_main():
     test_support.run_unittest(
                 LockTests,
+                ReloadTests,
             )
 
 if __name__ == "__main__":

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Thu Aug  7 00:28:09 2008
@@ -41,6 +41,9 @@
 Library
 -------
 
+- Issue #2338: Create imp.reload() to help with transitioning to Python 3.0 as
+  the reload() built-in has been removed.
+
 - Changed code in the following modules/packages to remove warnings raised
   while running under the ``-3`` flag: aifc, asyncore, bdb, bsddb,
   ConfigParser, cookielib, DocXMLRPCServer, email, filecmp, fileinput, inspect,

Modified: python/trunk/Python/import.c
==============================================================================
--- python/trunk/Python/import.c	(original)
+++ python/trunk/Python/import.c	Thu Aug  7 00:28:09 2008
@@ -3030,12 +3030,24 @@
 	return PyModule_New(name);
 }
 
+static PyObject *
+imp_reload(PyObject *self, PyObject *v)
+{
+	return PyImport_ReloadModule(v);
+}
+
+
 /* Doc strings */
 
 PyDoc_STRVAR(doc_imp,
 "This module provides the components needed to build your own\n\
 __import__ function.  Undocumented functions are obsolete.");
 
+PyDoc_STRVAR(doc_reload,
+"reload(module) -> module\n\
+\n\
+Reload the module.  The module must have been successfully imported before.");
+
 PyDoc_STRVAR(doc_find_module,
 "find_module(name, [path]) -> (file, filename, (suffix, mode, type))\n\
 Search for a module.  If path is omitted or None, search for a\n\
@@ -3080,6 +3092,7 @@
 On platforms without threads, this function does nothing.");
 
 static PyMethodDef imp_methods[] = {
+	{"reload",	 imp_reload,	   METH_O,	 doc_reload},
 	{"find_module",	 imp_find_module,  METH_VARARGS, doc_find_module},
 	{"get_magic",	 imp_get_magic,	   METH_NOARGS,  doc_get_magic},
 	{"get_suffixes", imp_get_suffixes, METH_NOARGS,  doc_get_suffixes},


More information about the Python-checkins mailing list