From 82c1c781c7ee6496bd4c404b7ba972eed5dbcb12 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 20 Nov 2012 15:22:51 -0500 Subject: [PATCH] - Issue #16514: Fix regression causing a traceback when sys.path[0] is None (actually, any non-string or non-bytes type). --- Doc/library/sys.rst | 4 +- Doc/reference/import.rst | 24 ++-- Lib/importlib/_bootstrap.py | 2 + Lib/test/test_importlib/import_/test_path.py | 25 +++- Misc/NEWS | 3 + Python/importlib.h | 130 ++++++++++--------- 6 files changed, 111 insertions(+), 77 deletions(-) diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index cd6d4bfb91a..73914e36846 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -783,7 +783,9 @@ always available. current directory first. Notice that the script directory is inserted *before* the entries inserted as a result of :envvar:`PYTHONPATH`. - A program is free to modify this list for its own purposes. + A program is free to modify this list for its own purposes. Only strings + and bytes should be added to :data:`sys.path`; all other data types are + ignored during import. .. seealso:: diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst index fdecc769501..ef0235df125 100644 --- a/Doc/reference/import.rst +++ b/Doc/reference/import.rst @@ -540,7 +540,10 @@ environment variable and various other installation- and implementation-specific defaults. Entries in :data:`sys.path` can name directories on the file system, zip files, and potentially other "locations" (see the :mod:`site` module) that should be searched for modules, such as -URLs, or database queries. +URLs, or database queries. Only strings and bytes should be present on +:data:`sys.path`; all other data types are ignored. The encoding of bytes +entries is determined by the individual :term:`path entry finders `. The :term:`path based finder` is a :term:`meta path finder`, so the import machinery begins the :term:`import path` search by calling the path @@ -563,14 +566,17 @@ free to remove cache entries from :data:`sys.path_importer_cache` forcing the path based finder to perform the path entry search again [#fnpic]_. If the path entry is not present in the cache, the path based finder iterates -over every callable in :data:`sys.path_hooks`. Each of the -:term:`path entry hooks ` in this list is called with a -single argument, the path entry to be searched. This callable may either -return a :term:`path entry finder` that can handle the path entry, or it may -raise :exc:`ImportError`. -An :exc:`ImportError` is used by the path based finder to signal that the hook -cannot find a :term:`path entry finder` for that :term:`path entry`. The -exception is ignored and :term:`import path` iteration continues. +over every callable in :data:`sys.path_hooks`. Each of the :term:`path entry +hooks ` in this list is called with a single argument, the +path entry to be searched. This callable may either return a :term:`path +entry finder` that can handle the path entry, or it may raise +:exc:`ImportError`. An :exc:`ImportError` is used by the path based finder to +signal that the hook cannot find a :term:`path entry finder` for that +:term:`path entry`. The exception is ignored and :term:`import path` +iteration continues. The hook should expect either a string or bytes object; +the encoding of bytes objects is up to the hook (e.g. it may be a file system +encoding, UTF-8, or something else), and if the hook cannot decode the +argument, it should raise :exc:`ImportError`. If :data:`sys.path_hooks` iteration ends with no :term:`path entry finder` being returned, then the path based finder's :meth:`find_module()` method diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 888c2f5f2a1..a18ccc49e10 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -1281,6 +1281,8 @@ class PathFinder: # the list of paths that will become its __path__ namespace_path = [] for entry in path: + if not isinstance(entry, (str, bytes)): + continue finder = cls._path_importer_cache(entry) if finder is not None: if hasattr(finder, 'find_loader'): diff --git a/Lib/test/test_importlib/import_/test_path.py b/Lib/test/test_importlib/import_/test_path.py index 0c086ce147a..8b9c77dbf8c 100644 --- a/Lib/test/test_importlib/import_/test_path.py +++ b/Lib/test/test_importlib/import_/test_path.py @@ -1,15 +1,14 @@ from importlib import _bootstrap from importlib import machinery +from importlib import import_module from .. import util from . import util as import_util -import imp import os import sys -import tempfile -from test import support -from types import MethodType +from types import ModuleType import unittest import warnings +import zipimport class FinderTests(unittest.TestCase): @@ -89,6 +88,24 @@ class FinderTests(unittest.TestCase): self.assertIs(loader, importer) self.assertIn(os.curdir, sys.path_importer_cache) + def test_None_on_sys_path(self): + # Putting None in sys.path[0] caused an import regression from Python + # 3.2: http://bugs.python.org/issue16514 + new_path = sys.path[:] + new_path.insert(0, None) + new_path_importer_cache = sys.path_importer_cache.copy() + new_path_importer_cache.pop(None, None) + new_path_hooks = [zipimport.zipimporter, + _bootstrap.FileFinder.path_hook( + *_bootstrap._get_supported_file_loaders())] + with util.uncache('email'): + with util.import_state(meta_path=sys.meta_path[:], + path=new_path, + path_importer_cache=new_path_importer_cache, + path_hooks=new_path_hooks): + module = import_module('email') + self.assertIsInstance(module, ModuleType) + def test_main(): from test.support import run_unittest diff --git a/Misc/NEWS b/Misc/NEWS index 9771ecd5a36..4893a9448da 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 3.3.1? Core and Builtins ----------------- +- Issue #16514: Fix regression causing a traceback when sys.path[0] is None + (actually, any non-string or non-bytes type). + - Issue #16306: Fix multiple error messages when unknown command line parameters where passed to the interpreter. Patch by Hieu Nguyen. diff --git a/Python/importlib.h b/Python/importlib.h index 578b42a2175..15ba1081f40 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -3187,40 +3187,44 @@ unsigned char _Py_M__importlib[] = { 3,1,17,1,13,1,15,1,18,1,117,31,0,0,0,80, 97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95, 105,109,112,111,114,116,101,114,95,99,97,99,104,101,99,3, - 0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,67, - 0,0,0,115,162,0,0,0,103,0,0,125,3,0,120,149, - 0,124,2,0,68,93,131,0,125,4,0,124,0,0,106,0, - 0,124,4,0,131,1,0,125,5,0,124,5,0,100,2,0, - 107,9,0,114,13,0,116,2,0,124,5,0,100,1,0,131, - 2,0,114,85,0,124,5,0,106,3,0,124,1,0,131,1, - 0,92,2,0,125,6,0,125,7,0,110,21,0,124,5,0, - 106,4,0,124,1,0,131,1,0,125,6,0,103,0,0,125, - 7,0,124,6,0,100,2,0,107,9,0,114,128,0,124,6, - 0,124,3,0,102,2,0,83,124,3,0,106,5,0,124,7, - 0,131,1,0,1,113,13,0,113,13,0,87,100,2,0,124, - 3,0,102,2,0,83,100,2,0,83,40,3,0,0,0,117, - 63,0,0,0,70,105,110,100,32,116,104,101,32,108,111,97, - 100,101,114,32,111,114,32,110,97,109,101,115,112,97,99,101, - 95,112,97,116,104,32,102,111,114,32,116,104,105,115,32,109, - 111,100,117,108,101,47,112,97,99,107,97,103,101,32,110,97, - 109,101,46,117,11,0,0,0,102,105,110,100,95,108,111,97, - 100,101,114,78,40,6,0,0,0,117,20,0,0,0,95,112, - 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, - 104,101,117,4,0,0,0,78,111,110,101,117,7,0,0,0, - 104,97,115,97,116,116,114,117,11,0,0,0,102,105,110,100, - 95,108,111,97,100,101,114,117,11,0,0,0,102,105,110,100, - 95,109,111,100,117,108,101,117,6,0,0,0,101,120,116,101, - 110,100,40,8,0,0,0,117,3,0,0,0,99,108,115,117, - 8,0,0,0,102,117,108,108,110,97,109,101,117,4,0,0, - 0,112,97,116,104,117,14,0,0,0,110,97,109,101,115,112, - 97,99,101,95,112,97,116,104,117,5,0,0,0,101,110,116, - 114,121,117,6,0,0,0,102,105,110,100,101,114,117,6,0, - 0,0,108,111,97,100,101,114,117,8,0,0,0,112,111,114, - 116,105,111,110,115,40,0,0,0,0,40,0,0,0,0,117, - 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, - 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, - 62,117,11,0,0,0,95,103,101,116,95,108,111,97,100,101, - 114,253,4,0,0,115,24,0,0,0,0,5,6,1,13,1, + 0,0,0,0,0,0,0,8,0,0,0,5,0,0,0,67, + 0,0,0,115,189,0,0,0,103,0,0,125,3,0,120,176, + 0,124,2,0,68,93,158,0,125,4,0,116,0,0,124,4, + 0,116,1,0,116,2,0,102,2,0,131,2,0,115,46,0, + 113,13,0,110,0,0,124,0,0,106,3,0,124,4,0,131, + 1,0,125,5,0,124,5,0,100,2,0,107,9,0,114,13, + 0,116,5,0,124,5,0,100,1,0,131,2,0,114,112,0, + 124,5,0,106,6,0,124,1,0,131,1,0,92,2,0,125, + 6,0,125,7,0,110,21,0,124,5,0,106,7,0,124,1, + 0,131,1,0,125,6,0,103,0,0,125,7,0,124,6,0, + 100,2,0,107,9,0,114,155,0,124,6,0,124,3,0,102, + 2,0,83,124,3,0,106,8,0,124,7,0,131,1,0,1, + 113,13,0,113,13,0,87,100,2,0,124,3,0,102,2,0, + 83,100,2,0,83,40,3,0,0,0,117,63,0,0,0,70, + 105,110,100,32,116,104,101,32,108,111,97,100,101,114,32,111, + 114,32,110,97,109,101,115,112,97,99,101,95,112,97,116,104, + 32,102,111,114,32,116,104,105,115,32,109,111,100,117,108,101, + 47,112,97,99,107,97,103,101,32,110,97,109,101,46,117,11, + 0,0,0,102,105,110,100,95,108,111,97,100,101,114,78,40, + 9,0,0,0,117,10,0,0,0,105,115,105,110,115,116,97, + 110,99,101,117,3,0,0,0,115,116,114,117,5,0,0,0, + 98,121,116,101,115,117,20,0,0,0,95,112,97,116,104,95, + 105,109,112,111,114,116,101,114,95,99,97,99,104,101,117,4, + 0,0,0,78,111,110,101,117,7,0,0,0,104,97,115,97, + 116,116,114,117,11,0,0,0,102,105,110,100,95,108,111,97, + 100,101,114,117,11,0,0,0,102,105,110,100,95,109,111,100, + 117,108,101,117,6,0,0,0,101,120,116,101,110,100,40,8, + 0,0,0,117,3,0,0,0,99,108,115,117,8,0,0,0, + 102,117,108,108,110,97,109,101,117,4,0,0,0,112,97,116, + 104,117,14,0,0,0,110,97,109,101,115,112,97,99,101,95, + 112,97,116,104,117,5,0,0,0,101,110,116,114,121,117,6, + 0,0,0,102,105,110,100,101,114,117,6,0,0,0,108,111, + 97,100,101,114,117,8,0,0,0,112,111,114,116,105,111,110, + 115,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, + 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, + 98,46,95,98,111,111,116,115,116,114,97,112,62,117,11,0, + 0,0,95,103,101,116,95,108,111,97,100,101,114,253,4,0, + 0,115,28,0,0,0,0,5,6,1,13,1,21,1,6,1, 15,1,12,1,15,1,24,2,15,1,6,1,12,2,10,5, 20,2,117,22,0,0,0,80,97,116,104,70,105,110,100,101, 114,46,95,103,101,116,95,108,111,97,100,101,114,99,3,0, @@ -3250,7 +3254,7 @@ unsigned char _Py_M__importlib[] = { 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, 116,114,97,112,62,117,11,0,0,0,102,105,110,100,95,109, - 111,100,117,108,101,22,5,0,0,115,16,0,0,0,0,4, + 111,100,117,108,101,24,5,0,0,115,16,0,0,0,0,4, 12,1,12,1,24,1,12,1,4,2,6,3,19,2,117,22, 0,0,0,80,97,116,104,70,105,110,100,101,114,46,102,105, 110,100,95,109,111,100,117,108,101,78,40,11,0,0,0,117, @@ -3271,7 +3275,7 @@ unsigned char _Py_M__importlib[] = { 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, 117,10,0,0,0,80,97,116,104,70,105,110,100,101,114,207, 4,0,0,115,14,0,0,0,16,2,6,2,18,8,18,17, - 18,17,18,25,3,1,117,10,0,0,0,80,97,116,104,70, + 18,17,18,27,3,1,117,10,0,0,0,80,97,116,104,70, 105,110,100,101,114,99,1,0,0,0,0,0,0,0,1,0, 0,0,3,0,0,0,66,0,0,0,115,110,0,0,0,124, 0,0,69,101,0,0,90,1,0,100,0,0,90,2,0,100, @@ -3325,7 +3329,7 @@ unsigned char _Py_M__importlib[] = { 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, 116,115,116,114,97,112,62,117,9,0,0,0,60,103,101,110, - 101,120,112,114,62,55,5,0,0,115,2,0,0,0,6,0, + 101,120,112,114,62,57,5,0,0,115,2,0,0,0,6,0, 117,38,0,0,0,70,105,108,101,70,105,110,100,101,114,46, 95,95,105,110,105,116,95,95,46,60,108,111,99,97,108,115, 62,46,60,103,101,110,101,120,112,114,62,117,1,0,0,0, @@ -3344,7 +3348,7 @@ unsigned char _Py_M__importlib[] = { 100,101,114,117,29,0,0,0,60,102,114,111,122,101,110,32, 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, 116,114,97,112,62,117,8,0,0,0,95,95,105,110,105,116, - 95,95,49,5,0,0,115,16,0,0,0,0,4,6,1,19, + 95,95,51,5,0,0,115,16,0,0,0,0,4,6,1,19, 1,36,1,9,2,15,1,9,1,12,1,117,19,0,0,0, 70,105,108,101,70,105,110,100,101,114,46,95,95,105,110,105, 116,95,95,99,1,0,0,0,0,0,0,0,1,0,0,0, @@ -3359,7 +3363,7 @@ unsigned char _Py_M__importlib[] = { 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, 98,46,95,98,111,111,116,115,116,114,97,112,62,117,17,0, 0,0,105,110,118,97,108,105,100,97,116,101,95,99,97,99, - 104,101,115,63,5,0,0,115,2,0,0,0,0,2,117,28, + 104,101,115,65,5,0,0,115,2,0,0,0,0,2,117,28, 0,0,0,70,105,108,101,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,12,0,0,0,13,0,0,0, @@ -3431,7 +3435,7 @@ unsigned char _Py_M__importlib[] = { 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, 114,97,112,62,117,11,0,0,0,102,105,110,100,95,108,111, - 97,100,101,114,69,5,0,0,115,62,0,0,0,0,3,6, + 97,100,101,114,71,5,0,0,115,62,0,0,0,0,3,6, 1,19,1,3,1,25,1,13,1,11,1,15,1,10,1,12, 2,9,1,9,1,15,2,9,1,6,2,12,1,18,1,12, 1,22,1,10,1,15,1,12,1,26,4,12,2,22,1,16, @@ -3470,7 +3474,7 @@ unsigned char _Py_M__importlib[] = { 102,110,40,0,0,0,0,40,0,0,0,0,117,29,0,0, 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,9, - 0,0,0,60,103,101,110,101,120,112,114,62,139,5,0,0, + 0,0,0,60,103,101,110,101,120,112,114,62,141,5,0,0, 115,2,0,0,0,6,0,117,41,0,0,0,70,105,108,101, 70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,99, 104,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110, @@ -3498,7 +3502,7 @@ unsigned char _Py_M__importlib[] = { 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, 111,111,116,115,116,114,97,112,62,117,11,0,0,0,95,102, - 105,108,108,95,99,97,99,104,101,111,5,0,0,115,34,0, + 105,108,108,95,99,97,99,104,101,113,5,0,0,115,34,0, 0,0,0,2,9,1,3,1,19,1,13,2,11,3,18,1, 18,7,9,1,13,1,24,1,6,1,27,2,6,1,17,1, 9,1,18,1,117,22,0,0,0,70,105,108,101,70,105,110, @@ -3544,7 +3548,7 @@ unsigned char _Py_M__importlib[] = { 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, 116,114,97,112,62,117,24,0,0,0,112,97,116,104,95,104, 111,111,107,95,102,111,114,95,70,105,108,101,70,105,110,100, - 101,114,151,5,0,0,115,6,0,0,0,0,2,12,1,21, + 101,114,153,5,0,0,115,6,0,0,0,0,2,12,1,21, 1,117,54,0,0,0,70,105,108,101,70,105,110,100,101,114, 46,112,97,116,104,95,104,111,111,107,46,60,108,111,99,97, 108,115,62,46,112,97,116,104,95,104,111,111,107,95,102,111, @@ -3558,7 +3562,7 @@ unsigned char _Py_M__importlib[] = { 105,108,115,117,29,0,0,0,60,102,114,111,122,101,110,32, 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, 116,114,97,112,62,117,9,0,0,0,112,97,116,104,95,104, - 111,111,107,141,5,0,0,115,4,0,0,0,0,10,21,6, + 111,111,107,143,5,0,0,115,4,0,0,0,0,10,21,6, 117,20,0,0,0,70,105,108,101,70,105,110,100,101,114,46, 112,97,116,104,95,104,111,111,107,99,1,0,0,0,0,0, 0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,14, @@ -3569,7 +3573,7 @@ unsigned char _Py_M__importlib[] = { 0,0,115,101,108,102,40,0,0,0,0,40,0,0,0,0, 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,8,0,0,0,95,95,114,101,112,114,95,95,159, + 112,62,117,8,0,0,0,95,95,114,101,112,114,95,95,161, 5,0,0,115,2,0,0,0,0,1,117,19,0,0,0,70, 105,108,101,70,105,110,100,101,114,46,95,95,114,101,112,114, 95,95,78,40,13,0,0,0,117,8,0,0,0,95,95,110, @@ -3590,7 +3594,7 @@ unsigned char _Py_M__importlib[] = { 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, 116,114,97,112,62,117,10,0,0,0,70,105,108,101,70,105, - 110,100,101,114,40,5,0,0,115,16,0,0,0,16,7,6, + 110,100,101,114,42,5,0,0,115,16,0,0,0,16,7,6, 2,12,14,12,4,6,2,12,42,12,30,18,18,117,10,0, 0,0,70,105,108,101,70,105,110,100,101,114,99,1,0,0, 0,0,0,0,0,1,0,0,0,2,0,0,0,66,0,0, @@ -3612,7 +3616,7 @@ unsigned char _Py_M__importlib[] = { 0,115,101,108,102,40,0,0,0,0,40,0,0,0,0,117, 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, - 62,117,9,0,0,0,95,95,101,110,116,101,114,95,95,169, + 62,117,9,0,0,0,95,95,101,110,116,101,114,95,95,171, 5,0,0,115,2,0,0,0,0,2,117,28,0,0,0,95, 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, 116,46,95,95,101,110,116,101,114,95,95,99,4,0,0,0, @@ -3631,7 +3635,7 @@ unsigned char _Py_M__importlib[] = { 98,97,99,107,40,0,0,0,0,40,0,0,0,0,117,29, 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,8,0,0,0,95,95,101,120,105,116,95,95,173,5,0, + 117,8,0,0,0,95,95,101,120,105,116,95,95,175,5,0, 0,115,2,0,0,0,0,2,117,27,0,0,0,95,73,109, 112,111,114,116,76,111,99,107,67,111,110,116,101,120,116,46, 95,95,101,120,105,116,95,95,78,40,6,0,0,0,117,8, @@ -3645,7 +3649,7 @@ unsigned char _Py_M__importlib[] = { 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, 112,62,117,18,0,0,0,95,73,109,112,111,114,116,76,111, - 99,107,67,111,110,116,101,120,116,165,5,0,0,115,6,0, + 99,107,67,111,110,116,101,120,116,167,5,0,0,115,6,0, 0,0,16,2,6,2,12,4,117,18,0,0,0,95,73,109, 112,111,114,116,76,111,99,107,67,111,110,116,101,120,116,99, 3,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0, @@ -3674,7 +3678,7 @@ unsigned char _Py_M__importlib[] = { 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, 116,114,97,112,62,117,13,0,0,0,95,114,101,115,111,108, - 118,101,95,110,97,109,101,178,5,0,0,115,10,0,0,0, + 118,101,95,110,97,109,101,180,5,0,0,115,10,0,0,0, 0,2,22,1,18,1,15,1,10,1,117,13,0,0,0,95, 114,101,115,111,108,118,101,95,110,97,109,101,99,2,0,0, 0,0,0,0,0,4,0,0,0,11,0,0,0,67,0,0, @@ -3706,7 +3710,7 @@ unsigned char _Py_M__importlib[] = { 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, 116,114,97,112,62,117,12,0,0,0,95,102,105,110,100,95, - 109,111,100,117,108,101,187,5,0,0,115,20,0,0,0,0, + 109,111,100,117,108,101,189,5,0,0,115,20,0,0,0,0, 2,9,1,19,1,16,1,10,1,24,1,12,2,15,1,4, 2,21,2,117,12,0,0,0,95,102,105,110,100,95,109,111, 100,117,108,101,99,3,0,0,0,0,0,0,0,4,0,0, @@ -3750,7 +3754,7 @@ unsigned char _Py_M__importlib[] = { 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, 46,95,98,111,111,116,115,116,114,97,112,62,117,13,0,0, - 0,95,115,97,110,105,116,121,95,99,104,101,99,107,204,5, + 0,95,115,97,110,105,116,121,95,99,104,101,99,107,206,5, 0,0,115,24,0,0,0,0,2,15,1,30,1,12,1,15, 1,6,1,15,1,15,1,15,1,6,2,27,1,19,1,117, 13,0,0,0,95,115,97,110,105,116,121,95,99,104,101,99, @@ -3828,7 +3832,7 @@ unsigned char _Py_M__importlib[] = { 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, 114,97,112,62,117,23,0,0,0,95,102,105,110,100,95,97, 110,100,95,108,111,97,100,95,117,110,108,111,99,107,101,100, - 223,5,0,0,115,76,0,0,0,0,1,6,1,19,1,6, + 225,5,0,0,115,76,0,0,0,0,1,6,1,19,1,6, 1,15,1,16,2,15,1,11,2,13,1,3,1,13,1,13, 1,22,1,26,1,15,1,12,1,27,3,9,1,9,1,15, 2,13,1,19,2,13,1,6,2,13,1,32,2,24,1,3, @@ -3858,7 +3862,7 @@ unsigned char _Py_M__importlib[] = { 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,14, 0,0,0,95,102,105,110,100,95,97,110,100,95,108,111,97, - 100,17,6,0,0,115,14,0,0,0,0,2,3,1,16,2, + 100,19,6,0,0,115,14,0,0,0,0,2,3,1,16,2, 11,1,10,1,3,1,17,2,117,14,0,0,0,95,102,105, 110,100,95,97,110,100,95,108,111,97,100,99,3,0,0,0, 0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0, @@ -3916,7 +3920,7 @@ unsigned char _Py_M__importlib[] = { 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, 116,115,116,114,97,112,62,117,11,0,0,0,95,103,99,100, - 95,105,109,112,111,114,116,30,6,0,0,115,28,0,0,0, + 95,105,109,112,111,114,116,32,6,0,0,115,28,0,0,0, 0,9,16,1,12,1,21,1,10,1,15,1,13,1,13,1, 12,1,10,1,6,1,9,1,21,1,10,1,117,11,0,0, 0,95,103,99,100,95,105,109,112,111,114,116,99,3,0,0, @@ -3974,7 +3978,7 @@ unsigned char _Py_M__importlib[] = { 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, 111,116,115,116,114,97,112,62,117,16,0,0,0,95,104,97, - 110,100,108,101,95,102,114,111,109,108,105,115,116,54,6,0, + 110,100,108,101,95,102,114,111,109,108,105,115,116,56,6,0, 0,115,34,0,0,0,0,10,15,1,12,1,12,1,13,1, 15,1,22,1,13,1,15,1,21,1,3,1,17,1,18,6, 18,1,15,1,9,1,32,1,117,16,0,0,0,95,104,97, @@ -4008,7 +4012,7 @@ unsigned char _Py_M__importlib[] = { 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, 98,111,111,116,115,116,114,97,112,62,117,17,0,0,0,95, 99,97,108,99,95,95,95,112,97,99,107,97,103,101,95,95, - 88,6,0,0,115,12,0,0,0,0,7,15,1,12,1,10, + 90,6,0,0,115,12,0,0,0,0,7,15,1,12,1,10, 1,12,1,25,1,117,17,0,0,0,95,99,97,108,99,95, 95,95,112,97,99,107,97,103,101,95,95,99,0,0,0,0, 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, @@ -4040,7 +4044,7 @@ unsigned char _Py_M__importlib[] = { 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, 112,62,117,27,0,0,0,95,103,101,116,95,115,117,112,112, 111,114,116,101,100,95,102,105,108,101,95,108,111,97,100,101, - 114,115,103,6,0,0,115,8,0,0,0,0,5,18,1,12, + 114,115,105,6,0,0,115,8,0,0,0,0,5,18,1,12, 1,12,1,117,27,0,0,0,95,103,101,116,95,115,117,112, 112,111,114,116,101,100,95,102,105,108,101,95,108,111,97,100, 101,114,115,99,5,0,0,0,0,0,0,0,9,0,0,0, @@ -4108,7 +4112,7 @@ unsigned char _Py_M__importlib[] = { 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, 114,97,112,62,117,10,0,0,0,95,95,105,109,112,111,114, - 116,95,95,114,6,0,0,115,26,0,0,0,0,11,12,1, + 116,95,95,116,6,0,0,115,26,0,0,0,0,11,12,1, 15,2,24,1,12,1,18,1,6,3,12,1,23,1,6,1, 4,4,35,3,40,2,117,10,0,0,0,95,95,105,109,112, 111,114,116,95,95,99,2,0,0,0,0,0,0,0,14,0, @@ -4189,7 +4193,7 @@ unsigned char _Py_M__importlib[] = { 112,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, 98,46,95,98,111,111,116,115,116,114,97,112,62,117,9,0, - 0,0,60,103,101,110,101,120,112,114,62,182,6,0,0,115, + 0,0,60,103,101,110,101,120,112,114,62,184,6,0,0,115, 2,0,0,0,6,0,117,25,0,0,0,95,115,101,116,117, 112,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101, 120,112,114,62,105,0,0,0,0,117,7,0,0,0,69,77, @@ -4253,7 +4257,7 @@ unsigned char _Py_M__importlib[] = { 108,101,40,0,0,0,0,40,0,0,0,0,117,29,0,0, 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,6, - 0,0,0,95,115,101,116,117,112,150,6,0,0,115,96,0, + 0,0,0,95,115,101,116,117,112,152,6,0,0,115,96,0, 0,0,0,9,6,1,6,2,12,1,9,2,6,2,19,1, 15,1,16,2,13,1,13,1,15,1,18,2,13,1,20,2, 48,1,19,2,31,1,10,1,15,1,13,1,4,2,3,1, @@ -4297,7 +4301,7 @@ unsigned char _Py_M__importlib[] = { 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, 115,116,114,97,112,62,117,8,0,0,0,95,105,110,115,116, - 97,108,108,224,6,0,0,115,16,0,0,0,0,2,13,1, + 97,108,108,226,6,0,0,115,16,0,0,0,0,2,13,1, 9,1,28,1,16,1,16,1,15,1,19,1,117,8,0,0, 0,95,105,110,115,116,97,108,108,78,40,3,0,0,0,117, 3,0,0,0,119,105,110,117,6,0,0,0,99,121,103,119, @@ -4398,7 +4402,7 @@ unsigned char _Py_M__importlib[] = { 1,37,2,6,2,9,2,9,1,9,2,15,27,12,23,12, 21,12,8,12,13,12,11,12,55,12,18,12,11,12,11,12, 17,19,57,19,54,19,50,19,82,22,134,19,29,25,49,25, - 25,6,3,19,45,19,55,19,18,19,89,19,125,19,13,12, + 25,6,3,19,45,19,55,19,18,19,91,19,125,19,13,12, 9,12,17,12,17,6,2,12,50,12,13,18,24,12,34,12, 15,12,11,24,36,12,74, };