This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2010年07月17日 08:38 by eli.bendersky, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| issue9282.1.patch | eli.bendersky, 2010年07月17日 12:18 | |||
| Messages (7) | |||
|---|---|---|---|
| msg110543 - (view) | Author: Eli Bendersky (eli.bendersky) * (Python committer) | Date: 2010年07月17日 08:38 | |
Running: py3d -m trace -C . --listfuncs trace_target.py Where py3d points to a freshly compiled Python 3 trunk interpreter, results in an error: functions called: Traceback (most recent call last): File "/home/eliben/python_src/eliben-py3k/Lib/runpy.py", line 160, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/home/eliben/python_src/eliben-py3k/Lib/runpy.py", line 73, in _run_code exec(code, run_globals) File "/home/eliben/python_src/eliben-py3k/Lib/trace.py", line 816, in <module> main() File "/home/eliben/python_src/eliben-py3k/Lib/trace.py", line 813, in main results.write_results(missing, summary=summary, coverdir=coverdir) File "/home/eliben/python_src/eliben-py3k/Lib/trace.py", line 260, in write_results for filename, modulename, funcname in sorted(calls.keys()): NameError: global name 'calls' is not defined -------------- With Python 2.x it runs fine. The cause is probably a bug introduced during the porting to Python 3. The relevant piece of code in the write_results() method in trace.py is: if self.calledfuncs: print() print("functions called:") for filename, modulename, funcname in sorted(calls.keys()): print(("filename: %s, modulename: %s, funcname: %s" % (filename, modulename, funcname))) The 'calls' variable in the loop isn't defined anywhere. Previously (in 2.6) this same chunk of code looked like this: if self.calledfuncs: print print "functions called:" calls = self.calledfuncs.keys() calls.sort() for filename, modulename, funcname in calls: print ("filename: %s, modulename: %s, funcname: %s" % (filename, modulename, funcname)) Which aliases 'calls' to 'self.calledfuncs.keys()' ------ Once this is confirmed as a bug, I will be happy to submit a patch that solves the problem. |
|||
| msg110549 - (view) | Author: Eli Bendersky (eli.bendersky) * (Python committer) | Date: 2010年07月17日 12:18 | |
The fix is simple one-liner, so here's a patch. |
|||
| msg110611 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2010年07月17日 22:44 | |
Looking at the 2.x code, that is the obvious fix. I think this ready to commit. |
|||
| msg110713 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2010年07月19日 04:03 | |
Trace.py does not appear to have a test module to add a test case to. test_trace.py currently tests the line trace facility turned on with sys.settrace. I will inquire on pydev about this. "Does trace ..." |
|||
| msg110933 - (view) | Author: Eli Bendersky (eli.bendersky) * (Python committer) | Date: 2010年07月20日 17:46 | |
I've opened issue 9315 to address the lack of unit tests for trace.py I think that this should be committed regardless, since it fixes a serious bug in the module. Adding unit tests can take time, and is less critical. |
|||
| msg110957 - (view) | Author: Alexander Belopolsky (belopolsky) * (Python committer) | Date: 2010年07月20日 19:38 | |
This is clearly an artifact of porting to 3.x. In 2.x the code was calls = self.calledfuncs.keys() calls.sort() for filename, modulename, funcname in calls: which was translated to for filename, modulename, funcname in sorted(calls.keys()): missing the calls assignment. I am going to commit this patch. |
|||
| msg110967 - (view) | Author: Alexander Belopolsky (belopolsky) * (Python committer) | Date: 2010年07月20日 20:32 | |
Committed with a minor change to meet 80-character line limit. See r82997 (r82999 for 3.1). |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:03 | admin | set | github: 53528 |
| 2010年07月20日 20:32:59 | belopolsky | set | status: open -> closed resolution: accepted -> fixed messages: + msg110967 stage: commit review -> resolved |
| 2010年07月20日 19:38:04 | belopolsky | set | nosy:
+ belopolsky messages: + msg110957 assignee: belopolsky superseder: The trace module lacks unit tests resolution: accepted |
| 2010年07月20日 17:46:53 | eli.bendersky | set | messages: + msg110933 |
| 2010年07月19日 04:03:45 | terry.reedy | set | messages: + msg110713 |
| 2010年07月17日 22:44:45 | terry.reedy | set | stage: commit review messages: + msg110611 versions: - Python 3.3 |
| 2010年07月17日 12:18:03 | eli.bendersky | set | files:
+ issue9282.1.patch keywords: + patch messages: + msg110549 |
| 2010年07月17日 08:38:39 | eli.bendersky | create | |