]> granicus.if.org Git - python/commitdiff
Close #19379: Lazily import linecache in the warnings module, to make startup with...
authorAntoine Pitrou <solipsis@pitrou.net>
Thu, 24 Oct 2013 20:23:42 +0000 (22:23 +0200)
committerAntoine Pitrou <solipsis@pitrou.net>
Thu, 24 Oct 2013 20:23:42 +0000 (22:23 +0200)
Lib/warnings.py
Misc/NEWS

index b05a08ee83a323b96ecfac7c6c0a653d39ba0967..a427e3510ecaaa6dadeb2a4e957bb6d4880576c7 100644 (file)
@@ -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 showwarning(message, category, filename, lineno, file=None, line=None):
 
 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 @@ def warn_explicit(message, category, filename, lineno,
 
     # 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":
index 69cb09457c0b24f58e71dd8315e059d583eae255..52c86907f4d29f76fa7a0d1b476af27a1f953d6b 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -21,6 +21,9 @@ Core and Builtins
 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