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

Fred L. Drake fdrake@users.sourceforge.net
Tue, 12 Mar 2002 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":