[Python-checkins] cpython: Close #19379: Lazily import linecache in the warnings module, to make startup

antoine.pitrou python-checkins at python.org
Thu Oct 24 22:24:50 CEST 2013


http://hg.python.org/cpython/rev/8939c0196990
changeset:   86603:8939c0196990
user:        Antoine Pitrou <solipsis at pitrou.net>
date:        Thu Oct 24 22:23:42 2013 +0200
summary:
  Close #19379: Lazily import linecache in the warnings module, to make startup with warnings faster until a warning gets printed.

files:
  Lib/warnings.py |  6 ++----
  Misc/NEWS       |  3 +++
  2 files changed, 5 insertions(+), 4 deletions(-)


diff --git a/Lib/warnings.py b/Lib/warnings.py
--- a/Lib/warnings.py
+++ b/Lib/warnings.py
@@ -1,9 +1,5 @@
 """Python part of the warnings subsystem."""
 
-# Note: function level imports should *not* be used
-# in this module as it may cause import lock deadlock.
-# See bug 683658.
-import linecache
 import sys
 
 __all__ = ["warn", "showwarning", "formatwarning", "filterwarnings",
@@ -21,6 +17,7 @@
 
 def formatwarning(message, category, filename, lineno, line=None):
     """Function to format a warning the standard way."""
+    import linecache
     s =  "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message)
     line = linecache.getline(filename, lineno) if line is None else line
     if line:
@@ -233,6 +230,7 @@
 
     # Prime the linecache for formatting, in case the
     # "file" is actually in a zipfile or something.
+    import linecache
     linecache.getlines(filename, module_globals)
 
     if action == "error":
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -21,6 +21,9 @@
 Library
 -------
 
+- Issue #19379: Lazily import linecache in the warnings module, to make
+  startup with warnings faster until a warning gets printed.
+
 - Issue #19327: Fixed the working of regular expressions with too big charset.
 
 - Issue #17400: New 'is_global' attribute for ipaddress to tell if an address

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list