[Python-checkins] r70957 - in python/branches/py3k: Lib/cgitb.py Misc/NEWS

brett.cannon python-checkins at python.org
Wed Apr 1 18:06:02 CEST 2009


Author: brett.cannon
Date: Wed Apr 1 18:06:01 2009
New Revision: 70957
Log:
Merged revisions 70956 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk
........
 r70956 | brett.cannon | 2009年04月01日 09:00:34 -0700 (2009年4月01日) | 5 lines
 
 The cgitb module had imports in its functions. This can cause deadlock with the
 import lock if called from within a thread that was triggered by an import.
 
 Partially fixes issue #1665206.
........
Modified:
 python/branches/py3k/ (props changed)
 python/branches/py3k/Lib/cgitb.py
 python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Lib/cgitb.py
==============================================================================
--- python/branches/py3k/Lib/cgitb.py	(original)
+++ python/branches/py3k/Lib/cgitb.py	Wed Apr 1 18:06:01 2009
@@ -19,13 +19,19 @@
 for you, call cgitb.handler(). The optional argument to handler() is a
 3-item tuple (etype, evalue, etb) just like the value of sys.exc_info().
 The default handler displays output as HTML.
-"""
-
-__author__ = 'Ka-Ping Yee'
-
-__version__ = '$Revision$'
 
+"""
+import inspect
+import keyword
+import linecache
+import os
+import pydoc
 import sys
+import tempfile
+import time
+import tokenize
+import traceback
+import types
 
 def reset():
 """Return a string that resets the CGI and browser to a known state."""
@@ -74,7 +80,6 @@
 
 def scanvars(reader, frame, locals):
 """Scan one logical line of Python and look up values of variables used."""
- import tokenize, keyword
 vars, lasttoken, parent, prefix, value = [], None, None, '', __UNDEF__
 for ttype, token, start, end, line in tokenize.generate_tokens(reader):
 if ttype == tokenize.NEWLINE: break
@@ -96,8 +101,6 @@
 
 def html(einfo, context=5):
 """Return a nice HTML document describing a given traceback."""
- import os, time, traceback, linecache, inspect, pydoc
-
 etype, evalue, etb = einfo
 if isinstance(etype, type):
 etype = etype.__name__
@@ -173,7 +176,6 @@
 value = pydoc.html.repr(getattr(evalue, name))
 exception.append('\n<br>%s%s&nbsp;=\n%s' % (indent, name, value))
 
- import traceback
 return head + ''.join(frames) + ''.join(exception) + '''
 
 
@@ -188,8 +190,6 @@
 
 def text(einfo, context=5):
 """Return a plain text document describing a given traceback."""
- import os, time, traceback, linecache, inspect, pydoc
-
 etype, evalue, etb = einfo
 if isinstance(etype, type):
 etype = etype.__name__
@@ -245,7 +245,6 @@
 value = pydoc.text.repr(getattr(evalue, name))
 exception.append('\n%s%s = %s' % (" "*4, name, value))
 
- import traceback
 return head + ''.join(frames) + ''.join(exception) + '''
 
 The above is a description of an error in a Python program. Here is
@@ -278,7 +277,6 @@
 try:
 doc = formatter(info, self.context)
 except: # just in case something goes wrong
- import traceback
 doc = ''.join(traceback.format_exception(*info))
 plain = True
 
@@ -292,7 +290,6 @@
 self.file.write('<p>A problem occurred in a Python script.\n')
 
 if self.logdir is not None:
- import os, tempfile
 suffix = ['.txt', '.html'][self.format=="html"]
 (fd, path) = tempfile.mkstemp(suffix=suffix, dir=self.logdir)
 try:
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Wed Apr 1 18:06:01 2009
@@ -286,6 +286,10 @@
 Library
 -------
 
+- Issue #1665206 (partially): Move imports in cgitb to the top of the module
+ instead of performing them in functions. Helps prevent import deadlocking in
+ threads.
+
 - Issue #2522: locale.format now checks its first argument to ensure it has
 been passed only one pattern, avoiding mysterious errors where it appeared
 that it was failing to do localization.


More information about the Python-checkins mailing list

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