]> granicus.if.org Git - python/commitdiff
Add imp.reload(). This to help with transitioning to 3.0 the reload() built-in
authorBrett Cannon <bcannon@gmail.com>
Wed, 6 Aug 2008 22:28:09 +0000 (22:28 +0000)
committerBrett Cannon <bcannon@gmail.com>
Wed, 6 Aug 2008 22:28:09 +0000 (22:28 +0000)
has been removed there.

Lib/test/test_imp.py
Misc/NEWS
Python/import.c

index f597728b16b6cee004e26da1cb508b06b3b60cdb..513ca60884113a89673aed0aa76b3a2f579d8f36 100644 (file)
@@ -37,9 +37,28 @@ class LockTests(unittest.TestCase):
                 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__":
index 87b43970fe4331c0351a1ef298dd451643e4d5f3..2a01e0157f08a5aee555e3bd9ca0b3e62a1ca047 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -41,6 +41,9 @@ Core and Builtins
 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,
index f0ee40a6ce02804a38f3cf3fff5525a53b6659c5..fd1315442a6bc7f77dc208bfe4bbc7b4c5d42c10 100644 (file)
@@ -3030,12 +3030,24 @@ imp_new_module(PyObject *self, PyObject *args)
        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 @@ Release the interpreter's import lock.\n\
 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},