[Python-checkins] bpo-42137: have ModuleType.__repr__ prefer __spec__ over module_repr() (GH-24953)

brettcannon webhook-mailer at python.org
Wed Mar 24 11:27:05 EDT 2021


https://github.com/python/cpython/commit/9cb31d671646a5ff0901f79d2d61022621447190
commit: 9cb31d671646a5ff0901f79d2d61022621447190
branch: master
author: Brett Cannon <brett at python.org>
committer: brettcannon <brett at python.org>
date: 2021-03-24T08:26:56-07:00
summary:

bpo-42137: have ModuleType.__repr__ prefer __spec__ over module_repr() (GH-24953)

This is to work towards the removal of the use of  module_repr() in Python 3.12 (documented as deprecated since 3.4).

files:
A Misc/NEWS.d/next/Core and Builtins/2021-03-20-19-54-47.bpo-42137.A8aQvj.rst
M Doc/library/importlib.rst
M Doc/whatsnew/3.10.rst
M Lib/importlib/_bootstrap.py
M Lib/test/test_importlib/frozen/test_loader.py
M Lib/test/test_importlib/test_namespace_pkgs.py
M Python/importlib.h

diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst
index fee5df84dffcb..d9b790e4e777d 100644
--- a/Doc/library/importlib.rst
+++ b/Doc/library/importlib.rst
@@ -208,7 +208,7 @@ Functions
    .. versionadded:: 3.4
    .. versionchanged:: 3.7
        :exc:`ModuleNotFoundError` is raised when the module being reloaded lacks
-       a :class:`ModuleSpec`.
+       a :class:`~importlib.machinery.ModuleSpec`.
 
 
 :mod:`importlib.abc` -- Abstract base classes related to import
@@ -1591,9 +1591,9 @@ an :term:`importer`.
 
 .. function:: spec_from_loader(name, loader, *, origin=None, is_package=None)
 
-   A factory function for creating a :class:`ModuleSpec` instance based
-   on a loader.  The parameters have the same meaning as they do for
-   ModuleSpec.  The function uses available :term:`loader` APIs, such as
+   A factory function for creating a :class:`~importlib.machinery.ModuleSpec`
+   instance based on a loader.  The parameters have the same meaning as they do
+   for ModuleSpec.  The function uses available :term:`loader` APIs, such as
    :meth:`InspectLoader.is_package`, to fill in any missing
    information on the spec.
 
@@ -1601,9 +1601,9 @@ an :term:`importer`.
 
 .. function:: spec_from_file_location(name, location, *, loader=None, submodule_search_locations=None)
 
-   A factory function for creating a :class:`ModuleSpec` instance based
-   on the path to a file.  Missing information will be filled in on the
-   spec by making use of loader APIs and by the implication that the
+   A factory function for creating a :class:`~importlib.machinery.ModuleSpec`
+   instance based on the path to a file.  Missing information will be filled in
+   on the spec by making use of loader APIs and by the implication that the
    module will be file-based.
 
    .. versionadded:: 3.4
diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst
index d4335eb11e345..b6791800fb6c8 100644
--- a/Doc/whatsnew/3.10.rst
+++ b/Doc/whatsnew/3.10.rst
@@ -1004,6 +1004,12 @@ Deprecated
   :meth:`~importlib.abc.Loader.exec_module` is preferred.
   (Contributed by Brett Cannon in :issue:`26131`.)
 
