Issue 1690103: trace module borks file (original) (raw)

Created on 2007-03-28 19:05 by skip.montanaro, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
trace.diff skip.montanaro,2007-03-28 20:38
Messages (5)
msg31671 - (view) Author: Skip Montanaro (skip.montanaro) * (Python triager) Date: 2007-03-28 19:05
Stick this in a file (say, printfile.py): print __file__ If I run it as "python printfile.py" using Python 2.4, 2.5 or 2.6 it prints as expected, e.g.: % python ~/tmp/printfile.py /Users/skip/tmp/printfile.py If, however, I run it under control of the trace module I get something entirely different: % python -m trace --count ~/tmp/printfile.py /Users/skip/local/lib/python2.6/trace.py % python -m trace --trace ~/tmp/printfile.py --- modulename: threading, funcname: settrace threading.py(70): _trace_hook = func --- modulename: trace, funcname: (1): --- modulename: trace, funcname: printfile.py(1): print __file__ /Users/skip/local/lib/python2.6/trace.py Definitely looks buggy to me...
msg31672 - (view) Author: Skip Montanaro (skip.montanaro) * (Python triager) Date: 2007-03-28 20:01
I believe this is because the trace module calls execfile() to run the file. I'm not sure if there's an easy fix for this problem.
msg31673 - (view) Author: Skip Montanaro (skip.montanaro) * (Python triager) Date: 2007-03-28 20:38
Hmmm... Maybe not so hard after all. See attached diff. Does anyone see a problem with simply overwriting the trace module's __file__ attribute? File Added: trace.diff
msg31674 - (view) Author: Ziga Seilnacht (zseil) * (Python committer) Date: 2007-04-15 18:39
Wouldn't it be better for trace.main() to call Tracer.runctx() instead of Tracer.run()? That way you could use a copy of __main__.__dict__ for locals and globals and overwrite the filename there. Note that your solution would still report the wrong filename if someone called tracer.main() from his own main script.
msg112290 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2010-08-01 08:35
Fixed in r83393 with explicit globals that also specify __name__.
History
Date User Action Args
2022-04-11 14:56:23 admin set github: 44778
2010-08-01 08:35:48 georg.brandl set status: open -> closednosy: + georg.brandlmessages: + resolution: fixed
2010-05-20 20:28:24 skip.montanaro set nosy: - skip.montanaro
2009-03-30 17:04:26 ajaksu2 set stage: test neededtype: behaviorversions: + Python 2.6
2007-03-28 19:05:03 skip.montanaro create