New submission from Anders Blomdell <anders.blomd...@control.lth.se>:
While trying to get a PEP302 import hook to function properly, I found that the default traceback picks up the wrong sourcecode for PEP302 loaded modules. The testcase pep302_traceback.py tries to emulate the behavior of the files in ordinary, which generates the following output when run: (cd ordinary ; python2.6.2 main.py ) A.__name__= a B.__name__ a.b Traceback (most recent call last): File "main.py", line 6, in <module> a.A() File "/tmp/ordinary/a/__init__.py", line 6, in __init__ b.B() File "/tmp/ordinary/a/b/__init__.py", line 4, in __init__ raise Exception() Exception But when i run the testcase, I get the following: python2.6.2 pep302_traceback.py ### Show possible bug in default linecache (works in 2.6.2) A.__name__= a B.__name__= a.b Traceback (most recent call last): File "pep302_traceback.py", line 82, in <module> i.load_module("__main__") File "pep302_traceback.py", line 58, in load_module exec(code, mod.__dict__) File "<__main__.Importer>/main.py", line 6, in <module> a.A() File "<__main__.Importer>/a/__init__.py", line 6, in __init__ b.B() File "<__main__.Importer>/a/b/__init__.py", line 4, in __init__ raise Exception() Exception ### Show possible bug in default traceback (does not work in 2.6.2) A.__name__= a B.__name__= a.b Traceback (most recent call last): File "pep302_traceback.py", line 88, in <module> i.load_module("__main__") File "pep302_traceback.py", line 58, in load_module exec(code, mod.__dict__) File "<__main__.Importer>/main.py", line 6, in <module> # main.py picked up from somewhere in sys.path File "<__main__.Importer>/a/__init__.py", line 6, in __init__ # __init__.py picked up from somewhere in sys.path File "<__main__.Importer>/a/b/__init__.py", line 4, in __init__ # __init__.py picked up from somewhere in sys.path Exception I.e. in python 2.6 the linecache module correctly picks up PEP302 loaded code, while the default traceback picks up any source file from sys.path that happens to match the name of the file that generated the exception. When run with python2.5.2, the linecache module also locates the wrong file from sys.path. ---------- components: Interpreter Core files: bug.tar messages: 91475 nosy: anders.blomd...@control.lth.se severity: normal status: open title: Default traceback does not handle PEP302 loaded modules type: behavior versions: Python 2.6 Added file: http://bugs.python.org/file14692/bug.tar _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue6682> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com