+* The import system now uses the ``__spec__`` attribute on modules before
+  falling back on :meth:`~importlib.abc.Loader.module_repr` for a module's
+  ``__repr__()`` method. Removal of the use of ``module_repr()`` is scheduled
+  for Python 3.12.
+  (Contributed by Brett Cannon in :issue:`42137`.)
+
 * ``sqlite3.OptimizedUnicode`` has been undocumented and obsolete since Python
   3.3, when it was made an alias to :class:`str`.  It is now deprecated,
   scheduled for removal in Python 3.12.
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index e4f893c38c1aa..5038b46a018bb 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -275,7 +275,7 @@ def _requires_frozen_wrapper(self, fullname):
 def _load_module_shim(self, fullname):
     """Load the specified module into sys.modules and return it.
 
-    This method is deprecated.  Use loader.exec_module instead.
+    This method is deprecated.  Use loader.exec_module() instead.
 
     """
     msg = ("the load_module() method is deprecated and slated for removal in "
@@ -292,24 +292,16 @@ def _load_module_shim(self, fullname):
 # Module specifications #######################################################
 
 def _module_repr(module):
-    # The implementation of ModuleType.__repr__().
+    """The implementation of ModuleType.__repr__()."""
     loader = getattr(module, '__loader__', None)
-    if hasattr(loader, 'module_repr'):
-        # As soon as BuiltinImporter, FrozenImporter, and NamespaceLoader
-        # drop their implementations for module_repr. we can add a
-        # deprecation warning here.
+    if spec := getattr(module, "__spec__", None):
+        return _module_repr_from_spec(spec)
+    elif hasattr(loader, 'module_repr'):
         try:
             return loader.module_repr(module)
         except Exception:
             pass
-    try:
-        spec = module.__spec__
-    except AttributeError:
-        pass
-    else:
-        if spec is not None:
-            return _module_repr_from_spec(spec)
-
+    # Fall through to a catch-all which always succeeds.
     # We could use module.__class__.__name__ instead of 'module' in the
     # various repr permutations.
     try:
diff --git a/Lib/test/test_importlib/frozen/test_loader.py b/Lib/test/test_importlib/frozen/test_loader.py
index 8eaffa798a5b7..632246ade0826 100644
--- a/Lib/test/test_importlib/frozen/test_loader.py
+++ b/Lib/test/test_importlib/frozen/test_loader.py
@@ -160,14 +160,6 @@ def test_module_repr(self):
             self.assertEqual(repr_str,
                              "<module '__hello__' (frozen)>")
 
-    def test_module_repr_indirect(self):
-        with warnings.catch_warnings():
-            warnings.simplefilter("ignore", DeprecationWarning)
-            with util.uncache('__hello__'), captured_stdout():
-                module = self.machinery.FrozenImporter.load_module('__hello__')
-            self.assertEqual(repr(module),
-                            "<module '__hello__' (frozen)>")
-
     # No way to trigger an error in a frozen module.
     test_state_after_failure = None
 
diff --git a/Lib/test/test_importlib/test_namespace_pkgs.py b/Lib/test/test_importlib/test_namespace_pkgs.py
index a8f95a035e245..ab5847c555312 100644
--- a/Lib/test/test_importlib/test_namespace_pkgs.py
+++ b/Lib/test/test_importlib/test_namespace_pkgs.py
@@ -82,7 +82,8 @@ def test_cant_import_other(self):
 
     def test_module_repr(self):
         import foo.one
-        self.assertEqual(repr(foo), "<module 'foo' (namespace)>")
+        self.assertEqual(foo.__spec__.loader.module_repr(foo),
+                         "<module 'foo' (namespace)>")
 
 
 class DynamicPathNamespacePackage(NamespacePackageTest):
diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-20-19-54-47.bpo-42137.A8aQvj.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-20-19-54-47.bpo-42137.A8aQvj.rst
new file mode 100644
index 0000000000000..e13ce49b954b1
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2021-03-20-19-54-47.bpo-42137.A8aQvj.rst	
@@ -0,0 +1,2 @@
+The import system now prefers using ``__spec__`` for ``ModuleType.__repr__``
+over ``module_repr()``.
diff --git a/Python/importlib.h b/Python/importlib.h
index 90cfa4cc2daed..633c642a1401f 100644
--- a/Python/importlib.h
+++ b/Python/importlib.h
@@ -492,67 +492,68 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     124,1,116,4,106,5,118,0,114,66,116,4,106,5,124,1,
     25,0,125,4,116,6,124,3,124,4,131,2,1,0,116,4,
     106,5,124,1,25,0,83,0,116,7,124,3,131,1,83,0,
-    41,3,122,128,76,111,97,100,32,116,104,101,32,115,112,101,
+    41,3,122,130,76,111,97,100,32,116,104,101,32,115,112,101,
     99,105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,
     116,111,32,115,121,115,46,109,111,100,117,108,101,115,32,97,
     110,100,32,114,101,116,117,114,110,32,105,116,46,10,10,32,
     32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105,
     115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,85,
     115,101,32,108,111,97,100,101,114,46,101,120,101,99,95,109,
-    111,100,117,108,101,32,105,110,115,116,101,97,100,46,10,10,
-    32,32,32,32,122,103,116,104,101,32,108,111,97,100,95,109,
-    111,100,117,108,101,40,41,32,109,101,116,104,111,100,32,105,
-    115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100,
-    32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111,
-    118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46,
-    49,50,59,32,117,115,101,32,101,120,101,99,95,109,111,100,
-    117,108,101,40,41,32,105,110,115,116,101,97,100,78,41,8,
-    218,9,95,119,97,114,110,105,110,103,115,218,4,119,97,114,
-    110,218,18,68,101,112,114,101,99,97,116,105,111,110,87,97,
-    114,110,105,110,103,218,16,115,112,101,99,95,102,114,111,109,
-    95,108,111,97,100,101,114,114,18,0,0,0,218,7,109,111,
-    100,117,108,101,115,218,5,95,101,120,101,99,218,5,95,108,
-    111,97,100,41,5,114,33,0,0,0,114,89,0,0,0,218,
-    3,109,115,103,218,4,115,112,101,99,218,6,109,111,100,117,
-    108,101,114,5,0,0,0,114,5,0,0,0,114,6,0,0,
-    0,218,17,95,108,111,97,100,95,109,111,100,117,108,101,95,
-    115,104,105,109,19,1,0,0,115,18,0,0,0,4,6,12,
-    2,10,1,10,1,10,1,10,1,10,1,8,2,255,128,114,
-    111,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
-    0,5,0,0,0,8,0,0,0,67,0,0,0,115,206,0,
-    0,0,116,0,124,0,100,1,100,0,131,3,125,1,116,1,
-    124,1,100,2,131,2,114,50,122,12,124,1,160,2,124,0,
-    161,1,87,0,83,0,4,0,116,3,121,204,1,0,1,0,
-    1,0,89,0,122,10,124,0,106,4,125,2,87,0,110,16,
-    4,0,116,5,121,202,1,0,1,0,1,0,89,0,110,16,
-    124,2,100,0,117,1,114,94,116,6,124,2,131,1,83,0,
-    122,10,124,0,106,7,125,3,87,0,110,18,4,0,116,5,
-    121,200,1,0,1,0,1,0,100,3,125,3,89,0,122,10,
-    124,0,106,8,125,4,87,0,110,50,4,0,116,5,121,198,
-    1,0,1,0,1,0,124,1,100,0,117,0,114,170,100,4,
-    160,9,124,3,161,1,6,0,89,0,83,0,100,5,160,9,
-    124,3,124,1,161,2,6,0,89,0,83,0,100,6,160,9,
-    124,3,124,4,161,2,83,0,119,0,119,0,119,0,119,0,
-    41,7,78,218,10,95,95,108,111,97,100,101,114,95,95,218,
-    11,109,111,100,117,108,101,95,114,101,112,114,250,1,63,250,
-    13,60,109,111,100,117,108,101,32,123,33,114,125,62,250,20,
-    60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,33,
-    114,125,41,62,250,23,60,109,111,100,117,108,101,32,123,33,
-    114,125,32,102,114,111,109,32,123,33,114,125,62,41,10,114,
-    13,0,0,0,114,11,0,0,0,114,113,0,0,0,218,9,
-    69,120,99,101,112,116,105,111,110,218,8,95,95,115,112,101,
-    99,95,95,114,2,0,0,0,218,22,95,109,111,100,117,108,
+    111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,46,
+    10,10,32,32,32,32,122,103,116,104,101,32,108,111,97,100,
+    95,109,111,100,117,108,101,40,41,32,109,101,116,104,111,100,
+    32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,
+    110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,
+    109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,
+    51,46,49,50,59,32,117,115,101,32,101,120,101,99,95,109,
+    111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,78,
+    41,8,218,9,95,119,97,114,110,105,110,103,115,218,4,119,
+    97,114,110,218,18,68,101,112,114,101,99,97,116,105,111,110,
+    87,97,114,110,105,110,103,218,16,115,112,101,99,95,102,114,
+    111,109,95,108,111,97,100,101,114,114,18,0,0,0,218,7,
+    109,111,100,117,108,101,115,218,5,95,101,120,101,99,218,5,
+    95,108,111,97,100,41,5,114,33,0,0,0,114,89,0,0,
+    0,218,3,109,115,103,218,4,115,112,101,99,218,6,109,111,
+    100,117,108,101,114,5,0,0,0,114,5,0,0,0,114,6,
+    0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108,
+    101,95,115,104,105,109,19,1,0,0,115,18,0,0,0,4,
+    6,12,2,10,1,10,1,10,1,10,1,10,1,8,2,255,
+    128,114,111,0,0,0,99,1,0,0,0,0,0,0,0,0,
+    0,0,0,5,0,0,0,8,0,0,0,67,0,0,0,115,
+    184,0,0,0,116,0,124,0,100,1,100,2,131,3,125,1,
+    116,0,124,0,100,3,100,2,131,3,4,0,125,2,114,36,
+    116,1,124,2,131,1,83,0,116,2,124,1,100,4,131,2,
+    114,74,122,12,124,1,160,3,124,0,161,1,87,0,83,0,
+    4,0,116,4,121,182,1,0,1,0,1,0,89,0,122,10,
+    124,0,106,5,125,3,87,0,110,18,4,0,116,6,121,180,
+    1,0,1,0,1,0,100,5,125,3,89,0,122,10,124,0,
+    106,7,125,4,87,0,110,50,4,0,116,6,121,178,1,0,
+    1,0,1,0,124,1,100,2,117,0,114,150,100,6,160,8,
+    124,3,161,1,6,0,89,0,83,0,100,7,160,8,124,3,
+    124,1,161,2,6,0,89,0,83,0,100,8,160,8,124,3,
+    124,4,161,2,83,0,119,0,119,0,119,0,41,9,122,44,
+    84,104,101,32,105,109,112,108,101,109,101,110,116,97,116,105,
+    111,110,32,111,102,32,77,111,100,117,108,101,84,121,112,101,
+    46,95,95,114,101,112,114,95,95,40,41,46,218,10,95,95,
+    108,111,97,100,101,114,95,95,78,218,8,95,95,115,112,101,
+    99,95,95,218,11,109,111,100,117,108,101,95,114,101,112,114,
+    250,1,63,250,13,60,109,111,100,117,108,101,32,123,33,114,
+    125,62,250,20,60,109,111,100,117,108,101,32,123,33,114,125,
+    32,40,123,33,114,125,41,62,250,23,60,109,111,100,117,108,
+    101,32,123,33,114,125,32,102,114,111,109,32,123,33,114,125,
+    62,41,9,114,13,0,0,0,218,22,95,109,111,100,117,108,
     101,95,114,101,112,114,95,102,114,111,109,95,115,112,101,99,
-    114,9,0,0,0,218,8,95,95,102,105,108,101,95,95,114,
-    50,0,0,0,41,5,114,110,0,0,0,218,6,108,111,97,
-    100,101,114,114,109,0,0,0,114,20,0,0,0,218,8,102,
-    105,108,101,110,97,109,101,114,5,0,0,0,114,5,0,0,
-    0,114,6,0,0,0,218,12,95,109,111,100,117,108,101,95,
-    114,101,112,114,38,1,0,0,115,56,0,0,0,12,2,10,
-    1,2,4,12,1,12,1,2,1,2,1,10,1,12,1,4,
-    1,8,2,8,1,2,4,10,1,12,1,6,1,2,1,10,
-    1,12,1,8,1,14,1,16,2,12,2,2,250,2,252,2,
-    246,2,252,255,128,114,124,0,0,0,99,0,0,0,0,0,
+    114,11,0,0,0,114,114,0,0,0,218,9,69,120,99,101,
+    112,116,105,111,110,114,9,0,0,0,114,2,0,0,0,218,
+    8,95,95,102,105,108,101,95,95,114,50,0,0,0,41,5,
+    114,110,0,0,0,218,6,108,111,97,100,101,114,114,109,0,
+    0,0,114,20,0,0,0,218,8,102,105,108,101,110,97,109,
+    101,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,
+    218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1,
+    0,0,115,46,0,0,0,12,2,16,1,8,1,10,1,2,
+    1,12,1,12,1,2,1,2,4,10,1,12,1,6,1,2,
+    1,10,1,12,1,8,1,14,1,16,2,12,2,2,250,2,
+    252,2,249,255,128,114,124,0,0,0,99,0,0,0,0,0,
     0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,
     0,0,0,115,114,0,0,0,101,0,90,1,100,0,90,2,
     100,1,90,3,100,2,100,2,100,2,100,3,156,3,100,4,
@@ -671,7 +672,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     99,104,101,100,41,6,114,33,0,0,0,114,20,0,0,0,
     114,122,0,0,0,114,126,0,0,0,114,127,0,0,0,114,
     128,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,
-    0,0,0,114,34,0,0,0,111,1,0,0,115,16,0,0,
+    0,0,0,114,34,0,0,0,103,1,0,0,115,16,0,0,
     0,6,2,6,1,6,1,6,1,14,1,6,3,10,1,255,
     128,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95,
     105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,0,
@@ -693,7 +694,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     218,9,95,95,99,108,97,115,115,95,95,114,9,0,0,0,
     218,4,106,111,105,110,41,2,114,33,0,0,0,114,62,0,
     0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,
-    0,114,53,0,0,0,123,1,0,0,115,22,0,0,0,10,
+    0,114,53,0,0,0,115,1,0,0,115,22,0,0,0,10,
     1,10,1,4,255,10,2,18,1,10,1,6,1,8,1,4,
     255,22,2,255,128,122,19,77,111,100,117,108,101,83,112,101,
     99,46,95,95,114,101,112,114,95,95,99,2,0,0,0,0,
@@ -711,7 +712,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     2,0,0,0,218,14,78,111,116,73,109,112,108,101,109,101,
     110,116,101,100,41,3,114,33,0,0,0,90,5,111,116,104,
     101,114,90,4,115,109,115,108,114,5,0,0,0,114,5,0,
-    0,0,114,6,0,0,0,218,6,95,95,101,113,95,95,133,
+    0,0,114,6,0,0,0,218,6,95,95,101,113,95,95,125,
     1,0,0,115,34,0,0,0,6,1,2,1,12,1,10,1,
     2,255,10,2,2,254,8,3,2,253,10,4,2,252,10,5,
     4,251,12,6,8,1,2,255,255,128,122,17,77,111,100,117,
@@ -727,7 +728,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     218,19,78,111,116,73,109,112,108,101,109,101,110,116,101,100,
     69,114,114,111,114,90,11,95,103,101,116,95,99,97,99,104,
     101,100,114,52,0,0,0,114,5,0,0,0,114,5,0,0,
-    0,114,6,0,0,0,114,135,0,0,0,145,1,0,0,115,
+    0,114,6,0,0,0,114,135,0,0,0,137,1,0,0,115,
     14,0,0,0,10,2,16,1,8,1,4,1,14,1,6,1,
     255,128,122,17,77,111,100,117,108,101,83,112,101,99,46,99,
     97,99,104,101,100,99,2,0,0,0,0,0,0,0,0,0,
@@ -735,7 +736,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,0,124,1,124,0,95,0,100,0,83,0,114,0,0,
     0,0,41,1,114,131,0,0,0,41,2,114,33,0,0,0,
     114,135,0,0,0,114,5,0,0,0,114,5,0,0,0,114,
-    6,0,0,0,114,135,0,0,0,154,1,0,0,115,4,0,
+    6,0,0,0,114,135,0,0,0,146,1,0,0,115,4,0,
     0,0,10,2,255,128,99,1,0,0,0,0,0,0,0,0,
     0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115,
     32,0,0,0,124,0,106,0,100,1,117,0,114,26,124,0,
@@ -746,14 +747,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,41,3,114,129,0,0,0,114,20,0,0,0,218,10,114,
     112,97,114,116,105,116,105,111,110,114,52,0,0,0,114,5,
     0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,112,
-    97,114,101,110,116,158,1,0,0,115,8,0,0,0,10,3,
+    97,114,101,110,116,150,1,0,0,115,8,0,0,0,10,3,
     16,1,6,2,255,128,122,17,77,111,100,117,108,101,83,112,
     101,99,46,112,97,114,101,110,116,99,1,0,0,0,0,0,
     0,0,0,0,0,0,1,0,0,0,1,0,0,0,67,0,
     0,0,115,6,0,0,0,124,0,106,0,83,0,114,0,0,
     0,0,41,1,114,130,0,0,0,114,52,0,0,0,114,5,
     0,0,0,114,5,0,0,0,114,6,0,0,0,114,136,0,
-    0,0,166,1,0,0,115,4,0,0,0,6,2,255,128,122,
+    0,0,158,1,0,0,115,4,0,0,0,6,2,255,128,122,
     23,77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,
     108,111,99,97,116,105,111,110,99,2,0,0,0,0,0,0,
     0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,
@@ -761,14 +762,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     100,0,83,0,114,0,0,0,0,41,2,218,4,98,111,111,
     108,114,130,0,0,0,41,2,114,33,0,0,0,218,5,118,
     97,108,117,101,114,5,0,0,0,114,5,0,0,0,114,6,
-    0,0,0,114,136,0,0,0,170,1,0,0,115,4,0,0,
+    0,0,0,114,136,0,0,0,162,1,0,0,115,4,0,0,
     0,14,2,255,128,41,12,114,9,0,0,0,114,8,0,0,
     0,114,1,0,0,0,114,10,0,0,0,114,34,0,0,0,
     114,53,0,0,0,114,138,0,0,0,218,8,112,114,111,112,
     101,114,116,121,114,135,0,0,0,218,6,115,101,116,116,101,
     114,114,143,0,0,0,114,136,0,0,0,114,5,0,0,0,
     114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,
-    125,0,0,0,74,1,0,0,115,36,0,0,0,8,0,4,
+    125,0,0,0,66,1,0,0,115,36,0,0,0,8,0,4,
     1,4,36,2,1,12,255,8,12,8,10,2,12,10,1,4,
     8,10,1,2,3,10,1,2,7,10,1,4,3,14,1,255,
     128,114,125,0,0,0,169,2,114,126,0,0,0,114,128,0,
@@ -796,7 +797,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     114,125,0,0,0,41,6,114,20,0,0,0,114,122,0,0,
     0,114,126,0,0,0,114,128,0,0,0,114,149,0,0,0,
     90,6,115,101,97,114,99,104,114,5,0,0,0,114,5,0,
-    0,0,114,6,0,0,0,114,104,0,0,0,175,1,0,0,
+    0,0,114,6,0,0,0,114,104,0,0,0,167,1,0,0,
     115,40,0,0,0,10,2,8,1,4,1,6,1,8,2,12,
     1,12,1,6,1,2,1,6,255,8,3,10,1,2,1,14,
     1,12,1,8,1,4,3,16,2,2,250,255,128,114,104,0,
@@ -821,7 +822,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     117,0,144,1,114,10,100,2,110,2,100,3,124,3,95,10,
     124,6,124,3,95,11,124,7,124,3,95,12,124,3,83,0,
     119,0,119,0,119,0,119,0,119,0,119,0,41,4,78,169,
-    1,114,126,0,0,0,70,84,41,13,114,119,0,0,0,114,
+    1,114,126,0,0,0,70,84,41,13,114,113,0,0,0,114,
     2,0,0,0,114,9,0,0,0,114,112,0,0,0,114,121,
     0,0,0,218,7,95,79,82,73,71,73,78,218,10,95,95,
     99,97,99,104,101,100,95,95,218,4,108,105,115,116,218,8,
@@ -831,7 +832,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,114,20,0,0,0,90,8,108,111,99,97,116,105,111,
     110,114,135,0,0,0,114,129,0,0,0,114,5,0,0,0,
     114,5,0,0,0,114,6,0,0,0,218,17,95,115,112,101,
-    99,95,102,114,111,109,95,109,111,100,117,108,101,201,1,0,
+    99,95,102,114,111,109,95,109,111,100,117,108,101,193,1,0,
     0,115,86,0,0,0,2,2,10,1,14,1,4,1,8,2,
     4,1,6,2,8,1,2,1,10,1,14,1,2,2,2,1,
     10,1,14,1,6,1,8,1,8,1,2,1,10,1,14,1,
@@ -878,13 +879,13 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,218,16,95,78,97,109,101,115,112,97,99,101,76,111,97,
     100,101,114,218,7,95,95,110,101,119,95,95,90,5,95,112,
     97,116,104,114,121,0,0,0,114,112,0,0,0,114,143,0,
-    0,0,114,158,0,0,0,114,119,0,0,0,114,154,0,0,
+    0,0,114,158,0,0,0,114,113,0,0,0,114,154,0,0,
     0,114,136,0,0,0,114,126,0,0,0,114,135,0,0,0,
     114,152,0,0,0,41,5,114,109,0,0,0,114,110,0,0,
     0,114,157,0,0,0,114,122,0,0,0,114,159,0,0,0,
     114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,
     18,95,105,110,105,116,95,109,111,100,117,108,101,95,97,116,
-    116,114,115,246,1,0,0,115,114,0,0,0,20,4,2,1,
+    116,114,115,238,1,0,0,115,114,0,0,0,20,4,2,1,
     12,1,14,1,2,1,20,2,6,1,8,1,10,2,8,1,
     4,1,6,1,10,2,8,1,6,1,6,11,2,1,10,1,
     14,1,2,1,20,2,2,1,12,1,14,1,2,1,2,2,
@@ -913,7 +914,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,0,114,161,0,0,0,169,2,114,109,0,0,0,114,
     110,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,
     0,0,0,218,16,109,111,100,117,108,101,95,102,114,111,109,
-    95,115,112,101,99,62,2,0,0,115,20,0,0,0,4,3,
+    95,115,112,101,99,54,2,0,0,115,20,0,0,0,4,3,
     12,1,14,3,12,1,8,1,8,2,10,1,10,1,4,1,
     255,128,114,165,0,0,0,99,1,0,0,0,0,0,0,0,
     0,0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,
@@ -926,15 +927,15 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,124,0,106,1,161,2,83,0,41,7,122,38,82,101,116,
     117,114,110,32,116,104,101,32,114,101,112,114,32,116,111,32,
     117,115,101,32,102,111,114,32,116,104,101,32,109,111,100,117,
-    108,101,46,78,114,114,0,0,0,114,115,0,0,0,114,116,
-    0,0,0,114,117,0,0,0,250,18,60,109,111,100,117,108,
+    108,101,46,78,114,115,0,0,0,114,116,0,0,0,114,117,
+    0,0,0,114,118,0,0,0,250,18,60,109,111,100,117,108,
     101,32,123,33,114,125,32,40,123,125,41,62,41,5,114,20,
     0,0,0,114,126,0,0,0,114,122,0,0,0,114,50,0,
     0,0,114,136,0,0,0,41,2,114,109,0,0,0,114,20,
     0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,
-    0,0,114,120,0,0,0,79,2,0,0,115,18,0,0,0,
+    0,0,114,119,0,0,0,71,2,0,0,115,18,0,0,0,
     20,3,10,1,10,1,10,1,14,2,6,2,14,1,16,2,
-    255,128,114,120,0,0,0,99,2,0,0,0,0,0,0,0,
+    255,128,114,119,0,0,0,99,2,0,0,0,0,0,0,0,
     0,0,0,0,4,0,0,0,10,0,0,0,67,0,0,0,
     115,26,1,0,0,124,0,106,0,125,2,116,1,124,2,131,
     1,143,246,1,0,116,2,106,3,160,4,124,2,161,1,124,
@@ -975,7 +976,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     95,109,111,100,117,108,101,114,163,0,0,0,218,3,112,111,
     112,41,4,114,109,0,0,0,114,110,0,0,0,114,20,0,
     0,0,114,108,0,0,0,114,5,0,0,0,114,5,0,0,
-    0,114,6,0,0,0,114,106,0,0,0,96,2,0,0,115,
+    0,114,6,0,0,0,114,106,0,0,0,88,2,0,0,115,
     50,0,0,0,6,2,10,1,16,1,10,1,12,1,2,1,
     10,1,10,1,14,1,16,2,14,2,12,1,16,1,12,2,
     14,1,12,2,2,128,14,4,14,1,14,255,26,1,4,1,
@@ -1000,15 +1001,15 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     8,144,1,121,12,1,0,1,0,1,0,89,0,124,1,83,
     0,124,1,83,0,119,0,119,0,119,0,41,7,78,114,112,
     0,0,0,114,158,0,0,0,114,154,0,0,0,114,141,0,
-    0,0,114,25,0,0,0,114,119,0,0,0,41,14,114,122,
+    0,0,114,25,0,0,0,114,113,0,0,0,41,14,114,122,
     0,0,0,114,170,0,0,0,114,20,0,0,0,114,18,0,
     0,0,114,105,0,0,0,114,171,0,0,0,114,13,0,0,
     0,114,112,0,0,0,114,2,0,0,0,114,9,0,0,0,
     114,158,0,0,0,114,11,0,0,0,114,142,0,0,0,114,
-    119,0,0,0,114,164,0,0,0,114,5,0,0,0,114,5,
+    113,0,0,0,114,164,0,0,0,114,5,0,0,0,114,5,
     0,0,0,114,6,0,0,0,218,25,95,108,111,97,100,95,
     98,97,99,107,119,97,114,100,95,99,111,109,112,97,116,105,
-    98,108,101,126,2,0,0,115,66,0,0,0,2,3,18,1,
+    98,108,101,118,2,0,0,115,66,0,0,0,2,3,18,1,
     6,1,12,1,14,1,12,1,2,1,14,3,12,1,16,1,
     2,1,12,1,14,1,2,1,16,1,2,1,8,4,10,1,
     18,1,4,128,14,1,2,1,18,1,2,1,8,1,4,3,
@@ -1042,7 +1043,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,114,83,0,0,0,41,3,114,109,0,0,0,114,108,0,
     0,0,114,110,0,0,0,114,5,0,0,0,114,5,0,0,
     0,114,6,0,0,0,218,14,95,108,111,97,100,95,117,110,
-    108,111,99,107,101,100,162,2,0,0,115,62,0,0,0,10,
+    108,111,99,107,101,100,154,2,0,0,115,62,0,0,0,10,
     2,12,2,16,1,12,2,8,1,8,2,6,5,2,1,12,
     1,2,1,10,1,10,1,14,1,2,255,12,4,4,128,6,
     1,2,1,12,1,2,3,12,254,2,1,2,1,14,5,12,
@@ -1067,7 +1068,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     101,100,46,10,10,32,32,32,32,78,41,3,114,57,0,0,
     0,114,20,0,0,0,114,173,0,0,0,169,1,114,109,0,
     0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,
-    0,114,107,0,0,0,207,2,0,0,115,8,0,0,0,12,
+    0,114,107,0,0,0,199,2,0,0,115,8,0,0,0,12,
     9,22,1,20,128,255,128,114,107,0,0,0,99,0,0,0,
     0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
     0,64,0,0,0,115,140,0,0,0,101,0,90,1,100,0,
@@ -1104,7 +1105,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     122,8,60,109,111,100,117,108,101,32,122,2,32,40,122,2,
     41,62,78,41,3,114,9,0,0,0,114,175,0,0,0,114,
     151,0,0,0,169,1,114,110,0,0,0,114,5,0,0,0,
-    114,5,0,0,0,114,6,0,0,0,114,113,0,0,0,233,
+    114,5,0,0,0,114,6,0,0,0,114,114,0,0,0,225,
     2,0,0,115,4,0,0,0,22,7,255,128,122,27,66,117,
     105,108,116,105,110,73,109,112,111,114,116,101,114,46,109,111,
     100,117,108,101,95,114,101,112,114,78,99,4,0,0,0,0,
@@ -1117,7 +1118,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,114,151,0,0,0,169,4,218,3,99,108,115,114,89,
     0,0,0,218,4,112,97,116,104,218,6,116,97,114,103,101,
     116,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,
-    218,9,102,105,110,100,95,115,112,101,99,242,2,0,0,115,
+    218,9,102,105,110,100,95,115,112,101,99,234,2,0,0,115,
     12,0,0,0,8,2,4,1,10,1,16,1,4,2,255,128,
     122,25,66,117,105,108,116,105,110,73,109,112,111,114,116,101,
     114,46,102,105,110,100,95,115,112,101,99,99,3,0,0,0,
@@ -1139,7 +1140,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,114,122,0,0,0,41,4,114,180,0,0,0,114,89,
     0,0,0,114,181,0,0,0,114,109,0,0,0,114,5,0,
     0,0,114,5,0,0,0,114,6,0,0,0,218,11,102,105,
-    110,100,95,109,111,100,117,108,101,251,2,0,0,115,6,0,
+    110,100,95,109,111,100,117,108,101,243,2,0,0,115,6,0,
     0,0,12,9,18,1,255,128,122,27,66,117,105,108,116,105,
     110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,
     111,100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,
@@ -1154,7 +1155,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,0,114,74,0,0,0,114,64,0,0,0,90,14,99,
     114,101,97,116,101,95,98,117,105,108,116,105,110,114,174,0,
     0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,
-    0,114,162,0,0,0,7,3,0,0,115,12,0,0,0,12,
+    0,114,162,0,0,0,255,2,0,0,115,12,0,0,0,12,
     3,12,1,4,1,6,255,12,2,255,128,122,29,66,117,105,
     108,116,105,110,73,109,112,111,114,116,101,114,46,99,114,101,
     97,116,101,95,109,111,100,117,108,101,99,1,0,0,0,0,
@@ -1165,7 +1166,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     108,101,78,41,3,114,74,0,0,0,114,64,0,0,0,90,
     12,101,120,101,99,95,98,117,105,108,116,105,110,114,177,0,
     0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,
-    0,114,163,0,0,0,15,3,0,0,115,4,0,0,0,16,
+    0,114,163,0,0,0,7,3,0,0,115,4,0,0,0,16,
     3,255,128,122,27,66,117,105,108,116,105,110,73,109,112,111,
     114,116,101,114,46,101,120,101,99,95,109,111,100,117,108,101,
     99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
@@ -1176,7 +1177,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     101,32,99,111,100,101,32,111,98,106,101,99,116,115,46,78,
     114,5,0,0,0,169,2,114,180,0,0,0,114,89,0,0,
     0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,
-    218,8,103,101,116,95,99,111,100,101,20,3,0,0,243,4,
+    218,8,103,101,116,95,99,111,100,101,12,3,0,0,243,4,
     0,0,0,4,4,255,128,122,24,66,117,105,108,116,105,110,
     73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100,
     101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,
@@ -1187,7 +1188,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     111,117,114,99,101,32,99,111,100,101,46,78,114,5,0,0,
     0,114,186,0,0,0,114,5,0,0,0,114,5,0,0,0,
     114,6,0,0,0,218,10,103,101,116,95,115,111,117,114,99,
-    101,26,3,0,0,114,188,0,0,0,122,26,66,117,105,108,
+    101,18,3,0,0,114,188,0,0,0,122,26,66,117,105,108,
     116,105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,
     115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,
     0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,114,
@@ -1196,18 +1197,18 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     32,109,111,100,117,108,101,115,32,97,114,101,32,110,101,118,
     101,114,32,112,97,99,107,97,103,101,115,46,70,78,114,5,
     0,0,0,114,186,0,0,0,114,5,0,0,0,114,5,0,
-    0,0,114,6,0,0,0,114,128,0,0,0,32,3,0,0,
+    0,0,114,6,0,0,0,114,128,0,0,0,24,3,0,0,
     114,188,0,0,0,122,26,66,117,105,108,116,105,110,73,109,
     112,111,114,116,101,114,46,105,115,95,112,97,99,107,97,103,
     101,41,2,78,78,41,1,78,41,18,114,9,0,0,0,114,
     8,0,0,0,114,1,0,0,0,114,10,0,0,0,114,151,
     0,0,0,218,12,115,116,97,116,105,99,109,101,116,104,111,
-    100,114,113,0,0,0,218,11,99,108,97,115,115,109,101,116,
+    100,114,114,0,0,0,218,11,99,108,97,115,115,109,101,116,
     104,111,100,114,183,0,0,0,114,184,0,0,0,114,162,0,
     0,0,114,163,0,0,0,114,95,0,0,0,114,187,0,0,
     0,114,189,0,0,0,114,128,0,0,0,114,111,0,0,0,
     114,170,0,0,0,114,5,0,0,0,114,5,0,0,0,114,
-    5,0,0,0,114,6,0,0,0,114,175,0,0,0,222,2,
+    5,0,0,0,114,6,0,0,0,114,175,0,0,0,214,2,
     0,0,115,48,0,0,0,8,0,4,2,4,7,2,2,10,
     1,2,8,12,1,2,8,12,1,2,11,10,1,2,7,10,
     1,2,4,2,1,12,1,2,4,2,1,12,1,2,4,2,
@@ -1239,7 +1240,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     83,0,41,3,114,176,0,0,0,114,166,0,0,0,78,41,
     4,114,50,0,0,0,114,9,0,0,0,114,192,0,0,0,
     114,151,0,0,0,41,1,218,1,109,114,5,0,0,0,114,
-    5,0,0,0,114,6,0,0,0,114,113,0,0,0,52,3,
+    5,0,0,0,114,6,0,0,0,114,114,0,0,0,44,3,
     0,0,115,4,0,0,0,16,7,255,128,122,26,70,114,111,
     122,101,110,73,109,112,111,114,116,101,114,46,109,111,100,117,
     108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0,
@@ -1249,7 +1250,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     100,0,83,0,114,178,0,0,0,41,4,114,64,0,0,0,
     114,98,0,0,0,114,104,0,0,0,114,151,0,0,0,114,
     179,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,
-    0,0,0,114,183,0,0,0,61,3,0,0,115,8,0,0,
+    0,0,0,114,183,0,0,0,53,3,0,0,115,8,0,0,
     0,10,2,16,1,4,2,255,128,122,24,70,114,111,122,101,
     110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,115,
     112,101,99,99,3,0,0,0,0,0,0,0,0,0,0,0,
@@ -1264,7 +1265,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     32,32,32,32,78,41,2,114,64,0,0,0,114,98,0,0,
     0,41,3,114,180,0,0,0,114,89,0,0,0,114,181,0,
     0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,
-    0,114,184,0,0,0,68,3,0,0,115,4,0,0,0,18,
+    0,114,184,0,0,0,60,3,0,0,115,4,0,0,0,18,
     7,255,128,122,26,70,114,111,122,101,110,73,109,112,111,114,
     116,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,
     1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
@@ -1273,7 +1274,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     97,110,116,105,99,115,32,102,111,114,32,109,111,100,117,108,
     101,32,99,114,101,97,116,105,111,110,46,78,114,5,0,0,
     0,114,174,0,0,0,114,5,0,0,0,114,5,0,0,0,
-    114,6,0,0,0,114,162,0,0,0,77,3,0,0,115,4,
+    114,6,0,0,0,114,162,0,0,0,69,3,0,0,115,4,
     0,0,0,4,0,255,128,122,28,70,114,111,122,101,110,73,
     109,112,111,114,116,101,114,46,99,114,101,97,116,101,95,109,
     111,100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,
@@ -1282,14 +1283,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     1,161,1,115,36,116,4,100,1,160,5,124,1,161,1,124,
     1,100,2,141,2,130,1,116,6,116,2,106,7,124,1,131,
     2,125,2,116,8,124,2,124,0,106,9,131,2,1,0,100,
-    0,83,0,114,97,0,0,0,41,10,114,119,0,0,0,114,
+    0,83,0,114,97,0,0,0,41,10,114,113,0,0,0,114,
     20,0,0,0,114,64,0,0,0,114,98,0,0,0,114,87,
     0,0,0,114,50,0,0,0,114,74,0,0,0,218,17,103,
     101,116,95,102,114,111,122,101,110,95,111,98,106,101,99,116,
     218,4,101,120,101,99,114,14,0,0,0,41,3,114,110,0,
     0,0,114,20,0,0,0,218,4,99,111,100,101,114,5,0,
     0,0,114,5,0,0,0,114,6,0,0,0,114,163,0,0,
-    0,81,3,0,0,115,16,0,0,0,8,2,10,1,10,1,
+    0,73,3,0,0,115,16,0,0,0,8,2,10,1,10,1,
     2,1,6,255,12,2,16,1,255,128,122,26,70,114,111,122,
     101,110,73,109,112,111,114,116,101,114,46,101,120,101,99,95,
     109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,
@@ -1303,7 +1304,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     110,115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,
     32,78,41,1,114,111,0,0,0,114,186,0,0,0,114,5,
     0,0,0,114,5,0,0,0,114,6,0,0,0,114,170,0,
-    0,0,90,3,0,0,115,4,0,0,0,10,8,255,128,122,
+    0,0,82,3,0,0,115,4,0,0,0,10,8,255,128,122,
     26,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,
     108,111,97,100,95,109,111,100,117,108,101,99,2,0,0,0,
     0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
@@ -1313,7 +1314,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     114,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100,
     117,108,101,46,78,41,2,114,64,0,0,0,114,194,0,0,
     0,114,186,0,0,0,114,5,0,0,0,114,5,0,0,0,
-    114,6,0,0,0,114,187,0,0,0,100,3,0,0,243,4,
+    114,6,0,0,0,114,187,0,0,0,92,3,0,0,243,4,
     0,0,0,10,4,255,128,122,23,70,114,111,122,101,110,73,
     109,112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,
     99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
@@ -1323,7 +1324,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     100,111,32,110,111,116,32,104,97,118,101,32,115,111,117,114,
     99,101,32,99,111,100,101,46,78,114,5,0,0,0,114,186,
     0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,
-    0,0,114,189,0,0,0,106,3,0,0,114,188,0,0,0,
+    0,0,114,189,0,0,0,98,3,0,0,114,188,0,0,0,
     122,25,70,114,111,122,101,110,73,109,112,111,114,116,101,114,
     46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,0,
     0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
@@ -1333,17 +1334,17 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     32,97,32,112,97,99,107,97,103,101,46,78,41,2,114,64,
     0,0,0,90,17,105,115,95,102,114,111,122,101,110,95,112,
     97,99,107,97,103,101,114,186,0,0,0,114,5,0,0,0,
-    114,5,0,0,0,114,6,0,0,0,114,128,0,0,0,112,
+    114,5,0,0,0,114,6,0,0,0,114,128,0,0,0,104,
     3,0,0,114,198,0,0,0,122,25,70,114,111,122,101,110,
     73,109,112,111,114,116,101,114,46,105,115,95,112,97,99,107,
     97,103,101,41,2,78,78,41,1,78,41,17,114,9,0,0,
     0,114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,
-    114,151,0,0,0,114,190,0,0,0,114,113,0,0,0,114,
+    114,151,0,0,0,114,190,0,0,0,114,114,0,0,0,114,
     191,0,0,0,114,183,0,0,0,114,184,0,0,0,114,162,
     0,0,0,114,163,0,0,0,114,170,0,0,0,114,100,0,
     0,0,114,187,0,0,0,114,189,0,0,0,114,128,0,0,
     0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,
-    114,6,0,0,0,114,192,0,0,0,41,3,0,0,115,50,
+    114,6,0,0,0,114,192,0,0,0,33,3,0,0,115,50,
     0,0,0,8,0,4,2,4,7,2,2,10,1,2,8,12,
     1,2,6,12,1,2,8,10,1,2,3,10,1,2,8,10,
     1,2,9,2,1,12,1,2,4,2,1,12,1,2,4,2,
@@ -1362,7 +1363,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     112,111,114,116,32,108,111,99,107,46,78,41,2,114,64,0,
     0,0,114,65,0,0,0,114,52,0,0,0,114,5,0,0,
     0,114,5,0,0,0,114,6,0,0,0,114,61,0,0,0,
-    125,3,0,0,243,4,0,0,0,12,2,255,128,122,28,95,
+    117,3,0,0,243,4,0,0,0,12,2,255,128,122,28,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,
     0,0,0,0,0,0,0,0,4,0,0,0,2,0,0,0,
@@ -1375,13 +1376,13 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     120,99,95,116,121,112,101,218,9,101,120,99,95,118,97,108,
     117,101,218,13,101,120,99,95,116,114,97,99,101,98,97,99,
     107,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,
-    114,63,0,0,0,129,3,0,0,114,201,0,0,0,122,27,
+    114,63,0,0,0,121,3,0,0,114,201,0,0,0,122,27,
     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,41,6,114,9,
     0,0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,
     0,0,114,61,0,0,0,114,63,0,0,0,114,5,0,0,
     0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,
-    114,199,0,0,0,121,3,0,0,115,10,0,0,0,8,0,
+    114,199,0,0,0,113,3,0,0,115,10,0,0,0,8,0,
     4,2,8,2,12,4,255,128,114,199,0,0,0,99,3,0,
     0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,
     0,0,67,0,0,0,115,64,0,0,0,124,1,160,0,100,
@@ -1402,7 +1403,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     99,107,97,103,101,218,5,108,101,118,101,108,90,4,98,105,
     116,115,90,4,98,97,115,101,114,5,0,0,0,114,5,0,
     0,0,114,6,0,0,0,218,13,95,114,101,115,111,108,118,
-    101,95,110,97,109,101,134,3,0,0,115,12,0,0,0,16,
+    101,95,110,97,109,101,126,3,0,0,115,12,0,0,0,16,
     2,12,1,8,1,8,1,20,1,255,128,114,210,0,0,0,
     99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
     0,4,0,0,0,67,0,0,0,115,34,0,0,0,124,0,
@@ -1412,7 +1413,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,41,4,218,6,102,105,110,100,101,114,114,20,0,0,0,
     114,181,0,0,0,114,122,0,0,0,114,5,0,0,0,114,
     5,0,0,0,114,6,0,0,0,218,17,95,102,105,110,100,
-    95,115,112,101,99,95,108,101,103,97,99,121,143,3,0,0,
+    95,115,112,101,99,95,108,101,103,97,99,121,135,3,0,0,
     115,10,0,0,0,12,3,8,1,4,1,10,1,255,128,114,
     212,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,
     0,10,0,0,0,10,0,0,0,67,0,0,0,115,36,1,
@@ -1444,13 +1445,13 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     12,114,18,0,0,0,218,9,109,101,116,97,95,112,97,116,
     104,114,87,0,0,0,114,101,0,0,0,114,102,0,0,0,
     114,169,0,0,0,114,105,0,0,0,114,199,0,0,0,114,
-    183,0,0,0,114,2,0,0,0,114,212,0,0,0,114,119,
+    183,0,0,0,114,2,0,0,0,114,212,0,0,0,114,113,
     0,0,0,41,10,114,20,0,0,0,114,181,0,0,0,114,
     182,0,0,0,114,213,0,0,0,90,9,105,115,95,114,101,
     108,111,97,100,114,211,0,0,0,114,183,0,0,0,114,109,
-    0,0,0,114,110,0,0,0,114,119,0,0,0,114,5,0,
+    0,0,0,114,110,0,0,0,114,113,0,0,0,114,5,0,
     0,0,114,5,0,0,0,114,6,0,0,0,218,10,95,102,
-    105,110,100,95,115,112,101,99,152,3,0,0,115,66,0,0,
+    105,110,100,95,115,112,101,99,144,3,0,0,115,66,0,0,
     0,6,2,8,1,8,2,4,3,12,1,10,5,8,1,8,
     1,2,1,10,1,14,1,12,1,8,1,16,1,4,255,12,
     3,30,128,10,1,18,2,10,1,2,1,10,1,14,1,12,
@@ -1483,7 +1484,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     87,0,0,0,169,3,114,20,0,0,0,114,208,0,0,0,
     114,209,0,0,0,114,5,0,0,0,114,5,0,0,0,114,
     6,0,0,0,218,13,95,115,97,110,105,116,121,95,99,104,
-    101,99,107,199,3,0,0,115,26,0,0,0,10,2,18,1,
+    101,99,107,191,3,0,0,115,26,0,0,0,10,2,18,1,
     8,1,8,1,8,1,10,1,8,1,4,1,8,1,12,2,
     8,1,8,255,255,128,114,220,0,0,0,122,16,78,111,32,
     109,111,100,117,108,101,32,110,97,109,101,100,32,122,4,123,
@@ -1525,7 +1526,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,90,5,99,104,105,108,100,114,5,0,0,0,114,5,
     0,0,0,114,6,0,0,0,218,23,95,102,105,110,100,95,
     97,110,100,95,108,111,97,100,95,117,110,108,111,99,107,101,
-    100,218,3,0,0,115,60,0,0,0,4,1,14,1,4,1,
+    100,210,3,0,0,115,60,0,0,0,4,1,14,1,4,1,
     10,1,10,1,10,2,10,1,10,1,2,1,10,1,14,1,
     16,1,14,1,10,1,8,1,18,1,8,2,6,1,10,2,
     14,1,2,1,14,1,4,4,14,253,16,1,14,1,8,1,
@@ -1551,7 +1552,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     41,4,114,20,0,0,0,114,224,0,0,0,114,110,0,0,
     0,114,82,0,0,0,114,5,0,0,0,114,5,0,0,0,
     114,6,0,0,0,218,14,95,102,105,110,100,95,97,110,100,
-    95,108,111,97,100,253,3,0,0,115,28,0,0,0,10,2,
+    95,108,111,97,100,245,3,0,0,115,28,0,0,0,10,2,
     14,1,8,1,24,1,14,255,16,128,8,3,2,1,6,1,
     2,255,12,2,8,2,4,1,255,128,114,227,0,0,0,114,
     25,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,
@@ -1582,7 +1583,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,114,210,0,0,0,114,227,0,0,0,218,11,95,103,
     99,100,95,105,109,112,111,114,116,114,219,0,0,0,114,5,
     0,0,0,114,5,0,0,0,114,6,0,0,0,114,228,0,
-    0,0,13,4,0,0,115,10,0,0,0,12,9,8,1,12,
+    0,0,5,4,0,0,115,10,0,0,0,12,9,8,1,12,
     1,10,1,255,128,114,228,0,0,0,169,1,218,9,114,101,
     99,117,114,115,105,118,101,99,3,0,0,0,0,0,0,0,
     1,0,0,0,8,0,0,0,11,0,0,0,67,0,0,0,
@@ -1630,7 +1631,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     114,224,0,0,0,114,230,0,0,0,218,1,120,90,5,119,
     104,101,114,101,90,9,102,114,111,109,95,110,97,109,101,90,
     3,101,120,99,114,5,0,0,0,114,5,0,0,0,114,6,
-    0,0,0,114,233,0,0,0,28,4,0,0,115,58,0,0,
+    0,0,0,114,233,0,0,0,20,4,0,0,115,58,0,0,
     0,8,10,10,1,4,1,12,1,4,2,10,1,8,1,8,
     255,8,2,14,1,10,1,2,1,6,255,2,128,10,2,14,
     1,2,1,14,1,14,1,10,4,16,1,2,255,12,2,2,
@@ -1657,7 +1658,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     101,110,116,32,116,104,97,116,32,105,116,115,32,112,114,111,
     112,101,114,32,118,97,108,117,101,32,105,115,32,117,110,107,
     110,111,119,110,46,10,10,32,32,32,32,114,158,0,0,0,
-    114,119,0,0,0,78,122,32,95,95,112,97,99,107,97,103,
+    114,113,0,0,0,78,122,32,95,95,112,97,99,107,97,103,
     101,95,95,32,33,61,32,95,95,115,112,101,99,95,95,46,
     112,97,114,101,110,116,32,40,122,4,32,33,61,32,250,1,
     41,233,3,0,0,0,41,1,90,10,115,116,97,99,107,108,
@@ -1673,7 +1674,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,208,
     0,0,0,114,109,0,0,0,114,5,0,0,0,114,5,0,
     0,0,114,6,0,0,0,218,17,95,99,97,108,99,95,95,
-    95,112,97,99,107,97,103,101,95,95,65,4,0,0,115,44,
+    95,112,97,99,107,97,103,101,95,95,57,4,0,0,115,44,
     0,0,0,10,7,10,1,8,1,18,1,6,1,2,1,4,
     255,4,1,6,255,4,2,6,254,4,3,8,1,6,1,6,
     2,4,2,6,254,8,3,8,1,14,1,4,1,255,128,114,
@@ -1729,7 +1730,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,114,209,0,0,0,114,110,0,0,0,90,8,103,108,111,
     98,97,108,115,95,114,208,0,0,0,90,7,99,117,116,95,
     111,102,102,114,5,0,0,0,114,5,0,0,0,114,6,0,
-    0,0,218,10,95,95,105,109,112,111,114,116,95,95,92,4,
+    0,0,218,10,95,95,105,109,112,111,114,116,95,95,84,4,
     0,0,115,32,0,0,0,8,11,10,1,16,2,8,1,12,
     1,4,1,8,3,18,1,4,1,4,1,26,4,30,3,10,
     1,12,1,4,2,255,128,114,242,0,0,0,99,1,0,0,
@@ -1743,7 +1744,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     173,0,0,0,41,2,114,20,0,0,0,114,109,0,0,0,
     114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,
     18,95,98,117,105,108,116,105,110,95,102,114,111,109,95,110,
-    97,109,101,129,4,0,0,115,10,0,0,0,10,1,8,1,
+    97,109,101,121,4,0,0,115,10,0,0,0,10,1,8,1,
     12,1,8,1,255,128,114,243,0,0,0,99,2,0,0,0,
     0,0,0,0,0,0,0,0,10,0,0,0,5,0,0,0,
     67,0,0,0,115,166,0,0,0,124,1,97,0,124,0,97,
@@ -1786,7 +1787,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     95,109,111,100,117,108,101,90,12,98,117,105,108,116,105,110,
     95,110,97,109,101,90,14,98,117,105,108,116,105,110,95,109,
     111,100,117,108,101,114,5,0,0,0,114,5,0,0,0,114,
-    6,0,0,0,218,6,95,115,101,116,117,112,136,4,0,0,
+    6,0,0,0,218,6,95,115,101,116,117,112,128,4,0,0,
     115,42,0,0,0,4,9,4,1,8,3,18,1,10,1,10,
     1,6,1,10,1,6,1,2,2,10,1,10,1,2,128,10,
     3,8,1,10,1,10,1,10,2,14,1,4,251,255,128,114,
@@ -1802,7 +1803,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,0,114,175,0,0,0,114,192,0,0,0,41,2,114,
     245,0,0,0,114,246,0,0,0,114,5,0,0,0,114,5,
     0,0,0,114,6,0,0,0,218,8,95,105,110,115,116,97,
-    108,108,171,4,0,0,115,8,0,0,0,10,2,12,2,16,
+    108,108,163,4,0,0,115,8,0,0,0,10,2,12,2,16,
     1,255,128,114,248,0,0,0,99,0,0,0,0,0,0,0,
     0,0,0,0,0,1,0,0,0,4,0,0,0,67,0,0,
     0,115,32,0,0,0,100,1,100,2,108,0,125,0,124,0,
@@ -1818,7 +1819,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     41,1,114,249,0,0,0,114,5,0,0,0,114,5,0,0,
     0,114,6,0,0,0,218,27,95,105,110,115,116,97,108,108,
     95,101,120,116,101,114,110,97,108,95,105,109,112,111,114,116,
-    101,114,115,179,4,0,0,115,8,0,0,0,8,3,4,1,
+    101,114,115,171,4,0,0,115,8,0,0,0,8,3,4,1,
     20,1,255,128,114,250,0,0,0,41,2,78,78,41,1,78,
     41,2,78,114,25,0,0,0,41,4,78,78,114,5,0,0,
     0,114,25,0,0,0,41,54,114,10,0,0,0,114,7,0,
@@ -1830,7 +1831,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     0,0,114,83,0,0,0,114,95,0,0,0,114,100,0,0,
     0,114,111,0,0,0,114,124,0,0,0,114,125,0,0,0,
     114,104,0,0,0,114,155,0,0,0,114,161,0,0,0,114,
-    165,0,0,0,114,120,0,0,0,114,106,0,0,0,114,172,
+    165,0,0,0,114,119,0,0,0,114,106,0,0,0,114,172,
     0,0,0,114,173,0,0,0,114,107,0,0,0,114,175,0,
     0,0,114,192,0,0,0,114,199,0,0,0,114,210,0,0,
     0,114,212,0,0,0,114,214,0,0,0,114,220,0,0,0,
@@ -1844,7 +1845,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
     108,101,62,1,0,0,0,115,106,0,0,0,4,0,8,22,
     4,9,4,1,4,1,4,3,8,3,8,8,4,8,4,2,
     16,3,14,4,14,77,14,21,8,16,8,37,8,17,14,11,
-    8,8,8,11,8,12,8,19,14,36,16,101,10,26,14,45,
+    8,8,8,11,8,12,8,19,14,28,16,101,10,26,14,45,
     8,72,8,17,8,17,8,30,8,36,8,45,14,15,14,75,
     14,80,8,13,8,9,10,9,8,47,4,16,8,1,8,2,
     6,32,8,3,10,16,14,15,8,37,10,27,8,37,8,7,



More information about the Python-checkins mailing list