Amaury Forgeot d'Arc <[email protected]> added the comment:
I really like the "_exec_module" trick, but it should be applied to builtin
modules as well. I hacked _sre.c and got:
~/python/cpython3.x$ ./python
Traceback (most recent call last):
File "/home/amauryfa/python/cpython3.x/Lib/site.py", line 70, in <module>
import re
File "/home/amauryfa/python/cpython3.x/Lib/re.py", line 122, in <module>
import sre_compile
File "/home/amauryfa/python/cpython3.x/Lib/sre_compile.py", line 13, in
<module>
import _sre, sys
File "<frozen importlib._bootstrap>", line 1318, in _find_and_load
File "<frozen importlib._bootstrap>", line 1285, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 347, in set_package_wrapper
File "<frozen importlib._bootstrap>", line 360, in set_loader_wrapper
File "<frozen importlib._bootstrap>", line 443, in _requires_builtin_wrapper
File "<frozen importlib._bootstrap>", line 493, in load_module
ValueError: Just a test
This change correctly hides importlib frames:
diff -r 9afdd8c25bf2 Lib/importlib/_bootstrap.py
--- a/Lib/importlib/_bootstrap.py Sun Jul 08 14:00:06 2012 +0200
+++ b/Lib/importlib/_bootstrap.py Sun Jul 08 15:03:27 2012 +0200
@@ -490,12 +490,15 @@
"""Load a built-in module."""
is_reload = fullname in sys.modules
try:
- return _imp.init_builtin(fullname)
+ return self._exec_module(fullname)
except:
if not is_reload and fullname in sys.modules:
del sys.modules[fullname]
raise
+ def _exec_module(self, fullname):
+ return _imp.init_builtin(fullname)
+
@classmethod
@_requires_builtin
def get_code(cls, fullname):
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue15110>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com