[Python-checkins] CVS: python/dist/src/Lib/hotshot log.py,1.4,1.5

Fred L. Drake fdrake@users.sourceforge.net
2002年3月12日 06:26:39 -0800


Update of /cvsroot/python/python/dist/src/Lib/hotshot
In directory usw-pr-cvs1:/tmp/cvs-serv19642
Modified Files:
	log.py 
Log Message:
Set/update self.cwd properly.
Index: log.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/hotshot/log.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** log.py	29 Oct 2001 20:57:23 -0000	1.4
--- log.py	12 Mar 2002 14:26:37 -0000	1.5
***************
*** 38,42 ****
--- 38,48 ----
 self._nextitem = self._reader.next
 self._info = self._reader.info
+ if self._info.has_key('current-directory'):
+ self.cwd = self._info['current-directory']
+ else:
+ self.cwd = None
 self._stack = []
+ self._append = self._stack.append
+ self._pop = self._stack.pop
 
 def addinfo(self, key, value):
***************
*** 54,57 ****
--- 60,85 ----
 pass
 
+ def get_filename(self, fileno):
+ try:
+ return self._filemap[fileno]
+ except KeyError:
+ raise ValueError, "unknown fileno"
+ 
+ def get_filenames(self):
+ return self._filemap.values()
+ 
+ def get_fileno(self, filename):
+ filename = os.path.normcase(os.path.normpath(filename))
+ for fileno, name in self._filemap.items():
+ if name == filename:
+ return fileno
+ raise ValueError, "unknown filename"
+ 
+ def get_funcname(self, fileno, lineno):
+ try:
+ return self._funcmap[(fileno, lineno)]
+ except KeyError:
+ raise ValueError, "unknown function location"
+ 
 # Iteration support:
 # This adds an optional (& ignored) parameter to next() so that the
***************
*** 67,92 ****
 self._reader.close()
 raise StopIteration()
 if what == WHAT_DEFINE_FILE:
! self._filemap[fileno] = tdelta
! continue
! if what == WHAT_DEFINE_FUNC:
 filename = self._filemap[fileno]
 self._funcmap[(fileno, lineno)] = (filename, tdelta)
! continue
! if what == WHAT_ADD_INFO:
 # 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)
- filename, funcname = t
- self._stack.append((filename, funcname, lineno))
- elif what == WHAT_EXIT:
- filename, funcname, lineno = self._stack.pop()
 else:
! filename, funcname, firstlineno = self._stack[-1]
! return what, (filename, lineno, funcname), tdelta
 
 if sys.version < "2.2":
--- 95,129 ----
 self._reader.close()
 raise StopIteration()
+ 
+ # handle the most common cases first
+ 
+ if what == WHAT_ENTER:
+ filename, funcname = self._decode_location(fileno, lineno)
+ self._append((filename, funcname, lineno))
+ return what, (filename, lineno, funcname), tdelta
+ 
+ if what == WHAT_EXIT:
+ filename, funcname, lineno = self._pop()
+ return what, (filename, lineno, funcname), tdelta
+ 
+ if what == WHAT_LINENO:
+ filename, funcname, firstlineno = self._stack[-1]
+ return what, (filename, lineno, funcname), tdelta
+ 
 if what == WHAT_DEFINE_FILE:
! filename = os.path.normcase(os.path.normpath(tdelta))
! self._filemap[fileno] = filename
! elif what == WHAT_DEFINE_FUNC:
 filename = self._filemap[fileno]
 self._funcmap[(fileno, lineno)] = (filename, tdelta)
! elif what == WHAT_ADD_INFO:
 # value already loaded into self.info; call the
 # overridable addinfo() handler so higher-level code
 # can pick up the new value
+ if tdelta == 'current-directory':
+ self.cwd = lineno
 self.addinfo(tdelta, lineno)
 else:
! raise ValueError, "unknown event type"
 
 if sys.version < "2.2":

AltStyle によって変換されたページ (->オリジナル) /