[Python-3000-checkins] r59894 - in python/branches/py3k-importhook: Lib/test/test_imp.py Python/import.c
christian.heimes
python-3000-checkins at python.org
Thu Jan 10 20:48:40 CET 2008
Author: christian.heimes
Date: Thu Jan 10 20:48:40 2008
New Revision: 59894
Modified:
python/branches/py3k-importhook/Lib/test/test_imp.py
python/branches/py3k-importhook/Python/import.c
Log:
Moved the notification to import_submodule()
import a.b.c now calls the callbacks in the right order (first a, then a.b, at last a.b.c)
Modified: python/branches/py3k-importhook/Lib/test/test_imp.py
==============================================================================
--- python/branches/py3k-importhook/Lib/test/test_imp.py (original)
+++ python/branches/py3k-importhook/Lib/test/test_imp.py Thu Jan 10 20:48:40 2008
@@ -92,6 +92,15 @@
f.write('\n')
return root
+hier = [
+ ("pih_test", None),
+ ("pih_test __init__", "package = 0"),
+ ("pih_test a", None),
+ ("pih_test a __init__", "package = 1"),
+ ("pih_test a b", None),
+ ("pih_test a b __init__", "package = 2"),
+]
+
class CallBack:
def __init__(self):
self.mods = {}
@@ -171,14 +180,6 @@
imp.notify_module_loaded(mod)
def test_hook_hirarchie(self):
- hier = [
- ("pih_test", None),
- ("pih_test __init__", "package = 0"),
- ("pih_test a", None),
- ("pih_test a __init__", "package = 1"),
- ("pih_test a b", None),
- ("pih_test a b __init__", "package = 2"),
- ]
self.tmpdir = mkhier(hier)
callback = CallBack()
imp.register_post_import_hook(callback, "pih_test")
@@ -198,6 +199,23 @@
self.assertEqual(callback.names,
["pih_test", "pih_test.a", "pih_test.a.b"])
+ def test_hook_hirarchie_recursive(self):
+ self.tmpdir = mkhier(hier)
+ callback = CallBack()
+ imp.register_post_import_hook(callback, "pih_test")
+ imp.register_post_import_hook(callback, "pih_test.a")
+ imp.register_post_import_hook(callback, "pih_test.a.b")
+
+ import pih_test.a.b
+ self.assertEqual(callback.names,
+ ["pih_test", "pih_test.a", "pih_test.a.b"])
+ import pih_test
+ self.assertEqual(callback.names,
+ ["pih_test", "pih_test.a", "pih_test.a.b"])
+ import pih_test.a
+ self.assertEqual(callback.names,
+ ["pih_test", "pih_test.a", "pih_test.a.b"])
+
def test_main():
test_support.run_unittest(
Modified: python/branches/py3k-importhook/Python/import.c
==============================================================================
--- python/branches/py3k-importhook/Python/import.c (original)
+++ python/branches/py3k-importhook/Python/import.c Thu Jan 10 20:48:40 2008
@@ -2286,7 +2286,7 @@
PyObject *result;
lock_import();
result = import_module_level(name, globals, locals, fromlist, level);
- result = PyImport_NotifyModuleLoaded(result);
+ /* result = PyImport_NotifyModuleLoaded(result); */
if (unlock_import() < 0) {
Py_XDECREF(result);
PyErr_SetString(PyExc_RuntimeError,
@@ -2697,6 +2697,8 @@
Py_XDECREF(m);
m = NULL;
}
+ /* notify that the module was loaded */
+ m = PyImport_NotifyModuleLoaded(m);
}
return m;
More information about the Python-3000-checkins
mailing list