summaryrefslogtreecommitdiffstats
path: root/Lib/trace.py
diff options
context:
space:
mode:
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>2010-09-13 18:38:54 (GMT)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>2010-09-13 18:38:54 (GMT)
commit9665637d44a186374629b0016143d5eb48ca3252 (patch)
treed809ebbf5b7fe1b16d49ae89bfbc6141285b4d34 /Lib/trace.py
parent9ad66d2032a00b3af9cfccdca3edb59eb9cce64c (diff)
downloadcpython-9665637d44a186374629b0016143d5eb48ca3252.zip
cpython-9665637d44a186374629b0016143d5eb48ca3252.tar.gz
cpython-9665637d44a186374629b0016143d5eb48ca3252.tar.bz2
Merged revisions 84780-84781 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k with some manual fixes ........ r84780 | alexander.belopolsky | 2010-09-13 14:14:34 -0400 (Mon, 13 Sep 2010) | 3 lines Issue #9315: Fix for the trace module to record correct class name when tracing methods. Unit tests. Patch by Eli Bendersky. ........ r84781 | alexander.belopolsky | 2010-09-13 14:15:33 -0400 (Mon, 13 Sep 2010) | 1 line Removed debugging setting ........
Diffstat (limited to 'Lib/trace.py')
-rw-r--r--Lib/trace.py12
1 files changed, 4 insertions, 8 deletions
diff --git a/Lib/trace.py b/Lib/trace.py
index f408705..c98a6db 100644
--- a/Lib/trace.py
+++ b/Lib/trace.py
@@ -57,7 +57,7 @@ import threading
import time
import token
import tokenize
-import types
+import inspect
import gc
import pickle
@@ -395,7 +395,7 @@ def find_lines(code, strs):
# and check the constants for references to other code objects
for c in code.co_consts:
- if isinstance(c, types.CodeType):
+ if inspect.iscode(c):
# find another code object, so recurse into it
linenos.update(find_lines(c, strs))
return linenos
@@ -544,7 +544,7 @@ class Trace:
## use of gc.get_referrers() was suggested by Michael Hudson
# all functions which refer to this code object
funcs = [f for f in gc.get_referrers(code)
- if hasattr(f, "__doc__")]
+ if inspect.isfunction(f)]
# require len(func) == 1 to avoid ambiguity caused by calls to
# new.function(): "In the face of ambiguity, refuse the
# temptation to guess."
@@ -556,17 +556,13 @@ class Trace:
if hasattr(c, "__bases__")]
if len(classes) == 1:
# ditto for new.classobj()
- clsname = str(classes[0])
+ clsname = classes[0].__name__
# cache the result - assumption is that new.* is
# not called later to disturb this relationship
# _caller_cache could be flushed if functions in
# the new module get called.
self._caller_cache[code] = clsname
if clsname is not None:
- # final hack - module name shows up in str(cls), but we've already
- # computed module name, so remove it
- clsname = clsname.split(".")[1:]
- clsname = ".".join(clsname)
funcname = "%s.%s" % (clsname, funcname)
return filename, modulename, funcname