[Python-checkins] python/dist/src/Lib cgitb.py,1.4,1.5

ping@users.sourceforge.net ping@users.sourceforge.net
Wed, 26 Jun 2002 00:10:59 -0700


Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv17524

Modified Files:
	cgitb.py 
Log Message:
Also look up variable names in __builtins__ if not found in globals.
Don't show hidden fields of exception values (names starting with '_').


Index: cgitb.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/cgitb.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** cgitb.py	19 Dec 2001 14:27:41 -0000	1.4
--- cgitb.py	26 Jun 2002 07:10:56 -0000	1.5
***************
*** 43,46 ****
--- 43,54 ----
      if name in frame.f_globals:
          return 'global', frame.f_globals[name]
+     if '__builtins__' in frame.f_globals:
+         builtins = frame.f_globals['__builtins__']
+         if type(builtins) is type({}):
+             if name in builtins:
+                 return 'builtin', builtins[name]
+         else:
+             if hasattr(builtins, name):
+                 return 'builtin', getattr(builtins, name)
      return None, __UNDEF__
  
***************
*** 119,125 ****
              done[name] = 1
              if value is not __UNDEF__:
!                 if where == 'global': name = '<em>global</em> ' + strong(name)
!                 elif where == 'local': name = strong(name)
!                 else: name = where + strong(name.split('.')[-1])
                  dump.append('%s&nbsp;= %s' % (name, pydoc.html.repr(value)))
              else:
--- 127,136 ----
              done[name] = 1
              if value is not __UNDEF__:
!                 if where in ['global', 'builtin']:
!                     name = ('<em>%s</em> ' % where) + strong(name)
!                 elif where == 'local':
!                     name = strong(name)
!                 else:
!                     name = where + strong(name.split('.')[-1])
                  dump.append('%s&nbsp;= %s' % (name, pydoc.html.repr(value)))
              else:
***************
*** 134,137 ****
--- 145,149 ----
      if type(evalue) is types.InstanceType:
          for name in dir(evalue):
+             if name[:1] == '_': continue
              value = pydoc.html.repr(getattr(evalue, name))
              exception.append('\n<br>%s%s&nbsp;=\n%s' % (indent, name, value))