diff options
author | Brett Cannon <brett@python.org> | 2012-04-26 00:18:24 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-04-26 00:18:24 (GMT) |
commit | 5a5d6a10333af38c753b82f8d1bef14906c12b61 (patch) | |
tree | 9bc3c6d28e29f08646775fec90e8b5000a633f02 | |
parent | 8923a4d4c514a621b7f99ee0f3ebdde319aee0e9 (diff) | |
parent | 718fbf078cef405318dc712a2c32fbc12e87de02 (diff) | |
download | cpython-5a5d6a10333af38c753b82f8d1bef14906c12b61.zip cpython-5a5d6a10333af38c753b82f8d1bef14906c12b61.tar.gz cpython-5a5d6a10333af38c753b82f8d1bef14906c12b61.tar.bz2 |
Merge
-rw-r--r-- | Lib/importlib/_bootstrap.py | 7 | ||||
-rw-r--r-- | Lib/test/test_logging.py | 34 | ||||
-rw-r--r-- | Lib/unittest/case.py | 2 | ||||
-rw-r--r-- | Lib/unittest/test/test_skipping.py | 15 | ||||
-rw-r--r-- | Makefile.pre.in | 15 | ||||
-rw-r--r-- | Misc/NEWS | 6 | ||||
-rw-r--r-- | Objects/longobject.c | 2 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 8 | ||||
-rw-r--r-- | Python/importlib.h | 226 | ||||
-rw-r--r-- | Tools/msi/msi.py | 22 | ||||
-rwxr-xr-x | Tools/scripts/import_diagnostics.py | 39 |
11 files changed, 238 insertions, 138 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 817fe39..47ccd41 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -6,6 +6,13 @@ such it requires the injection of specific modules and attributes in order to work. One should use importlib as the public-facing version of this module. """ +# +# IMPORTANT: Whenever making changes to this module, be sure to run +# a top-level make in order to get the frozen version of the module +# update. Not doing so, will result in the Makefile to fail for +# all others who don't have a ./python around to freeze the module +# in the early stages of compilation. +# # See importlib._setup() for what is injected into the global namespace. diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index ee1c211..2279952 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -593,28 +593,28 @@ class HandlerTest(BaseTest): pass time.sleep(0.004 * random.randint(0, 4)) - def cleanup(remover, fn, handler): - handler.close() - remover.join() - if os.path.exists(fn): - os.unlink(fn) + del_count = 500 + log_count = 500 - fd, fn = tempfile.mkstemp('.log', 'test_logging-3-') - os.close(fd) - del_count = 1000 - log_count = 1000 - remover = threading.Thread(target=remove_loop, args=(fn, del_count)) - remover.daemon = True - remover.start() for delay in (False, True): + fd, fn = tempfile.mkstemp('.log', 'test_logging-3-') + os.close(fd) + remover = threading.Thread(target=remove_loop, args=(fn, del_count)) + remover.daemon = True + remover.start() h = logging.handlers.WatchedFileHandler(fn, delay=delay) - self.addCleanup(cleanup, remover, fn, h) f = logging.Formatter('%(asctime)s: %(levelname)s: %(message)s') h.setFormatter(f) - for _ in range(log_count): - time.sleep(0.005) - r = logging.makeLogRecord({'msg': 'testing' }) - h.handle(r) + try: + for _ in range(log_count): + time.sleep(0.005) + r = logging.makeLogRecord({'msg': 'testing' }) + h.handle(r) + finally: + h.close() + remover.join() + if os.path.exists(fn): + os.unlink(fn) class BadStream(object): diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index 5bed868..28f0a2d 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -61,7 +61,7 @@ def skip(reason): Unconditionally skip a test. """ def decorator(test_item): - if not (isinstance(test_item, type) and issubclass(test_item, TestCase)): + if not isinstance(test_item, type): @functools.wraps(test_item) def skip_wrapper(*args, **kwargs): raise SkipTest(reason) diff --git a/Lib/unittest/test/test_skipping.py b/Lib/unittest/test/test_skipping.py index b592464..952240e 100644 --- a/Lib/unittest/test/test_skipping.py +++ b/Lib/unittest/test/test_skipping.py @@ -66,6 +66,21 @@ class Test_TestSkipping(unittest.TestCase): self.assertEqual(result.skipped, [(test, "testing")]) self.assertEqual(record, []) + def test_skip_non_unittest_class(self): + @unittest.skip("testing") + class Mixin: + def test_1(self): + record.append(1) + class Foo(Mixin, unittest.TestCase): + pass + record = [] + result = unittest.TestResult() + test = Foo("test_1") + suite = unittest.TestSuite([test]) + suite.run(result) + self.assertEqual(result.skipped, [(test, "testing")]) + self.assertEqual(record, []) + def test_expected_failure(self): class Foo(unittest.TestCase): @unittest.expectedFailure diff --git a/Makefile.pre.in b/Makefile.pre.in index 3f43837..e6b37f8 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -573,12 +573,23 @@ Modules/Setup: $(srcdir)/Modules/Setup.dist Modules/_testembed: Modules/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) + ############################################################################ # Importlib Python/importlib.h: $(srcdir)/Lib/importlib/_bootstrap.py $(srcdir)/Python/freeze_importlib.py - ./$(BUILDPYTHON) $(srcdir)/Python/freeze_importlib.py \ - $(srcdir)/Lib/importlib/_bootstrap.py Python/importlib.h + @if test -f ./$(BUILDPYTHON); then \ + ./$(BUILDPYTHON) $(srcdir)/Python/freeze_importlib.py \ + $(srcdir)/Lib/importlib/_bootstrap.py Python/importlib.h; \ + else \ + echo "----------------------------------------------------------"; \ + echo "Python/importlib.h needs to be rebuilt, but no interpreter"; \ + echo "is available to do so. Leaving the previous version in"; \ + echo "place. You may want to run ''make'' a second time after"; \ + echo "this build is complete."; \ + echo "----------------------------------------------------------"; \ + fi + ############################################################################ # Special rules for object files @@ -71,6 +71,9 @@ Core and Builtins Library ------- +- Issue #14664: It is now possible to use @unittest.skip{If,Unless} on a + test class that doesn't inherit from TestCase (i.e. a mixin). + - Issue #4892: multiprocessing Connections can now be transferred over multiprocessing Connections. Patch by Richard Oudkerk (sbt). @@ -186,6 +189,9 @@ Tests Tools / Demos ------------- +- Issue #3561: The Windows installer now has an option, off by default, for + placing the Python installation into the system "Path" environment variable. + - Issue #13165: stringbench is now available in the Tools/stringbench folder. It used to live in its own SVN project. diff --git a/Objects/longobject.c b/Objects/longobject.c index 3630ae4..74c59c7 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -1657,6 +1657,7 @@ long_to_decimal_string(PyObject *aa) /* check we've counted correctly */ assert(p == PyUnicode_1BYTE_DATA(str)); + assert(_PyUnicode_CheckConsistency(str, 1)); Py_DECREF(scratch); return (PyObject *)str; } @@ -1761,6 +1762,7 @@ _PyLong_Format(PyObject *aa, int base) if (negative) *--p = '-'; assert(p == PyUnicode_1BYTE_DATA(v)); + assert(_PyUnicode_CheckConsistency(v, 1)); return v; } diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 7efa939..364de90 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -375,10 +375,13 @@ _PyUnicode_CheckConsistency(PyObject *op, int check_content) { Py_ssize_t i; Py_UCS4 maxchar = 0; - void *data = PyUnicode_DATA(ascii); + void *data; + Py_UCS4 ch; + + data = PyUnicode_DATA(ascii); for (i=0; i < ascii->length; i++) { - Py_UCS4 ch = PyUnicode_READ(kind, data, i); + ch = PyUnicode_READ(kind, data, i); if (ch > maxchar) maxchar = ch; } @@ -398,6 +401,7 @@ _PyUnicode_CheckConsistency(PyObject *op, int check_content) assert(maxchar >= 0x10000); assert(maxchar <= MAX_UNICODE); } + assert(PyUnicode_READ(kind, data, ascii->length) == 0); } return 1; } diff --git a/Python/importlib.h b/Python/importlib.h index 8bc0d81..9dbd881 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -92,7 +92,7 @@ unsigned char _Py_M__importlib[] = { 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,114,101,108,97,120,95,99,97,115, - 101,27,0,0,0,115,2,0,0,0,0,2,117,37,0,0, + 101,34,0,0,0,115,2,0,0,0,0,2,117,37,0,0, 0,95,109,97,107,101,95,114,101,108,97,120,95,99,97,115, 101,46,60,108,111,99,97,108,115,62,46,95,114,101,108,97, 120,95,99,97,115,101,99,0,0,0,0,0,0,0,0,0, @@ -106,7 +106,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,95,114,101,108,97,120,95, - 99,97,115,101,31,0,0,0,115,2,0,0,0,0,2,40, + 99,97,115,101,38,0,0,0,115,2,0,0,0,0,2,40, 4,0,0,0,117,3,0,0,0,115,121,115,117,8,0,0, 0,112,108,97,116,102,111,114,109,117,10,0,0,0,115,116, 97,114,116,115,119,105,116,104,117,26,0,0,0,67,65,83, @@ -116,7 +116,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,109,97, - 107,101,95,114,101,108,97,120,95,99,97,115,101,25,0,0, + 107,101,95,114,101,108,97,120,95,99,97,115,101,32,0,0, 0,115,8,0,0,0,0,1,18,1,15,4,12,3,117,16, 0,0,0,95,109,97,107,101,95,114,101,108,97,120,95,99, 97,115,101,99,1,0,0,0,0,0,0,0,2,0,0,0, @@ -143,7 +143,7 @@ unsigned char _Py_M__importlib[] = { 98,121,116,101,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,7,0,0,0,95,119,95,108,111,110,103,38,0,0, + 62,117,7,0,0,0,95,119,95,108,111,110,103,45,0,0, 0,115,14,0,0,0,0,6,12,1,6,1,17,1,21,1, 21,1,21,1,117,7,0,0,0,95,119,95,108,111,110,103, 99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,0, @@ -167,7 +167,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,7,0,0,0,95,114,95, - 108,111,110,103,54,0,0,0,115,10,0,0,0,0,6,10, + 108,111,110,103,61,0,0,0,115,10,0,0,0,0,6,10, 1,18,1,18,1,18,1,117,7,0,0,0,95,114,95,108, 111,110,103,99,0,0,0,0,0,0,0,0,3,0,0,0, 4,0,0,0,71,0,0,0,115,103,0,0,0,103,0,0, @@ -191,7 +191,7 @@ unsigned char _Py_M__importlib[] = { 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,112,97,116,104,95,106,111, - 105,110,67,0,0,0,115,16,0,0,0,0,2,6,1,13, + 105,110,74,0,0,0,115,16,0,0,0,0,2,6,1,13, 1,6,1,6,1,13,1,16,1,20,1,117,10,0,0,0, 95,112,97,116,104,95,106,111,105,110,99,1,0,0,0,0, 0,0,0,6,0,0,0,3,0,0,0,67,0,0,0,115, @@ -214,7 +214,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,11,0,0,0,95,112,97,116,104, - 95,115,112,108,105,116,79,0,0,0,115,14,0,0,0,0, + 95,115,112,108,105,116,86,0,0,0,115,14,0,0,0,0, 2,19,1,12,1,6,1,8,2,6,1,24,1,117,11,0, 0,0,95,112,97,116,104,95,115,112,108,105,116,99,1,0, 0,0,0,0,0,0,1,0,0,0,11,0,0,0,67,0, @@ -232,7 +232,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,12,0,0,0,95,112,97,116,104,95,101, - 120,105,115,116,115,91,0,0,0,115,10,0,0,0,0,2, + 120,105,115,116,115,98,0,0,0,115,10,0,0,0,0,2, 3,1,17,1,13,1,9,2,117,12,0,0,0,95,112,97, 116,104,95,101,120,105,115,116,115,99,2,0,0,0,0,0, 0,0,3,0,0,0,11,0,0,0,67,0,0,0,115,61, @@ -254,7 +254,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,18,0,0,0,95, 112,97,116,104,95,105,115,95,109,111,100,101,95,116,121,112, - 101,101,0,0,0,115,10,0,0,0,0,2,3,1,19,1, + 101,108,0,0,0,115,10,0,0,0,0,2,3,1,19,1, 13,1,9,1,117,18,0,0,0,95,112,97,116,104,95,105, 115,95,109,111,100,101,95,116,121,112,101,99,1,0,0,0, 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, @@ -268,7 +268,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,12,0,0,0,95,112,97,116,104, - 95,105,115,102,105,108,101,111,0,0,0,115,2,0,0,0, + 95,105,115,102,105,108,101,118,0,0,0,115,2,0,0,0, 0,2,117,12,0,0,0,95,112,97,116,104,95,105,115,102, 105,108,101,99,1,0,0,0,0,0,0,0,1,0,0,0, 3,0,0,0,67,0,0,0,115,34,0,0,0,124,0,0, @@ -284,7 +284,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,95,112,97,116,104,95, - 105,115,100,105,114,117,0,0,0,115,6,0,0,0,0,2, + 105,115,100,105,114,124,0,0,0,115,6,0,0,0,0,2, 6,1,15,1,117,11,0,0,0,95,112,97,116,104,95,105, 115,100,105,114,99,2,0,0,0,0,0,0,0,3,0,0, 0,5,0,0,0,67,0,0,0,115,75,0,0,0,120,68, @@ -308,7 +308,7 @@ unsigned char _Py_M__importlib[] = { 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,95,112,97,116,104,95,119,105,116,104,111,117,116,95,101, - 120,116,124,0,0,0,115,8,0,0,0,0,2,19,1,15, + 120,116,131,0,0,0,115,8,0,0,0,0,2,19,1,15, 1,25,2,117,17,0,0,0,95,112,97,116,104,95,119,105, 116,104,111,117,116,95,101,120,116,99,1,0,0,0,0,0, 0,0,1,0,0,0,11,0,0,0,67,0,0,0,115,101, @@ -332,7 +332,7 @@ unsigned char _Py_M__importlib[] = { 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,14,0,0,0,95,112,97,116,104,95,97,98,115,111, - 108,117,116,101,133,0,0,0,115,16,0,0,0,0,2,6, + 108,117,116,101,140,0,0,0,115,16,0,0,0,0,2,6, 1,15,1,3,1,17,1,13,1,15,1,4,2,117,14,0, 0,0,95,112,97,116,104,95,97,98,115,111,108,117,116,101, 99,2,0,0,0,0,0,0,0,5,0,0,0,17,0,0, @@ -376,7 +376,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,119,114,105,116,101, - 95,97,116,111,109,105,99,146,0,0,0,115,24,0,0,0, + 95,97,116,111,109,105,99,153,0,0,0,115,24,0,0,0, 0,5,24,1,38,1,3,3,21,1,19,1,20,1,13,1, 3,1,17,1,13,1,5,1,117,13,0,0,0,95,119,114, 105,116,101,95,97,116,111,109,105,99,99,2,0,0,0,0, @@ -403,7 +403,7 @@ unsigned char _Py_M__importlib[] = { 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,5,0,0,0, - 95,119,114,97,112,167,0,0,0,115,8,0,0,0,0,2, + 95,119,114,97,112,174,0,0,0,115,8,0,0,0,0,2, 25,1,15,1,32,1,117,5,0,0,0,95,119,114,97,112, 99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0, 0,67,0,0,0,115,16,0,0,0,116,0,0,116,1,0, @@ -418,7 +418,7 @@ unsigned char _Py_M__importlib[] = { 97,109,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, - 11,0,0,0,95,110,101,119,95,109,111,100,117,108,101,178, + 11,0,0,0,95,110,101,119,95,109,111,100,117,108,101,185, 0,0,0,115,2,0,0,0,0,6,117,11,0,0,0,95, 110,101,119,95,109,111,100,117,108,101,117,11,0,0,0,95, 95,112,121,99,97,99,104,101,95,95,117,3,0,0,0,46, @@ -481,7 +481,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,18, 0,0,0,95,99,97,99,104,101,95,102,114,111,109,95,115, - 111,117,114,99,101,197,0,0,0,115,12,0,0,0,0,11, + 111,117,114,99,101,204,0,0,0,115,12,0,0,0,0,11, 24,1,18,1,18,1,24,1,27,1,117,18,0,0,0,95, 99,97,99,104,101,95,102,114,111,109,95,115,111,117,114,99, 101,99,1,0,0,0,0,0,0,0,2,0,0,0,4,0, @@ -509,7 +509,7 @@ unsigned char _Py_M__importlib[] = { 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, 15,0,0,0,118,101,114,98,111,115,101,95,109,101,115,115, - 97,103,101,216,0,0,0,115,8,0,0,0,0,2,12,1, + 97,103,101,223,0,0,0,115,8,0,0,0,0,2,12,1, 15,1,13,1,117,15,0,0,0,118,101,114,98,111,115,101, 95,109,101,115,115,97,103,101,99,1,0,0,0,0,0,0, 0,2,0,0,0,3,0,0,0,3,0,0,0,115,35,0, @@ -541,7 +541,7 @@ unsigned char _Py_M__importlib[] = { 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,19,0,0,0,115,101,116, 95,112,97,99,107,97,103,101,95,119,114,97,112,112,101,114, - 226,0,0,0,115,12,0,0,0,0,1,15,1,31,1,12, + 233,0,0,0,115,12,0,0,0,0,1,15,1,31,1,12, 1,15,1,31,1,117,40,0,0,0,115,101,116,95,112,97, 99,107,97,103,101,46,60,108,111,99,97,108,115,62,46,115, 101,116,95,112,97,99,107,97,103,101,95,119,114,97,112,112, @@ -552,7 +552,7 @@ unsigned char _Py_M__importlib[] = { 117,3,0,0,0,102,120,110,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,115, - 101,116,95,112,97,99,107,97,103,101,224,0,0,0,115,6, + 101,116,95,112,97,99,107,97,103,101,231,0,0,0,115,6, 0,0,0,0,2,18,7,13,1,117,11,0,0,0,115,101, 116,95,112,97,99,107,97,103,101,99,1,0,0,0,0,0, 0,0,2,0,0,0,3,0,0,0,3,0,0,0,115,35, @@ -576,7 +576,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,18,0,0,0,115,101,116,95, - 108,111,97,100,101,114,95,119,114,97,112,112,101,114,239,0, + 108,111,97,100,101,114,95,119,114,97,112,112,101,114,246,0, 0,0,115,8,0,0,0,0,1,18,1,15,1,12,1,117, 38,0,0,0,115,101,116,95,108,111,97,100,101,114,46,60, 108,111,99,97,108,115,62,46,115,101,116,95,108,111,97,100, @@ -588,7 +588,7 @@ unsigned char _Py_M__importlib[] = { 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,115,101,116,95,108,111,97,100,101,114, - 237,0,0,0,115,6,0,0,0,0,2,18,5,13,1,117, + 244,0,0,0,115,6,0,0,0,0,2,18,5,13,1,117, 10,0,0,0,115,101,116,95,108,111,97,100,101,114,99,1, 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,3, 0,0,0,115,35,0,0,0,135,0,0,102,1,0,100,1, @@ -651,7 +651,7 @@ unsigned char _Py_M__importlib[] = { 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, 97,112,62,117,25,0,0,0,109,111,100,117,108,101,95,102, 111,114,95,108,111,97,100,101,114,95,119,114,97,112,112,101, - 114,5,1,0,0,115,22,0,0,0,0,1,18,1,12,1, + 114,12,1,0,0,115,22,0,0,0,0,1,18,1,12,1, 6,4,12,1,16,1,3,1,23,1,3,1,6,1,13,1, 117,52,0,0,0,109,111,100,117,108,101,95,102,111,114,95, 108,111,97,100,101,114,46,60,108,111,99,97,108,115,62,46, @@ -664,7 +664,7 @@ unsigned char _Py_M__importlib[] = { 0,0,102,120,110,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,17,0,0,0,109,111,100,117, - 108,101,95,102,111,114,95,108,111,97,100,101,114,248,0,0, + 108,101,95,102,111,114,95,108,111,97,100,101,114,255,0,0, 0,115,6,0,0,0,0,13,18,15,13,1,117,17,0,0, 0,109,111,100,117,108,101,95,102,111,114,95,108,111,97,100, 101,114,99,1,0,0,0,0,0,0,0,2,0,0,0,3, @@ -704,7 +704,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,19,0,0,0,95,99,104,101,99,107, - 95,110,97,109,101,95,119,114,97,112,112,101,114,32,1,0, + 95,110,97,109,101,95,119,114,97,112,112,101,114,39,1,0, 0,115,6,0,0,0,0,1,15,1,25,1,117,40,0,0, 0,95,99,104,101,99,107,95,110,97,109,101,46,60,108,111, 99,97,108,115,62,46,95,99,104,101,99,107,95,110,97,109, @@ -716,7 +716,7 @@ unsigned char _Py_M__importlib[] = { 101,116,104,111,100,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,99,104,101, - 99,107,95,110,97,109,101,24,1,0,0,115,6,0,0,0, + 99,107,95,110,97,109,101,31,1,0,0,115,6,0,0,0, 0,8,18,4,13,1,117,11,0,0,0,95,99,104,101,99, 107,95,110,97,109,101,99,1,0,0,0,0,0,0,0,2, 0,0,0,3,0,0,0,3,0,0,0,115,35,0,0,0, @@ -745,7 +745,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,25,0,0,0,95,114,101,113,117,105,114,101,115, 95,98,117,105,108,116,105,110,95,119,114,97,112,112,101,114, - 42,1,0,0,115,8,0,0,0,0,1,15,1,18,1,12, + 49,1,0,0,115,8,0,0,0,0,1,15,1,18,1,12, 1,117,52,0,0,0,95,114,101,113,117,105,114,101,115,95, 98,117,105,108,116,105,110,46,60,108,111,99,97,108,115,62, 46,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, @@ -757,7 +757,7 @@ unsigned char _Py_M__importlib[] = { 0,0,0,102,120,110,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,17,0,0,0,95,114,101, - 113,117,105,114,101,115,95,98,117,105,108,116,105,110,40,1, + 113,117,105,114,101,115,95,98,117,105,108,116,105,110,47,1, 0,0,115,6,0,0,0,0,2,18,5,13,1,117,17,0, 0,0,95,114,101,113,117,105,114,101,115,95,98,117,105,108, 116,105,110,99,1,0,0,0,0,0,0,0,2,0,0,0, @@ -785,7 +785,7 @@ unsigned char _Py_M__importlib[] = { 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,24,0,0,0,95,114,101,113,117,105,114,101,115,95, - 102,114,111,122,101,110,95,119,114,97,112,112,101,114,53,1, + 102,114,111,122,101,110,95,119,114,97,112,112,101,114,60,1, 0,0,115,8,0,0,0,0,1,15,1,18,1,12,1,117, 50,0,0,0,95,114,101,113,117,105,114,101,115,95,102,114, 111,122,101,110,46,60,108,111,99,97,108,115,62,46,95,114, @@ -798,7 +798,7 @@ unsigned char _Py_M__importlib[] = { 110,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,114,101,113,117,105,114,101, - 115,95,102,114,111,122,101,110,51,1,0,0,115,6,0,0, + 115,95,102,114,111,122,101,110,58,1,0,0,115,6,0,0, 0,0,2,18,5,13,1,117,16,0,0,0,95,114,101,113, 117,105,114,101,115,95,102,114,111,122,101,110,99,1,0,0, 0,0,0,0,0,1,0,0,0,3,0,0,0,3,0,0, @@ -820,7 +820,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,10,0,0,0,60,108,105,115,116,99,111,109,112, - 62,64,1,0,0,115,4,0,0,0,9,0,3,1,117,32, + 62,71,1,0,0,115,4,0,0,0,9,0,3,1,117,32, 0,0,0,95,115,117,102,102,105,120,95,108,105,115,116,46, 60,108,111,99,97,108,115,62,46,60,108,105,115,116,99,111, 109,112,62,40,2,0,0,0,117,4,0,0,0,95,105,109, @@ -831,7 +831,7 @@ unsigned char _Py_M__importlib[] = { 101,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,115,117,102,102,105,120,95, - 108,105,115,116,62,1,0,0,115,2,0,0,0,0,2,117, + 108,105,115,116,69,1,0,0,115,2,0,0,0,0,2,117, 12,0,0,0,95,115,117,102,102,105,120,95,108,105,115,116, 99,1,0,0,0,0,0,0,0,1,0,0,0,6,0,0, 0,66,0,0,0,115,155,0,0,0,124,0,0,69,101,0, @@ -875,7 +875,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,79,1,0,0,115,6,0,0,0,0,7, + 111,100,117,108,101,86,1,0,0,115,6,0,0,0,0,7, 12,1,4,1,117,27,0,0,0,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,2,0,0,0,0,0,0,0,3,0,0, @@ -896,7 +896,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,11,0,0, - 0,108,111,97,100,95,109,111,100,117,108,101,90,1,0,0, + 0,108,111,97,100,95,109,111,100,117,108,101,97,1,0,0, 115,14,0,0,0,0,6,15,1,3,1,17,1,3,1,22, 1,13,1,117,27,0,0,0,66,117,105,108,116,105,110,73, 109,112,111,114,116,101,114,46,108,111,97,100,95,109,111,100, @@ -912,7 +912,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,8,0,0,0,103,101, - 116,95,99,111,100,101,104,1,0,0,115,2,0,0,0,0, + 116,95,99,111,100,101,111,1,0,0,115,2,0,0,0,0, 4,117,24,0,0,0,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,2,0,0,0,1,0,0,0,67, @@ -927,7 +927,7 @@ unsigned char _Py_M__importlib[] = { 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,103,101,116,95,115,111,117,114, - 99,101,110,1,0,0,115,2,0,0,0,0,4,117,26,0, + 99,101,117,1,0,0,115,2,0,0,0,0,4,117,26,0, 0,0,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,2,0,0,0,1,0,0,0,67,0,0, @@ -941,7 +941,7 @@ unsigned char _Py_M__importlib[] = { 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,10,0, - 0,0,105,115,95,112,97,99,107,97,103,101,116,1,0,0, + 0,0,105,115,95,112,97,99,107,97,103,101,123,1,0,0, 115,2,0,0,0,0,4,117,26,0,0,0,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,78,40,14,0,0,0,117,8,0,0, @@ -963,7 +963,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,15, 0,0,0,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,70,1,0,0,115,26,0,0,0,16,7,6,2,3, + 101,114,77,1,0,0,115,26,0,0,0,16,7,6,2,3, 1,18,10,3,1,3,1,3,1,27,11,3,1,21,5,3, 1,21,5,3,1,117,15,0,0,0,66,117,105,108,116,105, 110,73,109,112,111,114,116,101,114,99,1,0,0,0,0,0, @@ -1001,7 +1001,7 @@ unsigned char _Py_M__importlib[] = { 116,104,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,102,105,110,100,95,109,111,100,117,108,101,132,1, + 0,0,0,102,105,110,100,95,109,111,100,117,108,101,139,1, 0,0,115,2,0,0,0,0,3,117,26,0,0,0,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,2,0,0,0,0,0,0, @@ -1022,7 +1022,7 @@ unsigned char _Py_M__importlib[] = { 100,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,108,111,97,100,95,109,111,100,117,108,101,137,1,0, + 0,0,108,111,97,100,95,109,111,100,117,108,101,144,1,0, 0,115,14,0,0,0,0,6,15,1,3,1,17,1,3,1, 22,1,13,1,117,26,0,0,0,70,114,111,122,101,110,73, 109,112,111,114,116,101,114,46,108,111,97,100,95,109,111,100, @@ -1039,7 +1039,7 @@ unsigned char _Py_M__importlib[] = { 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, - 103,101,116,95,99,111,100,101,151,1,0,0,115,2,0,0, + 103,101,116,95,99,111,100,101,158,1,0,0,115,2,0,0, 0,0,4,117,23,0,0,0,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,2,0,0,0,1,0,0,0, @@ -1054,7 +1054,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,10,0,0,0,103,101,116,95,115,111,117,114,99, - 101,157,1,0,0,115,2,0,0,0,0,4,117,25,0,0, + 101,164,1,0,0,115,2,0,0,0,0,4,117,25,0,0, 0,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,2,0,0,0,2,0,0,0,67,0,0,0,115, @@ -1069,7 +1069,7 @@ unsigned char _Py_M__importlib[] = { 109,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,10, - 0,0,0,105,115,95,112,97,99,107,97,103,101,163,1,0, + 0,0,0,105,115,95,112,97,99,107,97,103,101,170,1,0, 0,115,2,0,0,0,0,4,117,25,0,0,0,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,78,40,14,0,0,0,117,8,0,0, @@ -1091,7 +1091,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,14,0, 0,0,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 123,1,0,0,115,26,0,0,0,16,7,6,2,3,1,18, + 130,1,0,0,115,26,0,0,0,16,7,6,2,3,1,18, 4,3,1,3,1,3,1,27,11,3,1,21,5,3,1,21, 5,3,1,117,14,0,0,0,70,114,111,122,101,110,73,109, 112,111,114,116,101,114,99,1,0,0,0,0,0,0,0,1, @@ -1132,7 +1132,7 @@ unsigned char _Py_M__importlib[] = { 97,109,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, - 10,0,0,0,105,115,95,112,97,99,107,97,103,101,175,1, + 10,0,0,0,105,115,95,112,97,99,107,97,103,101,182,1, 0,0,115,4,0,0,0,0,3,25,1,117,24,0,0,0, 95,76,111,97,100,101,114,66,97,115,105,99,115,46,105,115, 95,112,97,99,107,97,103,101,99,5,0,0,0,0,0,0, @@ -1211,7 +1211,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,20,0,0,0,95,98,121,116,101,115,95,102,114, - 111,109,95,98,121,116,101,99,111,100,101,181,1,0,0,115, + 111,109,95,98,121,116,101,99,111,100,101,188,1,0,0,115, 66,0,0,0,0,7,16,1,16,1,16,1,12,1,18,1, 27,1,18,1,15,1,10,1,15,1,18,1,15,1,10,1, 15,1,12,1,3,1,20,1,13,1,5,2,18,1,15,1, @@ -1260,7 +1260,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,12,0,0,0,95,108,111, - 97,100,95,109,111,100,117,108,101,226,1,0,0,115,26,0, + 97,100,95,109,111,100,117,108,101,233,1,0,0,115,26,0, 0,0,0,4,9,1,15,1,18,1,6,1,21,2,12,1, 9,1,15,1,28,2,25,1,9,1,16,1,117,26,0,0, 0,95,76,111,97,100,101,114,66,97,115,105,99,115,46,95, @@ -1279,7 +1279,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,13,0,0,0,95,76,111,97,100,101,114, - 66,97,115,105,99,115,170,1,0,0,115,10,0,0,0,16, + 66,97,115,105,99,115,177,1,0,0,115,10,0,0,0,16, 3,6,2,12,6,12,45,6,1,117,13,0,0,0,95,76, 111,97,100,101,114,66,97,115,105,99,115,99,1,0,0,0, 0,0,0,0,1,0,0,0,2,0,0,0,66,0,0,0, @@ -1307,7 +1307,7 @@ unsigned char _Py_M__importlib[] = { 97,116,104,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, - 10,0,0,0,112,97,116,104,95,109,116,105,109,101,249,1, + 10,0,0,0,112,97,116,104,95,109,116,105,109,101,0,2, 0,0,115,2,0,0,0,0,4,117,23,0,0,0,83,111, 117,114,99,101,76,111,97,100,101,114,46,112,97,116,104,95, 109,116,105,109,101,99,2,0,0,0,0,0,0,0,2,0, @@ -1343,8 +1343,8 @@ unsigned char _Py_M__importlib[] = { 112,97,116,104,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,10,0,0,0,112,97,116,104,95,115,116,97,116,115,255, - 1,0,0,115,2,0,0,0,0,10,117,23,0,0,0,83, + 117,10,0,0,0,112,97,116,104,95,115,116,97,116,115,6, + 2,0,0,115,2,0,0,0,0,10,117,23,0,0,0,83, 111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104, 95,115,116,97,116,115,99,3,0,0,0,0,0,0,0,3, 0,0,0,1,0,0,0,67,0,0,0,115,10,0,0,0, @@ -1366,7 +1366,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,8,0,0,0,115,101,116,95,100,97, - 116,97,11,2,0,0,115,2,0,0,0,0,6,117,21,0, + 116,97,18,2,0,0,115,2,0,0,0,0,6,117,21,0, 0,0,83,111,117,114,99,101,76,111,97,100,101,114,46,115, 101,116,95,100,97,116,97,99,2,0,0,0,0,0,0,0, 7,0,0,0,12,0,0,0,67,0,0,0,115,156,0,0, @@ -1409,7 +1409,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,10,0,0,0,103,101,116,95,115,111,117,114,99, - 101,20,2,0,0,115,20,0,0,0,0,2,12,1,15,1, + 101,27,2,0,0,115,20,0,0,0,0,2,12,1,15,1, 3,1,19,1,13,1,9,1,14,1,27,1,18,1,117,23, 0,0,0,83,111,117,114,99,101,76,111,97,100,101,114,46, 103,101,116,95,115,111,117,114,99,101,99,2,0,0,0,0, @@ -1509,7 +1509,7 @@ unsigned char _Py_M__importlib[] = { 106,101,99,116,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,103,101,116,95,99,111,100,101,33,2,0, + 117,8,0,0,0,103,101,116,95,99,111,100,101,40,2,0, 0,115,92,0,0,0,0,7,15,1,12,1,6,1,12,1, 3,1,19,1,13,1,5,2,16,1,3,1,19,1,13,1, 5,2,3,1,12,1,3,1,13,1,19,1,5,2,9,1, @@ -1543,7 +1543,7 @@ unsigned char _Py_M__importlib[] = { 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,108, - 111,97,100,95,109,111,100,117,108,101,91,2,0,0,115,2, + 111,97,100,95,109,111,100,117,108,101,98,2,0,0,115,2, 0,0,0,0,8,117,24,0,0,0,83,111,117,114,99,101, 76,111,97,100,101,114,46,108,111,97,100,95,109,111,100,117, 108,101,78,40,9,0,0,0,117,8,0,0,0,95,95,110, @@ -1559,7 +1559,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,12,0,0, - 0,83,111,117,114,99,101,76,111,97,100,101,114,247,1,0, + 0,83,111,117,114,99,101,76,111,97,100,101,114,254,1,0, 0,115,12,0,0,0,16,2,12,6,12,12,12,9,12,13, 12,58,117,12,0,0,0,83,111,117,114,99,101,76,111,97, 100,101,114,99,1,0,0,0,0,0,0,0,1,0,0,0, @@ -1591,7 +1591,7 @@ unsigned char _Py_M__importlib[] = { 116,104,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,105,110,105,116,95,95,107,2,0,0,115, + 0,0,0,95,95,105,110,105,116,95,95,114,2,0,0,115, 4,0,0,0,0,3,9,1,117,19,0,0,0,70,105,108, 101,76,111,97,100,101,114,46,95,95,105,110,105,116,95,95, 99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,0, @@ -1606,7 +1606,7 @@ unsigned char _Py_M__importlib[] = { 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,12,0,0,0,103, - 101,116,95,102,105,108,101,110,97,109,101,113,2,0,0,115, + 101,116,95,102,105,108,101,110,97,109,101,120,2,0,0,115, 2,0,0,0,0,3,117,23,0,0,0,70,105,108,101,76, 111,97,100,101,114,46,103,101,116,95,102,105,108,101,110,97, 109,101,99,2,0,0,0,0,0,0,0,3,0,0,0,8, @@ -1624,7 +1624,7 @@ unsigned char _Py_M__importlib[] = { 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,103, - 101,116,95,100,97,116,97,118,2,0,0,115,4,0,0,0, + 101,116,95,100,97,116,97,125,2,0,0,115,4,0,0,0, 0,2,21,1,117,19,0,0,0,70,105,108,101,76,111,97, 100,101,114,46,103,101,116,95,100,97,116,97,78,40,8,0, 0,0,117,8,0,0,0,95,95,110,97,109,101,95,95,117, @@ -1639,7 +1639,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,10,0,0,0,70,105,108,101,76, - 111,97,100,101,114,102,2,0,0,115,8,0,0,0,16,3, + 111,97,100,101,114,109,2,0,0,115,8,0,0,0,16,3, 6,2,12,6,18,5,117,10,0,0,0,70,105,108,101,76, 111,97,100,101,114,99,1,0,0,0,0,0,0,0,1,0, 0,0,2,0,0,0,66,0,0,0,115,50,0,0,0,124, @@ -1668,7 +1668,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,112,97,116,104,95,115, - 116,97,116,115,128,2,0,0,115,4,0,0,0,0,2,15, + 116,97,116,115,135,2,0,0,115,4,0,0,0,0,2,15, 1,117,27,0,0,0,83,111,117,114,99,101,70,105,108,101, 76,111,97,100,101,114,46,112,97,116,104,95,115,116,97,116, 115,99,3,0,0,0,0,0,0,0,7,0,0,0,13,0, @@ -1710,7 +1710,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,8,0,0, - 0,115,101,116,95,100,97,116,97,133,2,0,0,115,36,0, + 0,115,101,116,95,100,97,116,97,140,2,0,0,115,36,0, 0,0,0,2,18,1,6,2,22,1,18,1,17,2,19,1, 15,1,3,1,17,1,13,2,7,1,13,3,13,1,3,1, 13,1,17,1,19,3,117,25,0,0,0,83,111,117,114,99, @@ -1726,7 +1726,7 @@ unsigned char _Py_M__importlib[] = { 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,83,111,117,114,99,101,70,105,108,101,76,111, - 97,100,101,114,124,2,0,0,115,6,0,0,0,16,2,6, + 97,100,101,114,131,2,0,0,115,6,0,0,0,16,2,6, 2,12,5,117,16,0,0,0,83,111,117,114,99,101,70,105, 108,101,76,111,97,100,101,114,99,1,0,0,0,0,0,0, 0,1,0,0,0,2,0,0,0,66,0,0,0,115,62,0, @@ -1750,7 +1750,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,108,111, - 97,100,95,109,111,100,117,108,101,166,2,0,0,115,2,0, + 97,100,95,109,111,100,117,108,101,173,2,0,0,115,2,0, 0,0,0,1,117,32,0,0,0,83,111,117,114,99,101,108, 101,115,115,70,105,108,101,76,111,97,100,101,114,46,108,111, 97,100,95,109,111,100,117,108,101,99,2,0,0,0,0,0, @@ -1786,7 +1786,7 @@ unsigned char _Py_M__importlib[] = { 0,102,111,117,110,100,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,103,101,116,95,99,111,100,101,169, + 112,62,117,8,0,0,0,103,101,116,95,99,111,100,101,176, 2,0,0,115,18,0,0,0,0,1,15,1,15,1,24,1, 15,1,15,1,13,1,4,2,18,1,117,29,0,0,0,83, 111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,97, @@ -1802,7 +1802,7 @@ unsigned char _Py_M__importlib[] = { 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,103,101,116,95,115,111,117,114,99,101, - 181,2,0,0,115,2,0,0,0,0,2,117,31,0,0,0, + 188,2,0,0,115,2,0,0,0,0,2,117,31,0,0,0, 83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111, 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,78, 40,7,0,0,0,117,8,0,0,0,95,95,110,97,109,101, @@ -1817,7 +1817,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,20,0,0,0,83, 111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,97, - 100,101,114,162,2,0,0,115,8,0,0,0,16,2,6,2, + 100,101,114,169,2,0,0,115,8,0,0,0,16,2,6,2, 12,3,12,12,117,20,0,0,0,83,111,117,114,99,101,108, 101,115,115,70,105,108,101,76,111,97,100,101,114,99,1,0, 0,0,0,0,0,0,1,0,0,0,5,0,0,0,66,0, @@ -1847,7 +1847,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,8,0,0,0,95,95, - 105,110,105,116,95,95,194,2,0,0,115,4,0,0,0,0, + 105,110,105,116,95,95,201,2,0,0,115,4,0,0,0,0, 1,9,1,117,28,0,0,0,69,120,116,101,110,115,105,111, 110,70,105,108,101,76,111,97,100,101,114,46,95,95,105,110, 105,116,95,95,99,2,0,0,0,0,0,0,0,4,0,0, @@ -1875,7 +1875,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,108,111, - 97,100,95,109,111,100,117,108,101,198,2,0,0,115,18,0, + 97,100,95,109,111,100,117,108,101,205,2,0,0,115,18,0, 0,0,0,5,15,1,3,1,21,1,16,1,8,1,3,1, 22,1,13,1,117,31,0,0,0,69,120,116,101,110,115,105, 111,110,70,105,108,101,76,111,97,100,101,114,46,108,111,97, @@ -1892,7 +1892,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,10,0,0,0,105,115,95,112,97,99,107,97,103, - 101,213,2,0,0,115,2,0,0,0,0,3,117,30,0,0, + 101,220,2,0,0,115,2,0,0,0,0,3,117,30,0,0, 0,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, 97,100,101,114,46,105,115,95,112,97,99,107,97,103,101,99, 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, @@ -1907,7 +1907,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,8,0,0, - 0,103,101,116,95,99,111,100,101,218,2,0,0,115,2,0, + 0,103,101,116,95,99,111,100,101,225,2,0,0,115,2,0, 0,0,0,3,117,28,0,0,0,69,120,116,101,110,115,105, 111,110,70,105,108,101,76,111,97,100,101,114,46,103,101,116, 95,99,111,100,101,99,2,0,0,0,0,0,0,0,2,0, @@ -1922,7 +1922,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,10,0,0,0,103,101,116, - 95,115,111,117,114,99,101,223,2,0,0,115,2,0,0,0, + 95,115,111,117,114,99,101,230,2,0,0,115,2,0,0,0, 0,3,117,30,0,0,0,69,120,116,101,110,115,105,111,110, 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,115, 111,117,114,99,101,78,40,12,0,0,0,117,8,0,0,0, @@ -1942,7 +1942,7 @@ unsigned char _Py_M__importlib[] = { 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,19,0,0,0, 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, - 100,101,114,186,2,0,0,115,16,0,0,0,16,6,6,2, + 100,101,114,193,2,0,0,115,16,0,0,0,16,6,6,2, 12,4,3,1,3,1,24,13,18,5,18,5,117,19,0,0, 0,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, 97,100,101,114,99,1,0,0,0,0,0,0,0,1,0,0, @@ -1987,7 +1987,7 @@ unsigned char _Py_M__importlib[] = { 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,112,97,116,104,95,104,111,111,107,115, - 235,2,0,0,115,18,0,0,0,0,7,12,1,12,1,13, + 242,2,0,0,115,18,0,0,0,0,7,12,1,12,1,13, 1,3,1,14,1,13,1,12,2,18,1,117,22,0,0,0, 80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,104, 95,104,111,111,107,115,99,3,0,0,0,0,0,0,0,4, @@ -2042,7 +2042,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,20,0,0,0,95, 112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97, - 99,104,101,253,2,0,0,115,22,0,0,0,0,13,12,1, + 99,104,101,4,3,0,0,115,22,0,0,0,0,13,12,1, 9,1,3,1,17,1,13,1,15,1,18,2,18,2,12,1, 16,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, @@ -2076,7 +2076,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,11,0,0,0,102,105,110,100,95,109,111,100,117, - 108,101,24,3,0,0,115,24,0,0,0,0,4,12,1,12, + 108,101,31,3,0,0,115,24,0,0,0,0,4,12,1,12, 1,13,1,3,1,19,1,13,1,8,1,6,1,15,1,6, 1,11,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, @@ -2093,7 +2093,7 @@ unsigned char _Py_M__importlib[] = { 115,95,95,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, - 10,0,0,0,80,97,116,104,70,105,110,100,101,114,231,2, + 10,0,0,0,80,97,116,104,70,105,110,100,101,114,238,2, 0,0,115,14,0,0,0,16,2,6,2,3,1,18,17,3, 1,18,26,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, @@ -2151,7 +2151,7 @@ unsigned char _Py_M__importlib[] = { 0,0,108,111,97,100,101,114,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,59,3,0, + 9,0,0,0,60,103,101,110,101,120,112,114,62,66,3,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, @@ -2164,7 +2164,7 @@ unsigned char _Py_M__importlib[] = { 6,0,0,0,108,111,97,100,101,114,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,61, + 62,117,9,0,0,0,60,103,101,110,101,120,112,114,62,68, 3,0,0,115,2,0,0,0,6,0,117,1,0,0,0,46, 105,1,0,0,0,78,105,255,255,255,255,40,8,0,0,0, 117,6,0,0,0,101,120,116,101,110,100,117,8,0,0,0, @@ -2184,7 +2184,7 @@ unsigned char _Py_M__importlib[] = { 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, - 52,3,0,0,115,24,0,0,0,0,4,6,1,6,1,22, + 59,3,0,0,115,24,0,0,0,0,4,6,1,6,1,22, 1,32,1,6,1,39,1,9,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, @@ -2199,7 +2199,7 @@ unsigned char _Py_M__importlib[] = { 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,17,0,0,0,105,110,118,97,108,105,100,97, - 116,101,95,99,97,99,104,101,115,70,3,0,0,115,2,0, + 116,101,95,99,97,99,104,101,115,77,3,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, @@ -2270,7 +2270,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,102,105, - 110,100,95,109,111,100,117,108,101,74,3,0,0,115,58,0, + 110,100,95,109,111,100,117,108,101,81,3,0,0,115,58,0, 0,0,0,2,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,17,2,6,1, @@ -2307,7 +2307,7 @@ unsigned char _Py_M__importlib[] = { 0,0,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,135,3, + 117,9,0,0,0,60,103,101,110,101,120,112,114,62,142,3, 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, @@ -2334,7 +2334,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,95,102,105,108,108,95,99, - 97,99,104,101,111,3,0,0,115,28,0,0,0,0,2,9, + 97,99,104,101,118,3,0,0,115,28,0,0,0,0,2,9, 1,15,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,100,101,114,46,95,102,105,108,108,95,99, @@ -2363,7 +2363,7 @@ unsigned char _Py_M__importlib[] = { 0,0,4,0,0,0,19,0,0,0,115,46,0,0,0,116, 0,0,124,0,0,131,1,0,115,33,0,116,1,0,100,1, 0,100,2,0,124,0,0,131,1,1,130,1,0,110,0,0, - 136,0,0,124,0,0,136,1,0,140,1,0,83,40,3,0, + 136,1,0,124,0,0,136,0,0,140,1,0,83,40,3,0, 0,0,117,45,0,0,0,80,97,116,104,32,104,111,111,107, 32,102,111,114,32,105,109,112,111,114,116,108,105,98,46,109, 97,99,104,105,110,101,114,121,46,70,105,108,101,70,105,110, @@ -2373,13 +2373,13 @@ unsigned char _Py_M__importlib[] = { 40,2,0,0,0,117,11,0,0,0,95,112,97,116,104,95, 105,115,100,105,114,117,11,0,0,0,73,109,112,111,114,116, 69,114,114,111,114,40,1,0,0,0,117,4,0,0,0,112, - 97,116,104,40,2,0,0,0,117,3,0,0,0,99,108,115, - 117,14,0,0,0,108,111,97,100,101,114,95,100,101,116,97, - 105,108,115,40,0,0,0,0,117,29,0,0,0,60,102,114, + 97,116,104,40,2,0,0,0,117,14,0,0,0,108,111,97, + 100,101,114,95,100,101,116,97,105,108,115,117,3,0,0,0, + 99,108,115,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,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,147,3,0,0,115,6,0,0,0, + 101,70,105,110,100,101,114,154,3,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, @@ -2388,12 +2388,12 @@ unsigned char _Py_M__importlib[] = { 99,108,115,117,14,0,0,0,108,111,97,100,101,114,95,100, 101,116,97,105,108,115,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,40,0,0,0,0,40,2,0,0,0,117,3,0, - 0,0,99,108,115,117,14,0,0,0,108,111,97,100,101,114, - 95,100,101,116,97,105,108,115,117,29,0,0,0,60,102,114, + 100,101,114,40,0,0,0,0,40,2,0,0,0,117,14,0, + 0,0,108,111,97,100,101,114,95,100,101,116,97,105,108,115, + 117,3,0,0,0,99,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,137,3,0,0,115,4,0,0, + 97,116,104,95,104,111,111,107,144,3,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,78,40, 10,0,0,0,117,8,0,0,0,95,95,110,97,109,101,95, @@ -2410,7 +2410,7 @@ unsigned char _Py_M__importlib[] = { 95,95,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,10, - 0,0,0,70,105,108,101,70,105,110,100,101,114,43,3,0, + 0,0,0,70,105,108,101,70,105,110,100,101,114,50,3,0, 0,115,12,0,0,0,16,7,6,2,12,18,12,4,12,37, 12,26,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,4,0, @@ -2450,7 +2450,7 @@ unsigned char _Py_M__importlib[] = { 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,112,97,116,104,95,104,111,111,107,115, - 166,3,0,0,115,10,0,0,0,0,3,3,1,20,1,13, + 173,3,0,0,115,10,0,0,0,0,3,3,1,20,1,13, 1,15,1,117,30,0,0,0,95,68,101,102,97,117,108,116, 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,2, @@ -2472,7 +2472,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,20, 0,0,0,95,112,97,116,104,95,105,109,112,111,114,116,101, - 114,95,99,97,99,104,101,175,3,0,0,115,2,0,0,0, + 114,95,99,97,99,104,101,182,3,0,0,115,2,0,0,0, 0,4,117,39,0,0,0,95,68,101,102,97,117,108,116,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,40,7, @@ -2489,7 +2489,7 @@ unsigned char _Py_M__importlib[] = { 95,95,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,68,101,102,97,117,108, - 116,80,97,116,104,70,105,110,100,101,114,161,3,0,0,115, + 116,80,97,116,104,70,105,110,100,101,114,168,3,0,0,115, 6,0,0,0,16,3,6,2,24,9,117,18,0,0,0,95, 68,101,102,97,117,108,116,80,97,116,104,70,105,110,100,101, 114,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0, @@ -2512,7 +2512,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,9,0,0,0,95,95,101,110,116, - 101,114,95,95,186,3,0,0,115,2,0,0,0,0,2,117, + 101,114,95,95,193,3,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,0,0,0,0,4,0,0,0,1,0,0, @@ -2531,7 +2531,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,8,0,0,0,95,95,101,120,105,116, - 95,95,190,3,0,0,115,2,0,0,0,0,2,117,27,0, + 95,95,197,3,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,0,0,0,95,95,110,97,109,101,95,95, @@ -2544,7 +2544,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,18,0,0,0,95,73,109,112, - 111,114,116,76,111,99,107,67,111,110,116,101,120,116,182,3, + 111,114,116,76,111,99,107,67,111,110,116,101,120,116,189,3, 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, @@ -2573,7 +2573,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,114,101,115,111,108,118,101,95,110,97,109,101,195,3, + 0,95,114,101,115,111,108,118,101,95,110,97,109,101,202,3, 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,5,0,0,0, @@ -2600,7 +2600,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,204,3,0,0,115,16,0,0,0,0, + 109,111,100,117,108,101,211,3,0,0,115,16,0,0,0,0, 2,13,1,13,1,18,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,0,4,0,0, @@ -2644,7 +2644,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,13,0,0,0,95,115, - 97,110,105,116,121,95,99,104,101,99,107,219,3,0,0,115, + 97,110,105,116,121,95,99,104,101,99,107,226,3,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,107,117,20, @@ -2712,7 +2712,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,14,0,0,0,95,102,105,110,100, - 95,97,110,100,95,108,111,97,100,240,3,0,0,115,62,0, + 95,97,110,100,95,108,111,97,100,247,3,0,0,115,62,0, 0,0,0,2,6,1,19,1,6,1,15,1,13,2,15,1, 11,2,13,1,3,1,13,1,13,1,22,1,26,1,15,1, 12,1,30,1,15,2,13,1,19,2,13,1,6,2,13,1, @@ -2772,7 +2772,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,95,103,99,100,95,105, - 109,112,111,114,116,25,4,0,0,115,28,0,0,0,0,9, + 109,112,111,114,116,32,4,0,0,115,28,0,0,0,0,9, 16,1,12,1,21,1,10,1,3,1,13,1,12,1,6,1, 9,1,21,1,8,1,13,1,5,1,117,11,0,0,0,95, 103,99,100,95,105,109,112,111,114,116,99,3,0,0,0,0, @@ -2816,7 +2816,7 @@ unsigned char _Py_M__importlib[] = { 111,100,117,108,101,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,65,4,0,0,115,2, + 0,60,103,101,110,101,120,112,114,62,72,4,0,0,115,2, 0,0,0,6,0,117,35,0,0,0,95,104,97,110,100,108, 101,95,102,114,111,109,108,105,115,116,46,60,108,111,99,97, 108,115,62,46,60,103,101,110,101,120,112,114,62,117,7,0, @@ -2834,7 +2834,7 @@ unsigned char _Py_M__importlib[] = { 101,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,50,4,0,0,115,22,0,0, + 102,114,111,109,108,105,115,116,57,4,0,0,115,22,0,0, 0,0,10,15,1,27,1,12,1,13,1,19,1,32,1,3, 1,29,1,13,1,12,1,117,16,0,0,0,95,104,97,110, 100,108,101,95,102,114,111,109,108,105,115,116,99,1,0,0, @@ -2866,7 +2866,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,17,0,0,0,95,99, - 97,108,99,95,95,95,112,97,99,107,97,103,101,95,95,73, + 97,108,99,95,95,95,112,97,99,107,97,103,101,95,95,80, 4,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,5,0,0,0,0, @@ -2931,7 +2931,7 @@ unsigned char _Py_M__importlib[] = { 102,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,10, - 0,0,0,95,95,105,109,112,111,114,116,95,95,88,4,0, + 0,0,0,95,95,105,109,112,111,114,116,95,95,95,4,0, 0,115,24,0,0,0,0,11,12,1,15,2,12,1,18,1, 6,3,12,1,24,1,6,1,4,2,35,1,40,2,117,10, 0,0,0,95,95,105,109,112,111,114,116,95,95,99,2,0, @@ -3008,7 +3008,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,9,0,0,0,60,103,101,110,101,120, - 112,114,62,149,4,0,0,115,2,0,0,0,6,0,117,25, + 112,114,62,156,4,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,88,32,71,67,67,105,1,0, @@ -3066,7 +3066,7 @@ unsigned char _Py_M__importlib[] = { 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,122,4,0,0,115,78,0,0,0,0,9, + 115,101,116,117,112,129,4,0,0,115,78,0,0,0,0,9, 6,1,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,15,2,27,1,13,1,5,1,13,1, @@ -3101,7 +3101,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,182,4,0,0,115,8,0,0,0,0,7,13,1, + 97,108,108,189,4,0,0,115,8,0,0,0,0,7,13,1, 9,1,9,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,105,110,117,6,0,0,0,100, @@ -3179,7 +3179,7 @@ unsigned char _Py_M__importlib[] = { 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,60,109, 111,100,117,108,101,62,8,0,0,0,115,114,0,0,0,6, - 14,6,3,12,13,12,16,12,13,12,12,12,12,12,10,12, + 21,6,3,12,13,12,16,12,13,12,12,12,12,12,10,12, 10,12,6,12,7,12,9,12,13,12,21,12,8,15,3,12, 11,6,2,9,2,6,1,6,1,18,2,15,19,12,8,12, 13,12,11,12,32,12,16,12,11,12,11,12,8,19,53,19, diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py index 38f3443..77489dc 100644 --- a/Tools/msi/msi.py +++ b/Tools/msi/msi.py @@ -454,6 +454,10 @@ def add_ui(db): ("SetDLLDirToTarget", 'DLLDIR=""', 751), ]) + # Prepend TARGETDIR to the system path, and remove it on uninstall. + add_data(db, "Environment", + [("PathAddition", "=-*Path", "[TARGETDIR];[~]", "REGISTRY.path")]) + # Execute Sequences add_data(db, "InstallExecuteSequence", [("InitialTargetDir", 'TARGETDIR=""', 750), @@ -677,11 +681,11 @@ def add_ui(db): c=features.xbutton("Advanced", "Advanced", None, 0.30) c.event("SpawnDialog", "AdvancedDlg") - c=features.text("ItemDescription", 140, 180, 210, 30, 3, + c=features.text("ItemDescription", 140, 180, 210, 40, 3, "Multiline description of the currently selected item.") c.mapping("SelectionDescription","Text") - c=features.text("ItemSize", 140, 210, 210, 45, 3, + c=features.text("ItemSize", 140, 225, 210, 33, 3, "The size of the currently selected item.") c.mapping("SelectionSize", "Text") @@ -835,7 +839,7 @@ def add_features(db): # (i.e. additional Python libraries) need to follow the parent feature. # Features that have no advertisement trigger (e.g. the test suite) # must not support advertisement - global default_feature, tcltk, htmlfiles, tools, testsuite, ext_feature, private_crt + global default_feature, tcltk, htmlfiles, tools, testsuite, ext_feature, private_crt, prepend_path default_feature = Feature(db, "DefaultFeature", "Python", "Python Interpreter and Libraries", 1, directory = "TARGETDIR") @@ -860,6 +864,15 @@ def add_features(db): testsuite = Feature(db, "Testsuite", "Test suite", "Python test suite (Lib/test/)", 11, parent = default_feature, attributes=2|8) + # prepend_path is an additional feature which is to be off by default. + # Since the default level for the above features is 1, this needs to be + # at least level higher. + prepend_path = Feature(db, "PrependPath", "Add python.exe to Path", + "Prepend [TARGETDIR] to the system Path variable. " + "This allows you to type 'python' into a command " + "prompt without needing the full path.", 13, + parent = default_feature, attributes=2|8, + level=2) def extract_msvcr90(): # Find the redistributable files @@ -1146,6 +1159,8 @@ def add_registry(db): "InstallPath"), ("REGISTRY.doc", msilib.gen_uuid(), "TARGETDIR", registry_component, None, "Documentation"), + ("REGISTRY.path", msilib.gen_uuid(), "TARGETDIR", registry_component, None, + None), ("REGISTRY.def", msilib.gen_uuid(), "TARGETDIR", registry_component, None, None)] + tcldata) # See "FeatureComponents Table". @@ -1162,6 +1177,7 @@ def add_registry(db): add_data(db, "FeatureComponents", [(default_feature.id, "REGISTRY"), (htmlfiles.id, "REGISTRY.doc"), + (prepend_path.id, "REGISTRY.path"), (ext_feature.id, "REGISTRY.def")] + tcldata ) diff --git a/Tools/scripts/import_diagnostics.py b/Tools/scripts/import_diagnostics.py new file mode 100755 index 0000000..1aa12b3 --- /dev/null +++ b/Tools/scripts/import_diagnostics.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +"""Miscellaneous diagnostics for the import system""" + +import sys +import argparse +from pprint import pprint + +def _dump_state(args): + print(sys.version) + print("sys.path:") + pprint(sys.path) + print("sys.meta_path") + pprint(sys.meta_path) + print("sys.path_hooks") + pprint(sys.path_hooks) + print("sys.path_importer_cache") + pprint(sys.path_importer_cache) + print("sys.modules:") + pprint(sys.modules) + +COMMANDS = ( + ("dump", "Dump import state", _dump_state), +) + +def _make_parser(): + parser = argparse.ArgumentParser() + sub = parser.add_subparsers(title="Commands") + for name, description, implementation in COMMANDS: + cmd = sub.add_parser(name, help=description) + cmd.set_defaults(command=implementation) + return parser + +def main(args): + parser = _make_parser() + args = parser.parse_args(args) + return args.command(args) + +if __name__ == "__main__": + sys.exit(main(sys.argv[1:])) |