From 5e8b04eefb08828dde5b609efc7e1430244a6ae3 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Fri, 10 Oct 2014 10:54:28 -0400 Subject: [PATCH] Issue #21052: Don't raise ImportWarning for sys.meta_path or sys.path_hooks when set to None during interpreter shutdown. Thanks to Martin Panter for the initial bug report. --- Lib/importlib/_bootstrap.py | 4 +-- Misc/NEWS | 3 +++ Python/importlib.h | 50 +++++++++++++++++++------------------ 3 files changed, 31 insertions(+), 26 deletions(-) diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index c4ee41a0053..b47ffad06a9 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -1806,7 +1806,7 @@ class PathFinder: If 'hooks' is false then use sys.path_hooks. """ - if not sys.path_hooks: + if sys.path_hooks is not None and not sys.path_hooks: _warnings.warn('sys.path_hooks is empty', ImportWarning) for hook in sys.path_hooks: try: @@ -2095,7 +2095,7 @@ def _find_spec_legacy(finder, name, path): def _find_spec(name, path, target=None): """Find a module's loader.""" - if not sys.meta_path: + if sys.meta_path is not None and not sys.meta_path: _warnings.warn('sys.meta_path is empty', ImportWarning) # We check sys.modules here for the reload case. While a passed-in # target will usually indicate a reload there is no guarantee, whereas diff --git a/Misc/NEWS b/Misc/NEWS index ef277be25e8..9c655573ccf 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ Release date: TBA Core and Builtins ----------------- +- Issue #21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path + are set to None. + - Issue #16518: Use 'bytes-like object required' in error messages that previously used the far more cryptic "'x' does not support the buffer protocol. diff --git a/Python/importlib.h b/Python/importlib.h index e2b581073fb..3ecc791ac71 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -3210,12 +3210,13 @@ const unsigned char _Py_M__importlib[] = { 80,97,116,104,70,105,110,100,101,114,46,105,110,118,97,108, 105,100,97,116,101,95,99,97,99,104,101,115,99,2,0,0, 0,0,0,0,0,3,0,0,0,12,0,0,0,67,0,0, - 0,115,91,0,0,0,116,0,0,106,1,0,115,25,0,116, - 2,0,106,3,0,100,1,0,116,4,0,131,2,0,1,120, + 0,115,107,0,0,0,116,0,0,106,1,0,100,1,0,107, + 9,0,114,41,0,116,0,0,106,1,0,12,114,41,0,116, + 2,0,106,3,0,100,2,0,116,4,0,131,2,0,1,120, 59,0,116,0,0,106,1,0,68,93,44,0,125,2,0,121, - 14,0,124,2,0,124,1,0,131,1,0,83,87,113,35,0, - 4,116,5,0,107,10,0,114,78,0,1,1,1,119,35,0, - 89,113,35,0,88,113,35,0,87,100,2,0,83,100,2,0, + 14,0,124,2,0,124,1,0,131,1,0,83,87,113,51,0, + 4,116,5,0,107,10,0,114,94,0,1,1,1,119,51,0, + 89,113,51,0,88,113,51,0,87,100,1,0,83,100,1,0, 83,41,3,122,113,83,101,97,114,99,104,32,115,101,113,117, 101,110,99,101,32,111,102,32,104,111,111,107,115,32,102,111, 114,32,97,32,102,105,110,100,101,114,32,102,111,114,32,39, @@ -3223,15 +3224,15 @@ const unsigned char _Py_M__importlib[] = { 73,102,32,39,104,111,111,107,115,39,32,105,115,32,102,97, 108,115,101,32,116,104,101,110,32,117,115,101,32,115,121,115, 46,112,97,116,104,95,104,111,111,107,115,46,10,10,32,32, - 32,32,32,32,32,32,122,23,115,121,115,46,112,97,116,104, - 95,104,111,111,107,115,32,105,115,32,101,109,112,116,121,78, + 32,32,32,32,32,32,78,122,23,115,121,115,46,112,97,116, + 104,95,104,111,111,107,115,32,105,115,32,101,109,112,116,121, 41,6,114,7,0,0,0,218,10,112,97,116,104,95,104,111, 111,107,115,114,166,0,0,0,114,167,0,0,0,114,168,0, 0,0,114,153,0,0,0,41,3,114,8,1,0,0,114,35, 0,0,0,90,4,104,111,111,107,114,4,0,0,0,114,4, 0,0,0,114,5,0,0,0,218,11,95,112,97,116,104,95, 104,111,111,107,115,10,7,0,0,115,16,0,0,0,0,7, - 9,1,16,1,16,1,3,1,14,1,13,1,12,2,122,22, + 25,1,16,1,16,1,3,1,14,1,13,1,12,2,122,22, 80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,104, 95,104,111,111,107,115,99,2,0,0,0,0,0,0,0,3, 0,0,0,11,0,0,0,67,0,0,0,115,94,0,0,0, @@ -3732,28 +3733,29 @@ const unsigned char _Py_M__importlib[] = { 17,95,102,105,110,100,95,115,112,101,99,95,108,101,103,97, 99,121,39,8,0,0,115,8,0,0,0,0,3,18,1,12, 1,4,1,114,103,1,0,0,99,3,0,0,0,0,0,0, - 0,9,0,0,0,26,0,0,0,67,0,0,0,115,25,1, - 0,0,116,0,0,106,1,0,115,25,0,116,2,0,106,3, - 0,100,1,0,116,4,0,131,2,0,1,124,0,0,116,0, + 0,9,0,0,0,26,0,0,0,67,0,0,0,115,41,1, + 0,0,116,0,0,106,1,0,100,1,0,107,9,0,114,41, + 0,116,0,0,106,1,0,12,114,41,0,116,2,0,106,3, + 0,100,2,0,116,4,0,131,2,0,1,124,0,0,116,0, 0,106,5,0,107,6,0,125,3,0,120,234,0,116,0,0, 106,1,0,68,93,219,0,125,4,0,116,6,0,131,0,0, 143,90,0,1,121,13,0,124,4,0,106,7,0,125,5,0, - 87,110,51,0,4,116,8,0,107,10,0,114,132,0,1,1, + 87,110,51,0,4,116,8,0,107,10,0,114,148,0,1,1, 1,116,9,0,124,4,0,124,0,0,124,1,0,131,3,0, - 125,6,0,124,6,0,100,2,0,107,8,0,114,128,0,119, - 50,0,89,110,19,0,88,124,5,0,124,0,0,124,1,0, - 124,2,0,131,3,0,125,6,0,87,100,2,0,81,88,124, - 6,0,100,2,0,107,9,0,114,50,0,124,3,0,12,114, - 9,1,124,0,0,116,0,0,106,5,0,107,6,0,114,9, + 125,6,0,124,6,0,100,1,0,107,8,0,114,144,0,119, + 66,0,89,110,19,0,88,124,5,0,124,0,0,124,1,0, + 124,2,0,131,3,0,125,6,0,87,100,1,0,81,88,124, + 6,0,100,1,0,107,9,0,114,66,0,124,3,0,12,114, + 25,1,124,0,0,116,0,0,106,5,0,107,6,0,114,25, 1,116,0,0,106,5,0,124,0,0,25,125,7,0,121,13, 0,124,7,0,106,10,0,125,8,0,87,110,22,0,4,116, - 8,0,107,10,0,114,241,0,1,1,1,124,6,0,83,89, - 113,13,1,88,124,8,0,100,2,0,107,8,0,114,2,1, - 124,6,0,83,124,8,0,83,113,50,0,124,6,0,83,113, - 50,0,87,100,2,0,83,100,2,0,83,41,3,122,23,70, + 8,0,107,10,0,114,1,1,1,1,1,124,6,0,83,89, + 113,29,1,88,124,8,0,100,1,0,107,8,0,114,18,1, + 124,6,0,83,124,8,0,83,113,66,0,124,6,0,83,113, + 66,0,87,100,1,0,83,100,1,0,83,41,3,122,23,70, 105,110,100,32,97,32,109,111,100,117,108,101,39,115,32,108, - 111,97,100,101,114,46,122,22,115,121,115,46,109,101,116,97, - 95,112,97,116,104,32,105,115,32,101,109,112,116,121,78,41, + 111,97,100,101,114,46,78,122,22,115,121,115,46,109,101,116, + 97,95,112,97,116,104,32,105,115,32,101,109,112,116,121,41, 11,114,7,0,0,0,218,9,109,101,116,97,95,112,97,116, 104,114,166,0,0,0,114,167,0,0,0,114,168,0,0,0, 114,73,0,0,0,114,99,1,0,0,114,10,1,0,0,114, @@ -3763,7 +3765,7 @@ const unsigned char _Py_M__importlib[] = { 10,1,0,0,114,176,0,0,0,114,177,0,0,0,114,206, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, 0,0,218,10,95,102,105,110,100,95,115,112,101,99,48,8, - 0,0,115,48,0,0,0,0,2,9,1,16,4,15,1,16, + 0,0,115,48,0,0,0,0,2,25,1,16,4,15,1,16, 1,10,1,3,1,13,1,13,1,18,1,12,1,8,2,24, 1,12,2,22,1,13,1,3,1,13,1,13,4,9,2,12, 1,4,2,7,2,8,2,114,105,1,0,0,99,3,0,0,