diff options
author | Fred Drake <fdrake@acm.org> | 2001-10-29 20:57:23 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2001-10-29 20:57:23 (GMT) |
commit | 8e26b52a5c97135cfbedb3e046a01d4bbc49cb3a (patch) | |
tree | 00ebca093e5de9eb6b9feeba32bc4ff5b66bb9eb /Lib/hotshot | |
parent | f3c54d6fc7b59cbb28c0a74171cd18ae453461bb (diff) | |
download | cpython-8e26b52a5c97135cfbedb3e046a01d4bbc49cb3a.zip cpython-8e26b52a5c97135cfbedb3e046a01d4bbc49cb3a.tar.gz cpython-8e26b52a5c97135cfbedb3e046a01d4bbc49cb3a.tar.bz2 |
Update to reflect changes to the low-level logreader: share the info
dictionary instead of building a new one, and provide an overridable method
to allow subclasses to catch ADD_INFO records that are not part of the
initial block of ADD_INFO records created by the profiler itself.
Diffstat (limited to 'Lib/hotshot')
-rw-r--r-- | Lib/hotshot/log.py | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/Lib/hotshot/log.py b/Lib/hotshot/log.py index df07ddd..55dda21 100644 --- a/Lib/hotshot/log.py +++ b/Lib/hotshot/log.py @@ -34,11 +34,25 @@ class LogReader: # (fileno, lineno) -> filename, funcname self._funcmap = {} - self._info = {} self._reader = _hotshot.logreader(logfn) self._nextitem = self._reader.next + self._info = self._reader.info self._stack = [] + def addinfo(self, key, value): + """This method is called for each additional ADD_INFO record. + + This can be overridden by applications that want to receive + these events. The default implementation does not need to be + called by alternate implementations. + + The initial set of ADD_INFO records do not pass through this + mechanism; this is only needed to receive notification when + new values are added. Subclasses can inspect self._info after + calling LogReader.__init__(). + """ + pass + # Iteration support: # This adds an optional (& ignored) parameter to next() so that the # same bound method can be used as the __getitem__() method -- this @@ -60,15 +74,10 @@ class LogReader: self._funcmap[(fileno, lineno)] = (filename, tdelta) continue if what == WHAT_ADD_INFO: - key = tdelta.lower() - try: - L = self._info[key] - except KeyError: - L = [] - self._info[key] = L - L.append(lineno) - if key == "current-directory": - self.cwd = lineno + # value already loaded into self.info; call the + # overridable addinfo() handler so higher-level code + # can pick up the new value + self.addinfo(tdelta, lineno) continue if what == WHAT_ENTER: t = self._decode_location(fileno, lineno) |