Skip to content

Commit 91866af

Browse files
author
Jeff Weiss
committed
Print method calls in a more OO style
Fixes #7
1 parent 416f523 commit 91866af

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

function_trace/__init__.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,17 @@ def _min_depths(self):
154154
def level(self):
155155
return len(self.tracedframes)
156156

157+
def _method_or_function_call(self, frame, ident):
158+
f = self.functions[ident]
159+
args = inspect.getargvalues(frame)
160+
if inspect.ismethod(f):
161+
locs = args.locals.copy()
162+
f_self = locs.pop(args.args[0])
163+
self.trace_in("%s.%s" % (repr(f_self), f.__name__), [], locs)
164+
else:
165+
# regular function
166+
self.trace_in(_name(f), [], args.locals)
167+
157168
def tracefunc(self, frame, event, arg):
158169
try:
159170
if event == 'call':
@@ -168,10 +179,7 @@ def tracefunc(self, frame, event, arg):
168179
min_depth_limit = next_depth_limit
169180

170181
if self.level < min_depth_limit:
171-
args = inspect.getargvalues(frame)
172-
self.trace_in(_name(self.functions[ident]),
173-
[],
174-
args.locals)
182+
self._method_or_function_call(frame, ident)
175183
if self.level <= min_depth_limit:
176184
self.tracedframes.append((frame.f_back, min_depth_limit, self.level < min_depth_limit))
177185

@@ -198,7 +206,8 @@ def tracefunc(self, frame, event, arg):
198206
self.trace_out(arg[0], exception=True)
199207
self.tracedframes.pop()
200208
except:
201-
pass # just swallow errors to avoid interference with traced processes
209+
pass # just swallow errors to avoid interference with traced processes
210+
# raise # for debugging
202211
return self.tracefunc
203212

204213
def close(self):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from setuptools import setup, find_packages
22
setup(
33
name="function_trace",
4-
version="1.1.1",
4+
version="1.1.2",
55
packages=find_packages(),
66

77
# metadata for upload to PyPI

0 commit comments

Comments
 (0)