mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Close #19379: Lazily import linecache in the warnings module, to make startup with warnings faster until a warning gets printed.
This commit is contained in:
		
							parent
							
								
									f740d467bf
								
							
						
					
					
						commit
						7cb11fa890
					
				
					 2 changed files with 5 additions and 4 deletions
				
			
		|  | @ -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": | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Antoine Pitrou
						Antoine Pitrou