Kaydet (Commit) 3aa2a49e authored tarafından Brett Cannon's avatar Brett Cannon

Add imp.reload(). This to help with transitioning to 3.0 the reload() built-in

has been removed there.
üst c777a412
...@@ -37,9 +37,28 @@ class LockTests(unittest.TestCase): ...@@ -37,9 +37,28 @@ class LockTests(unittest.TestCase):
self.fail("release_lock() without lock should raise " self.fail("release_lock() without lock should raise "
"RuntimeError") "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(): def test_main():
test_support.run_unittest( test_support.run_unittest(
LockTests, LockTests,
ReloadTests,
) )
if __name__ == "__main__": if __name__ == "__main__":
......
...@@ -41,6 +41,9 @@ Core and Builtins ...@@ -41,6 +41,9 @@ Core and Builtins
Library 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 - Changed code in the following modules/packages to remove warnings raised
while running under the ``-3`` flag: aifc, asyncore, bdb, bsddb, while running under the ``-3`` flag: aifc, asyncore, bdb, bsddb,
ConfigParser, cookielib, DocXMLRPCServer, email, filecmp, fileinput, inspect, ConfigParser, cookielib, DocXMLRPCServer, email, filecmp, fileinput, inspect,
......
...@@ -3030,12 +3030,24 @@ imp_new_module(PyObject *self, PyObject *args) ...@@ -3030,12 +3030,24 @@ imp_new_module(PyObject *self, PyObject *args)
return PyModule_New(name); return PyModule_New(name);
} }
static PyObject *
imp_reload(PyObject *self, PyObject *v)
{
return PyImport_ReloadModule(v);
}
/* Doc strings */ /* Doc strings */
PyDoc_STRVAR(doc_imp, PyDoc_STRVAR(doc_imp,
"This module provides the components needed to build your own\n\ "This module provides the components needed to build your own\n\
__import__ function. Undocumented functions are obsolete."); __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, PyDoc_STRVAR(doc_find_module,
"find_module(name, [path]) -> (file, filename, (suffix, mode, type))\n\ "find_module(name, [path]) -> (file, filename, (suffix, mode, type))\n\
Search for a module. If path is omitted or None, search for a\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\ ...@@ -3080,6 +3092,7 @@ Release the interpreter's import lock.\n\
On platforms without threads, this function does nothing."); On platforms without threads, this function does nothing.");
static PyMethodDef imp_methods[] = { static PyMethodDef imp_methods[] = {
{"reload", imp_reload, METH_O, doc_reload},
{"find_module", imp_find_module, METH_VARARGS, doc_find_module}, {"find_module", imp_find_module, METH_VARARGS, doc_find_module},
{"get_magic", imp_get_magic, METH_NOARGS, doc_get_magic}, {"get_magic", imp_get_magic, METH_NOARGS, doc_get_magic},
{"get_suffixes", imp_get_suffixes, METH_NOARGS, doc_get_suffixes}, {"get_suffixes", imp_get_suffixes, METH_NOARGS, doc_get_suffixes},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment