bpo-37444: Update differing exception between builtins and importlib (GH-14869)



Imports now raise `TypeError` instead of `ValueError` for relative import failures. This makes things consistent between `builtins.__import__` and `importlib.__import__` as well as using a more natural import for the failure.


https://bugs.python.org/issue37444



Automerge-Triggered-By: @brettcannon
diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst
index 65a6850..8be6172 100644
--- a/Doc/library/importlib.rst
+++ b/Doc/library/importlib.rst
@@ -1433,13 +1433,18 @@
    ``importlib.util.resolve_name('sys', __package__)`` without doing a
    check to see if the **package** argument is needed.
 
-   :exc:`ValueError` is raised if **name** is a relative module name but
-   package is a false value (e.g. ``None`` or the empty string).
-   :exc:`ValueError` is also raised a relative name would escape its containing
+   :exc:`ImportError` is raised if **name** is a relative module name but
+   **package** is a false value (e.g. ``None`` or the empty string).
+   :exc:`ImportError` is also raised a relative name would escape its containing
    package (e.g. requesting ``..bacon`` from within the ``spam`` package).
 
    .. versionadded:: 3.3
 
+   .. versionchanged:: 3.9
+      To improve consistency with import statements, raise
+      :exc:`ImportError` instead of :exc:`ValueError` for invalid relative
+      import attempts.
+
 .. function:: find_spec(name, package=None)
 
    Find the :term:`spec <module spec>` for a module, optionally relative to
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst
index 273fd2b..61d9e74 100644
--- a/Doc/whatsnew/3.9.rst
+++ b/Doc/whatsnew/3.9.rst
@@ -75,6 +75,12 @@
 Other Language Changes
 ======================
 
+* :func:`builtins.__import__` now raises :exc:`ImportError` instead of
+  :exc:`ValueError` as used to occur when a relative import went past
+  its top-level package.
+  (Contributed by Ngalim Siregar in :issue:`37444`.)
+
+
 * Python now gets the absolute path of the script filename specified on
   the command line (ex: ``python3 script.py``): the ``__file__`` attribute of
   the ``__main__`` module, ``sys.argv[0]`` and ``sys.path[0]`` become an
@@ -118,6 +124,13 @@
 :mod:`pprint` can now pretty-print :class:`types.SimpleNamespace`.
 (Contributed by Carl Bordum Hansen in :issue:`37376`.)
 
+importlib
+---------
+
+To improve consistency with import statements, :func:`importlib.util.resolve_name`
+now raises :exc:`ImportError` instead of :exc:`ValueError` for invalid relative
+import attempts.
+(Contributed by Ngalim Siregar in :issue:`37444`.)
 
 Optimizations
 =============
@@ -180,4 +193,11 @@
 This section lists previously described changes and other bugfixes
 that may require changes to your code.
 
+Changes in the Python API
+-------------------------
 
+* :func:`builtins.__import__` and :func:`importlib.util.resolve_name` now raise
+  :exc:`ImportError` where it previously raised :exc:`ValueError`. Callers
+  catching the specific exception type and supporting both Python 3.9 and
+  earlier versions will need to catch both:
+  ``except (ImportError, ValueError):``
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 32deef1..5e2f520 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -873,7 +873,7 @@
     """Resolve a relative module name to an absolute one."""
     bits = package.rsplit('.', level - 1)
     if len(bits) < level:
-        raise ValueError('attempted relative import beyond top-level package')
+        raise ImportError('attempted relative import beyond top-level package')
     base = bits[0]
     return '{}.{}'.format(base, name) if name else base
 
diff --git a/Lib/importlib/util.py b/Lib/importlib/util.py
index 201e0f4..269a6fa 100644
--- a/Lib/importlib/util.py
+++ b/Lib/importlib/util.py
@@ -29,8 +29,8 @@
     if not name.startswith('.'):
         return name
     elif not package:
-        raise ValueError(f'no package specified for {repr(name)} '
-                         '(required for relative module names)')
+        raise ImportError(f'no package specified for {repr(name)} '
+                          '(required for relative module names)')
     level = 0
     for character in name:
         if character != '.':
diff --git a/Lib/test/test_importlib/import_/test_relative_imports.py b/Lib/test/test_importlib/import_/test_relative_imports.py
index 8a95a32..586a9bf 100644
--- a/Lib/test/test_importlib/import_/test_relative_imports.py
+++ b/Lib/test/test_importlib/import_/test_relative_imports.py
@@ -156,7 +156,7 @@
                     {'__name__': 'pkg', '__path__': ['blah']})
         def callback(global_):
             self.__import__('pkg')
-            with self.assertRaises(ValueError):
+            with self.assertRaises(ImportError):
                 self.__import__('', global_, fromlist=['top_level'],
                                     level=2)
         self.relative_import_test(create, globals_, callback)
@@ -167,7 +167,7 @@
         globals_ = {'__package__': 'pkg'}, {'__name__': 'pkg.module'}
         def callback(global_):
             self.__import__('pkg')
-            with self.assertRaises(ValueError):
+            with self.assertRaises(ImportError):
                 self.__import__('', global_, fromlist=['top_level'],
                                     level=2)
         self.relative_import_test(create, globals_, callback)
diff --git a/Lib/test/test_importlib/test_util.py b/Lib/test/test_importlib/test_util.py
index 0350a5a..8489c19 100644
--- a/Lib/test/test_importlib/test_util.py
+++ b/Lib/test/test_importlib/test_util.py
@@ -375,7 +375,7 @@
 
     def test_no_package(self):
         # .bacon in ''
-        with self.assertRaises(ValueError):
+        with self.assertRaises(ImportError):
             self.util.resolve_name('.bacon', '')
 
     def test_in_package(self):
@@ -390,7 +390,7 @@
 
     def test_escape(self):
         # ..bacon in spam
-        with self.assertRaises(ValueError):
+        with self.assertRaises(ImportError):
             self.util.resolve_name('..bacon', 'spam')
 
 
@@ -518,7 +518,7 @@
         with util.temp_module(name, pkg=True) as pkg_dir:
             fullname, _ = util.submodule(name, subname, pkg_dir)
             relname = '.' + subname
-            with self.assertRaises(ValueError):
+            with self.assertRaises(ImportError):
                 self.util.find_spec(relname)
             self.assertNotIn(name, sorted(sys.modules))
             self.assertNotIn(fullname, sorted(sys.modules))
diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-07-20-22-34-42.bpo-37444.UOd3Xs.rst b/Misc/NEWS.d/next/Core and Builtins/2019-07-20-22-34-42.bpo-37444.UOd3Xs.rst
new file mode 100644
index 0000000..67c6807
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2019-07-20-22-34-42.bpo-37444.UOd3Xs.rst
@@ -0,0 +1 @@
+Update differing exception between :meth:`builtins.__import__` and :meth:`importlib.__import__`.
diff --git a/Python/import.c b/Python/import.c
index 9f5ec28..41c2f34 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1671,7 +1671,7 @@
             goto error;
         }
         else if (last_dot == -1) {
-            _PyErr_SetString(tstate, PyExc_ValueError,
+            _PyErr_SetString(tstate, PyExc_ImportError,
                              "attempted relative import beyond top-level "
                              "package");
             goto error;
diff --git a/Python/importlib.h b/Python/importlib.h
index a285a31..a6952af 100644
--- a/Python/importlib.h
+++ b/Python/importlib.h
@@ -1351,89 +1351,89 @@
     112,111,114,116,32,98,101,121,111,110,100,32,116,111,112,45,
     108,101,118,101,108,32,112,97,99,107,97,103,101,114,22,0,
     0,0,250,5,123,125,46,123,125,41,4,218,6,114,115,112,
-    108,105,116,218,3,108,101,110,218,10,86,97,108,117,101,69,
-    114,114,111,114,114,45,0,0,0,41,5,114,17,0,0,0,
-    218,7,112,97,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,10,0,0,
-    0,114,10,0,0,0,114,11,0,0,0,218,13,95,114,101,
-    115,111,108,118,101,95,110,97,109,101,104,3,0,0,115,10,
-    0,0,0,0,2,16,1,12,1,8,1,8,1,114,188,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,160,0,124,1,124,2,161,2,125,3,124,3,100,0,
-    107,8,114,24,100,0,83,0,116,1,124,1,124,3,131,2,
-    83,0,114,13,0,0,0,41,2,114,167,0,0,0,114,91,
-    0,0,0,41,4,218,6,102,105,110,100,101,114,114,17,0,
-    0,0,114,164,0,0,0,114,109,0,0,0,114,10,0,0,
-    0,114,10,0,0,0,114,11,0,0,0,218,17,95,102,105,
-    110,100,95,115,112,101,99,95,108,101,103,97,99,121,113,3,
-    0,0,115,8,0,0,0,0,3,12,1,8,1,4,1,114,
-    190,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,12,1,
-    0,0,116,0,106,1,125,3,124,3,100,1,107,8,114,22,
-    116,2,100,2,131,1,130,1,124,3,115,38,116,3,160,4,
-    100,3,116,5,161,2,1,0,124,0,116,0,106,6,107,6,
-    125,4,124,3,68,0,93,210,125,5,116,7,131,0,143,84,
-    1,0,122,10,124,5,106,8,125,6,87,0,110,54,4,0,
-    116,9,107,10,114,128,1,0,1,0,1,0,116,10,124,5,
-    124,0,124,1,131,3,125,7,124,7,100,1,107,8,114,124,
-    89,0,87,0,53,0,81,0,82,0,163,0,113,52,89,0,
-    110,14,88,0,124,6,124,0,124,1,124,2,131,3,125,7,
-    87,0,53,0,81,0,82,0,88,0,124,7,100,1,107,9,
-    114,52,124,4,144,0,115,254,124,0,116,0,106,6,107,6,
-    144,0,114,254,116,0,106,6,124,0,25,0,125,8,122,10,
-    124,8,106,11,125,9,87,0,110,28,4,0,116,9,107,10,
-    114,226,1,0,1,0,1,0,124,7,6,0,89,0,2,0,
-    1,0,83,0,88,0,124,9,100,1,107,8,114,244,124,7,
-    2,0,1,0,83,0,124,9,2,0,1,0,83,0,113,52,
-    124,7,2,0,1,0,83,0,113,52,100,1,83,0,41,4,
-    122,21,70,105,110,100,32,97,32,109,111,100,117,108,101,39,
-    115,32,115,112,101,99,46,78,122,53,115,121,115,46,109,101,
-    116,97,95,112,97,116,104,32,105,115,32,78,111,110,101,44,
-    32,80,121,116,104,111,110,32,105,115,32,108,105,107,101,108,
-    121,32,115,104,117,116,116,105,110,103,32,100,111,119,110,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,12,114,15,0,0,0,218,9,
-    109,101,116,97,95,112,97,116,104,114,79,0,0,0,218,9,
-    95,119,97,114,110,105,110,103,115,218,4,119,97,114,110,218,
-    13,73,109,112,111,114,116,87,97,114,110,105,110,103,114,92,
-    0,0,0,114,178,0,0,0,114,166,0,0,0,114,106,0,
-    0,0,114,190,0,0,0,114,105,0,0,0,41,10,114,17,
-    0,0,0,114,164,0,0,0,114,165,0,0,0,114,191,0,
-    0,0,90,9,105,115,95,114,101,108,111,97,100,114,189,0,
-    0,0,114,166,0,0,0,114,95,0,0,0,114,96,0,0,
-    0,114,105,0,0,0,114,10,0,0,0,114,10,0,0,0,
-    114,11,0,0,0,218,10,95,102,105,110,100,95,115,112,101,
-    99,122,3,0,0,115,54,0,0,0,0,2,6,1,8,2,
-    8,3,4,1,12,5,10,1,8,1,8,1,2,1,10,1,
-    14,1,12,1,8,1,20,2,22,1,8,2,18,1,10,1,
-    2,1,10,1,14,4,14,2,8,1,8,2,10,2,10,2,
-    114,195,0,0,0,99,3,0,0,0,0,0,0,0,0,0,
-    0,0,3,0,0,0,5,0,0,0,67,0,0,0,115,108,
-    0,0,0,116,0,124,0,116,1,131,2,115,28,116,2,100,
-    1,160,3,116,4,124,0,131,1,161,1,131,1,130,1,124,
-    2,100,2,107,0,114,44,116,5,100,3,131,1,130,1,124,
-    2,100,2,107,4,114,84,116,0,124,1,116,1,131,2,115,
-    72,116,2,100,4,131,1,130,1,110,12,124,1,115,84,116,
-    6,100,5,131,1,130,1,124,0,115,104,124,2,100,2,107,
-    2,114,104,116,5,100,6,131,1,130,1,100,7,83,0,41,
-    8,122,28,86,101,114,105,102,121,32,97,114,103,117,109,101,
-    110,116,115,32,97,114,101,32,34,115,97,110,101,34,46,122,
-    31,109,111,100,117,108,101,32,110,97,109,101,32,109,117,115,
-    116,32,98,101,32,115,116,114,44,32,110,111,116,32,123,125,
-    114,22,0,0,0,122,18,108,101,118,101,108,32,109,117,115,
-    116,32,98,101,32,62,61,32,48,122,31,95,95,112,97,99,
-    107,97,103,101,95,95,32,110,111,116,32,115,101,116,32,116,
-    111,32,97,32,115,116,114,105,110,103,122,54,97,116,116,101,
-    109,112,116,101,100,32,114,101,108,97,116,105,118,101,32,105,
-    109,112,111,114,116,32,119,105,116,104,32,110,111,32,107,110,
-    111,119,110,32,112,97,114,101,110,116,32,112,97,99,107,97,
-    103,101,122,17,69,109,112,116,121,32,109,111,100,117,108,101,
-    32,110,97,109,101,78,41,7,218,10,105,115,105,110,115,116,
-    97,110,99,101,218,3,115,116,114,218,9,84,121,112,101,69,
-    114,114,111,114,114,45,0,0,0,114,14,0,0,0,114,185,
-    0,0,0,114,79,0,0,0,169,3,114,17,0,0,0,114,
-    186,0,0,0,114,187,0,0,0,114,10,0,0,0,114,10,
+    108,105,116,218,3,108,101,110,114,79,0,0,0,114,45,0,
+    0,0,41,5,114,17,0,0,0,218,7,112,97,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,10,0,0,0,114,10,0,0,0,114,
+    11,0,0,0,218,13,95,114,101,115,111,108,118,101,95,110,
+    97,109,101,104,3,0,0,115,10,0,0,0,0,2,16,1,
+    12,1,8,1,8,1,114,187,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,160,0,124,1,124,
+    2,161,2,125,3,124,3,100,0,107,8,114,24,100,0,83,
+    0,116,1,124,1,124,3,131,2,83,0,114,13,0,0,0,
+    41,2,114,167,0,0,0,114,91,0,0,0,41,4,218,6,
+    102,105,110,100,101,114,114,17,0,0,0,114,164,0,0,0,
+    114,109,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
+    11,0,0,0,218,17,95,102,105,110,100,95,115,112,101,99,
+    95,108,101,103,97,99,121,113,3,0,0,115,8,0,0,0,
+    0,3,12,1,8,1,4,1,114,189,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,12,1,0,0,116,0,106,1,125,
+    3,124,3,100,1,107,8,114,22,116,2,100,2,131,1,130,
+    1,124,3,115,38,116,3,160,4,100,3,116,5,161,2,1,
+    0,124,0,116,0,106,6,107,6,125,4,124,3,68,0,93,
+    210,125,5,116,7,131,0,143,84,1,0,122,10,124,5,106,
+    8,125,6,87,0,110,54,4,0,116,9,107,10,114,128,1,
+    0,1,0,1,0,116,10,124,5,124,0,124,1,131,3,125,
+    7,124,7,100,1,107,8,114,124,89,0,87,0,53,0,81,
+    0,82,0,163,0,113,52,89,0,110,14,88,0,124,6,124,
+    0,124,1,124,2,131,3,125,7,87,0,53,0,81,0,82,
+    0,88,0,124,7,100,1,107,9,114,52,124,4,144,0,115,
+    254,124,0,116,0,106,6,107,6,144,0,114,254,116,0,106,
+    6,124,0,25,0,125,8,122,10,124,8,106,11,125,9,87,
+    0,110,28,4,0,116,9,107,10,114,226,1,0,1,0,1,
+    0,124,7,6,0,89,0,2,0,1,0,83,0,88,0,124,
+    9,100,1,107,8,114,244,124,7,2,0,1,0,83,0,124,
+    9,2,0,1,0,83,0,113,52,124,7,2,0,1,0,83,
+    0,113,52,100,1,83,0,41,4,122,21,70,105,110,100,32,
+    97,32,109,111,100,117,108,101,39,115,32,115,112,101,99,46,
+    78,122,53,115,121,115,46,109,101,116,97,95,112,97,116,104,
+    32,105,115,32,78,111,110,101,44,32,80,121,116,104,111,110,
+    32,105,115,32,108,105,107,101,108,121,32,115,104,117,116,116,
+    105,110,103,32,100,111,119,110,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,12,114,15,0,0,0,218,9,109,101,116,97,95,112,97,
+    116,104,114,79,0,0,0,218,9,95,119,97,114,110,105,110,
+    103,115,218,4,119,97,114,110,218,13,73,109,112,111,114,116,
+    87,97,114,110,105,110,103,114,92,0,0,0,114,178,0,0,
+    0,114,166,0,0,0,114,106,0,0,0,114,189,0,0,0,
+    114,105,0,0,0,41,10,114,17,0,0,0,114,164,0,0,
+    0,114,165,0,0,0,114,190,0,0,0,90,9,105,115,95,
+    114,101,108,111,97,100,114,188,0,0,0,114,166,0,0,0,
+    114,95,0,0,0,114,96,0,0,0,114,105,0,0,0,114,
+    10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,10,
+    95,102,105,110,100,95,115,112,101,99,122,3,0,0,115,54,
+    0,0,0,0,2,6,1,8,2,8,3,4,1,12,5,10,
+    1,8,1,8,1,2,1,10,1,14,1,12,1,8,1,20,
+    2,22,1,8,2,18,1,10,1,2,1,10,1,14,4,14,
+    2,8,1,8,2,10,2,10,2,114,194,0,0,0,99,3,
+    0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5,
+    0,0,0,67,0,0,0,115,108,0,0,0,116,0,124,0,
+    116,1,131,2,115,28,116,2,100,1,160,3,116,4,124,0,
+    131,1,161,1,131,1,130,1,124,2,100,2,107,0,114,44,
+    116,5,100,3,131,1,130,1,124,2,100,2,107,4,114,84,
+    116,0,124,1,116,1,131,2,115,72,116,2,100,4,131,1,
+    130,1,110,12,124,1,115,84,116,6,100,5,131,1,130,1,
+    124,0,115,104,124,2,100,2,107,2,114,104,116,5,100,6,
+    131,1,130,1,100,7,83,0,41,8,122,28,86,101,114,105,
+    102,121,32,97,114,103,117,109,101,110,116,115,32,97,114,101,
+    32,34,115,97,110,101,34,46,122,31,109,111,100,117,108,101,
+    32,110,97,109,101,32,109,117,115,116,32,98,101,32,115,116,
+    114,44,32,110,111,116,32,123,125,114,22,0,0,0,122,18,
+    108,101,118,101,108,32,109,117,115,116,32,98,101,32,62,61,
+    32,48,122,31,95,95,112,97,99,107,97,103,101,95,95,32,
+    110,111,116,32,115,101,116,32,116,111,32,97,32,115,116,114,
+    105,110,103,122,54,97,116,116,101,109,112,116,101,100,32,114,
+    101,108,97,116,105,118,101,32,105,109,112,111,114,116,32,119,
+    105,116,104,32,110,111,32,107,110,111,119,110,32,112,97,114,
+    101,110,116,32,112,97,99,107,97,103,101,122,17,69,109,112,
+    116,121,32,109,111,100,117,108,101,32,110,97,109,101,78,41,
+    7,218,10,105,115,105,110,115,116,97,110,99,101,218,3,115,
+    116,114,218,9,84,121,112,101,69,114,114,111,114,114,45,0,
+    0,0,114,14,0,0,0,218,10,86,97,108,117,101,69,114,
+    114,111,114,114,79,0,0,0,169,3,114,17,0,0,0,114,
+    185,0,0,0,114,186,0,0,0,114,10,0,0,0,114,10,
     0,0,0,114,11,0,0,0,218,13,95,115,97,110,105,116,
     121,95,99,104,101,99,107,169,3,0,0,115,22,0,0,0,
     0,2,10,1,18,1,8,1,8,1,8,1,10,1,10,1,
@@ -1462,7 +1462,7 @@
     0,0,0,114,141,0,0,0,114,106,0,0,0,218,8,95,
     69,82,82,95,77,83,71,114,45,0,0,0,218,19,77,111,
     100,117,108,101,78,111,116,70,111,117,110,100,69,114,114,111,
-    114,114,195,0,0,0,114,159,0,0,0,114,5,0,0,0,
+    114,114,194,0,0,0,114,159,0,0,0,114,5,0,0,0,
     41,8,114,17,0,0,0,218,7,105,109,112,111,114,116,95,
     114,164,0,0,0,114,130,0,0,0,90,13,112,97,114,101,
     110,116,95,109,111,100,117,108,101,114,157,0,0,0,114,95,
@@ -1520,7 +1520,7 @@
     97,103,101,95,95,32,105,102,10,32,32,32,32,116,104,101,
     32,108,111,97,100,101,114,32,100,105,100,32,110,111,116,46,
     10,10,32,32,32,32,114,22,0,0,0,41,4,114,200,0,
-    0,0,114,188,0,0,0,114,207,0,0,0,218,11,95,103,
+    0,0,114,187,0,0,0,114,207,0,0,0,218,11,95,103,
     99,100,95,105,109,112,111,114,116,114,199,0,0,0,114,10,
     0,0,0,114,10,0,0,0,114,11,0,0,0,114,208,0,
     0,0,234,3,0,0,115,8,0,0,0,0,9,12,1,8,
@@ -1561,8 +1561,8 @@
     122,8,73,116,101,109,32,105,110,32,122,18,32,109,117,115,
     116,32,98,101,32,115,116,114,44,32,110,111,116,32,250,1,
     42,218,7,95,95,97,108,108,95,95,84,114,209,0,0,0,
-    114,182,0,0,0,78,41,16,114,196,0,0,0,114,197,0,
-    0,0,114,1,0,0,0,114,198,0,0,0,114,14,0,0,
+    114,182,0,0,0,78,41,16,114,195,0,0,0,114,196,0,
+    0,0,114,1,0,0,0,114,197,0,0,0,114,14,0,0,
     0,114,4,0,0,0,218,16,95,104,97,110,100,108,101,95,
     102,114,111,109,108,105,115,116,114,212,0,0,0,114,45,0,
     0,0,114,67,0,0,0,114,203,0,0,0,114,17,0,0,
@@ -1609,9 +1609,9 @@
     110,32,95,95,110,97,109,101,95,95,32,97,110,100,32,95,
     95,112,97,116,104,95,95,114,1,0,0,0,114,141,0,0,
     0,114,128,0,0,0,114,22,0,0,0,41,6,114,34,0,
-    0,0,114,130,0,0,0,114,192,0,0,0,114,193,0,0,
-    0,114,194,0,0,0,114,129,0,0,0,41,3,218,7,103,
-    108,111,98,97,108,115,114,186,0,0,0,114,95,0,0,0,
+    0,0,114,130,0,0,0,114,191,0,0,0,114,192,0,0,
+    0,114,193,0,0,0,114,129,0,0,0,41,3,218,7,103,
+    108,111,98,97,108,115,114,185,0,0,0,114,95,0,0,0,
     114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,
     17,95,99,97,108,99,95,95,95,112,97,99,107,97,103,101,
     95,95,30,4,0,0,115,38,0,0,0,0,7,10,1,10,
@@ -1666,8 +1666,8 @@
     111,110,114,184,0,0,0,114,15,0,0,0,114,92,0,0,
     0,114,1,0,0,0,114,4,0,0,0,114,213,0,0,0,
     41,9,114,17,0,0,0,114,218,0,0,0,218,6,108,111,
-    99,97,108,115,114,214,0,0,0,114,187,0,0,0,114,96,
-    0,0,0,90,8,103,108,111,98,97,108,115,95,114,186,0,
+    99,97,108,115,114,214,0,0,0,114,186,0,0,0,114,96,
+    0,0,0,90,8,103,108,111,98,97,108,115,95,114,185,0,
     0,0,90,7,99,117,116,95,111,102,102,114,10,0,0,0,
     114,10,0,0,0,114,11,0,0,0,218,10,95,95,105,109,
     112,111,114,116,95,95,57,4,0,0,115,30,0,0,0,0,
@@ -1713,10 +1713,10 @@
     101,32,116,119,111,32,109,111,100,117,108,101,115,32,109,117,
     115,116,32,98,101,32,101,120,112,108,105,99,105,116,108,121,
     32,112,97,115,115,101,100,32,105,110,46,10,10,32,32,32,
-    32,41,3,114,23,0,0,0,114,192,0,0,0,114,64,0,
+    32,41,3,114,23,0,0,0,114,191,0,0,0,114,64,0,
     0,0,78,41,15,114,57,0,0,0,114,15,0,0,0,114,
     14,0,0,0,114,92,0,0,0,218,5,105,116,101,109,115,
-    114,196,0,0,0,114,78,0,0,0,114,160,0,0,0,114,
+    114,195,0,0,0,114,78,0,0,0,114,160,0,0,0,114,
     88,0,0,0,114,173,0,0,0,114,142,0,0,0,114,148,
     0,0,0,114,1,0,0,0,114,223,0,0,0,114,5,0,
     0,0,41,10,218,10,115,121,115,95,109,111,100,117,108,101,
@@ -1738,7 +1738,7 @@
     108,32,105,109,112,111,114,116,101,114,115,32,102,111,114,32,
     98,117,105,108,116,105,110,32,97,110,100,32,102,114,111,122,
     101,110,32,109,111,100,117,108,101,115,78,41,6,114,227,0,
-    0,0,114,15,0,0,0,114,191,0,0,0,114,120,0,0,
+    0,0,114,15,0,0,0,114,190,0,0,0,114,120,0,0,
     0,114,160,0,0,0,114,173,0,0,0,41,2,114,225,0,
     0,0,114,226,0,0,0,114,10,0,0,0,114,10,0,0,
     0,114,11,0,0,0,218,8,95,105,110,115,116,97,108,108,
@@ -1771,7 +1771,7 @@
     114,148,0,0,0,114,152,0,0,0,114,107,0,0,0,114,
     93,0,0,0,114,158,0,0,0,114,159,0,0,0,114,94,
     0,0,0,114,160,0,0,0,114,173,0,0,0,114,178,0,
-    0,0,114,188,0,0,0,114,190,0,0,0,114,195,0,0,
+    0,0,114,187,0,0,0,114,189,0,0,0,114,194,0,0,
     0,114,200,0,0,0,90,15,95,69,82,82,95,77,83,71,
     95,80,82,69,70,73,88,114,202,0,0,0,114,205,0,0,
     0,218,6,111,98,106,101,99,116,114,206,0,0,0,114,207,