From bc2fd447d20d6840f4d7feb3cb8c35ee4e2aaa06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20S=C5=82awecki?= Date: Sat, 18 Jul 2026 13:17:51 +0200 Subject: [PATCH 001/205] gh-151822: Colorize commands separately in the REPL (#151823) --- Lib/_colorize.py | 1 + Lib/_pyrepl/simple_interact.py | 1 + Lib/_pyrepl/utils.py | 9 +++++++ Lib/test/test_pyrepl/test_utils.py | 26 +++++++++++++++++++ ...6-21-00-00-57.gh-issue-151822.bOC2G56F.rst | 1 + 5 files changed, 38 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2026-06-21-00-00-57.gh-issue-151822.bOC2G56F.rst diff --git a/Lib/_colorize.py b/Lib/_colorize.py index 27eb7f13baca971..5f44a3aa05eb8f6 100644 --- a/Lib/_colorize.py +++ b/Lib/_colorize.py @@ -405,6 +405,7 @@ class Syntax(ThemeSection): keyword: str = ANSIColors.BOLD_BLUE keyword_constant: str = ANSIColors.BOLD_BLUE builtin: str = ANSIColors.CYAN + command: str = ANSIColors.BOLD_CYAN comment: str = ANSIColors.RED string: str = ANSIColors.GREEN number: str = ANSIColors.YELLOW diff --git a/Lib/_pyrepl/simple_interact.py b/Lib/_pyrepl/simple_interact.py index c169d0191bd8333..da557b254e52c48 100644 --- a/Lib/_pyrepl/simple_interact.py +++ b/Lib/_pyrepl/simple_interact.py @@ -68,6 +68,7 @@ def _clear_screen(): reader.scheduled_commands.append("clear_screen") +# Keep this in sync with _pyrepl.utils.COMMANDS REPL_COMMANDS = { "exit": _sitebuiltins.Quitter('exit', ''), "quit": _sitebuiltins.Quitter('quit' ,''), diff --git a/Lib/_pyrepl/utils.py b/Lib/_pyrepl/utils.py index 230dae35af665ab..8d68f4f66f2980e 100644 --- a/Lib/_pyrepl/utils.py +++ b/Lib/_pyrepl/utils.py @@ -24,6 +24,8 @@ IDENTIFIERS_AFTER = frozenset({"def", "class"}) KEYWORD_CONSTANTS = frozenset({"True", "False", "None"}) BUILTINS = frozenset({str(name) for name in dir(builtins) if not name.startswith('_')}) +# Keep this in sync with _pyrepl.simple_interact.REPL_COMMANDS +COMMANDS = frozenset({"exit", "quit", "copyright", "help", "clear"}) def THEME(**kwargs): @@ -235,6 +237,13 @@ def gen_colors_from_token_stream( ): span = Span.from_token(token, line_lengths) yield ColorSpan(span, "soft_keyword") + elif ( + token.string in COMMANDS + and (not prev_token or prev_token.type == T.INDENT) + and (not next_token or next_token.type == T.NEWLINE) + ): + span = Span.from_token(token, line_lengths) + yield ColorSpan(span, "command") elif ( token.string in BUILTINS and not (prev_token and prev_token.exact_type == T.DOT) diff --git a/Lib/test/test_pyrepl/test_utils.py b/Lib/test/test_pyrepl/test_utils.py index ebbd06213c69aff..e87d14304c82257 100644 --- a/Lib/test/test_pyrepl/test_utils.py +++ b/Lib/test/test_pyrepl/test_utils.py @@ -159,3 +159,29 @@ def test_gen_colors_keyword_highlighting(self): span_text = code[color.span.start:color.span.end + 1] actual_highlights.append((span_text, color.tag)) self.assertEqual(actual_highlights, expected_highlights) + + def test_gen_colors_command_highlighting(self): + cases = [ + # highlights bare command names (after stripping whitespaces) + ("exit", [("exit", "command")]), + ("quit", [("quit", "command")]), + ("copyright", [("copyright", "command")]), + ("help", [("help", "command")]), + ("clear", [("clear", "command")]), + (" clear ", [("clear", "command")]), + # no highlight when not the only token on the line + ("x = exit", [("=", "op"), ("exit", "builtin")]), + ("obj.exit", [(".", "op")]), + # falls through to builtin when called as function or used in expression + ("exit()", [("exit", "builtin"), ("(", "op"), (")", "op")]), + ("quit(0)", [("quit", "builtin"), ("(", "op"), ("0", "number"), (")", "op")]), + ("print(exit)", [("print", "builtin"), ("(", "op"), ("exit", "builtin"), (")", "op")]), + ] + for code, expected_highlights in cases: + with self.subTest(code=code): + colors = list(gen_colors(code)) + actual_highlights = [] + for color in colors: + span_text = code[color.span.start:color.span.end + 1] + actual_highlights.append((span_text, color.tag)) + self.assertEqual(actual_highlights, expected_highlights) diff --git a/Misc/NEWS.d/next/Library/2026-06-21-00-00-57.gh-issue-151822.bOC2G56F.rst b/Misc/NEWS.d/next/Library/2026-06-21-00-00-57.gh-issue-151822.bOC2G56F.rst new file mode 100644 index 000000000000000..70e7323c7e2ef6a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-06-21-00-00-57.gh-issue-151822.bOC2G56F.rst @@ -0,0 +1 @@ +Colorize ``exit``, ``quit``, ``copyright``, ``help``, and ``clear`` as commands in the :term:`REPL` when typed alone on a line. Patch by Bartosz Sławecki. From c5e97ed6351766deff488ea6d95e4aa0853943ae Mon Sep 17 00:00:00 2001 From: palakkhinvasara <109575264+palakkhinvasara@users.noreply.github.com> Date: Sat, 18 Jul 2026 17:12:38 +0530 Subject: [PATCH 002/205] gh-153808: Replace obsolete 'condition list' verbiage with 'expression list' in eval() docs (GH-153811) --- Doc/library/functions.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index a4d37beb436899a..8dbebf7048b5835 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -611,9 +611,10 @@ are always available. They are listed here in alphabetical order. untrusted user-supplied input will lead to security vulnerabilities. The *source* argument is parsed and evaluated as a Python expression - (technically speaking, a condition list) using the *globals* and *locals* - mappings as global and local namespace. If the *globals* dictionary is - present and does not contain a value for the key ``__builtins__``, a + (technically speaking, an :ref:`expression list `) + using the *globals* and *locals* mappings as global and local namespace. + If the *globals* dictionary is present and does not contain a value for the + key ``__builtins__``, a reference to the dictionary of the built-in module :mod:`builtins` is inserted under that key before *source* is parsed. Overriding ``__builtins__`` can be used to restrict or change the available @@ -633,6 +634,9 @@ are always available. They are listed here in alphabetical order. >>> eval('x+1') 2 + >>> eval("1, 2") + (1, 2) + This function can also be used to execute arbitrary code objects (such as those created by :func:`compile`). In this case, pass a code object instead of a string. If the code object has been compiled with ``'exec'`` as the From 2df69de5b36347d430aed0a959fa01e17b237331 Mon Sep 17 00:00:00 2001 From: Michael Newman Date: Sat, 18 Jul 2026 07:55:56 -0400 Subject: [PATCH 003/205] Fix duplicated words in "What's new in Python 3.15" documentation (#153922) --- Doc/whatsnew/3.15.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 8cba187bf31dd16..df2ca138db32b50 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -1225,7 +1225,7 @@ importlib.metadata would return an empty ``PackageMetadata`` object as if the file was present but empty. Now, a ``MetadataNotFound`` exception is raised. See `importlib_metadata#493 `_ - for background and rationale and and :gh:`143387` for rationale on the + for background and rationale and :gh:`143387` for rationale on the compatibility concerns. (Contributed by Jason R. Coombs.) From 7f8fc07e850d7b27a220c815db8c8abd545286c3 Mon Sep 17 00:00:00 2001 From: Jonathan Dung Date: Sat, 18 Jul 2026 20:10:37 +0800 Subject: [PATCH 004/205] gh-149319: Make `asyncio` REPL respect `-I` and `-E` options (#149405) --- Lib/asyncio/__main__.py | 4 ++-- .../Library/2026-05-06-23-13-40.gh-issue-149319.PLM93t.rst | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-05-06-23-13-40.gh-issue-149319.PLM93t.rst diff --git a/Lib/asyncio/__main__.py b/Lib/asyncio/__main__.py index 7f0565d0b8ddc76..708fdd595971e85 100644 --- a/Lib/asyncio/__main__.py +++ b/Lib/asyncio/__main__.py @@ -99,7 +99,7 @@ def run(self): console.write(banner) - if not sys.flags.isolated and (startup_path := os.getenv("PYTHONSTARTUP")): + if not sys.flags.ignore_environment and (startup_path := os.getenv("PYTHONSTARTUP")): sys.audit("cpython.run_startup", startup_path) try: import tokenize @@ -200,7 +200,7 @@ def interrupt(self) -> None: sys.audit("cpython.run_stdin") - if os.getenv('PYTHON_BASIC_REPL'): + if not sys.flags.ignore_environment and os.getenv('PYTHON_BASIC_REPL'): CAN_USE_PYREPL = False else: try: diff --git a/Misc/NEWS.d/next/Library/2026-05-06-23-13-40.gh-issue-149319.PLM93t.rst b/Misc/NEWS.d/next/Library/2026-05-06-23-13-40.gh-issue-149319.PLM93t.rst new file mode 100644 index 000000000000000..4018ec43f5a47d9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-05-06-23-13-40.gh-issue-149319.PLM93t.rst @@ -0,0 +1 @@ +The :mod:`asyncio` REPL now ignores :envvar:`PYTHONSTARTUP` and :envvar:`PYTHON_BASIC_REPL` when :option:`-E` or :option:`-I` is used. Patch by Jonathan Dung. From d7b171b6b32c823f28ba974e7c80c4fdfe78c98e Mon Sep 17 00:00:00 2001 From: thexai <58434170+thexai@users.noreply.github.com> Date: Sat, 18 Jul 2026 14:19:03 +0200 Subject: [PATCH 005/205] gh-152433: Windows: implement ``os.cpu_count()`` for UWP (GH-152479) --- .../Windows/2026-06-28-12-37-08.gh-issue-152433.FTMgqF.rst | 1 + Modules/posixmodule.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Windows/2026-06-28-12-37-08.gh-issue-152433.FTMgqF.rst diff --git a/Misc/NEWS.d/next/Windows/2026-06-28-12-37-08.gh-issue-152433.FTMgqF.rst b/Misc/NEWS.d/next/Windows/2026-06-28-12-37-08.gh-issue-152433.FTMgqF.rst new file mode 100644 index 000000000000000..bd295fb4dd603f5 --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2026-06-28-12-37-08.gh-issue-152433.FTMgqF.rst @@ -0,0 +1 @@ +Implement :func:`os.cpu_count` for Universal Windows Platform. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 36debd6fe7aa153..4c26ee52279abcd 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -16003,7 +16003,9 @@ os_cpu_count_impl(PyObject *module) # ifdef MS_WINDOWS_DESKTOP ncpu = GetActiveProcessorCount(ALL_PROCESSOR_GROUPS); # else - ncpu = 0; + SYSTEM_INFO sysinfo; + GetSystemInfo(&sysinfo); + ncpu = sysinfo.dwNumberOfProcessors; # endif #elif defined(__hpux) From 0a09dafb03dae17895d4a86af04985e373bbdceb Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Sat, 18 Jul 2026 14:28:43 +0200 Subject: [PATCH 006/205] gh-153236: Propagate lazy submodule import errors (#153237) --- .../pycore_global_objects_fini_generated.h | 1 + Include/internal/pycore_global_strings.h | 1 + Include/internal/pycore_import.h | 9 +- .../internal/pycore_runtime_init_generated.h | 1 + .../internal/pycore_unicodeobject_generated.h | 4 + Lib/importlib/_bootstrap.py | 17 +- Lib/test/test_lazy_import/__init__.py | 148 ++++++++++-------- .../data/missing_dependency.py | 1 + .../data/self_named_module_not_found.py | 1 + ...-00.gh-issue-153236.lazy-import-errors.rst | 2 + Objects/moduleobject.c | 11 +- Python/import.c | 71 ++++++--- 12 files changed, 172 insertions(+), 95 deletions(-) create mode 100644 Lib/test/test_lazy_import/data/missing_dependency.py create mode 100644 Lib/test/test_lazy_import/data/self_named_module_not_found.py create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-07-06-16-30-00.gh-issue-153236.lazy-import-errors.rst diff --git a/Include/internal/pycore_global_objects_fini_generated.h b/Include/internal/pycore_global_objects_fini_generated.h index 7d952a1e52561a6..6df1c01f151f68e 100644 --- a/Include/internal/pycore_global_objects_fini_generated.h +++ b/Include/internal/pycore_global_objects_fini_generated.h @@ -1544,6 +1544,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) { _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_filters)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_finalizing)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_find_and_load)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_find_and_load_lazy_submodule)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_fix_up_module)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_flags_)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_get_sourcefile)); diff --git a/Include/internal/pycore_global_strings.h b/Include/internal/pycore_global_strings.h index 8a8bbc3b6d05bf7..873344fbdcb67b0 100644 --- a/Include/internal/pycore_global_strings.h +++ b/Include/internal/pycore_global_strings.h @@ -267,6 +267,7 @@ struct _Py_global_strings { STRUCT_FOR_ID(_filters) STRUCT_FOR_ID(_finalizing) STRUCT_FOR_ID(_find_and_load) + STRUCT_FOR_ID(_find_and_load_lazy_submodule) STRUCT_FOR_ID(_fix_up_module) STRUCT_FOR_ID(_flags_) STRUCT_FOR_ID(_get_sourcefile) diff --git a/Include/internal/pycore_import.h b/Include/internal/pycore_import.h index a1078828afa572e..669e328c266d00f 100644 --- a/Include/internal/pycore_import.h +++ b/Include/internal/pycore_import.h @@ -39,8 +39,13 @@ extern PyObject * _PyImport_GetAbsName( // Symbol is exported for the JIT on Windows builds. PyAPI_FUNC(PyObject *) _PyImport_LoadLazyImportTstate( PyThreadState *tstate, PyObject *lazy_import); -extern PyObject * _PyImport_TryLoadLazySubmodule( - PyObject *mod_name, PyObject *attr_name); +typedef enum { + _Py_LAZY_SUBMODULE_ERROR = -1, + _Py_LAZY_SUBMODULE_NOT_FOUND = 0, + _Py_LAZY_SUBMODULE_LOADED = 1, +} _PyLazySubmoduleImportResult; +extern _PyLazySubmoduleImportResult _PyImport_TryLoadLazySubmodule( + PyObject *mod_name, PyObject *attr_name, PyObject **result); extern PyObject * _PyImport_LazyImportModuleLevelObject( PyThreadState *tstate, PyObject *name, PyObject *builtins, PyObject *globals, PyObject *locals, PyObject *fromlist, int level); diff --git a/Include/internal/pycore_runtime_init_generated.h b/Include/internal/pycore_runtime_init_generated.h index 366d2d300fb4780..378f27ca17b5079 100644 --- a/Include/internal/pycore_runtime_init_generated.h +++ b/Include/internal/pycore_runtime_init_generated.h @@ -1542,6 +1542,7 @@ extern "C" { INIT_ID(_filters), \ INIT_ID(_finalizing), \ INIT_ID(_find_and_load), \ + INIT_ID(_find_and_load_lazy_submodule), \ INIT_ID(_fix_up_module), \ INIT_ID(_flags_), \ INIT_ID(_get_sourcefile), \ diff --git a/Include/internal/pycore_unicodeobject_generated.h b/Include/internal/pycore_unicodeobject_generated.h index 00d6297432b5fca..daf6840aa47f328 100644 --- a/Include/internal/pycore_unicodeobject_generated.h +++ b/Include/internal/pycore_unicodeobject_generated.h @@ -848,6 +848,10 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(_find_and_load_lazy_submodule); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(_fix_up_module); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index eb1686a5c8217c6..081bb98ec2a9723 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -1254,7 +1254,7 @@ def _sanity_check(name, package, level): _ERR_MSG_PREFIX = 'No module named ' -def _find_and_load_unlocked(name, import_): +def _find_and_load_unlocked(name, import_, *, lazy_submodule=False): path = None sys.audit( "import", @@ -1277,6 +1277,8 @@ def _find_and_load_unlocked(name, import_): try: path = parent_module.__path__ except AttributeError: + if lazy_submodule: + return None msg = f'{_ERR_MSG_PREFIX}{name!r}; {parent!r} is not a package' raise ModuleNotFoundError(msg, name=name) from None parent_spec = parent_module.__spec__ @@ -1289,6 +1291,8 @@ def _find_and_load_unlocked(name, import_): child = name.rpartition('.')[2] spec = _find_spec(name, path) if spec is None: + if lazy_submodule: + return None raise ModuleNotFoundError(f'{_ERR_MSG_PREFIX}{name!r}', name=name) else: if parent_spec: @@ -1320,7 +1324,7 @@ def _find_and_load_unlocked(name, import_): _NEEDS_LOADING = object() -def _find_and_load(name, import_): +def _find_and_load(name, import_, *, lazy_submodule=False): """Find and load the module.""" # Optimization: we avoid unneeded module locking if the module @@ -1337,7 +1341,8 @@ def _find_and_load(name, import_): with lock_manager: module = sys.modules.get(name, _NEEDS_LOADING) if module is _NEEDS_LOADING: - return _find_and_load_unlocked(name, import_) + return _find_and_load_unlocked( + name, import_, lazy_submodule=lazy_submodule) # Optimization: only call _bootstrap._lock_unlock_module() if # module.__spec__._initializing is True. @@ -1351,7 +1356,7 @@ def _find_and_load(name, import_): # to preserve normal semantics: the caller gets the exception from # the actual import failure rather than a synthetic error. if sys.modules.get(name) is not module: - return _find_and_load(name, import_) + return _find_and_load(name, import_, lazy_submodule=lazy_submodule) if module is None: message = f'import of {name} halted; None in sys.modules' @@ -1360,6 +1365,10 @@ def _find_and_load(name, import_): return module +def _find_and_load_lazy_submodule(name, import_): + return _find_and_load(name, import_, lazy_submodule=True) + + def _gcd_import(name, package=None, level=0): """Import and return the module based on its name, the package the call is being made from, and the level adjustment. diff --git a/Lib/test/test_lazy_import/__init__.py b/Lib/test/test_lazy_import/__init__.py index cf1d3eb793a8b94..899ecec1ba2afa4 100644 --- a/Lib/test/test_lazy_import/__init__.py +++ b/Lib/test/test_lazy_import/__init__.py @@ -676,52 +676,35 @@ def test_lazy_modules_tracks_lazy_imports(self): @support.requires_subprocess() class ErrorHandlingTests(LazyImportTestCase): - """Tests for error handling during lazy import reification. + """Tests for error handling during lazy import reification.""" - PEP 810: Errors during reification should show exception chaining with - both the lazy import definition location and the access location. - """ - - def test_import_error_shows_chained_traceback(self): + def test_missing_lazy_submodule_raises_attribute_error(self): """Accessing a nonexistent lazy submodule via parent attr raises AttributeError.""" code = textwrap.dedent(""" - import sys lazy import test.test_lazy_import.data.nonexistent_module try: - x = test.test_lazy_import.data.nonexistent_module - except AttributeError as e: - print("OK") + _ = test.test_lazy_import.data.nonexistent_module + except AttributeError: + pass + else: + raise AssertionError("AttributeError was not raised") """) - result = subprocess.run( - [sys.executable, "-c", code], - capture_output=True, - text=True - ) - self.assertEqual(result.returncode, 0, f"stdout: {result.stdout}, stderr: {result.stderr}") - self.assertIn("OK", result.stdout) + assert_python_ok("-c", code) - def test_attribute_error_on_from_import_shows_chained_traceback(self): + def test_missing_lazy_from_import_shows_chained_traceback(self): """Accessing missing attribute from lazy from-import should chain errors.""" - # Tests 'lazy from module import nonexistent' behavior code = textwrap.dedent(""" - import sys lazy from test.test_lazy_import.data.basic2 import nonexistent_name try: - x = nonexistent_name + _ = nonexistent_name except ImportError as e: - # PEP 810: Enhanced error reporting through exception chaining assert e.__cause__ is not None, "Expected chained exception" - print("OK") + else: + raise AssertionError("ImportError was not raised") """) - result = subprocess.run( - [sys.executable, "-c", code], - capture_output=True, - text=True - ) - self.assertEqual(result.returncode, 0, f"stdout: {result.stdout}, stderr: {result.stderr}") - self.assertIn("OK", result.stdout) + assert_python_ok("-c", code) def test_reification_retries_on_failure(self): """Failed reification should allow retry on subsequent access. @@ -731,53 +714,92 @@ def test_reification_retries_on_failure(self): """ code = textwrap.dedent(""" import sys - import types lazy import test.test_lazy_import.data.broken_module - # First access - should fail try: - x = test.test_lazy_import.data.broken_module - except AttributeError: - pass + _ = test.test_lazy_import.data.broken_module + except ValueError as exc: + assert str(exc) == "This module always fails to import", exc + else: + raise AssertionError("ValueError was not raised") + + assert "test.test_lazy_import.data.broken_module" not in sys.modules - # The lazy object should still be a lazy proxy (not reified) - g = globals() - lazy_obj = g['test'] - # The root 'test' binding should still allow retry - # Second access - should also fail (retry the import) try: - x = test.test_lazy_import.data.broken_module - except AttributeError: - print("OK - retry worked") + _ = test.test_lazy_import.data.broken_module + except ValueError as exc: + assert str(exc) == "This module always fails to import", exc + else: + raise AssertionError("ValueError was not raised") """) - result = subprocess.run( - [sys.executable, "-c", code], - capture_output=True, - text=True - ) - self.assertEqual(result.returncode, 0, f"stdout: {result.stdout}, stderr: {result.stderr}") - self.assertIn("OK", result.stdout) + assert_python_ok("-c", code) - def test_error_during_module_execution_propagates(self): - """Errors in module code during reification should propagate correctly.""" + def test_lazy_submodule_traceback_hides_importlib_frames(self): code = textwrap.dedent(""" - import sys + import traceback + lazy import test.test_lazy_import.data.broken_module try: _ = test.test_lazy_import.data.broken_module - print("FAIL - should have raised") - except AttributeError: - print("OK") + except ValueError as exc: + frames = traceback.extract_tb(exc.__traceback__) + assert [frame.name for frame in frames] == ["", ""], frames + assert frames[0].filename == "", frames + assert frames[1].filename.endswith("broken_module.py"), frames + else: + raise AssertionError("ValueError was not raised") """) - result = subprocess.run( - [sys.executable, "-c", code], - capture_output=True, - text=True - ) - self.assertEqual(result.returncode, 0, f"stdout: {result.stdout}, stderr: {result.stderr}") - self.assertIn("OK", result.stdout) + assert_python_ok("-c", code) + + def test_module_not_found_during_module_execution_propagates(self): + code = textwrap.dedent(""" + lazy import test.test_lazy_import.data.missing_dependency + + try: + _ = test.test_lazy_import.data.missing_dependency + except ModuleNotFoundError as exc: + assert exc.name == "missing_dependency_for_lazy_import_test", exc.name + assert str(exc) == "No module named 'missing_dependency_for_lazy_import_test'", exc + else: + raise AssertionError("ModuleNotFoundError was not raised") + """) + assert_python_ok("-c", code) + + def test_self_named_module_not_found_during_module_execution_propagates(self): + code = textwrap.dedent(""" + lazy import test.test_lazy_import.data.self_named_module_not_found + + try: + _ = test.test_lazy_import.data.self_named_module_not_found + except ModuleNotFoundError as exc: + assert exc.name == "test.test_lazy_import.data.self_named_module_not_found", exc.name + assert str(exc) == "boom", exc + else: + raise AssertionError("ModuleNotFoundError was not raised") + """) + assert_python_ok("-c", code) + + def test_none_in_sys_modules_during_submodule_resolution_propagates(self): + code = textwrap.dedent(""" + import sys + + sys.modules["test.test_lazy_import.data.blocked_module"] = None + lazy import test.test_lazy_import.data.blocked_module + + try: + _ = test.test_lazy_import.data.blocked_module + except ModuleNotFoundError as exc: + assert exc.name == "test.test_lazy_import.data.blocked_module", exc.name + assert str(exc) == ( + "import of test.test_lazy_import.data.blocked_module " + "halted; None in sys.modules" + ), exc + else: + raise AssertionError("ModuleNotFoundError was not raised") + """) + assert_python_ok("-c", code) def test_circular_lazy_import_does_not_crash_for_gh_144727(self): with tempfile.TemporaryDirectory() as tmpdir: diff --git a/Lib/test/test_lazy_import/data/missing_dependency.py b/Lib/test/test_lazy_import/data/missing_dependency.py new file mode 100644 index 000000000000000..aa2f2d0f65f73fe --- /dev/null +++ b/Lib/test/test_lazy_import/data/missing_dependency.py @@ -0,0 +1 @@ +import missing_dependency_for_lazy_import_test diff --git a/Lib/test/test_lazy_import/data/self_named_module_not_found.py b/Lib/test/test_lazy_import/data/self_named_module_not_found.py new file mode 100644 index 000000000000000..941230d5da211d8 --- /dev/null +++ b/Lib/test/test_lazy_import/data/self_named_module_not_found.py @@ -0,0 +1 @@ +raise ModuleNotFoundError("boom", name=__name__) diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-07-06-16-30-00.gh-issue-153236.lazy-import-errors.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-06-16-30-00.gh-issue-153236.lazy-import-errors.rst new file mode 100644 index 000000000000000..c5043af0a4f80b7 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-06-16-30-00.gh-issue-153236.lazy-import-errors.rst @@ -0,0 +1,2 @@ +Propagate exceptions raised while importing lazy submodules instead of +reporting them as missing attributes. diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index f447403ef31b43a..b8cd6025c20ba56 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -1299,8 +1299,6 @@ _PyModule_IsPossiblyShadowing(PyObject *origin) return result; } -// Check if `name` is a lazily pending submodule of module `m`. -// Returns a new reference on success, or NULL with no error set. static PyObject * try_load_lazy_submodule(PyModuleObject *m, PyObject *name) { @@ -1313,10 +1311,13 @@ try_load_lazy_submodule(PyModuleObject *m, PyObject *name) Py_DECREF(mod_name); return NULL; } - PyObject *result = _PyImport_TryLoadLazySubmodule(mod_name, name); + PyObject *result = NULL; + _PyLazySubmoduleImportResult status = + _PyImport_TryLoadLazySubmodule(mod_name, name, &result); Py_DECREF(mod_name); - if (result == NULL) { - PyErr_Clear(); + if (status != _Py_LAZY_SUBMODULE_LOADED) { + assert(status == _Py_LAZY_SUBMODULE_ERROR || + status == _Py_LAZY_SUBMODULE_NOT_FOUND); return NULL; } if (PyDict_SetItem(m->md_dict, name, result) < 0) { diff --git a/Python/import.c b/Python/import.c index 63e23e21beb1266..5ca78a971fa54c6 100644 --- a/Python/import.c +++ b/Python/import.c @@ -4103,7 +4103,9 @@ _PyImport_LoadLazyImportTstate(PyThreadState *tstate, PyObject *lazy_import) } static PyObject * -import_find_and_load(PyThreadState *tstate, PyObject *abs_name) +import_find_and_load_with_name(PyThreadState *tstate, PyObject *abs_name, + PyObject *find_and_load, + PyObject *not_found) { PyObject *mod = NULL; PyInterpreterState *interp = tstate->interp; @@ -4130,12 +4132,14 @@ import_find_and_load(PyThreadState *tstate, PyObject *abs_name) if (PyDTrace_IMPORT_FIND_LOAD_START_ENABLED()) PyDTrace_IMPORT_FIND_LOAD_START(PyUnicode_AsUTF8(abs_name)); - mod = PyObject_CallMethodObjArgs(IMPORTLIB(interp), &_Py_ID(_find_and_load), + mod = PyObject_CallMethodObjArgs(IMPORTLIB(interp), find_and_load, abs_name, IMPORT_FUNC(interp), NULL); - if (PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED()) + if (PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED()) { + int found = mod != NULL && mod != not_found; PyDTrace_IMPORT_FIND_LOAD_DONE(PyUnicode_AsUTF8(abs_name), - mod != NULL); + found); + } if (import_time) { PyTime_t t2; @@ -4156,6 +4160,13 @@ import_find_and_load(PyThreadState *tstate, PyObject *abs_name) #undef accumulated } +static PyObject * +import_find_and_load(PyThreadState *tstate, PyObject *abs_name) +{ + return import_find_and_load_with_name( + tstate, abs_name, &_Py_ID(_find_and_load), NULL); +} + static PyObject * get_abs_name(PyThreadState *tstate, PyObject *name, PyObject *globals, int level) @@ -4439,52 +4450,70 @@ register_from_lazy_on_parent(PyThreadState *tstate, PyObject *abs_name, return res; } -PyObject * -_PyImport_TryLoadLazySubmodule(PyObject *mod_name, PyObject *attr_name) +_PyLazySubmoduleImportResult +_PyImport_TryLoadLazySubmodule(PyObject *mod_name, PyObject *attr_name, + PyObject **result) { - PyInterpreterState *interp = _PyInterpreterState_GET(); + assert(result != NULL); + *result = NULL; + + PyThreadState *tstate = _PyThreadState_GET(); + PyInterpreterState *interp = tstate->interp; PyObject *lazy_pending = LAZY_PENDING_SUBMODULES(interp); if (lazy_pending == NULL) { - return NULL; + return _Py_LAZY_SUBMODULE_NOT_FOUND; } PyObject *pending_set; int rc = PyDict_GetItemRef(lazy_pending, mod_name, &pending_set); - if (rc <= 0) { - return NULL; + if (rc < 0) { + return _Py_LAZY_SUBMODULE_ERROR; + } + if (rc == 0) { + return _Py_LAZY_SUBMODULE_NOT_FOUND; } int contains = PySet_Contains(pending_set, attr_name); - if (contains <= 0) { + if (contains < 0) { Py_DECREF(pending_set); - return NULL; + return _Py_LAZY_SUBMODULE_ERROR; + } + if (contains == 0) { + Py_DECREF(pending_set); + return _Py_LAZY_SUBMODULE_NOT_FOUND; } PyObject *full_name = PyUnicode_FromFormat("%U.%U", mod_name, attr_name); if (full_name == NULL) { Py_DECREF(pending_set); - return NULL; + return _Py_LAZY_SUBMODULE_ERROR; } - PyObject *mod = PyImport_ImportModuleLevelObject( - full_name, NULL, NULL, NULL, 0); + PyObject *mod = import_find_and_load_with_name( + tstate, full_name, &_Py_ID(_find_and_load_lazy_submodule), Py_None); if (mod == NULL) { Py_DECREF(pending_set); Py_DECREF(full_name); - return NULL; + remove_importlib_frames(tstate); + return _Py_LAZY_SUBMODULE_ERROR; + } + if (mod == Py_None) { + Py_DECREF(mod); + Py_DECREF(pending_set); + Py_DECREF(full_name); + return _Py_LAZY_SUBMODULE_NOT_FOUND; } - Py_DECREF(mod); if (PySet_Discard(pending_set, attr_name) < 0) { + Py_DECREF(mod); Py_DECREF(pending_set); Py_DECREF(full_name); - return NULL; + return _Py_LAZY_SUBMODULE_ERROR; } Py_DECREF(pending_set); - - PyObject *submod = PyImport_GetModule(full_name); Py_DECREF(full_name); - return submod; + *result = mod; + return _Py_LAZY_SUBMODULE_LOADED; } PyObject * From d12434b4661c6be7430002e66a54d920f7d4ca7f Mon Sep 17 00:00:00 2001 From: Vyron Vasileiadis Date: Sat, 18 Jul 2026 15:29:23 +0300 Subject: [PATCH 007/205] gh-153926: Fix documented parameter name for `calendar.calendar` and `calendar.prcal` (#153927) gh-153926: Fix documented parameter name for calendar.calendar and calendar.prcal calendar.calendar() and calendar.prcal() are bound methods of the module's TextCalendar instance, whose first parameter is named theyear, but the documentation named it year, so the documented keyword raised TypeError. Update the documentation to match the real signature, which also matches the sibling month() and prmonth() functions. --- Doc/library/calendar.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doc/library/calendar.rst b/Doc/library/calendar.rst index 60cd214b4501010..b486425204946dd 100644 --- a/Doc/library/calendar.rst +++ b/Doc/library/calendar.rst @@ -430,12 +430,12 @@ For simple text calendars this module provides the following functions. of the :class:`TextCalendar` class. -.. function:: prcal(year, w=0, l=0, c=6, m=3) +.. function:: prcal(theyear, w=0, l=0, c=6, m=3) Prints the calendar for an entire year as returned by :func:`calendar`. -.. function:: calendar(year, w=2, l=1, c=6, m=3) +.. function:: calendar(theyear, w=2, l=1, c=6, m=3) Returns a 3-column calendar for an entire year as a multi-line string using the :meth:`~TextCalendar.formatyear` of the :class:`TextCalendar` class. From 0e81ef93ebd87607c8d946e7dfb6940c5fe9f083 Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Sat, 18 Jul 2026 08:30:50 -0400 Subject: [PATCH 008/205] gh-153903: Add a `ctypes` decorator for generating function pointers using annotations (GH-153904) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tomas R. Co-authored-by: Bartosz Sławecki --- Doc/library/ctypes.rst | 40 +++++++++++++++++++ Doc/whatsnew/3.16.rst | 3 ++ Lib/ctypes/util.py | 18 +++++++++ Lib/test/test_ctypes/test_funcptr.py | 21 ++++++++++ ...-07-18-06-16-55.gh-issue-153903.mJFrs8.rst | 2 + 5 files changed, 84 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2026-07-18-06-16-55.gh-issue-153903.mJFrs8.rst diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst index 80868a8b2418f35..34c8636abaa925d 100644 --- a/Doc/library/ctypes.rst +++ b/Doc/library/ctypes.rst @@ -694,6 +694,46 @@ through the :attr:`~_CFuncPtr.errcheck` attribute; see the reference manual for details. +Specifying function pointers using type annotations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. decorator:: wrap_dll_function(dll) + :module: ctypes.util + + A :term:`decorator` that generates :attr:`~ctypes._CFuncPtr.argtypes` and + :attr:`~ctypes._CFuncPtr.restype` from a function signature, using the + :attr:`~function.__name__` of the function and its :term:`type annotations `. + + The decorated function should look like this:: + + @wrap_dll_function(dll_to_wrap) + def function_ptr_name(arg_name: ctypes_type, ...) -> ctypes_type: + # There should be no body + pass + + The body of the decorated function is ignored, and any parameters that are + missing type annotations are skipped. The names of the parameters are ignored + and do not have to match the underlying C implementation. + + If the decorated function does not have a return type annotation, a + :exc:`ValueError` is raised. If the name of the function does not exist + in *dll*, an :exc:`AttributeError` is raised. + + For example:: + + import ctypes + from ctypes.util import wrap_dll_function + + @wrap_dll_function(ctypes.pythonapi) + def PyObject_GetAttrString(op: ctypes.py_object, attr: ctypes.c_char_p) -> ctypes.py_object: + pass + + PyObject_GetAttrString(42, b"real") + + + .. versionadded:: next + + .. _ctypes-passing-pointers: Passing pointers (or: passing parameters by reference) diff --git a/Doc/whatsnew/3.16.rst b/Doc/whatsnew/3.16.rst index 5cb1a86dac46233..e6565b186a598c5 100644 --- a/Doc/whatsnew/3.16.rst +++ b/Doc/whatsnew/3.16.rst @@ -237,6 +237,9 @@ ctypes from an annotation-based syntax, similar to how the :mod:`dataclasses` module is used. (Contributed by Peter Bierma in :gh:`104533`.) +* Add :func:`ctypes.util.wrap_dll_function` for generating function pointers + through a function signature. + (Contributed by Peter Bierma in :gh:`153903`.) encodings diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index 51c0d441bc8df0e..b035bfb99feee0a 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -574,6 +574,24 @@ def inner(decorated_class): return process_the_struct(class_or_none) + +def wrap_dll_function(dll): + def decorator(func): + name = func.__name__ + ptr = getattr(dll, name) + annotations = annotationlib.get_annotations(func) + + try: + restype = annotations.pop("return") + except KeyError as error: + raise ValueError(f"{name!r} missing return type annotation") from error + + ptr.restype = restype + ptr.argtypes = tuple(annotations.values()) + return ptr + + return decorator + ################################################################ # test code diff --git a/Lib/test/test_ctypes/test_funcptr.py b/Lib/test/test_ctypes/test_funcptr.py index be641da30eadae1..94d03ad553d2227 100644 --- a/Lib/test/test_ctypes/test_funcptr.py +++ b/Lib/test/test_ctypes/test_funcptr.py @@ -2,6 +2,7 @@ import unittest from ctypes import (CDLL, Structure, CFUNCTYPE, sizeof, _CFuncPtr, c_void_p, c_char_p, c_char, c_int, c_uint, c_long) +from ctypes.util import wrap_dll_function from test.support import import_helper _ctypes_test = import_helper.import_module("_ctypes_test") from ._support import (_CData, PyCFuncPtrType, Py_TPFLAGS_DISALLOW_INSTANTIATION, @@ -130,6 +131,26 @@ def c_string(init): def test_abstract(self): self.assertRaises(TypeError, _CFuncPtr, 13, "name", 42, "iid") + def test_wrap_dll_function(self): + @wrap_dll_function(ctypes.pythonapi) + def PyObject_GetAttr(op: ctypes.py_object, attr: ctypes.py_object) -> ctypes.py_object: + pass + + class Foo: + a = "abc" + + self.assertEqual(PyObject_GetAttr(Foo, "a"), "abc") + + with self.assertRaises(AttributeError): + @wrap_dll_function(ctypes.pythonapi) + def noexist(): + pass + + with self.assertRaisesRegex(ValueError, "'PyObject_GetAttrString' missing return type annotation"): + @wrap_dll_function(ctypes.pythonapi) + def PyObject_GetAttrString(op: ctypes.py_object, attr: ctypes.c_char_p): + pass + if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS.d/next/Library/2026-07-18-06-16-55.gh-issue-153903.mJFrs8.rst b/Misc/NEWS.d/next/Library/2026-07-18-06-16-55.gh-issue-153903.mJFrs8.rst new file mode 100644 index 000000000000000..00f89b471175f45 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-18-06-16-55.gh-issue-153903.mJFrs8.rst @@ -0,0 +1,2 @@ +Add :func:`ctypes.util.wrap_dll_function` for creating +:class:`~ctypes._CFuncPtr` objects from a function signature. From 7486c7b3df7ff26ac23390947102f2604f55243a Mon Sep 17 00:00:00 2001 From: Marta Date: Sat, 18 Jul 2026 14:46:23 +0200 Subject: [PATCH 009/205] gh-153934: Correct documented paramemeter in `calendar.weekheader` from `n` to `width` (GH-153942) --- Doc/library/calendar.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doc/library/calendar.rst b/Doc/library/calendar.rst index b486425204946dd..fb0ffc73b48c40c 100644 --- a/Doc/library/calendar.rst +++ b/Doc/library/calendar.rst @@ -400,9 +400,9 @@ For simple text calendars this module provides the following functions. *month* (``1``--``12``), *day* (``1``--``31``). -.. function:: weekheader(n) +.. function:: weekheader(width) - Return a header containing abbreviated weekday names. *n* specifies the width in + Return a header containing abbreviated weekday names. *width* specifies the width in characters for one weekday. From 87f8fc8e00704396a0c598c8843cdde373c0ea4c Mon Sep 17 00:00:00 2001 From: Jan Kaliszewski Date: Sat, 18 Jul 2026 15:01:31 +0200 Subject: [PATCH 010/205] gh-122102: Fix/improve docs of descriptor-related tools in `inspect` (GH-122104) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> --- Doc/library/inspect.rst | 39 +++++++++++++++++++++++++-------------- Lib/inspect.py | 25 +++++++++++++++---------- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index a0f7379b12a8a62..eddc98824d48106 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -635,8 +635,7 @@ attributes (see :ref:`import-mod-attrs` for module attributes): .. function:: ismethoddescriptor(object) Return ``True`` if the object is a method descriptor, but not if - :func:`ismethod`, :func:`isclass`, :func:`isfunction` or :func:`isbuiltin` - are true. + :func:`isclass`, :func:`ismethod` or :func:`isfunction` is true. This, for example, is true of ``int.__add__``. An object passing this test has a :meth:`~object.__get__` method, but not a :meth:`~object.__set__` @@ -644,10 +643,10 @@ attributes (see :ref:`import-mod-attrs` for module attributes): attributes varies. A :attr:`~definition.__name__` attribute is usually sensible, and :attr:`~definition.__doc__` often is. - Methods implemented via descriptors that also pass one of the other tests - return ``False`` from the :func:`ismethoddescriptor` test, simply because the - other tests promise more -- you can, e.g., count on having the - :attr:`~method.__func__` attribute (etc) when an object passes + Method descriptors that also pass any of the other tests (:func:`!isclass`, + :func:`!ismethod` or :func:`!isfunction`) make this function return ``False``, + simply because those other tests promise more -- you can, for example, count + on having the :attr:`~method.__func__` attribute when an object passes :func:`ismethod`. .. versionchanged:: 3.13 @@ -658,16 +657,28 @@ attributes (see :ref:`import-mod-attrs` for module attributes): .. function:: isdatadescriptor(object) - Return ``True`` if the object is a data descriptor. + Return ``True`` if the object is a data descriptor, but not if + :func:`isclass`, :func:`ismethod` or :func:`isfunction` is true. - Data descriptors have a :attr:`~object.__set__` or a :attr:`~object.__delete__` method. - Examples are properties (defined in Python), getsets, and members. The - latter two are defined in C and there are more specific tests available for - those types, which is robust across Python implementations. Typically, data - descriptors will also have :attr:`~definition.__name__` and :attr:`!__doc__` attributes - (properties, getsets, and members have both of these attributes), but this is - not guaranteed. + Data descriptors always have a :meth:`~object.__set__` method and/or + a :meth:`~object.__delete__` method. Optionally, they may also have a + :meth:`~object.__get__` method. + Examples of data descriptors are :func:`properties `, getsets and + member descriptors. Note that for the latter two (defined only in C extension + modules), more specific tests are available: :func:`isgetsetdescriptor` and + :func:`ismemberdescriptor`, respectively. + + While data descriptors may also have :attr:`~definition.__name__` and + :attr:`!__doc__` attributes (as properties, getsets and member descriptors + do), this is not necessarily the case in general. + + .. versionchanged:: 3.8 + This function now reports objects with only a :meth:`~object.__set__` method + as being data descriptors (the presence of :meth:`~object.__get__` is no + longer required for that). Moreover, objects with :meth:`~object.__delete__`, + but not :meth:`~object.__set__`, are now properly recognized as data + descriptors as well, which was not the case previously. .. function:: isgetsetdescriptor(object) diff --git a/Lib/inspect.py b/Lib/inspect.py index af6aa3eb37a53bb..2a14e43b66f2fac 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -196,18 +196,18 @@ def ispackage(object): def ismethoddescriptor(object): """Return true if the object is a method descriptor. - But not if ismethod() or isclass() or isfunction() are true. + But not if ismethod(), isclass() or isfunction() is true. - This is new in Python 2.2, and, for example, is true of int.__add__. - An object passing this test has a __get__ attribute, but not a - __set__ attribute or a __delete__ attribute. Beyond that, the set - of attributes varies; __name__ is usually sensible, and __doc__ - often is. + An object passing this test (for example, int.__add__) has a __get__ + attribute, but not a __set__ attribute or a __delete__ attribute. + Beyond that, the set of attributes varies; __name__ is usually + sensible, and __doc__ often is. Methods implemented via descriptors that also pass one of the other - tests return false from the ismethoddescriptor() test, simply because - the other tests promise more -- you can, e.g., count on having the - __func__ attribute (etc) when an object passes ismethod().""" + tests (ismethod(), isclass(), isfunction()) make this function return + false, simply because those other tests promise more -- you can, for + example, count on having the __func__ attribute when an object passes + ismethod().""" if isclass(object) or ismethod(object) or isfunction(object): # mutual exclusion return False @@ -219,8 +219,13 @@ def ismethoddescriptor(object): def isdatadescriptor(object): """Return true if the object is a data descriptor. + But not if ismethod(), isclass() or isfunction() is true. + Data descriptors have a __set__ or a __delete__ attribute. Examples are - properties (defined in Python) and getsets and members (defined in C). + properties, getsets, and members. For the latter two (defined only in C + extension modules) more specific tests are available as well: + isgetsetdescriptor() and ismemberdescriptor(), respectively. + Typically, data descriptors will also have __name__ and __doc__ attributes (properties, getsets, and members have both of these attributes), but this is not guaranteed.""" From 5200f1192428becab0c31db98e7baa97f3c3c3e2 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 18 Jul 2026 15:01:51 +0200 Subject: [PATCH 011/205] gh-153908: Fix data race in `itertools.count.__repr__` (GH-153917) --- .../Library/2026-07-18-11-16-41.gh-issue-153908.82FiGk.rst | 1 + Modules/itertoolsmodule.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-18-11-16-41.gh-issue-153908.82FiGk.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-18-11-16-41.gh-issue-153908.82FiGk.rst b/Misc/NEWS.d/next/Library/2026-07-18-11-16-41.gh-issue-153908.82FiGk.rst new file mode 100644 index 000000000000000..6ee943a5fb66724 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-18-11-16-41.gh-issue-153908.82FiGk.rst @@ -0,0 +1 @@ +Fix data race when calling :func:`repr` on :class:`itertools.count` under the :term:`free-threaded build`. diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index 72bfab1abaf9cae..c0023c839ca7fe3 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -3675,9 +3675,11 @@ static PyObject * count_repr(PyObject *op) { countobject *lz = countobject_CAST(op); - if (lz->long_cnt == NULL) + if (lz->long_cnt == NULL) { + Py_ssize_t cnt = FT_ATOMIC_LOAD_SSIZE_RELAXED(lz->cnt); return PyUnicode_FromFormat("%s(%zd)", - _PyType_Name(Py_TYPE(lz)), lz->cnt); + _PyType_Name(Py_TYPE(lz)), cnt); + } if (PyLong_Check(lz->long_step)) { long step = PyLong_AsLong(lz->long_step); From a53b5b126749133e50692fe0c3729f5580ee8500 Mon Sep 17 00:00:00 2001 From: Massimiliano Bruni Date: Sat, 18 Jul 2026 15:16:03 +0200 Subject: [PATCH 012/205] gh-153896: Deduplicate unhashable arguments in `typing.Literal` (GH-153914) --- Lib/test/test_typing.py | 10 ++++++++-- Lib/typing.py | 15 +++++++++------ ...2026-07-18-10-52-10.gh-issue-153896.87oevp.rst | 1 + 3 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-18-10-52-10.gh-issue-153896.87oevp.rst diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 17574c7f03d8e1e..c1f340230159db6 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -2801,8 +2801,14 @@ def test_args(self): self.assertEqual(Literal[1, 2, 3].__args__, (1, 2, 3)) self.assertEqual(Literal[1, 2, 3, 3].__args__, (1, 2, 3)) self.assertEqual(Literal[1, Literal[2], Literal[3, 4]].__args__, (1, 2, 3, 4)) - # Mutable arguments will not be deduplicated - self.assertEqual(Literal[[], []].__args__, ([], [])) + # Unhashable arguments will be deduplicated too + self.assertEqual(Literal[[], []].__args__, ([],)) + self.assertEqual(Literal[{"a": 1}, {"a": 1}].__args__, ({"a": 1},)) + self.assertEqual( + Literal[1, {'a': 'b'}, 2, {'a': 'b'}, 3].__args__, + (1, {'a': 'b'}, 2, 3), + ) + self.assertEqual(Literal[{1}, {1}, {2}, {2}].__args__, ({1}, {2})) def test_flatten(self): l1 = Literal[Literal[1], Literal[2], Literal[3]] diff --git a/Lib/typing.py b/Lib/typing.py index 933336ff4cf37e2..054420865d7fb50 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -775,13 +775,16 @@ def open_helper(file: str, mode: MODE) -> str: # There is no '_type_check' call because arguments to Literal[...] are # values, not types. parameters = _flatten_literal_params(parameters) + value_and_type_parameters = list(_value_and_type_iter(parameters)) + deduplicated_parameters = tuple( + p + for p, _ in _deduplicate( + value_and_type_parameters, + unhashable_fallback=True, + ) + ) - try: - parameters = tuple(p for p, _ in _deduplicate(list(_value_and_type_iter(parameters)))) - except TypeError: # unhashable parameters - pass - - return _LiteralGenericAlias(self, parameters) + return _LiteralGenericAlias(self, deduplicated_parameters) @_SpecialForm diff --git a/Misc/NEWS.d/next/Library/2026-07-18-10-52-10.gh-issue-153896.87oevp.rst b/Misc/NEWS.d/next/Library/2026-07-18-10-52-10.gh-issue-153896.87oevp.rst new file mode 100644 index 000000000000000..217a3d3d272ed07 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-18-10-52-10.gh-issue-153896.87oevp.rst @@ -0,0 +1 @@ +Deduplicate unhashable args in :data:`typing.Literal`. From a0c6c4cc35d7142aee08908ef08bf7b5048ef492 Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Sat, 18 Jul 2026 15:25:39 +0200 Subject: [PATCH 013/205] gh-153568: Cache repeated identifiers while parsing (#153577) --- ...11-15-07-49.gh-issue-153568.identcache.rst | 1 + Parser/pegen.c | 53 +++++++++++++++++++ Parser/pegen.h | 3 ++ 3 files changed, 57 insertions(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-07-11-15-07-49.gh-issue-153568.identcache.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-07-11-15-07-49.gh-issue-153568.identcache.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-11-15-07-49.gh-issue-153568.identcache.rst new file mode 100644 index 000000000000000..5d778139d06b50d --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-11-15-07-49.gh-issue-153568.identcache.rst @@ -0,0 +1 @@ +Speed up the parser by caching repeated identifiers during a parse. diff --git a/Parser/pegen.c b/Parser/pegen.c index 165dcb9f9950955..447124cbe00b66a 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -12,6 +12,16 @@ #include "tokenizer/helpers.h" #include "pegen.h" +#define IDENTIFIER_CACHE_SIZE 2048 // Must be a power of two. +#define IDENTIFIER_CACHE_MAX_PROBES 8 + +struct _identifier_cache_entry { + const char *key; // Borrowed from arena-owned token bytes. + Py_ssize_t len; + Py_hash_t hash; + PyObject *value; // Borrowed from an arena-owned identifier. +}; + // Internal parser functions asdl_stmt_seq* @@ -572,11 +582,44 @@ _PyPegen_name_from_token(Parser *p, Token* t) p->error_indicator = 1; return NULL; } + // Identifiers repeat constantly; a small span-keyed cache skips the + // UTF-8 decode + intern for repeated occurrences. Keys point into + // arena-owned token bytes and values are arena-owned interned strings, + // so borrowed references are valid for the lifetime of the parse + // (including the second error pass, which reuses parser and arena). + Py_ssize_t len = PyBytes_GET_SIZE(t->bytes); + Py_hash_t hash = PyObject_Hash(t->bytes); + if (hash == -1) { + p->error_indicator = 1; + return NULL; + } + IdentifierCacheEntry *free_slot = NULL; + size_t idx = (size_t)hash & (IDENTIFIER_CACHE_SIZE - 1); + for (int probe = 0; probe < IDENTIFIER_CACHE_MAX_PROBES; probe++) { + IdentifierCacheEntry *entry = &p->identifier_cache[ + (idx + probe) & (IDENTIFIER_CACHE_SIZE - 1)]; + if (entry->key == NULL) { + free_slot = entry; + break; + } + if (entry->hash == hash && entry->len == len && + memcmp(entry->key, s, len) == 0) + { + return _PyAST_Name(entry->value, Load, t->lineno, t->col_offset, + t->end_lineno, t->end_col_offset, p->arena); + } + } PyObject *id = _PyPegen_new_identifier(p, s); if (id == NULL) { p->error_indicator = 1; return NULL; } + if (free_slot != NULL) { + free_slot->key = s; + free_slot->len = len; + free_slot->hash = hash; + free_slot->value = id; + } return _PyAST_Name(id, Load, t->lineno, t->col_offset, t->end_lineno, t->end_col_offset, p->arena); } @@ -844,6 +887,15 @@ _PyPegen_Parser_New(struct tok_state *tok, int start_rule, int flags, p->flags = flags; p->feature_version = feature_version; p->known_err_token = NULL; + p->identifier_cache = PyMem_Calloc( + IDENTIFIER_CACHE_SIZE, sizeof(*p->identifier_cache)); + if (p->identifier_cache == NULL) { + growable_comment_array_deallocate(&p->type_ignore_comments); + PyMem_Free(p->tokens[0]); + PyMem_Free(p->tokens); + PyMem_Free(p); + return (Parser *) PyErr_NoMemory(); + } p->level = 0; p->call_invalid_rules = 0; p->last_stmt_location.lineno = 0; @@ -859,6 +911,7 @@ _PyPegen_Parser_New(struct tok_state *tok, int start_rule, int flags, void _PyPegen_Parser_Free(Parser *p) { + PyMem_Free(p->identifier_cache); Py_XDECREF(p->normalize); for (int i = 0; i < p->size; i++) { PyMem_Free(p->tokens[i]); diff --git a/Parser/pegen.h b/Parser/pegen.h index cbf44ba474fa395..884b3ff62d7d99b 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -67,6 +67,8 @@ typedef struct { int end_col_offset; } location; +typedef struct _identifier_cache_entry IdentifierCacheEntry; + typedef struct { struct tok_state *tok; Token **tokens; @@ -91,6 +93,7 @@ typedef struct { int call_invalid_rules; int debug; location last_stmt_location; + IdentifierCacheEntry *identifier_cache; } Parser; typedef struct { From 32cfc88d6a5561c510a0d7bb954251e39b598dd5 Mon Sep 17 00:00:00 2001 From: Sam Katakouzinos Date: Sat, 18 Jul 2026 23:27:59 +1000 Subject: [PATCH 014/205] Docs: Fix typo in the pymanager command name (GH-153877) --- Doc/using/windows.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index e48de587598e5fe..5bec0c57b12214b 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -128,7 +128,7 @@ difference between the two commands is when running without any arguments: help (``pymanager exec ...`` provides equivalent behaviour to ``py ...``). Each of these commands also has a windowed version that avoids creating a -console window. These are ``pyw``, ``pythonw`` and ``pymanagerw``. A ``python3`` +console window. These are ``pyw``, ``pythonw`` and ``pywmanager``. A ``python3`` command is also included that mimics the ``python`` command. It is intended to catch accidental uses of the typical POSIX command on Windows, but is not meant to be widely used or recommended. From 755d97167f6f5d4361c790f8f18df76cae8f2ad2 Mon Sep 17 00:00:00 2001 From: Lenormand Julien Date: Sat, 18 Jul 2026 15:40:11 +0200 Subject: [PATCH 015/205] gh-71896: Add a docs warning about trailing newlines ignored by `difflib.HtmlDiff` (GH-153930) --- Doc/library/difflib.rst | 5 +++++ Lib/difflib.py | 2 ++ Lib/test/test_difflib.py | 23 +++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index 25edb40e35a630a..3ed4768b6a14136 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -85,6 +85,11 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. with inter-line and intra-line change highlights. The table can be generated in either full or contextual difference mode. + .. warning:: + + The trailing newlines get stripped before the diff, so the result can be + incomplete. See :gh:`71896` for details. + The constructor for this class is: diff --git a/Lib/difflib.py b/Lib/difflib.py index ae8b284b4d36474..95ba8fd782c6c3c 100644 --- a/Lib/difflib.py +++ b/Lib/difflib.py @@ -2016,6 +2016,8 @@ def make_table(self,fromlines,tolines,fromdesc='',todesc='',context=False, # change tabs to spaces before it gets more difficult after we insert # markup + # it also removes trailing newlines, causing some diffs to be missed + # see: gh-71896 fromlines,tolines = self._tab_newline_replace(fromlines,tolines) # create diffs iterator which generates side by side from/to data diff --git a/Lib/test/test_difflib.py b/Lib/test/test_difflib.py index 46c9b2c1d8c9fc4..4f99b7c91c654e4 100644 --- a/Lib/test/test_difflib.py +++ b/Lib/test/test_difflib.py @@ -284,6 +284,29 @@ def test_make_file_usascii_charset_with_nonascii_input(self): self.assertIn('charset="us-ascii"', output) self.assertIn('ımplıcıt', output) + def test_strip_trailing_newlines_before_diff(self): + # characterization test for the current buggy behavior + # see: gh-71896 + html_diff = difflib.HtmlDiff() + from_lines = [ + "Line 1: no newline after", + "Line 2: one newline after\n", + "Line 3: several newlines after\n\n\n\n\n", + ] + to_lines = [ + "Line 1: no newline after", + "Line 2: one newline after", # actually no \n + "Line 3: several newlines after", # actually no \n + ] + output = html_diff.make_table(from_lines, to_lines) + # we (currently) expect no line change, so all equal + self.assertNotIn('class="diff_add"', output) + self.assertNotIn('class="diff_chg"', output) + self.assertNotIn('class="diff_sub"', output) + self.assertEqual(output.count('>Line 1: no newline after<'), 2) + self.assertEqual(output.count('>Line 2: one newline after<'), 2) + self.assertEqual(output.count('>Line 3: several newlines after<'), 2) + class TestDiffer(unittest.TestCase): def test_close_matches_aligned(self): # Of the 4 closely matching pairs, we want 1 to match with 3, From 0fa144bb78042fb91c703678bb378b4dbce3cb95 Mon Sep 17 00:00:00 2001 From: Florian Freitag Date: Sat, 18 Jul 2026 15:50:28 +0200 Subject: [PATCH 016/205] Improve `getopt.getopt` and `getopt.gnu_getopt` test coverage (GH-153933) --- Lib/test/test_getopt.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Lib/test/test_getopt.py b/Lib/test/test_getopt.py index 8d0d5084abbb597..8b6c3b8baa07c5e 100644 --- a/Lib/test/test_getopt.py +++ b/Lib/test/test_getopt.py @@ -149,6 +149,18 @@ def test_getopt(self): ('-a', ''), ('--alpha', '')]) self.assertEqual(args, ['arg1', 'arg2']) + # Allow string for single long argument + opts, args = getopt.getopt(cmdline, 'a::', 'alpha=?') + self.assertEqual(opts, [('-a', '1'), ('--alpha', '2'), ('--alpha', ''), + ('-a', ''), ('--alpha', '')]) + self.assertEqual(args, ['arg1', 'arg2']) + + # Pass everything after -- as args + cmdline = ['-a1', '--alpha=2', '--', '-b', '--beta=5'] + opts, args = getopt.getopt(cmdline, 'a:b', ['alpha=', 'beta']) + self.assertEqual(opts, [('-a', '1'), ('--alpha', '2')]) + self.assertEqual(args, ['-b', '--beta=5']) + self.assertError(getopt.getopt, cmdline, 'a:b', ['alpha', 'beta']) def test_gnu_getopt(self): @@ -191,6 +203,25 @@ def test_gnu_getopt(self): self.assertEqual(args, ['arg1', '-b', '1', '--alpha', '--beta=2', '--beta', '3', 'arg2']) + # Allow string for single long argument + opts, args = getopt.gnu_getopt(cmdline, 'ab:', 'alpha') + self.assertEqual(opts, [('-a', '')]) + self.assertEqual(args, ['arg1', '-b', '1', '--alpha', '--beta=2', + '--beta', '3', 'arg2']) + + # Pass everything after -- as args + cmdline = ['-a1', '--alpha=2', '--', '-b', '--beta=5'] + opts, args = getopt.gnu_getopt(cmdline, 'a:b', ['alpha=', 'beta']) + self.assertEqual(opts, [('-a', '1'), ('--alpha', '2')]) + self.assertEqual(args, ['-b', '--beta=5']) + + # In order arguments + cmdline = ["gamma", "--alpha=3"] + opts, args = getopt.gnu_getopt(cmdline, '-', ["alpha="]) + self.assertEqual(opts, [(None, ['gamma']), ('--alpha', '3')]) + self.assertEqual(args, []) + + def test_issue4629(self): longopts, shortopts = getopt.getopt(['--help='], '', ['help=']) self.assertEqual(longopts, [('--help', '')]) From c89b5effa11366e28cb4a290a302a534352b768f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Santos=20Quir=C3=B3s?= <130504291+raul-sq@users.noreply.github.com> Date: Sat, 18 Jul 2026 16:29:45 +0200 Subject: [PATCH 017/205] Fix parameter name of read_mime_types() in mimetypes docs (GH-153974) --- Doc/library/mimetypes.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Doc/library/mimetypes.rst b/Doc/library/mimetypes.rst index 5c29fff146eef00..f6cfbb5126158e1 100644 --- a/Doc/library/mimetypes.rst +++ b/Doc/library/mimetypes.rst @@ -116,12 +116,13 @@ behavior of the module. Previously, Windows registry settings were ignored. -.. function:: read_mime_types(filename) +.. function:: read_mime_types(file) - Load the type map given in the file *filename*, if it exists. The type map is - returned as a dictionary mapping filename extensions, including the leading dot - (``'.'``), to strings of the form ``'type/subtype'``. If the file *filename* - does not exist or cannot be read, ``None`` is returned. + Load the type map given in the file named by *file*, if it exists. *file* + must be a string specifying the name of the file to read. The type map is + returned as a dictionary mapping file extensions, including the leading dot + (``'.'``), to strings of the form ``'type/subtype'``. If the file does not + exist or cannot be read, ``None`` is returned. .. function:: add_type(type, ext, strict=True) From 0a772f2967c77a2137c45d7db1fcde9b71afacde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20S=C5=82awecki?= Date: Sat, 18 Jul 2026 16:42:24 +0200 Subject: [PATCH 018/205] gh-141004: Document remaining `PyCF_*` compiler flag macros (GH-153958) --- Doc/c-api/veryhigh.rst | 114 +++++++++++++++++++++++ Tools/check-c-api-docs/ignored_c_api.txt | 8 -- 2 files changed, 114 insertions(+), 8 deletions(-) diff --git a/Doc/c-api/veryhigh.rst b/Doc/c-api/veryhigh.rst index 6256bf7a1454a9a..bba5c7f8ecf7751 100644 --- a/Doc/c-api/veryhigh.rst +++ b/Doc/c-api/veryhigh.rst @@ -343,11 +343,125 @@ the same library that the Python runtime is using. :py:mod:`!ast` Python module, which exports these constants under the same names. + .. rubric:: Low-level flags + + The following flags and masks serve narrow needs of the standard + library and interactive interpreters. Code outside the standard + library rarely has a reason to use them. They are considered + implementation details and may change at any time. + + .. c:macro:: PyCF_ALLOW_INCOMPLETE_INPUT + + This flag is a private interface between the compiler and the + :mod:`codeop` module. Do not use it; its behavior is unsupported + and may change without warning. + + With this flag set, when compilation fails because the source text + ends where more input is expected, for example in the middle of an + indented block or an unterminated string literal, the error raised + is the undocumented ``_IncompleteInputError``, a subclass of + :exc:`SyntaxError`. The :mod:`codeop` module sets this flag, + together with :c:macro:`PyCF_DONT_IMPLY_DEDENT`, to tell input + that is incomplete apart from input with a real syntax error, so + that interactive interpreters know when to prompt for another + line instead of reporting an error. + + .. versionadded:: 3.11 + + .. c:macro:: PyCF_DONT_IMPLY_DEDENT + + By default, when compiling with the :c:var:`Py_single_input` start + symbol, reaching the end of the source text implicitly closes any + open indented blocks. With this flag set, open blocks are only + closed if the last line of the source ends with a newline; otherwise, + compilation fails with a :exc:`SyntaxError`: + + .. code-block:: c + + PyCompilerFlags flags = { + .cf_flags = 0, + .cf_feature_version = PY_MINOR_VERSION, + }; + const char *source = "if a:\n pass"; + + /* The "if" block is closed implicitly; + this returns a code object: */ + Py_CompileStringFlags(source, "", Py_single_input, &flags); + + /* With the flag, this fails with a SyntaxError, + because the last line does not end with a newline: */ + flags.cf_flags = PyCF_DONT_IMPLY_DEDENT; + Py_CompileStringFlags(source, "", Py_single_input, &flags); + + The :mod:`codeop` module uses this flag to detect incomplete + interactive input. While the user is still typing inside an + indented block, the source does not yet end with a newline, so it + fails to compile and the user is prompted for another line. + + .. c:macro:: PyCF_IGNORE_COOKIE + + Read the source text as UTF-8, ignoring its :pep:`263` encoding + declaration ("coding cookie"), if any: + + .. code-block:: c + + PyCompilerFlags flags = { + .cf_flags = 0, + .cf_feature_version = PY_MINOR_VERSION, + }; + const char *source = "# coding: latin-1\ns = '\xe9'\n"; + + /* The coding cookie is honored: byte 0xE9 is decoded as + Latin-1, and this returns a code object that sets s to "é": */ + Py_CompileStringFlags(source, "", Py_file_input, &flags); + + /* With the flag, the cookie is ignored and compilation fails + with a SyntaxError, because 0xE9 is not valid UTF-8: */ + flags.cf_flags = PyCF_IGNORE_COOKIE; + Py_CompileStringFlags(source, "", Py_file_input, &flags); + + The :func:`compile`, :func:`eval` and :func:`exec` built-in functions + set this flag when the source is a :class:`str` object, because they + pass the text to the parser encoded as UTF-8. + + .. c:macro:: PyCF_SOURCE_IS_UTF8 + + Mark the source text as known to be UTF-8 encoded. + The :func:`compile`, :func:`eval` and :func:`exec` built-in functions + set this flag, but it currently has no effect. + The "``PyCF``" flags above can be combined with "``CO_FUTURE``" flags such as :c:macro:`CO_FUTURE_ANNOTATIONS` to enable features normally selectable using :ref:`future statements `. See :ref:`c_codeobject_flags` for a complete list. + The following masks combine several flags: + + .. c:macro:: PyCF_MASK + + Bitmask of all ``CO_FUTURE`` flags (see :ref:`c_codeobject_flags`), + which select features normally enabled by + :ref:`future statements `. + When code compiled with a ``PyCompilerFlags *flags`` argument + contains a ``from __future__ import`` statement, the flag for the + imported feature is added to *flags*, so that code executed later + in the same context inherits it. + + .. c:macro:: PyCF_MASK_OBSOLETE + + Do not use this mask in new code. It is kept only so that old + code passing its flags to :func:`compile` keeps working. + + Bitmask of flags for obsolete future features that no longer + have any effect. + + .. c:macro:: PyCF_COMPILE_MASK + + Bitmask of all ``PyCF`` flags that change how the source is + compiled, such as :c:macro:`PyCF_ONLY_AST`. + The :func:`compile` built-in function uses this mask to validate + its *flags* argument. + .. _start-symbols: diff --git a/Tools/check-c-api-docs/ignored_c_api.txt b/Tools/check-c-api-docs/ignored_c_api.txt index fa53b205c4ff6af..e04deffc64f5104 100644 --- a/Tools/check-c-api-docs/ignored_c_api.txt +++ b/Tools/check-c-api-docs/ignored_c_api.txt @@ -29,14 +29,6 @@ PY_DWORD_MAX PY_BIG_ENDIAN # cpython/methodobject.h PyCFunction_GET_CLASS -# cpython/compile.h -PyCF_ALLOW_INCOMPLETE_INPUT -PyCF_COMPILE_MASK -PyCF_DONT_IMPLY_DEDENT -PyCF_IGNORE_COOKIE -PyCF_MASK -PyCF_MASK_OBSOLETE -PyCF_SOURCE_IS_UTF8 # cpython/descrobject.h PyDescr_NAME PyDescr_TYPE From dc62ba84ab2b83d70dee111d3feec1a6f1c3f69d Mon Sep 17 00:00:00 2001 From: Yashraj Date: Sat, 18 Jul 2026 20:20:40 +0530 Subject: [PATCH 019/205] gh-141004: Document unstable executable kind macros from `pyframe.h` (GH-143490) Co-authored-by: Peter Bierma --- Doc/c-api/frame.rst | 59 ++++++++++++++++++++++++ Tools/check-c-api-docs/ignored_c_api.txt | 6 --- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/Doc/c-api/frame.rst b/Doc/c-api/frame.rst index 4159ff6e5965fbd..a04ef4e422949b9 100644 --- a/Doc/c-api/frame.rst +++ b/Doc/c-api/frame.rst @@ -243,3 +243,62 @@ Unless using :pep:`523`, you will not need this. Return the currently executing line number, or -1 if there is no line number. .. versionadded:: 3.12 + + +.. c:var:: const PyTypeObject *PyUnstable_ExecutableKinds + + An array of executable kinds (executor types) for frames, used for internal + debugging and tracing. + + Tools like debuggers and profilers can use this to identify the type of execution + context associated with a frame (such as to filter out internal frames). + The entries are indexed by the following constants: + + .. list-table:: + :header-rows: 1 + :widths: auto + + * - Constant + - Description + * - .. c:macro:: PyUnstable_EXECUTABLE_KIND_SKIP + - The frame is internal (For example: inlined) and should be skipped by tools. + * - .. c:macro:: PyUnstable_EXECUTABLE_KIND_PY_FUNCTION + - The frame corresponds to a standard Python function. + * - .. c:macro:: PyUnstable_EXECUTABLE_KIND_BUILTIN_FUNCTION + - The frame corresponds to a function defined in native code. + * - .. c:macro:: PyUnstable_EXECUTABLE_KIND_METHOD_DESCRIPTOR + - The frame corresponds to a method on a class instance. + + However, Python's C API lacks a function to read the executable kind from + a frame. Instead, use this recipe: + + .. code-block:: c + + int + get_executable_kind(PyFrameObject *frame) + { + _PyInterpreterFrame *f = frame->f_frame; + PyObject *exec = PyStackRef_AsPyObjectBorrow(f->f_executable); + + if (PyCode_Check(exec)) { + return PyUnstable_EXECUTABLE_KIND_PY_FUNCTION; + } + if (PyMethod_Check(exec)) { + return PyUnstable_EXECUTABLE_KIND_BUILTIN_FUNCTION; + } + if (Py_IS_TYPE(exec, &PyMethodDescr_Type)) { + return PyUnstable_EXECUTABLE_KIND_METHOD_DESCRIPTOR; + } + + return PyUnstable_EXECUTABLE_KIND_SKIP; + } + + .. versionadded:: 3.13 + + +.. c:macro:: PyUnstable_EXECUTABLE_KINDS + + The number of entries in :c:data:`PyUnstable_ExecutableKinds`. + + .. versionadded:: 3.13 + diff --git a/Tools/check-c-api-docs/ignored_c_api.txt b/Tools/check-c-api-docs/ignored_c_api.txt index e04deffc64f5104..aeae9e6553a3aa6 100644 --- a/Tools/check-c-api-docs/ignored_c_api.txt +++ b/Tools/check-c-api-docs/ignored_c_api.txt @@ -35,12 +35,6 @@ PyDescr_TYPE PyWrapperFlag_KEYWORDS # cpython/fileobject.h Py_UniversalNewlineFgets -# cpython/pyframe.h -PyUnstable_EXECUTABLE_KINDS -PyUnstable_EXECUTABLE_KIND_BUILTIN_FUNCTION -PyUnstable_EXECUTABLE_KIND_METHOD_DESCRIPTOR -PyUnstable_EXECUTABLE_KIND_PY_FUNCTION -PyUnstable_EXECUTABLE_KIND_SKIP # cpython/pylifecycle.h Py_FrozenMain # pythonrun.h From 46e950fc0df8ad300497d612c4c9de3e5a1e87f3 Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Sat, 18 Jul 2026 16:52:10 +0200 Subject: [PATCH 020/205] gh-124111: Update Windows builds to Tcl/Tk 9.0.4 (GH-153901) --- ...026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst | 1 - ...026-07-18-11-56-53.gh-issue-124111.m4OBX8.rst | 1 + Misc/externals.spdx.json | 16 ++++++++-------- PCbuild/get_externals.bat | 6 +++--- PCbuild/readme.txt | 2 +- PCbuild/tcltk.props | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) delete mode 100644 Misc/NEWS.d/next/Windows/2026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst create mode 100644 Misc/NEWS.d/next/Windows/2026-07-18-11-56-53.gh-issue-124111.m4OBX8.rst diff --git a/Misc/NEWS.d/next/Windows/2026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst b/Misc/NEWS.d/next/Windows/2026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst deleted file mode 100644 index 9a57536f1dc96b6..000000000000000 --- a/Misc/NEWS.d/next/Windows/2026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst +++ /dev/null @@ -1 +0,0 @@ -Updated Windows builds to use Tcl/Tk 9.0.3. diff --git a/Misc/NEWS.d/next/Windows/2026-07-18-11-56-53.gh-issue-124111.m4OBX8.rst b/Misc/NEWS.d/next/Windows/2026-07-18-11-56-53.gh-issue-124111.m4OBX8.rst new file mode 100644 index 000000000000000..802afc6f7a6fc48 --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2026-07-18-11-56-53.gh-issue-124111.m4OBX8.rst @@ -0,0 +1 @@ +Updated Windows builds to use Tcl/Tk 9.0.4. diff --git a/Misc/externals.spdx.json b/Misc/externals.spdx.json index 523d20259adaaa9..cdacaf6f5869531 100644 --- a/Misc/externals.spdx.json +++ b/Misc/externals.spdx.json @@ -112,42 +112,42 @@ "checksums": [ { "algorithm": "SHA256", - "checksumValue": "7a1d1f3a2b8f4484a9c2a027a157963c18f85a81785e85fcb5d1e3df6b6a4fd4" + "checksumValue": "3ac2acd65ddaaac0b2b8df321b558419d21da20bf67ab39149b8248c85f0d214" } ], - "downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/tcl-9.0.3.0.tar.gz", + "downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/tcl-9.0.4.0.tar.gz", "externalRefs": [ { "referenceCategory": "SECURITY", - "referenceLocator": "cpe:2.3:a:tcl_tk:tcl_tk:9.0.3.0:*:*:*:*:*:*:*", + "referenceLocator": "cpe:2.3:a:tcl_tk:tcl_tk:9.0.4.0:*:*:*:*:*:*:*", "referenceType": "cpe23Type" } ], "licenseConcluded": "NOASSERTION", "name": "tcl", "primaryPackagePurpose": "SOURCE", - "versionInfo": "9.0.3.0" + "versionInfo": "9.0.4.0" }, { "SPDXID": "SPDXRef-PACKAGE-tk", "checksums": [ { "algorithm": "SHA256", - "checksumValue": "54fb59df12c489c6264f5b7d3d7444b150d1e3d6561fd59cdb11483440cec000" + "checksumValue": "66048966cfa88989333ff1632f454e10e9248516bb45efda7b4d2ae5a61642cb" } ], - "downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/tk-9.0.3.1.tar.gz", + "downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/tk-9.0.4.1.tar.gz", "externalRefs": [ { "referenceCategory": "SECURITY", - "referenceLocator": "cpe:2.3:a:tcl_tk:tcl_tk:9.0.3.1:*:*:*:*:*:*:*", + "referenceLocator": "cpe:2.3:a:tcl_tk:tcl_tk:9.0.4.1:*:*:*:*:*:*:*", "referenceType": "cpe23Type" } ], "licenseConcluded": "NOASSERTION", "name": "tk", "primaryPackagePurpose": "SOURCE", - "versionInfo": "9.0.3.1" + "versionInfo": "9.0.4.1" }, { "SPDXID": "SPDXRef-PACKAGE-xz", diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat index 47399fe65d1e542..6bedd21299a73e9 100644 --- a/PCbuild/get_externals.bat +++ b/PCbuild/get_externals.bat @@ -57,8 +57,8 @@ if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi-3.4.4 if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-3.5.7 set libraries=%libraries% mpdecimal-4.0.0 set libraries=%libraries% sqlite-3.53.2.0 -if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-9.0.3.0 -if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-9.0.3.1 +if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-9.0.4.0 +if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-9.0.4.1 set libraries=%libraries% xz-5.8.1.1 set libraries=%libraries% zlib-ng-2.2.4 set libraries=%libraries% zstd-1.5.7 @@ -80,7 +80,7 @@ echo.Fetching external binaries... set binaries= if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi-3.4.4 if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-3.5.7 -if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-9.0.3.0 +if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-9.0.4.0 if NOT "%IncludeSSLSrc%"=="false" set binaries=%binaries% nasm-2.11.06 if NOT "%IncludeLLVM%"=="false" set binaries=%binaries% llvm-21.1.4.0 diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 7c5eab2eb75a1de..7739264f56ccc27 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -247,7 +247,7 @@ _sqlite3 https://www.sqlite.org/ _tkinter - Wraps version 9.0.3 of the Tk windowing system, which is downloaded + Wraps version 9.0.4 of the Tk windowing system, which is downloaded from our binaries repository at https://github.com/python/cpython-bin-deps. diff --git a/PCbuild/tcltk.props b/PCbuild/tcltk.props index 28e8c0db4d1eafd..1d6b4f57f09f747 100644 --- a/PCbuild/tcltk.props +++ b/PCbuild/tcltk.props @@ -2,7 +2,7 @@ - 9.0.3.0 + 9.0.4.0 $(TclVersion) $([System.Version]::Parse($(TclVersion)).Major) $([System.Version]::Parse($(TclVersion)).Minor) From 9adef68a7956744b804d09c8b8b06c8c171053e5 Mon Sep 17 00:00:00 2001 From: Manith Hettiarachchilage Date: Sat, 18 Jul 2026 16:00:13 +0100 Subject: [PATCH 021/205] Add test coverage to check execution of GetoptError.__str__ (#153941) * Increase test coverage of getopt to check execution of GetoptError.__str__ * Add test coverage to check execution of GetoptError.__str__ * Add test coverage to check execution of GetoptError.__str__ * Add test coverage to check execution of GetoptError.__str__ * Add test coverage to check execution of GetoptError.__str__ * Add test coverage to check execution of GetoptError.__str__ --- Lib/test/test_getopt.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Lib/test/test_getopt.py b/Lib/test/test_getopt.py index 8b6c3b8baa07c5e..fac2ca3db81d703 100644 --- a/Lib/test/test_getopt.py +++ b/Lib/test/test_getopt.py @@ -229,6 +229,10 @@ def test_issue4629(self): self.assertEqual(longopts, [('--help', 'x')]) self.assertRaises(getopt.GetoptError, getopt.getopt, ['--help='], '', ['help']) + def test_getopt_error_str(self): + error = getopt.GetoptError('option -a not recognized', 'a') + self.assertEqual(str(error), 'option -a not recognized') + def test_libref_examples(): """ Examples from the Library Reference: Doc/lib/libgetopt.tex From 5763bfdd1b582ef30cf3e6dd88754991973c77ce Mon Sep 17 00:00:00 2001 From: Ajob Kustra Date: Sat, 18 Jul 2026 18:03:54 +0200 Subject: [PATCH 022/205] Add vfspath TypeError test (#153987) typeerror with message test --- Lib/test/test_pathlib/test_join_windows.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Lib/test/test_pathlib/test_join_windows.py b/Lib/test/test_pathlib/test_join_windows.py index f30c80605f7f910..5afefa61b585f3b 100644 --- a/Lib/test/test_pathlib/test_join_windows.py +++ b/Lib/test/test_pathlib/test_join_windows.py @@ -87,6 +87,11 @@ def test_vfspath(self): p = self.cls(r'\\a\b\c\d') self.assertEqual(vfspath(p), '\\\\a\\b\\c\\d') + def test_invalid_vspath(self): + msg = "expected JoinablePath object, not NoneType" + with self.assertRaisesRegex(TypeError, msg): + vfspath(None) + def test_parts(self): P = self.cls p = P(r'c:a\b') From d49e76b1eb6e49d0ba4f5a3ba6e822d5621e1b55 Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Sat, 18 Jul 2026 18:12:38 +0200 Subject: [PATCH 023/205] gh-153568: Skip parser memo lookups that cannot match (#153571) Each token now carries a small filter of the rule types present in its memo list, so the common case of a miss no longer walks the list. --- .../2026-07-11-14-57-19.gh-issue-153568.memoflt.rst | 2 ++ Parser/pegen.c | 5 +++++ Parser/pegen.h | 4 ++++ 3 files changed, 11 insertions(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-07-11-14-57-19.gh-issue-153568.memoflt.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-07-11-14-57-19.gh-issue-153568.memoflt.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-11-14-57-19.gh-issue-153568.memoflt.rst new file mode 100644 index 000000000000000..9e78e5ad545a83a --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-11-14-57-19.gh-issue-153568.memoflt.rst @@ -0,0 +1,2 @@ +Speed up the parser by letting memoization lookups that cannot match return +immediately. diff --git a/Parser/pegen.c b/Parser/pegen.c index 447124cbe00b66a..fcec810037e98d4 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -100,6 +100,7 @@ _PyPegen_insert_memo(Parser *p, int mark, int type, void *node) m->mark = p->mark; m->next = p->tokens[mark]->memo; p->tokens[mark]->memo = m; + p->tokens[mark]->memo_mask |= 1ULL << (type & 63); return 0; } @@ -360,6 +361,10 @@ _PyPegen_is_memoized(Parser *p, int type, void *pres) Token *t = p->tokens[p->mark]; + if (!(t->memo_mask & (1ULL << (type & 63)))) { + return 0; + } + for (Memo *m = t->memo; m != NULL; m = m->next) { if (m->type == type) { #if defined(Py_DEBUG) diff --git a/Parser/pegen.h b/Parser/pegen.h index 884b3ff62d7d99b..3cca698692bf6bf 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -42,6 +42,10 @@ typedef struct { int level; int lineno, col_offset, end_lineno, end_col_offset; Memo *memo; + // Filter over the rule types present in `memo` (bit `type & 63` is set + // for every entry): lets lookups skip walking the list on definite + // misses, which are the common case. + uint64_t memo_mask; PyObject *metadata; } Token; From a202e5ce1ce9e1266208887bad990dd5b92180d8 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 18 Jul 2026 19:33:03 +0300 Subject: [PATCH 024/205] gh-153395: Fix test_complexchar on narrow curses builds (GH-154005) On a narrow build, complexchar() of a multibyte character raises OverflowError, not ValueError. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_curses.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 3ba79be789cf3e5..915eae5ec233d51 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -2799,9 +2799,11 @@ def test_complexchar(self): # its single character. A narrow build just forms fewer cells. cc = curses.complexchar def storable(s): + # ValueError if s has combining marks on a narrow build. + # OverflowError if s is a multibyte character on a narrow build. try: cc(s) - except ValueError: + except (ValueError, OverflowError): return False return True From a0c8329218402396478be92b691043453fc28c32 Mon Sep 17 00:00:00 2001 From: Andrii Hrimov Date: Sat, 18 Jul 2026 20:10:05 +0200 Subject: [PATCH 025/205] gh-150663: Document that PyErr_SetRaisedException accepts null (#153046) --- Doc/c-api/exceptions.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Doc/c-api/exceptions.rst b/Doc/c-api/exceptions.rst index 78c95791ab31041..d04074f6e6a7993 100644 --- a/Doc/c-api/exceptions.rst +++ b/Doc/c-api/exceptions.rst @@ -499,12 +499,12 @@ Querying the error indicator .. c:function:: void PyErr_SetRaisedException(PyObject *exc) Set *exc* as the exception currently being raised, - clearing the existing exception if one is set. + clearing the existing exception if one is set. If *exc* is ``NULL``, + just clear the existing exception. - .. warning:: + *exc* must be a valid exception or ``NULL``. - This call ":term:`steals `" a reference to *exc*, - which must be a valid exception. + This call ":term:`steals `" a reference to *exc*. .. versionadded:: 3.12 From a85a674b57b7f12e77ac4bef2398c09f36fec75a Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Sat, 18 Jul 2026 12:26:11 -0700 Subject: [PATCH 026/205] gh-153856: Add `os.RWF_NOSIGNAL` constant (#153858) RWF_NOSIGNAL was added in Linux 6.18 to prevent pwritev2() from raising SIGPIPE when writing to disconnected pipes or sockets. fixes gh-153856 --- Doc/library/os.rst | 11 +++++++++++ .../2026-07-17-14-30-00.gh-issue-153856.JEHepm.rst | 1 + Modules/clinic/posixmodule.c.h | 3 ++- Modules/posixmodule.c | 6 +++++- 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-17-14-30-00.gh-issue-153856.JEHepm.rst diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 5858d9733c57796..be7ea26356bebe3 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1642,6 +1642,7 @@ or `the MSDN `_ on Windo - :data:`RWF_APPEND` - :data:`RWF_DONTCACHE` - :data:`RWF_ATOMIC` + - :data:`RWF_NOSIGNAL` Return the total number of bytes actually written. @@ -1691,6 +1692,16 @@ or `the MSDN `_ on Windo .. versionadded:: 3.10 +.. data:: RWF_NOSIGNAL + + Prevent pipe and socket writes from raising :const:`~signal.SIGPIPE`. + This flag is meaningful only for :func:`os.pwritev`. + + .. availability:: Linux >= 6.18. + + .. versionadded:: 3.16 + + .. function:: read(fd, n, /) Read at most *n* bytes from file descriptor *fd*. diff --git a/Misc/NEWS.d/next/Library/2026-07-17-14-30-00.gh-issue-153856.JEHepm.rst b/Misc/NEWS.d/next/Library/2026-07-17-14-30-00.gh-issue-153856.JEHepm.rst new file mode 100644 index 000000000000000..f0af3de70848339 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-17-14-30-00.gh-issue-153856.JEHepm.rst @@ -0,0 +1 @@ +Add :data:`os.RWF_NOSIGNAL` constant for Linux 6.18+. diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h index 1f7e414b2dfe48f..ac9b63dec9eb440 100644 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@ -8801,6 +8801,7 @@ PyDoc_STRVAR(os_pwritev__doc__, "- RWF_APPEND\n" "- RWF_DONTCACHE\n" "- RWF_ATOMIC\n" +"- RWF_NOSIGNAL\n" "\n" "Using non-zero flags requires Linux 4.7 or newer."); @@ -13733,4 +13734,4 @@ os__emscripten_log(PyObject *module, PyObject *const *args, Py_ssize_t nargs, Py #ifndef OS__EMSCRIPTEN_LOG_METHODDEF #define OS__EMSCRIPTEN_LOG_METHODDEF #endif /* !defined(OS__EMSCRIPTEN_LOG_METHODDEF) */ -/*[clinic end generated code: output=d81494ceb6ce44ed input=a9049054013a1b77]*/ +/*[clinic end generated code: output=d641f02a97057666 input=a9049054013a1b77]*/ diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 4c26ee52279abcd..02d25adddd62675 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -12941,6 +12941,7 @@ following flags: - RWF_APPEND - RWF_DONTCACHE - RWF_ATOMIC +- RWF_NOSIGNAL Using non-zero flags requires Linux 4.7 or newer. [clinic start generated code]*/ @@ -12948,7 +12949,7 @@ Using non-zero flags requires Linux 4.7 or newer. static Py_ssize_t os_pwritev_impl(PyObject *module, int fd, PyObject *buffers, Py_off_t offset, int flags) -/*[clinic end generated code: output=e3dd3e9d11a6a5c7 input=b2e352a22f030e9a]*/ +/*[clinic end generated code: output=e3dd3e9d11a6a5c7 input=c202f24f01fa66c9]*/ { Py_ssize_t cnt; Py_ssize_t result; @@ -18246,6 +18247,9 @@ all_ins(PyObject *m) #ifdef RWF_APPEND if (PyModule_AddIntConstant(m, "RWF_APPEND", RWF_APPEND)) return -1; #endif +#ifdef RWF_NOSIGNAL + if (PyModule_AddIntConstant(m, "RWF_NOSIGNAL", RWF_NOSIGNAL)) return -1; +#endif /* constants for splice */ #if defined(HAVE_SPLICE) && defined(__linux__) From a1d580430c81c298d267ec255d544d0fa1d197c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Ho=C5=A1ek?= Date: Sat, 18 Jul 2026 21:46:16 +0200 Subject: [PATCH 027/205] Docs: point `uu` module users to the `"uu"` encoding (#153657) Co-authored-by: Stan Ulbrych --- Doc/library/uu.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Doc/library/uu.rst b/Doc/library/uu.rst index 0636d180294d474..cf6ec0fcef386d2 100644 --- a/Doc/library/uu.rst +++ b/Doc/library/uu.rst @@ -11,5 +11,9 @@ This module is no longer part of the Python standard library. It was :ref:`removed in Python 3.13 ` after being deprecated in Python 3.11. The removal was decided in :pep:`594`. +Encoding and decoding in the uu format can instead be achieved using +:func:`codecs.encode` and :func:`codecs.decode`, specifying ``"uu"`` +as the encoding. + The last version of Python that provided the :mod:`!uu` module was `Python 3.12 `_. From c08c89addfe30a3e0e70c3200e7d5c2a56373dc8 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Sun, 19 Jul 2026 03:24:16 +0300 Subject: [PATCH 028/205] Use Py_complex_protected AC converter for cmath.rect() (GH-154034) --- Modules/clinic/cmathmodule.c.h | 18 +++++++++++++++--- Modules/cmathmodule.c | 12 ++++-------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/Modules/clinic/cmathmodule.c.h b/Modules/clinic/cmathmodule.c.h index ecb5257cf6b2408..fe40ece030116bf 100644 --- a/Modules/clinic/cmathmodule.c.h +++ b/Modules/clinic/cmathmodule.c.h @@ -745,7 +745,7 @@ PyDoc_STRVAR(cmath_rect__doc__, #define CMATH_RECT_METHODDEF \ {"rect", _PyCFunction_CAST(cmath_rect), METH_FASTCALL, cmath_rect__doc__}, -static PyObject * +static Py_complex cmath_rect_impl(PyObject *module, double r, double phi); static PyObject * @@ -754,6 +754,7 @@ cmath_rect(PyObject *module, PyObject *const *args, Py_ssize_t nargs) PyObject *return_value = NULL; double r; double phi; + Py_complex _return_value; if (!_PyArg_CheckPositional("rect", nargs, 2, 2)) { goto exit; @@ -778,7 +779,18 @@ cmath_rect(PyObject *module, PyObject *const *args, Py_ssize_t nargs) goto exit; } } - return_value = cmath_rect_impl(module, r, phi); + _return_value = cmath_rect_impl(module, r, phi); + if (errno == EDOM) { + PyErr_SetString(PyExc_ValueError, "math domain error"); + goto exit; + } + else if (errno == ERANGE) { + PyErr_SetString(PyExc_OverflowError, "math range error"); + goto exit; + } + else { + return_value = PyComplex_FromCComplex(_return_value); + } exit: return return_value; @@ -987,4 +999,4 @@ cmath_isclose(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObjec exit: return return_value; } -/*[clinic end generated code: output=7d5ad4cf258526cd input=a9049054013a1b77]*/ +/*[clinic end generated code: output=89513888cb105a65 input=a9049054013a1b77]*/ diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c index 7c736f4610bb988..f6e1475b00ecfbb 100644 --- a/Modules/cmathmodule.c +++ b/Modules/cmathmodule.c @@ -1060,7 +1060,7 @@ static Py_complex rect_special_values[7][7] = { }; /*[clinic input] -cmath.rect +cmath.rect -> Py_complex_protected r: double phi: double @@ -1069,9 +1069,9 @@ cmath.rect Convert from polar coordinates to rectangular coordinates. [clinic start generated code]*/ -static PyObject * +static Py_complex cmath_rect_impl(PyObject *module, double r, double phi) -/*[clinic end generated code: output=385a0690925df2d5 input=24c5646d147efd69]*/ +/*[clinic end generated code: output=74ff3d17585f3388 input=50e60c5d28c834e6]*/ { Py_complex z; errno = 0; @@ -1115,11 +1115,7 @@ cmath_rect_impl(PyObject *module, double r, double phi) z.imag = r * sin(phi); errno = 0; } - - if (errno != 0) - return math_error(); - else - return PyComplex_FromCComplex(z); + return z; } /*[clinic input] From 1f1374009b681814642ca199136815b223fd90ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz?= Date: Sun, 19 Jul 2026 08:06:09 +0200 Subject: [PATCH 029/205] gh-154001: Avoid division by zero in binomialvariate (GH-154004) --- Lib/random.py | 6 +++++- Lib/test/test_random.py | 8 ++++++++ .../2026-07-18-17-09-49.gh-issue-154001.3brrUv.rst | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-18-17-09-49.gh-issue-154001.3brrUv.rst diff --git a/Lib/random.py b/Lib/random.py index 4541267bab866a4..7db761034509d37 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -861,7 +861,11 @@ def binomialvariate(self, n=1, p=0.5): u = random() u -= 0.5 us = 0.5 - _fabs(u) - k = _floor((2.0 * a / us + b) * u + c) + try: + k = _floor((2.0 * a / us + b) * u + c) + except ZeroDivisionError: + # Reject case where random() returned 0.0 + continue if k < 0 or k > n: continue v = random() diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py index dbd3b855f536a0d..8d093ab1b7014a4 100644 --- a/Lib/test/test_random.py +++ b/Lib/test/test_random.py @@ -1082,6 +1082,14 @@ def test_binomialvariate_log_zero(self): self.assertIsInstance(result, int) self.assertIn(result, range(11)) + def test_binomialvariate_btrs_random_zero(self): + for p, expected in ((0.25, 25), (0.75, 75)): + with self.subTest(p=p): + g = random.Random() + with unittest.mock.patch.object( + g, 'random', side_effect=(0.0, 0.5, 0.5)): + self.assertEqual(g.binomialvariate(100, p), expected) + def test_constant(self): g = random.Random() N = 100 diff --git a/Misc/NEWS.d/next/Library/2026-07-18-17-09-49.gh-issue-154001.3brrUv.rst b/Misc/NEWS.d/next/Library/2026-07-18-17-09-49.gh-issue-154001.3brrUv.rst new file mode 100644 index 000000000000000..ff019aa36188479 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-18-17-09-49.gh-issue-154001.3brrUv.rst @@ -0,0 +1,2 @@ +Fix :func:`random.binomialvariate` raising :exc:`ZeroDivisionError` +when :func:`random.random` returns zero. From 3c274d0c61d06b331d27223f0ed666b531008492 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Jul 2026 09:08:30 +0300 Subject: [PATCH 030/205] gh-136687: Add ./configure --with-curses to select the curses backend (GH-153992) Add --with-curses=ncursesw|ncurses|curses|no, mirroring --with-readline. The default (auto) keeps the current behaviour: prefer ncursesw, fall back to ncurses. --with-curses=curses links the system's native curses (e.g. on NetBSD or Solaris), which has no pkg-config file and was previously unreachable; it is built with wide-character support when the library provides it. --without-curses excludes the curses and _curses_panel modules from the build. Co-Authored-By: Claude Opus 4.8 --- Doc/using/configure.rst | 26 + Doc/whatsnew/3.16.rst | 9 + ...-07-18-14-30-12.gh-issue-136687.teaPCG.rst | 4 + configure | 1069 ++++++++++++++++- configure.ac | 87 +- 5 files changed, 1139 insertions(+), 56 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2026-07-18-14-30-12.gh-issue-136687.teaPCG.rst diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst index 22a10db976c4fc6..fd20ff2cb898107 100644 --- a/Doc/using/configure.rst +++ b/Doc/using/configure.rst @@ -1087,6 +1087,32 @@ Libraries options .. versionadded:: 3.10 +.. option:: --with-curses=ncursesw|ncurses|curses + + Designate a backend library for the :mod:`curses` and :mod:`curses.panel` + modules. + + * ``ncursesw``: Use the wide-character ``libncursesw`` (and ``libpanelw``), + found via ``pkg-config``. + * ``ncurses``: Use ``libncurses`` (and ``libpanel``), found via + ``pkg-config``. + * ``curses``: Use the system's native ``libcurses`` (and ``libpanel``), such + as on NetBSD or Solaris. It is built with wide-character support when the + library provides it. + + Without this option (or with ``--with-curses=auto``, the default), Python + tries ``ncursesw`` and then ``ncurses``; the native ``curses`` is used only + when requested explicitly. + + .. versionadded:: next + +.. option:: --without-curses + + Don't build the :mod:`curses` and :mod:`curses.panel` modules, even when a + curses library is present (built by default when one is found). + + .. versionadded:: next + .. option:: --with-libm=STRING Override ``libm`` math library to *STRING* (default is system-dependent). diff --git a/Doc/whatsnew/3.16.rst b/Doc/whatsnew/3.16.rst index e6565b186a598c5..0b08d0d0d12d982 100644 --- a/Doc/whatsnew/3.16.rst +++ b/Doc/whatsnew/3.16.rst @@ -768,6 +768,15 @@ Build changes (Contributed by Stefano Rivera in :gh:`131372`.) +* Add the :option:`--with-curses` :program:`configure` option to select the + curses backend for the :mod:`curses` and :mod:`curses.panel` modules. + In addition to ``ncursesw`` and ``ncurses``, it can now build against the + system's native ``curses`` library (for example on NetBSD or Solaris), with + wide-character support when the library provides it. :option:`--without-curses` + excludes the modules from the build. + + (Contributed by Serhiy Storchaka in :gh:`136687`.) + C API changes ============= diff --git a/Misc/NEWS.d/next/Build/2026-07-18-14-30-12.gh-issue-136687.teaPCG.rst b/Misc/NEWS.d/next/Build/2026-07-18-14-30-12.gh-issue-136687.teaPCG.rst new file mode 100644 index 000000000000000..a2c7a86f4430be7 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2026-07-18-14-30-12.gh-issue-136687.teaPCG.rst @@ -0,0 +1,4 @@ +Add the :option:`--with-curses` option to :program:`configure` to select the +curses backend (``ncursesw``, ``ncurses`` or the system's native ``curses``) or, +as :option:`--without-curses`, to exclude the :mod:`curses` and +:mod:`curses.panel` modules from the build. diff --git a/configure b/configure index c8494891087d045..9061cf905119c44 100755 --- a/configure +++ b/configure @@ -1147,6 +1147,7 @@ enable_big_digits with_platlibdir with_wheel_pkg_dir with_readline +with_curses with_computed_gotos with_tail_call_interp with_remote_debug @@ -1969,6 +1970,10 @@ Optional Packages: (default: none) --with(out)-readline[=editline|readline|no] use libedit for backend or disable readline module + --with(out)-curses[=ncursesw|ncurses|curses|no] + select the curses backend for the curses and + _curses_panel modules, or disable them (default: + auto) --with-computed-gotos enable computed gotos in evaluation loop (enabled by default on supported compilers) --with-tail-call-interp enable tail-calling interpreter in evaluation loop @@ -29281,26 +29286,777 @@ fi have_curses=no have_panel=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-curses" >&5 +printf %s "checking for --with-curses... " >&6; } + +# Check whether --with-curses was given. +if test ${with_curses+y} +then : + withval=$with_curses; case $with_curses in #( + yes|auto) : + with_curses=auto ;; #( + ncursesw|ncurses|curses|no) : + ;; #( + *) : + as_fn_error $? "proper usage is --with(out)-curses[=ncursesw|ncurses|curses|no]" "$LINENO" 5 ;; +esac +else case e in #( + e) with_curses=auto ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_curses" >&5 +printf "%s\n" "$with_curses" >&6; } + + + +# Detect the selected backend. ncursesw/ncurses are found via pkg-config; +# native curses has no .pc file and is left to the header/link probes below. +# curses_libs/panel_libs drive the AC_SEARCH_LIBS fallback; for "no" they are +# empty so nothing links and have_curses stays "no". +case $with_curses in #( + ncursesw) : + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ncursesw" >&5 +printf %s "checking for ncursesw... " >&6; } + +if test -n "$CURSES_CFLAGS"; then + pkg_cv_CURSES_CFLAGS="$CURSES_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_CFLAGS=`$PKG_CONFIG --cflags "ncursesw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CURSES_LIBS"; then + pkg_cv_CURSES_LIBS="$CURSES_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_LIBS=`$PKG_CONFIG --libs "ncursesw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CURSES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ncursesw" 2>&1` + else + CURSES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ncursesw" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$CURSES_PKG_ERRORS" >&5 + + have_curses=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_curses=no +else + CURSES_CFLAGS=$pkg_cv_CURSES_CFLAGS + CURSES_LIBS=$pkg_cv_CURSES_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_NCURSESW 1" >>confdefs.h + + have_curses=yes + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for panelw" >&5 +printf %s "checking for panelw... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "panelw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "panelw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "panelw" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "panelw" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnupanel" >&5 +printf %s "checking for gnupanel... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnupanel" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnupanel" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + + have_panel=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_panel=no +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_panel=yes +fi +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnupanel" >&5 +printf %s "checking for gnupanel... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnupanel" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnupanel" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + + have_panel=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_panel=no +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_panel=yes +fi +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_PANELW 1" >>confdefs.h + + have_panel=yes +fi +fi + + + curses_libs="ncursesw"; panel_libs="panelw gnupanel" ;; #( + ncurses) : + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ncurses" >&5 +printf %s "checking for ncurses... " >&6; } + +if test -n "$CURSES_CFLAGS"; then + pkg_cv_CURSES_CFLAGS="$CURSES_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncurses\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncurses") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_CFLAGS=`$PKG_CONFIG --cflags "ncurses" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CURSES_LIBS"; then + pkg_cv_CURSES_LIBS="$CURSES_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncurses\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncurses") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_LIBS=`$PKG_CONFIG --libs "ncurses" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CURSES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ncurses" 2>&1` + else + CURSES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ncurses" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$CURSES_PKG_ERRORS" >&5 + + have_curses=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_curses=no +else + CURSES_CFLAGS=$pkg_cv_CURSES_CFLAGS + CURSES_LIBS=$pkg_cv_CURSES_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_NCURSES 1" >>confdefs.h + + have_curses=yes + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for panel" >&5 +printf %s "checking for panel... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "panel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "panel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "panel" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "panel" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnupanel" >&5 +printf %s "checking for gnupanel... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnupanel" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnupanel" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + + have_panel=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_panel=no +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_panel=yes +fi +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnupanel" >&5 +printf %s "checking for gnupanel... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnupanel" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnupanel" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + + have_panel=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_panel=no +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_panel=yes +fi +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_PANEL 1" >>confdefs.h + + have_panel=yes +fi +fi + + + curses_libs="ncurses"; panel_libs="panel gnupanel" ;; #( + curses) : + curses_libs="curses"; panel_libs="panel" ;; #( + no) : + curses_libs=""; panel_libs="" ;; #( + *) : + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ncursesw" >&5 +printf %s "checking for ncursesw... " >&6; } + +if test -n "$CURSES_CFLAGS"; then + pkg_cv_CURSES_CFLAGS="$CURSES_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_CFLAGS=`$PKG_CONFIG --cflags "ncursesw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CURSES_LIBS"; then + pkg_cv_CURSES_LIBS="$CURSES_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_LIBS=`$PKG_CONFIG --libs "ncursesw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CURSES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ncursesw" 2>&1` + else + CURSES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ncursesw" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$CURSES_PKG_ERRORS" >&5 + + have_curses=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_curses=no +else + CURSES_CFLAGS=$pkg_cv_CURSES_CFLAGS + CURSES_LIBS=$pkg_cv_CURSES_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_NCURSESW 1" >>confdefs.h + + have_curses=yes + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for panelw" >&5 +printf %s "checking for panelw... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "panelw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "panelw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi -# Check for ncursesw/panelw first. If that fails, try ncurses/panel. +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "panelw" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "panelw" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ncursesw" >&5 -printf %s "checking for ncursesw... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnupanel" >&5 +printf %s "checking for gnupanel... " >&6; } -if test -n "$CURSES_CFLAGS"; then - pkg_cv_CURSES_CFLAGS="$CURSES_CFLAGS" +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 - ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_CURSES_CFLAGS=`$PKG_CONFIG --cflags "ncursesw" 2>/dev/null` + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "gnupanel" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -29308,16 +30064,16 @@ fi else pkg_failed=untried fi -if test -n "$CURSES_LIBS"; then - pkg_cv_CURSES_LIBS="$CURSES_LIBS" +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 - ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_CURSES_LIBS=`$PKG_CONFIG --libs "ncursesw" 2>/dev/null` + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "gnupanel" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -29338,42 +30094,43 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - CURSES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ncursesw" 2>&1` + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnupanel" 2>&1` else - CURSES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ncursesw" 2>&1` + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnupanel" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$CURSES_PKG_ERRORS" >&5 + echo "$PANEL_PKG_ERRORS" >&5 - have_curses=no + have_panel=no elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - have_curses=no + have_panel=no else - CURSES_CFLAGS=$pkg_cv_CURSES_CFLAGS - CURSES_LIBS=$pkg_cv_CURSES_LIBS + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_NCURSESW 1" >>confdefs.h - - have_curses=yes + have_panel=yes +fi +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for panelw" >&5 -printf %s "checking for panelw... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnupanel" >&5 +printf %s "checking for gnupanel... " >&6; } if test -n "$PANEL_CFLAGS"; then pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 - ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "panelw" 2>/dev/null` + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "gnupanel" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -29385,12 +30142,12 @@ if test -n "$PANEL_LIBS"; then pkg_cv_PANEL_LIBS="$PANEL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 - ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "panelw" 2>/dev/null` + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "gnupanel" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -29411,9 +30168,9 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "panelw" 2>&1` + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnupanel" 2>&1` else - PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "panelw" 2>&1` + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnupanel" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PANEL_PKG_ERRORS" >&5 @@ -29423,6 +30180,13 @@ elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } have_panel=no +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_panel=yes +fi else PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS PANEL_LIBS=$pkg_cv_PANEL_LIBS @@ -29436,7 +30200,7 @@ fi fi -if test "x$have_curses" = xno + if test "x$have_curses" = xno then : @@ -29572,11 +30336,151 @@ fi # Put the nasty error message in config.log where it belongs echo "$PANEL_PKG_ERRORS" >&5 + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnupanel" >&5 +printf %s "checking for gnupanel... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnupanel" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnupanel" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + + have_panel=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_panel=no +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_panel=yes +fi +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnupanel" >&5 +printf %s "checking for gnupanel... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnupanel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gnupanel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "gnupanel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gnupanel" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gnupanel" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + have_panel=no elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } have_panel=no +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_panel=yes +fi else PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS PANEL_LIBS=$pkg_cv_PANEL_LIBS @@ -29591,6 +30495,8 @@ fi fi + curses_libs="ncursesw ncurses"; panel_libs="panelw panel gnupanel" ;; +esac save_CFLAGS=$CFLAGS save_CPPFLAGS=$CPPFLAGS @@ -29598,9 +30504,28 @@ save_LDFLAGS=$LDFLAGS save_LIBS=$LIBS - # Make sure we've got the header defines. + # Make sure we've got the header defines. For the native "curses" backend, + # probe only the plain headers: a system may also have ncurses headers (e.g. + # ncurses/curses.h), and picking those while linking the native library mixes + # incompatible declarations (e.g. tparm()) with the native . as_fn_append CPPFLAGS " $CURSES_CFLAGS $PANEL_CFLAGS" - ac_fn_c_check_header_compile "$LINENO" "ncursesw/curses.h" "ac_cv_header_ncursesw_curses_h" "$ac_includes_default" + if test "x$with_curses" = xcurses +then : + ac_fn_c_check_header_compile "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default" +if test "x$ac_cv_header_curses_h" = xyes +then : + printf "%s\n" "#define HAVE_CURSES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "panel.h" "ac_cv_header_panel_h" "$ac_includes_default" +if test "x$ac_cv_header_panel_h" = xyes +then : + printf "%s\n" "#define HAVE_PANEL_H 1" >>confdefs.h + +fi + +else case e in #( + e) ac_fn_c_check_header_compile "$LINENO" "ncursesw/curses.h" "ac_cv_header_ncursesw_curses_h" "$ac_includes_default" if test "x$ac_cv_header_ncursesw_curses_h" = xyes then : printf "%s\n" "#define HAVE_NCURSESW_CURSES_H 1" >>confdefs.h @@ -29654,7 +30579,9 @@ then : printf "%s\n" "#define HAVE_PANEL_H 1" >>confdefs.h fi - + ;; +esac +fi # Check that we're able to link with crucial curses/panel functions. This # also serves as a fallback in case pkg-config failed. @@ -29687,7 +30614,7 @@ return initscr (); return 0; } _ACEOF -for ac_lib in '' ncursesw ncurses +for ac_lib in '' $curses_libs do if test -z "$ac_lib"; then ac_res="none required" @@ -29761,7 +30688,7 @@ return update_panels (); return 0; } _ACEOF -for ac_lib in '' panelw panel +for ac_lib in '' $panel_libs do if test -z "$ac_lib"; then ac_res="none required" @@ -29810,7 +30737,7 @@ fi -if test "have_curses" != "no" +if test "$have_curses" != "no" then : CURSES_CFLAGS=$(echo $CURSES_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') @@ -29825,6 +30752,66 @@ fi PANEL_CFLAGS=$(echo $PANEL_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') +if test "x$with_curses" = xcurses +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether curses supports wide characters" >&5 +printf %s "checking whether curses supports wide characters... " >&6; } +if test ${ac_cv_curses_wide+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + cchar_t wcval; + setcchar(&wcval, L"x", A_NORMAL, 0, NULL); + add_wch(&wcval); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_curses_wide=yes +else case e in #( + e) ac_cv_curses_wide=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_curses_wide" >&5 +printf "%s\n" "$ac_cv_curses_wide" >&6; } + if test "x$ac_cv_curses_wide" = xyes +then : + printf "%s\n" "#define HAVE_NCURSESW 1" >>confdefs.h + +fi + +fi + # On Solaris, term.h requires curses.h ac_fn_c_check_header_compile "$LINENO" "term.h" "ac_cv_header_term_h" " #define NCURSES_OPAQUE 0 diff --git a/configure.ac b/configure.ac index ad8280349466e06..97d2091dbf89a70 100644 --- a/configure.ac +++ b/configure.ac @@ -7088,12 +7088,28 @@ then fi dnl check for ncursesw/ncurses and panelw/panel -dnl NOTE: old curses is not detected. dnl have_curses=[no, yes] dnl have_panel=[no, yes] have_curses=no have_panel=no +dnl Select the curses backend, or disable the curses and _curses_panel modules. +dnl "auto" (the default) prefers ncursesw and falls back to ncurses, both via +dnl pkg-config. "curses" links the system's native curses (e.g. on NetBSD or +dnl Solaris), which has no pkg-config file and is never chosen by "auto". +AC_MSG_CHECKING([for --with-curses]) +AC_ARG_WITH( + [curses], + [AS_HELP_STRING([--with(out)-curses@<:@=ncursesw|ncurses|curses|no@:>@], + [select the curses backend for the curses and _curses_panel + modules, or disable them (default: auto)])], + [AS_CASE([$with_curses], + [yes|auto], [with_curses=auto], + [ncursesw|ncurses|curses|no], [], + [AC_MSG_ERROR([proper usage is --with(out)-curses@<:@=ncursesw|ncurses|curses|no@:>@])])], + [with_curses=auto]) +AC_MSG_RESULT([$with_curses]) + dnl PY_CHECK_CURSES(LIBCURSES, LIBPANEL) dnl Sets 'have_curses' and 'have_panel'. dnl For the PKG_CHECK_MODULES() calls, we can safely reuse the first variable @@ -7108,34 +7124,54 @@ PKG_CHECK_MODULES([CURSES], [$1], PKG_CHECK_MODULES([PANEL], [$2], [AC_DEFINE([HAVE_]panel_var, [1], [Define if you have the '$2' library]) AS_VAR_SET([have_panel], [yes])], - [AS_VAR_SET([have_panel], [no])])], + [dnl pkgsrc renames the ncurses panel to "gnupanel" so it does not clash + dnl with a system libpanel; it Requires the same ncurses, so it matches. + PKG_CHECK_MODULES([PANEL], [gnupanel], + [AS_VAR_SET([have_panel], [yes])], + [AS_VAR_SET([have_panel], [no])])])], [AS_VAR_SET([have_curses], [no])]) AS_VAR_POPDEF([curses_var]) AS_VAR_POPDEF([panel_var])]) -# Check for ncursesw/panelw first. If that fails, try ncurses/panel. -PY_CHECK_CURSES([ncursesw], [panelw]) -AS_VAR_IF([have_curses], [no], - [PY_CHECK_CURSES([ncurses], [panel])]) +# Detect the selected backend. ncursesw/ncurses are found via pkg-config; +# native curses has no .pc file and is left to the header/link probes below. +# curses_libs/panel_libs drive the AC_SEARCH_LIBS fallback; for "no" they are +# empty so nothing links and have_curses stays "no". +AS_CASE([$with_curses], + [ncursesw], [PY_CHECK_CURSES([ncursesw], [panelw]) + curses_libs="ncursesw"; panel_libs="panelw gnupanel"], + [ncurses], [PY_CHECK_CURSES([ncurses], [panel]) + curses_libs="ncurses"; panel_libs="panel gnupanel"], + [curses], [curses_libs="curses"; panel_libs="panel"], + [no], [curses_libs=""; panel_libs=""], + [dnl auto: prefer ncursesw, fall back to ncurses; never native curses. + PY_CHECK_CURSES([ncursesw], [panelw]) + AS_VAR_IF([have_curses], [no], [PY_CHECK_CURSES([ncurses], [panel])]) + curses_libs="ncursesw ncurses"; panel_libs="panelw panel gnupanel"]) WITH_SAVE_ENV([ - # Make sure we've got the header defines. + # Make sure we've got the header defines. For the native "curses" backend, + # probe only the plain headers: a system may also have ncurses headers (e.g. + # ncurses/curses.h), and picking those while linking the native library mixes + # incompatible declarations (e.g. tparm()) with the native . AS_VAR_APPEND([CPPFLAGS], [" $CURSES_CFLAGS $PANEL_CFLAGS"]) - AC_CHECK_HEADERS(m4_normalize([ - ncursesw/curses.h ncursesw/ncurses.h ncursesw/panel.h - ncurses/curses.h ncurses/ncurses.h ncurses/panel.h - curses.h ncurses.h panel.h - ])) + AS_VAR_IF([with_curses], [curses], + [AC_CHECK_HEADERS([curses.h panel.h])], + [AC_CHECK_HEADERS(m4_normalize([ + ncursesw/curses.h ncursesw/ncurses.h ncursesw/panel.h + ncurses/curses.h ncurses/ncurses.h ncurses/panel.h + curses.h ncurses.h panel.h + ]))]) # Check that we're able to link with crucial curses/panel functions. This # also serves as a fallback in case pkg-config failed. AS_VAR_APPEND([LIBS], [" $CURSES_LIBS $PANEL_LIBS"]) - AC_SEARCH_LIBS([initscr], [ncursesw ncurses], + AC_SEARCH_LIBS([initscr], [$curses_libs], [AS_VAR_IF([have_curses], [no], [AS_VAR_SET([have_curses], [yes]) CURSES_LIBS=${CURSES_LIBS-"$ac_cv_search_initscr"}])], [AS_VAR_SET([have_curses], [no])]) - AC_SEARCH_LIBS([update_panels], [panelw panel], + AC_SEARCH_LIBS([update_panels], [$panel_libs], [AS_VAR_IF([have_panel], [no], [AS_VAR_SET([have_panel], [yes]) PANEL_LIBS=${PANEL_LIBS-"$ac_cv_search_update_panels"}])], @@ -7163,7 +7199,7 @@ AC_DEFUN([_CURSES_INCLUDES],dnl #endif ]) -AS_IF([test "have_curses" != "no"], [ +AS_IF([test "$have_curses" != "no"], [ dnl remove _XOPEN_SOURCE macro from curses cflags. pyconfig.h sets dnl the macro to 700. CURSES_CFLAGS=$(echo $CURSES_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') @@ -7183,6 +7219,27 @@ AS_VAR_IF([ac_sys_system], [Darwin], [ dnl pyconfig.h defines _XOPEN_SOURCE=700 PANEL_CFLAGS=$(echo $PANEL_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') +dnl Native curses ("curses") may be wide-character capable (e.g. on NetBSD) +dnl even though it is not ncursesw. Probe for the wide API; if present, build +dnl the module against it like ncursesw by defining HAVE_NCURSESW. ncursesw +dnl already defines HAVE_NCURSESW, and ncurses must stay narrow, so only the +dnl native backend is probed here. +AS_VAR_IF([with_curses], [curses], [ + AC_CACHE_CHECK([whether curses supports wide characters], + [ac_cv_curses_wide], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM([_CURSES_INCLUDES], [[ + cchar_t wcval; + setcchar(&wcval, L"x", A_NORMAL, 0, NULL); + add_wch(&wcval); + ]])], + [ac_cv_curses_wide=yes], + [ac_cv_curses_wide=no])]) + dnl HAVE_NCURSESW marks the wide (cchar_t) curses API; its template comes + dnl from the ncursesw pkg-config check above, so no description here. + AS_VAR_IF([ac_cv_curses_wide], [yes], [AC_DEFINE([HAVE_NCURSESW], [1])]) +]) + # On Solaris, term.h requires curses.h AC_CHECK_HEADERS([term.h], [], [], _CURSES_INCLUDES) From 33df37dd735777e69c5060c94ee348e89132c63d Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Jul 2026 09:23:26 +0300 Subject: [PATCH 031/205] gh-154048: Fix building the iconv codec on illumos/Solaris (GH-154049) iconv()'s input-buffer argument is declared "const char **" on some systems (illumos/Solaris, old GNU libiconv) rather than the POSIX "char **", so passing a "char **" failed to compile. Cast it through void*, which converts to either without a warning. Co-authored-by: Claude Opus 4.8 --- Objects/unicodeobject.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 6562546ae2f9ccb..a4550c0f5f3363a 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -8279,7 +8279,10 @@ _PyUnicode_DecodeIconv(const char *encoding, char *outptr = (char *)chunk; size_t outleft = sizeof(chunk); - size_t ret = iconv(cd, &inptr, &inleft, &outptr, &outleft); + /* Cast the input buffer through void*: iconv() declares its second + argument as "char **" on most systems but "const char **" on some + (e.g. illumos), and void* converts to either without a warning. */ + size_t ret = iconv(cd, (void *)&inptr, &inleft, &outptr, &outleft); int err = errno; in = inptr; @@ -8452,7 +8455,8 @@ _PyUnicode_EncodeIconv(const char *encoding, PyObject *unicode, size_t outleft = (size_t)(outend - out); /* When the whole string is converted, a final iconv() call with a NULL input flushes any pending shift sequence (e.g. ISO-2022). */ - size_t ret = iconv(cd, flushing ? NULL : &inptr, &inleft, &out, &outleft); + /* See the note above on the void* cast of the iconv() input buffer. */ + size_t ret = iconv(cd, flushing ? NULL : (void *)&inptr, &inleft, &out, &outleft); if (!flushing) { up = inptr; } From a83aaa91490d5885949eb0780a37b15963b6d0f3 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Jul 2026 10:43:22 +0300 Subject: [PATCH 032/205] gh-153862: Fix curses window.inch() for non-ASCII characters on a wide build (GH-153863) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On a wide build, winch() returns the low 8 bits of the character's code point with no locale conversion, so inch()/mvinch() disagreed with instr() for a non-ASCII character of an 8-bit locale ('€' under ISO-8859-15 gave 0xAC instead of 0xA4). Re-encode the cell to its locale byte via wctob(), as ncurses does for getbkgd(). Co-Authored-By: Claude Opus 4.8 --- Doc/library/curses.rst | 2 ++ Lib/test/test_curses.py | 10 +++--- ...-07-17-20-31-00.gh-issue-153862.X3kjoY.rst | 3 ++ Modules/_cursesmodule.c | 32 +++++++++++++++++++ 4 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-17-20-31-00.gh-issue-153862.X3kjoY.rst diff --git a/Doc/library/curses.rst b/Doc/library/curses.rst index e413cd9d2bef2d9..9d0bb239af06dfc 100644 --- a/Doc/library/curses.rst +++ b/Doc/library/curses.rst @@ -1321,6 +1321,8 @@ Reading window contents The bottom 8 bits are the character proper and the upper bits are the attributes; extract them with the :data:`A_CHARTEXT` and :data:`A_ATTRIBUTES` bit-masks, and the color pair with :func:`pair_number`. + The character byte is the locale-encoded byte of the cell's character, + consistent with :meth:`instr`. It cannot represent a cell holding combining characters, a character that does not fit in a single byte, or a color pair outside the :func:`color_pair` range; use :meth:`in_wch` for those, which returns it as a :class:`complexchar`. diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 915eae5ec233d51..2a222ecf5272ff5 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -958,10 +958,9 @@ def test_read_from_window(self): self.assertRaises(ValueError, stdscr.instr, -2) self.assertRaises(ValueError, stdscr.instr, 0, 2, -2) # A non-ASCII character of an 8-bit locale reads back as its encoded - # byte (see _encodable for the set). instr() returns the locale bytes - # for any single-byte character; inch() packs the text into a chtype, so - # on a wide build it only round-trips a Latin-1 codepoint (byte == - # codepoint). + # byte (see _encodable for the set). Both instr() and inch() return the + # locale byte for any character that fits the locale's single-byte + # encoding. encoding = stdscr.encoding for ch in ('A', 'é', '¤', '€', 'є'): try: @@ -973,8 +972,7 @@ def test_read_from_window(self): with self.subTest(ch=ch): stdscr.addstr(2, 0, ch) self.assertEqual(stdscr.instr(2, 0, 1), b) - if ord(ch) < 0x100: - self.assertEqual(stdscr.inch(2, 0) & curses.A_CHARTEXT, b[0]) + self.assertEqual(stdscr.inch(2, 0) & curses.A_CHARTEXT, b[0]) def test_coordinate_errors(self): # Addressing a cell outside the window raises curses.error. diff --git a/Misc/NEWS.d/next/Library/2026-07-17-20-31-00.gh-issue-153862.X3kjoY.rst b/Misc/NEWS.d/next/Library/2026-07-17-20-31-00.gh-issue-153862.X3kjoY.rst new file mode 100644 index 000000000000000..aa646dc6c49174b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-17-20-31-00.gh-issue-153862.X3kjoY.rst @@ -0,0 +1,3 @@ +On a wide :mod:`curses` build, :meth:`curses.window.inch` now returns the +locale-encoded byte of a non-ASCII character, matching +:meth:`~curses.window.instr`, instead of the low byte of its code point. diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index cc68a51f0bed935..1e874d65bfca5f7 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -774,6 +774,30 @@ curses_getcchar(const cchar_t *wcval, wchar_t *wstr, attr_t *attrs, int *pair) return rtn; } +/* winch() returns the low 8 bits of the character's code point with no locale + conversion, unlike instr(), so recover the locale byte from the wide cell + when the character maps to exactly one byte, keeping the attribute and color + bits in RTN. A character with no single-byte form is left to winch(). */ +static chtype +curses_cell_locale_byte(chtype rtn, const cchar_t *cell) +{ + wchar_t wstr[CCHARW_MAX + 1]; + attr_t attrs; + int pair; + if (curses_getcchar(cell, wstr, &attrs, &pair) == ERR + || wstr[0] == L'\0' || wstr[1] != L'\0') + { + return rtn; + } + /* wctob() mirrors ncurses' own _nc_to_char(): the single-byte form, or EOF + when the character has none in this locale. */ + int byte = wctob(wstr[0]); + if (byte != EOF) { + rtn = (rtn & ~(chtype)A_CHARTEXT) | (unsigned char)byte; + } + return rtn; +} + /* Hash one cell by value (text, attributes, pair) -- consistent with the equality comparison, not the raw cchar_t whose padding and unused text tail it ignores. Zero the key first so those bytes are deterministic, then @@ -3609,6 +3633,14 @@ _curses_window_inch_impl(PyCursesWindowObject *self, int group_right_1, curses_window_set_error(self, funcname, "inch"); return NULL; } +#ifdef HAVE_NCURSESW + curses_cell_t cell = {0}; + if ((group_right_1 ? mvwin_wch(self->win, y, x, &cell) + : win_wch(self->win, &cell)) != ERR) + { + rtn = curses_cell_locale_byte(rtn, &cell); + } +#endif return PyLong_FromUnsignedLong(rtn); } From 4b60b46f09e7148216d5e07c289a17c9ebbb6074 Mon Sep 17 00:00:00 2001 From: Jost Migenda Date: Sun, 19 Jul 2026 09:49:00 +0200 Subject: [PATCH 033/205] fix typos in `abi3t-migration.rst` (GH-153918) Co-authored-by: Chris Eibl <138194463+chris-eibl@users.noreply.github.com> --- Doc/howto/abi3t-migration.rst | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Doc/howto/abi3t-migration.rst b/Doc/howto/abi3t-migration.rst index c542efbdea8decc..ec78a33ed25820e 100644 --- a/Doc/howto/abi3t-migration.rst +++ b/Doc/howto/abi3t-migration.rst @@ -8,14 +8,14 @@ Migrating to Stable ABI for free threading (``abi3t``) Starting with the 3.15 release, CPython supports a variant of the Stable ABI that supports :term:`free-threaded ` Python: -Stable ABI for Free-Threaded Builds, or ``abi3t`` for short. +the Stable ABI for Free-Threaded Builds, or ``abi3t`` for short. This document describes how to adapt C API extensions to support free threading. Why do this =========== -The typical reason to use Stable ABI is to reduce the number of artifacts that -you need to build and distribute for each version of your library. +The typical reason to use the Stable ABI is to reduce the number of artifacts +that you need to build and distribute for each version of your library. Without the Stable ABI, you must build a separate shared library, and typically a *wheel* distribution, for each feature version of CPython you wish @@ -87,16 +87,16 @@ builds; even the 3.15+ ones that this table "attributes" to ``abi3t``.) Why *not* do this ----------------- -There are two main downsides to Stable ABI. +There are two main downsides to the Stable ABI. -First, you extension may become slower, since Stable ABI prioritizes +First, your extension may become slower, since the Stable ABI prioritizes compatibility over performance. The difference is usually not noticeable, and often can be mitigated by using the same source to build both a Stable ABI build and a few version-specific ones for "tier 1" CPython versions. Second, not all of the C API is available. -Extensions need to be ported to build for Stable ABI, which may be difficult +Extensions need to be ported to build for the Stable ABI, which may be difficult or, in rare cases, impossible. Specifically, ``abi3t`` requires APIs added in CPython 3.15. @@ -127,7 +127,7 @@ Prerequisites This guide assumes that you have an extension written directly in C (or C++), which you want to port to ``abi3t``. -If your extenstion uses a code generator (like Cython) or language binding +If your extension uses a code generator (like Cython) or language binding (like PyO3), it's best to wait until that tool has support for ``abi3t``. If you maintain such a tool, you might be able to adapt the instructions here for your tool. @@ -135,7 +135,7 @@ here for your tool. Non-free-threaded Stable ABI ---------------------------- -Your extension should support the Stable ABI (``abi3t``). +Your extension should support the non-free-threaded Stable ABI (``abi3``). If not, either port it first, or follow this guide but be prepared to fix issues it does not mention. @@ -183,7 +183,7 @@ following just after ``#include ``:: #error "abi3t define is not set!" #endif -This should result in a different error than "``abt3t`` define is not set". +This should result in a different error than "``abi3t`` define is not set". .. note:: @@ -705,7 +705,7 @@ Testing Note that when you build an extension compatible with multiple versions of CPython, you should always *test* it with each version it supports (for example, 3.15, 3.16, and so on). -Stable ABI only guarantees *ABI* compatibility; there may also be behavior +The Stable ABI only guarantees *ABI* compatibility; there may also be behavior changes -- both intentional ones (covered by :pep:`387`) and bugs. Be sure to run tests on both free-threaded and non-free-threaded builds From 9f5af278960a2f73a2e070de5141701e72675cf6 Mon Sep 17 00:00:00 2001 From: Rayan <157278782+ravg998@users.noreply.github.com> Date: Sun, 19 Jul 2026 10:21:26 +0200 Subject: [PATCH 034/205] Test that `ValueError` is raised when `vfsopen` is passed an invalid mode (#154008) * ValueError with message test * Remove white space * Apply suggestions from code review Change from double quotes to single quotes. Co-authored-by: Tomas R. --------- Co-authored-by: Tomas R. --- Lib/test/test_pathlib/test_read.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Lib/test/test_pathlib/test_read.py b/Lib/test/test_pathlib/test_read.py index 16fb555b2aee051..51eede9d9ebafb8 100644 --- a/Lib/test/test_pathlib/test_read.py +++ b/Lib/test/test_pathlib/test_read.py @@ -329,6 +329,11 @@ def test_info_is_symlink(self): self.assertFalse((p / 'fileA\udfff').info.is_symlink()) self.assertFalse((p / 'fileA\x00').info.is_symlink()) + def test_invalid_mode(self): + p = self.root / 'fileA' + with self.assertRaisesRegex(ValueError, 'invalid mode'): + vfsopen(p, 'q') + class ZipPathReadTest(ReadTestBase, unittest.TestCase): ground = ZipPathGround(ReadableZipPath) From 223cbffca6df7e4c8c77b360a4e6ba0472255643 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Jul 2026 11:45:06 +0300 Subject: [PATCH 035/205] gh-153864: Fix curses window.insch() for non-ASCII characters on a wide build (GH-153865) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On a wide build, winsch() does not locale-decode a byte above 127, unlike waddch(), so insch() inserted '¤' (U+00A4) instead of '€' for byte 0xA4 under ISO-8859-15. Decode the byte with btowc() and insert it as a wide character, like addch(). Co-Authored-By: Claude Opus 4.8 --- Lib/test/test_curses.py | 11 ++++------- ...6-07-17-20-56-32.gh-issue-153864.WmA9By.rst | 3 +++ Modules/_cursesmodule.c | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-17-20-56-32.gh-issue-153864.WmA9By.rst diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 2a222ecf5272ff5..b0592d3f1d92b95 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -785,13 +785,10 @@ def test_output_character(self): stdscr.move(2, 0) stdscr.echochar(v) self.assertEqual(self._read_char(2, 0), c) - # insch() round-trips a byte only where its code point equals - # the byte value (Latin-1): on a wide build ncurses winsch - # stores a printable byte directly as a code point instead of - # decoding it through the locale. - if ord(c) < 0x100: - stdscr.insch(1, 0, v) - self.assertEqual(self._read_char(1, 0), c) + # insch() decodes the byte through the locale like addch(), so + # it round-trips the same character. + stdscr.insch(1, 0, v) + self.assertEqual(self._read_char(1, 0), c) # The same characters supplied as a str. Unlike the int path above, a # str is stored as a wide-character cell on a wide build, so every diff --git a/Misc/NEWS.d/next/Library/2026-07-17-20-56-32.gh-issue-153864.WmA9By.rst b/Misc/NEWS.d/next/Library/2026-07-17-20-56-32.gh-issue-153864.WmA9By.rst new file mode 100644 index 000000000000000..79857185d7d0c76 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-17-20-56-32.gh-issue-153864.WmA9By.rst @@ -0,0 +1,3 @@ +On a wide :mod:`curses` build, :meth:`curses.window.insch` now inserts a +non-ASCII byte as the character it encodes in the window's encoding, +consistently with :meth:`~curses.window.addch`, instead of its code point. diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 1e874d65bfca5f7..2253d9ff3d704f3 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -3568,6 +3568,24 @@ _curses_window_insch_impl(PyCursesWindowObject *self, int group_left_1, if (type == 0) { return NULL; } + if (type == 1) { + /* winsch() does not locale-decode a byte above 127 on a wide build, + unlike waddch(), so decode it here and insert it as a wide + character. (gh-153864) */ + chtype cch = ch_ & A_CHARTEXT; + if (cch > 127) { + wint_t wc = btowc((int)cch); + if (wc != WEOF) { + wchar_t wstr[2] = { (wchar_t)wc, L'\0' }; + attr_t cattr = (attr_t)((ch_ | attr) & ~(chtype)A_CHARTEXT); + if (curses_setcchar(&wch, wstr, cattr, PAIR_NUMBER(cattr)) == ERR) { + curses_window_set_error(self, "setcchar", "insch"); + return NULL; + } + type = 2; + } + } + } if (type == 2) { if (!group_left_1) { rtn = wins_wch(self->win, &wch); From 30541f202f81ab3d3da5a6ac10c07fb6f1e4dcb4 Mon Sep 17 00:00:00 2001 From: Michael Newman Date: Sun, 19 Jul 2026 04:54:25 -0400 Subject: [PATCH 036/205] Fix typo "interruptability" in Logging Cookbook documentation (#154027) --- Doc/howto/logging-cookbook.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/howto/logging-cookbook.rst b/Doc/howto/logging-cookbook.rst index 87025814aafb9ab..2ff221cf258eda5 100644 --- a/Doc/howto/logging-cookbook.rst +++ b/Doc/howto/logging-cookbook.rst @@ -1955,7 +1955,7 @@ Subclass ``QueueListener`` class NNGSocketListener(logging.handlers.QueueListener): def __init__(self, uri, /, *handlers, **kwargs): - # Have a timeout for interruptability, and open a + # Have a timeout for interruptibility, and open a # subscriber socket socket = pynng.Sub0(listen=uri, recv_timeout=500) # The b'' subscription matches all topics From 39b058f8ad29238edc8b65406bb1fb0bc3c0020d Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Jul 2026 12:38:47 +0300 Subject: [PATCH 037/205] gh-154053: Fix compilation of the ssl module against LibreSSL (GH-154054) LibreSSL does not provide SSL_CTX_set1_sigalgs_list() or SSL_CTX_set1_client_sigalgs_list(), added in gh-138252, so _ssl failed to compile against LibreSSL on 3.15+. Guard the set_server_sigalgs() and set_client_sigalgs() methods so they raise NotImplementedError on LibreSSL, and skip the corresponding tests. --- Lib/test/test_ssl.py | 11 ++++++++++- ...07-19-00-00-00.gh-issue-154053.LibreSSLsigalgs.rst | 4 ++++ Modules/_ssl.c | 10 ++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-19-00-00-00.gh-issue-154053.LibreSSLsigalgs.rst diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 352a9c2a0c6106f..6446f96eab42a43 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -49,12 +49,15 @@ PROTOCOLS = sorted(ssl._PROTOCOL_NAMES) HOST = socket_helper.HOST IS_AWS_LC = "AWS-LC" in ssl.OPENSSL_VERSION +IS_LIBRESSL = "LibreSSL" in ssl.OPENSSL_VERSION IS_OPENSSL_3_0_0 = ssl.OPENSSL_VERSION_INFO >= (3, 0, 0) CAN_GET_SELECTED_OPENSSL_GROUP = ssl.OPENSSL_VERSION_INFO >= (3, 2) CAN_IGNORE_UNKNOWN_OPENSSL_GROUPS = ssl.OPENSSL_VERSION_INFO >= (3, 3) CAN_GET_AVAILABLE_OPENSSL_GROUPS = ssl.OPENSSL_VERSION_INFO >= (3, 5) CAN_GET_AVAILABLE_OPENSSL_SIGALGS = ssl.OPENSSL_VERSION_INFO >= (3, 4) -CAN_SET_CLIENT_SIGALGS = not IS_AWS_LC +# LibreSSL does not provide SSL_CTX_set1_(client_)sigalgs_list(). +CAN_SET_CLIENT_SIGALGS = not IS_AWS_LC and not IS_LIBRESSL +CAN_SET_SERVER_SIGALGS = not IS_LIBRESSL CAN_IGNORE_UNKNOWN_OPENSSL_SIGALGS = ssl.OPENSSL_VERSION_INFO >= (3, 3) CAN_GET_SELECTED_OPENSSL_SIGALG = ssl.OPENSSL_VERSION_INFO >= (3, 5) PY_SSL_DEFAULT_CIPHERS = sysconfig.get_config_var('PY_SSL_DEFAULT_CIPHERS') @@ -1080,6 +1083,8 @@ def test_set_client_sigalgs(self): if CAN_IGNORE_UNKNOWN_OPENSSL_SIGALGS: self.assertIsNone(ctx.set_client_sigalgs('rsa_pss_rsae_sha256:?foo')) + @unittest.skipUnless(CAN_SET_SERVER_SIGALGS, + "SSL library doesn't support setting server sigalgs") def test_set_server_sigalgs(self): ctx = ssl.create_default_context() @@ -4593,6 +4598,8 @@ def test_client_sigalgs_mismatch(self): chatty=True, connectionchatty=True, sni_name=hostname) + @unittest.skipUnless(CAN_SET_SERVER_SIGALGS, + "SSL library doesn't support setting server sigalgs") def test_server_sigalgs(self): # server rsa_pss_rsae_sha384, client auto sigalg = "rsa_pss_rsae_sha384" @@ -4613,6 +4620,8 @@ def test_server_sigalgs(self): if CAN_GET_SELECTED_OPENSSL_SIGALG: self.assertEqual(stats['server_sigalg'], sigalg) + @unittest.skipUnless(CAN_SET_SERVER_SIGALGS, + "SSL library doesn't support setting server sigalgs") def test_server_sigalgs_mismatch(self): client_context, server_context, hostname = testing_context() client_context.set_server_sigalgs("rsa_pss_rsae_sha256") diff --git a/Misc/NEWS.d/next/Library/2026-07-19-00-00-00.gh-issue-154053.LibreSSLsigalgs.rst b/Misc/NEWS.d/next/Library/2026-07-19-00-00-00.gh-issue-154053.LibreSSLsigalgs.rst new file mode 100644 index 000000000000000..3d453eb7314345c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-19-00-00-00.gh-issue-154053.LibreSSLsigalgs.rst @@ -0,0 +1,4 @@ +Fix compilation of the :mod:`ssl` module against LibreSSL, which does not +provide ``SSL_CTX_set1_sigalgs_list()`` and ``SSL_CTX_set1_client_sigalgs_list()``. +The :meth:`!set_server_sigalgs` and :meth:`!set_client_sigalgs` methods of +:class:`ssl.SSLContext` now raise :exc:`NotImplementedError` on LibreSSL. diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 20564e1ba4165a6..9f8a6a58cd9327e 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -3863,6 +3863,10 @@ _ssl__SSLContext_set_client_sigalgs_impl(PySSLContext *self, #ifdef OPENSSL_IS_AWSLC _setSSLError(get_state_ctx(self), "can't set client sigalgs on AWS-LC", 0, __FILE__, __LINE__); return NULL; +#elif defined(LIBRESSL_VERSION_NUMBER) + PyErr_SetString(PyExc_NotImplementedError, + "setting client sigalgs is not supported by LibreSSL"); + return NULL; #else if (!SSL_CTX_set1_client_sigalgs_list(self->ctx, sigalgslist)) { _setSSLError(get_state_ctx(self), "unrecognized signature algorithm", 0, __FILE__, __LINE__); @@ -3884,11 +3888,17 @@ _ssl__SSLContext_set_server_sigalgs_impl(PySSLContext *self, const char *sigalgslist) /*[clinic end generated code: output=31ecb1d310285644 input=653b752e4f8d801b]*/ { +#ifdef LIBRESSL_VERSION_NUMBER + PyErr_SetString(PyExc_NotImplementedError, + "setting server sigalgs is not supported by LibreSSL"); + return NULL; +#else if (!SSL_CTX_set1_sigalgs_list(self->ctx, sigalgslist)) { _setSSLError(get_state_ctx(self), "unrecognized signature algorithm", 0, __FILE__, __LINE__); return NULL; } Py_RETURN_NONE; +#endif } static int From 54b00c055210d738f5c3fb590ab85bde80b46ac6 Mon Sep 17 00:00:00 2001 From: MonadChains Date: Sun, 19 Jul 2026 11:48:02 +0200 Subject: [PATCH 038/205] Improve colorsys coverage (#153982) * improve colorsys coverage * add subtest --- Lib/test/test_colorsys.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Lib/test/test_colorsys.py b/Lib/test/test_colorsys.py index 74d76294b0b4d46..9dfaef44a6a4508 100644 --- a/Lib/test/test_colorsys.py +++ b/Lib/test/test_colorsys.py @@ -42,6 +42,10 @@ def test_hsv_values(self): self.assertTripleEqual(hsv, colorsys.rgb_to_hsv(*rgb)) self.assertTripleEqual(rgb, colorsys.hsv_to_rgb(*hsv)) + # test 360 phase shift in hue + h, s, v = hsv + self.assertTripleEqual(rgb, colorsys.hsv_to_rgb(h + 1.0, s, v)) + def test_hls_roundtrip(self): for r in frange(0.0, 1.0, 0.2): for g in frange(0.0, 1.0, 0.2): @@ -89,6 +93,18 @@ def test_yiq_roundtrip(self): colorsys.yiq_to_rgb(*colorsys.rgb_to_yiq(*rgb)) ) + def test_yiq_to_rgb_clamping(self): + values = [ + # rgb, yiq (invalid YIQ values clamped to RGB range) + ((1.0, 0.0, 1.0), (0.0, 0.5, 1.0)), + ((0.0, 1.0, 0.0), (0.25, -1.0, -1.0)), + ((0.0, 0.0, 1.0), (0.0, -1.0, 0.5)) + ] + + for (rgb, yiq) in values: + with self.subTest(rgb=rgb, yiq=yiq): + self.assertTripleEqual(rgb, colorsys.yiq_to_rgb(*yiq)) + def test_yiq_values(self): values = [ # rgb, yiq From 426cf84e84ed85d94c9055affd19e6fd69cfc939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Gir=C3=A3o=20Serr=C3=A3o?= <5621605+rodrigogiraoserrao@users.noreply.github.com> Date: Sun, 19 Jul 2026 11:58:18 +0200 Subject: [PATCH 039/205] Docs: add frozendict to data types theme (#154063) --- Doc/library/datatypes.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Doc/library/datatypes.rst b/Doc/library/datatypes.rst index ff51b2779e5fa33..4b4f3b1720accc4 100644 --- a/Doc/library/datatypes.rst +++ b/Doc/library/datatypes.rst @@ -8,9 +8,10 @@ The modules described in this chapter provide a variety of specialized data types such as dates and times, fixed-type arrays, heap queues, double-ended queues, and enumerations. -Python also provides some built-in data types, in particular, -:class:`dict`, :class:`list`, :class:`set` and :class:`frozenset`, and -:class:`tuple`. The :class:`str` class is used to hold +Python also provides :ref:`some built-in data types `, in particular, +:class:`list`, :class:`tuple`, :class:`dict`, :class:`frozendict`, +:class:`set`, and :class:`frozenset`. +The :class:`str` class is used to hold Unicode strings, and the :class:`bytes` and :class:`bytearray` classes are used to hold binary data. From cae8ec822b6e5f93df28897255984c2c16fb64a9 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Jul 2026 12:59:58 +0300 Subject: [PATCH 040/205] gh-153906: Modernize pydoc HTML output (GH-153909) Follow-up of the HTML5 migration in bpo-10716: replace the layout tables, the  /
encoding of docstrings and the obsolete anchors with semantic markup (header, section, h1-h4, CSS multi-column lists, white-space: pre-wrap, id= anchors), and restyle the pages after the python-docs-theme used by docs.python.org, including dark mode support. Members inherited from other classes are now collapsed by default. The pydoc API is unchanged; obsolete arguments of HTMLDoc methods are accepted and ignored. ServerHTMLDoc in xmlrpc.server is updated to match. Co-Authored-By: Claude Fable 5 --- Doc/whatsnew/3.16.rst | 11 + Lib/pydoc.py | 231 ++++++++-------- Lib/pydoc_data/_pydoc.css | 251 ++++++++++++++---- Lib/test/test_docxmlrpc.py | 73 ++--- Lib/test/test_pydoc/test_pydoc.py | 8 +- Lib/xmlrpc/server.py | 24 +- ...-07-18-13-30-00.gh-issue-153906.mHtNdY.rst | 4 + 7 files changed, 380 insertions(+), 222 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-18-13-30-00.gh-issue-153906.mHtNdY.rst diff --git a/Doc/whatsnew/3.16.rst b/Doc/whatsnew/3.16.rst index 0b08d0d0d12d982..c06e6930ac78bff 100644 --- a/Doc/whatsnew/3.16.rst +++ b/Doc/whatsnew/3.16.rst @@ -365,6 +365,17 @@ os (Contributed by Maurycy Pawłowski-Wieroński in :gh:`149464`.) +pydoc +----- + +* Modernize the HTML output of :mod:`pydoc`. The pages generated by the + :mod:`pydoc` HTTP server now use semantic HTML5 markup and a new style + sheet based on the python-docs-theme used by `docs.python.org + `__, with dark mode support. Class members + inherited from other classes are collapsed by default. + (Contributed by Serhiy Storchaka in :gh:`153906`.) + + re -- diff --git a/Lib/pydoc.py b/Lib/pydoc.py index 041ee26c791f36b..3140723f49b7d0d 100644 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -620,55 +620,41 @@ def page(self, title, contents): def heading(self, title, extras=''): """Format a page heading.""" return ''' - - - -
 
%s
%s
- ''' % (title, extras or ' ') - - def section(self, title, cls, contents, width=6, - prelude='', marginalia=None, gap=' '): - """Format a section with a heading.""" - if marginalia is None: - marginalia = '' + ' ' * width + '' - result = '''

- - - - ''' % (cls, title) +
+

%s

+
%s
+
+''' % (title, extras) + + def _section(self, title, cls, contents, prelude, tag): + result = ''' +
+<%s>%s +''' % (cls, tag, title, tag) if prelude: - result = result + ''' -
- -''' % (cls, marginalia, cls, prelude, gap) - else: - result = result + ''' -''' % (cls, marginalia, gap) + result = result + '
%s
\n' % prelude + return result + '%s\n\n' % contents + + def section(self, title, cls, contents, width=None, + prelude='', marginalia=None, gap=None): + """Format a section with a heading. - return result + '\n
 
%s
%s%s
%s
%s%s%s
' % contents + The width, marginalia and gap arguments are ignored. + """ + return self._section(title, cls, contents, prelude, 'h3') - def bigsection(self, title, *args): + def bigsection(self, title, cls, contents, *ignored): """Format a section with a big heading.""" - title = '%s' % title - return self.section(title, *args) + return self._section(title, cls, contents, '', 'h2') def preformat(self, text): """Format literal preformatted text.""" - text = self.escape(text.expandtabs()) - return replace(text, '\n\n', '\n \n', '\n\n', '\n \n', - ' ', ' ', '\n', '
\n') + return self.escape(text.expandtabs()) def multicolumn(self, list, format): """Format a list of items into a multi-column list.""" - result = '' - rows = (len(list) + 3) // 4 - for col in range(4): - result = result + '' - for i in range(rows*col, rows*col+rows): - if i < len(list): - result = result + format(list[i]) + '
\n' - result = result + '' - return '%s
' % result + result = ''.join('

  • %s
  • \n' % format(item) for item in list) + return '
      \n%s
    ' % result def grey(self, text): return '%s' % text @@ -776,7 +762,7 @@ def formattree(self, tree, modname, parent=None): for entry in tree: if isinstance(entry, tuple): c, bases = entry - result = result + '
    ' + result = result + '
    ' result = result + self.classlink(c, modname) if bases and bases != (parent,): parents = [] @@ -787,7 +773,7 @@ def formattree(self, tree, modname, parent=None): elif isinstance(entry, list): result = result + '
    \n%s
    \n' % self.formattree( entry, modname, c) - return '
    \n%s
    \n' % result + return '
    \n%s
    \n' % result def docmodule(self, object, name=None, mod=None, *ignored): """Produce HTML documentation for a module object.""" @@ -800,10 +786,10 @@ def docmodule(self, object, name=None, mod=None, *ignored): links = [] for i in range(len(parts)-1): links.append( - '
    %s' % + '%s' % ('.'.join(parts[:i+1]), parts[i])) linkedname = '.'.join(links + parts[-1:]) - head = '%s' % linkedname + head = linkedname try: path = inspect.getabsfile(object) url = urllib.parse.quote(path) @@ -861,8 +847,8 @@ def docmodule(self, object, name=None, mod=None, *ignored): data.append((key, value)) doc = self.markup(getdoc(object), self.preformat, fdict, cdict) - doc = doc and '%s' % doc - result = result + '

    %s

    \n' % doc + doc = doc and '
    %s
    \n' % doc + result = result + doc if hasattr(object, '__path__'): modpkgs = [] @@ -937,11 +923,26 @@ def maybe(self): object.__module__)) push('\n') + # Wrap the groups of members inherited from other classes in + #
    so that they are collapsed by default. + is_inherited = False + + def begingroup(msg): + if is_inherited: + push('
    \n' + '%s\n' % msg) + else: + push('

    %s

    \n' % msg) + + def endgroup(): + if is_inherited: + push('
    \n') + def spill(msg, attrs, predicate): ok, attrs = _split_list(attrs, predicate) if ok: hr.maybe() - push(msg) + begingroup(msg) for name, kind, homecls, value in ok: try: value = getattr(object, name) @@ -953,33 +954,37 @@ def spill(msg, attrs, predicate): push(self.document(value, name, mod, funcs, classes, mdict, object, homecls)) push('\n') + endgroup() return attrs def spilldescriptors(msg, attrs, predicate): ok, attrs = _split_list(attrs, predicate) if ok: hr.maybe() - push(msg) + begingroup(msg) for name, kind, homecls, value in ok: push(self.docdata(value, name, mod)) + endgroup() return attrs def spilldata(msg, attrs, predicate): ok, attrs = _split_list(attrs, predicate) if ok: hr.maybe() - push(msg) + begingroup(msg) for name, kind, homecls, value in ok: base = self.docother(getattr(object, name), name, mod) doc = getdoc(value) if not doc: - push('
    %s
    \n' % base) + push('
    %s
    \n' % base) else: doc = self.markup(getdoc(value), self.preformat, funcs, classes, mdict) - doc = '
    %s' % doc - push('
    %s%s
    \n' % (base, doc)) + push('
    %s
    ' + '
    %s
    \n' + % (base, doc)) push('\n') + endgroup() return attrs attrs = [(name, kind, cls, value) @@ -1014,10 +1019,12 @@ def spilldata(msg, attrs, predicate): continue elif thisclass is object: tag = 'defined here' + is_inherited = False else: tag = 'inherited from %s' % self.classlink(thisclass, object.__module__) - tag += ':
    \n' + is_inherited = True + tag += ':' sort_attributes(attrs, object) @@ -1040,10 +1047,10 @@ def spilldata(msg, attrs, predicate): contents = ''.join(contents) if name == realname: - title = 'class %s' % ( + title = 'class %s' % ( name, realname) else: - title = '%s = class %s' % ( + title = '%s = class %s' % ( name, name, realname) if bases: parents = [] @@ -1060,9 +1067,8 @@ def spilldata(msg, attrs, predicate): if decl: doc = decl + (doc or '') doc = self.markup(doc, self.preformat, funcs, classes, mdict) - doc = doc and '%s
     
    ' % doc - return self.section(title, 'title', contents, 3, doc) + return self.section(title, 'title', contents, prelude=doc) def formatvalue(self, object): """Format an argument default value as text.""" @@ -1115,7 +1121,7 @@ def docroutine(self, object, name=None, mod=None, asyncqualifier = '' if name == realname: - title = '%s' % (anchor, realname) + title = '%s' % (anchor, realname) else: if (cl is not None and inspect.getattr_static(cl, realname, []) is object): @@ -1126,7 +1132,7 @@ def docroutine(self, object, name=None, mod=None, note = '' else: reallink = realname - title = '%s = %s' % ( + title = '%s = %s' % ( anchor, name, reallink) argspec = None if inspect.isroutine(object): @@ -1142,15 +1148,15 @@ def docroutine(self, object, name=None, mod=None, argspec = '(...)' decl = asyncqualifier + title + self.escape(argspec) + (note and - self.grey('%s' % note)) + '%s' % note) if skipdocs: - return '
    %s
    \n' % decl + return '
    %s
    \n' % decl else: doc = self.markup( getdoc(object), self.preformat, funcs, classes, methods) - doc = doc and '
    %s
    ' % doc - return '
    %s
    %s
    \n' % (decl, doc) + doc = doc and '
    %s
    ' % doc + return '
    %s
    %s
    \n' % (decl, doc) def docdata(self, object, name=None, mod=None, cl=None, *ignored): """Produce html documentation for a data descriptor.""" @@ -1158,10 +1164,10 @@ def docdata(self, object, name=None, mod=None, cl=None, *ignored): push = results.append if name: - push('
    %s
    \n' % name) + push('
    %s
    \n' % name) doc = self.markup(getdoc(object), self.preformat) if doc: - push('
    %s
    \n' % doc) + push('
    %s
    \n' % doc) push('
    \n') return ''.join(results) @@ -2471,12 +2477,17 @@ def page(self, title, contents): '' % css_path) return '''\ - + + Pydoc: %s -%s%s
    %s
    +%s +%s +
    +%s +
    ''' % (title, css_link, html_navbar(), contents) @@ -2487,27 +2498,25 @@ def html_navbar(): platform.python_build()[0], platform.python_compiler())) return """ -
    - Python %s
    %s -
    -
    - -
    -
    - - -
      -
    - - -
    -
    -
    - """ % (version, html.escape(platform.platform(terse=True))) + +""" % (version, html.escape(platform.platform(terse=True))) def html_index(): """Module Index page.""" @@ -2515,13 +2524,11 @@ def html_index(): def bltinlink(name): return '%s' % (name, name) - heading = html.heading( - 'Index of Modules' - ) + heading = html.heading('Index of Modules') names = [name for name in sys.builtin_module_names if name != '__main__'] contents = html.multicolumn(names, bltinlink) - contents = [heading, '

    ' + html.bigsection( + contents = [heading, html.bigsection( 'Built-in Modules', 'index', contents)] seen = {} @@ -2529,8 +2536,8 @@ def bltinlink(name): contents.append(html.index(dir, seen)) contents.append( - '

    pydoc by Ka-Ping Yee' - '<ping@lfw.org>

    ') + '
    pydoc by Ka-Ping Yee' + ' <ping@lfw.org>
    ') return 'Index of Modules', ''.join(contents) def html_search(key): @@ -2554,13 +2561,11 @@ def bltinlink(name): return '%s' % (name, name) results = [] - heading = html.heading( - 'Search Results', - ) + heading = html.heading('Search Results') for name, desc in search_result: - results.append(bltinlink(name) + desc) + results.append('
  • %s%s
  • ' % (bltinlink(name), desc)) contents = heading + html.bigsection( - 'key = %s' % key, 'index', '
    '.join(results)) + 'key = %s' % key, 'index', '
      \n%s\n
    ' % '\n'.join(results)) return 'Search Results', contents def html_topics(): @@ -2569,29 +2574,21 @@ def html_topics(): def bltinlink(name): return '%s' % (name, name) - heading = html.heading( - 'INDEX', - ) + heading = html.heading('Topics') names = sorted(Helper.topics.keys()) - contents = html.multicolumn(names, bltinlink) - contents = heading + html.bigsection( - 'Topics', 'index', contents) + contents = heading + html.multicolumn(names, bltinlink) return 'Topics', contents def html_keywords(): """Index of keywords.""" - heading = html.heading( - 'INDEX', - ) + heading = html.heading('Keywords') names = sorted(Helper.keywords.keys()) def bltinlink(name): return '%s' % (name, name) - contents = html.multicolumn(names, bltinlink) - contents = heading + html.bigsection( - 'Keywords', 'index', contents) + contents = heading + html.multicolumn(names, bltinlink) return 'Keywords', contents def html_topicpage(topic): @@ -2603,11 +2600,9 @@ def html_topicpage(topic): title = 'KEYWORD' else: title = 'TOPIC' - heading = html.heading( - '%s' % title, - ) - contents = '
    %s
    ' % html.markup(contents) - contents = html.bigsection(topic , 'index', contents) + heading = html.heading('%s %s' % (title.capitalize(), topic)) + contents = ('
    %s
    ' + % (title.lower(), html.markup(contents))) if xrefs: xrefs = sorted(xrefs.split()) @@ -2615,7 +2610,7 @@ def bltinlink(name): return '%s' % (name, name) xrefs = html.multicolumn(xrefs, bltinlink) - xrefs = html.section('Related help topics: ', 'index', xrefs) + xrefs = html.section('Related help topics', 'index', xrefs) return ('%s %s' % (title, topic), ''.join((heading, contents, xrefs))) @@ -2628,9 +2623,7 @@ def html_getobj(url): return title, content def html_error(url, exc): - heading = html.heading( - 'Error', - ) + heading = html.heading('Error') contents = '
    '.join(html.escape(line) for line in format_exception_only(type(exc), exc)) contents = heading + html.bigsection(url, 'error', contents) diff --git a/Lib/pydoc_data/_pydoc.css b/Lib/pydoc_data/_pydoc.css index a6aa2e4c1a021ef..9e5c5c2f6f320dc 100644 --- a/Lib/pydoc_data/_pydoc.css +++ b/Lib/pydoc_data/_pydoc.css @@ -3,110 +3,253 @@ Contents of this file are subject to change without notice. + The colors and fonts follow the python-docs-theme used by + docs.python.org. */ +:root { + color-scheme: light dark; + --text-color: #333; + --background-color: #fff; + --link-color: #0072aa; + --link-visited-color: #6363bb; + --link-hover-color: #00b0e4; + --muted-color: #707070; + --code-background-color: #eee; + --border-color: #ccc; + --target-background-color: #fbe54e; + --block-background-color: #eeffcc; + --block-border-color: #ac9; + --error-color: #ba2121; + --repr-color: #c040c0; +} + +@media (prefers-color-scheme: dark) { + :root { + --text-color: rgba(255, 255, 255, 0.87); + --background-color: #222; + --link-color: #77aaff; + --link-visited-color: #0099ee; + --link-hover-color: #00b0e4; + --muted-color: #999; + --code-background-color: #424242; + --border-color: #616161; + --target-background-color: #616161; + --block-background-color: #333; + --block-border-color: #616161; + --error-color: #f44c4e; + --repr-color: #d080d0; + } +} + body { - background-color: #f0f0f8; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, + segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, + noto, arial, sans-serif; + color: var(--text-color); + background-color: var(--background-color); + line-height: 1.4; + margin: 0; + padding: 0 1em 1em; } -table.heading tr { - background-color: #7799ee; +code, pre, .docstring, dl.doc > dt { + font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, + monospace; + font-size: 96.5%; } -.decor { - color: #ffffff; +a:link { + color: var(--link-color); } -.title-decor { - background-color: #ffc8d8; - color: #000000; +a:visited { + color: var(--link-visited-color); } -.pkg-content-decor { - background-color: #aa55cc; +a:hover { + color: var(--link-hover-color); } -.index-decor { - background-color: #ee77aa; +/* Page heading */ + +header.heading { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: flex-end; + column-gap: 1em; + padding: 0.5em 0; + border-bottom: 1px solid var(--border-color); } -.functions-decor { - background-color: #eeaa77; +header.heading h1 { + margin: 0; + font-size: 1.8em; } -.data-decor { - background-color: #55aa55; +header.heading .extra { + text-align: right; + overflow-wrap: anywhere; } -.author-decor { - background-color: #7799ee; +/* Sections */ + +h2, h3, h4 { + margin: 0.6em 0 0.4em; } -.credits-decor { - background-color: #7799ee; +section > h2 { + border-bottom: 1px solid var(--border-color); + padding-bottom: 0.2em; + font-size: 1.4em; } -.error-decor { - background-color: #bb0000; +section > h3 { + font-size: 1.1em; } -.grey { - color: #909090; +section.error > h2 { + color: var(--error-color); } -.white { - color: #ffffff; +section section { + border: 1px solid var(--border-color); + border-radius: 3px; + padding: 0 0.8em 0.5em; + margin: 0.8em 0; } -.repr { - color: #c040c0; +/* Docstrings and other preformatted text */ + +.docstring { + white-space: pre-wrap; + margin: 0.3em 0; } -table.heading tr td.title { - vertical-align: bottom; +pre.topic, pre.keyword { + background-color: var(--block-background-color); + border: 1px solid var(--block-border-color); + border-radius: 3px; + padding: 0.5em 0.8em; + overflow-x: auto; } -table.heading tr td.extra { - vertical-align: bottom; - text-align: right; +/* Documented names (functions, methods, data) */ + +dl.doc { + margin: 0.5em 0; } -.heading-text { - font-family: helvetica, arial; +dl.doc > dt { + overflow-wrap: anywhere; } -.bigsection { - font-size: larger; +a:target { + background-color: var(--target-background-color); } -.title { - font-size: x-large; +dl.doc > dd { + margin: 0.2em 0 0.8em 2em; } -.code { - font-family: monospace; +.note { + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, + segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, + noto, arial, sans-serif; + color: var(--muted-color); } -table { - width: 100%; - border-spacing : 0; - border-collapse : collapse; +.grey { + color: var(--muted-color); +} + +.repr { + color: var(--repr-color); +} + +hr { border: 0; + border-top: 1px solid var(--border-color); + margin: 0.8em 0; } -td { - padding: 2; +/* Inherited class members are collapsed by default. */ + +details.inherited > summary { + cursor: pointer; + margin: 0.6em 0 0.4em; } -td.section-title { - vertical-align: bottom; +/* Multi-column lists of modules, topics and keywords */ + +ul.multicolumn { + list-style-type: none; + column-width: 14em; + column-gap: 1em; + margin: 0.5em 0; + padding: 0; } -td.multicolumn { - width: 25%; - vertical-align: bottom; +ul.multicolumn > li { + overflow-wrap: anywhere; } -td.singlecolumn { - width: 100%; +/* Class hierarchy trees */ + +dl.tree, dl.tree dl { + margin: 0; +} + +dl.tree dd { + margin: 0 0 0 2em; +} + +/* Navigation bar of the pydoc server */ + +nav.navbar { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + column-gap: 1em; + row-gap: 0.3em; + padding: 0.5em 0; + border-bottom: 1px solid var(--border-color); + font-size: smaller; +} + +nav.navbar .navbar-version { + color: var(--muted-color); +} + +nav.navbar ul { + display: flex; + flex-wrap: wrap; + column-gap: 1em; + list-style-type: none; + margin: 0; + padding: 0; +} + +nav.navbar form { + display: inline-block; +} + +nav.navbar input { + font-family: inherit; + font-size: inherit; + color: inherit; + background-color: var(--background-color); + border: 1px solid #999; + border-radius: 3px; +} + +footer { + margin-top: 1em; + padding-top: 0.3em; + border-top: 1px solid var(--border-color); + color: var(--muted-color); + font-size: smaller; + text-align: right; } diff --git a/Lib/test/test_docxmlrpc.py b/Lib/test/test_docxmlrpc.py index 2ad422079b7f23e..64edc7b7e191d4c 100644 --- a/Lib/test/test_docxmlrpc.py +++ b/Lib/test/test_docxmlrpc.py @@ -127,7 +127,7 @@ def test_lambda(self): self.client.request("GET", "/") response = self.client.getresponse() - self.assertIn((b'
    ' + self.assertIn((b'
    ' b'<lambda>(x, y)
    '), response.read()) @@ -144,16 +144,17 @@ def test_autolinking(self): response = self.client.getresponse().read() self.assertIn( - (b'
    add(x, y)
    ' - b'Add two instances together. This ' - b'follows ' - b'PEP008, but has nothing
    \nto do ' - b'with ' - b'RFC1952. Case should matter: pEp008 ' - b'and rFC1952.  Things
    \nthat start ' - b'with http and ftp should be ' - b'auto-linked, too:
    \n' - b'http://google.com.
    '), response) + (b'
    add' + b'(x, y)
    ' + b'Add two instances together. This ' + b'follows ' + b'PEP008, but has nothing\nto do ' + b'with ' + b'RFC1952. Case should matter: pEp008 ' + b'and rFC1952. Things\nthat start ' + b'with http and ftp should be ' + b'auto-linked, too:\n' + b'http://google.com.
    '), response) @make_request_and_skipIf(sys.flags.optimize >= 2, "Docstrings are omitted with -O2 and above") @@ -167,22 +168,24 @@ def test_system_methods(self): response = self.client.getresponse().read() self.assertIn( - (b'
    system.methodHelp' - b'(method_name)
    system.methodHelp(\'add\') => "Adds ' - b'two integers together"
    \n 
    \nReturns a' - b' string containing documentation for ' - b'the specified method.
    \n
    system.methodSignature' - b'(method_name)
    ' - b'system.methodSignature(\'add\') => [double, ' - b'int, int]
    \n 
    \nReturns a list ' - b'describing the signature of the method.' - b' In the
    \nabove example, the add ' - b'method takes two integers as arguments' - b'
    \nand returns a double result.
    \n ' - b'
    \nThis server does NOT support system' - b'.methodSignature.
    '), response) + (b'
    ' + b'system.methodHelp(method_name)
    ' + b'
    system.methodHelp(\'add\') => "Adds ' + b'two integers together"\n\nReturns a' + b' string containing documentation for ' + b'the specified method.
    \n
    system.methodSignature' + b'(method_name)
    ' + b'' + b'system.methodSignature(\'add\') => [double, ' + b'int, int]\n\nReturns a list ' + b'describing the signature of the method.' + b' In the\nabove example, the add ' + b'method takes two integers as arguments' + b'\nand returns a double result.\n\n' + b'This server does NOT support system' + b'.methodSignature.
    '), response) def test_autolink_dotted_methods(self): """Test that selfdot values are made strong automatically in the @@ -190,7 +193,7 @@ def test_autolink_dotted_methods(self): self.client.request("GET", "/") response = self.client.getresponse() - self.assertIn(b"""Try self.add, too.""", + self.assertIn(b"""Try self.add, too.""", response.read()) def test_annotations(self): @@ -198,11 +201,11 @@ def test_annotations(self): self.client.request("GET", "/") response = self.client.getresponse() docstring = (b'' if sys.flags.optimize >= 2 else - b'
    Use function annotations.
    ') + b'
    Use function annotations.
    ') self.assertIn( - (b'
    annotation' - b'(x: int)
    ' + docstring + b'
    \n' - b'
    ' + (b'
    annotation' + b'(x: int)
    ' + docstring + b'
    \n' + b'
    ' b'method_annotation(x: bytes)
    '), response.read()) @@ -217,9 +220,11 @@ def test_server_title_escape(self): generated = self.serv.generate_html_documentation() title = re.search(r'(.+?)', generated).group() - documentation = re.search(r'

    (.+?)

    ', generated).group() + documentation = re.search(r'
    (.+?)
    ', + generated).group() self.assertEqual('Python: test_title<script>', title) - self.assertEqual('

    test_documentation<script>

    ', documentation) + self.assertEqual('
    test_documentation<script>
    ', + documentation) if __name__ == '__main__': diff --git a/Lib/test/test_pydoc/test_pydoc.py b/Lib/test/test_pydoc/test_pydoc.py index 25f94c4c740e1ea..34d30f54e9c9c7f 100644 --- a/Lib/test/test_pydoc/test_pydoc.py +++ b/Lib/test/test_pydoc/test_pydoc.py @@ -369,7 +369,7 @@ def html2text(html): Tailored for pydoc tests only. """ - html = html.replace("
    ", "\n") + html = re.sub(r"]*>", "\n", html) html = html.replace("
    ", "-"*70) html = re.sub("<.*?>", "", html) html = pydoc.replace(html, " ", " ", ">", ">", "<", "<") @@ -1913,7 +1913,7 @@ async def coro_function(ign) -> int: html = pydoc.HTMLDoc().document(coro_function) self.assertIn( - 'async coro_function', + 'async coro_function', html) def test_async_generator_annotation(self): @@ -1925,7 +1925,7 @@ async def an_async_generator(): html = pydoc.HTMLDoc().document(an_async_generator) self.assertIn( - 'async an_async_generator', + 'async an_async_generator', html) @requires_docstrings @@ -2091,7 +2091,7 @@ def test_html_doc_routines_in_module(self): doc = pydoc.HTMLDoc() result = doc.docmodule(pydocfodder) result = html2text(result) - lines = self.getsection(result, ' Functions', None) + lines = self.getsection(result, 'Functions', None) # function alias self.assertIn(' global_func_alias = global_func(x, y)', lines) self.assertIn(' A_staticmethod(x, y)', lines) diff --git a/Lib/xmlrpc/server.py b/Lib/xmlrpc/server.py index 3e6871157d09299..5ef68640a09ba4b 100644 --- a/Lib/xmlrpc/server.py +++ b/Lib/xmlrpc/server.py @@ -752,7 +752,7 @@ def docroutine(self, object, name, mod=None, anchor = (cl and cl.__name__ or '') + '-' + name note = '' - title = '%s' % ( + title = '%s' % ( self.escape(anchor), self.escape(name)) if callable(object): @@ -766,13 +766,13 @@ def docroutine(self, object, name, mod=None, else: docstring = pydoc.getdoc(object) - decl = title + argspec + (note and self.grey( - '%s' % note)) + decl = title + argspec + (note and + '%s' % note) doc = self.markup( docstring, self.preformat, funcs, classes, methods) - doc = doc and '
    %s
    ' % doc - return '
    %s
    %s
    \n' % (decl, doc) + doc = doc and '
    %s
    ' % doc + return '
    %s
    %s
    \n' % (decl, doc) def docserver(self, server_name, package_documentation, methods): """Produce HTML documentation for an XML-RPC server.""" @@ -783,12 +783,11 @@ def docserver(self, server_name, package_documentation, methods): fdict[value] = fdict[key] server_name = self.escape(server_name) - head = '%s' % server_name - result = self.heading(head) + result = self.heading(server_name) doc = self.markup(package_documentation, self.preformat, fdict) - doc = doc and '%s' % doc - result = result + '

    %s

    \n' % doc + doc = doc and '
    %s
    \n' % doc + result = result + doc contents = [] method_items = sorted(methods.items()) @@ -807,12 +806,15 @@ def page(self, title, contents): '' % css_path) return '''\ - + + Python: %s -%s%s''' % (title, css_link, contents) +%s +%s +''' % (title, css_link, contents) class XMLRPCDocGenerator: """Generates documentation for an XML-RPC server. diff --git a/Misc/NEWS.d/next/Library/2026-07-18-13-30-00.gh-issue-153906.mHtNdY.rst b/Misc/NEWS.d/next/Library/2026-07-18-13-30-00.gh-issue-153906.mHtNdY.rst new file mode 100644 index 000000000000000..487587145f1a3eb --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-18-13-30-00.gh-issue-153906.mHtNdY.rst @@ -0,0 +1,4 @@ +Modernize the HTML output of :mod:`pydoc`: use semantic HTML5 markup and +a new style sheet based on the python-docs-theme used by docs.python.org, +with dark mode support. Class members inherited from other classes are +now collapsed by default. From d5eb31209699ef59857780a5530191031ee3f796 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 19 Jul 2026 12:04:40 +0200 Subject: [PATCH 041/205] gh-153903: Fix ctypes wrap_dll_function() with string annotations (#154042) Call get_annotations() with eval_str=True. --- Lib/ctypes/util.py | 2 +- Lib/test/test_ctypes/test_funcptr.py | 5 +++++ Lib/test/test_ctypes/wrap_str_ann.py | 13 +++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 Lib/test/test_ctypes/wrap_str_ann.py diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index b035bfb99feee0a..c65fc3032fdfad4 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -579,7 +579,7 @@ def wrap_dll_function(dll): def decorator(func): name = func.__name__ ptr = getattr(dll, name) - annotations = annotationlib.get_annotations(func) + annotations = annotationlib.get_annotations(func, eval_str=True) try: restype = annotations.pop("return") diff --git a/Lib/test/test_ctypes/test_funcptr.py b/Lib/test/test_ctypes/test_funcptr.py index 94d03ad553d2227..86699ad81098275 100644 --- a/Lib/test/test_ctypes/test_funcptr.py +++ b/Lib/test/test_ctypes/test_funcptr.py @@ -151,6 +151,11 @@ def noexist(): def PyObject_GetAttrString(op: ctypes.py_object, attr: ctypes.c_char_p): pass + def test_wrap_dll_function_str_ann(self): + from test.test_ctypes import wrap_str_ann + version = wrap_str_ann.Py_GetVersion() + self.assertIsInstance(version, bytes) + if __name__ == '__main__': unittest.main() diff --git a/Lib/test/test_ctypes/wrap_str_ann.py b/Lib/test/test_ctypes/wrap_str_ann.py new file mode 100644 index 000000000000000..aa114a640c3a990 --- /dev/null +++ b/Lib/test/test_ctypes/wrap_str_ann.py @@ -0,0 +1,13 @@ +from __future__ import annotations +import ctypes.util + +def test_ann() -> ctypes.c_char_p: + ... + +# Check that "from __future__ import annotations" works as expected +if not isinstance(test_ann.__annotations__['return'], str): + raise Exception("annotations must be strings") + +@ctypes.util.wrap_dll_function(ctypes.pythonapi) +def Py_GetVersion() -> ctypes.c_char_p: + ... From 83674483563c83550c87311adb557f8565916ce0 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 19 Jul 2026 12:05:22 +0200 Subject: [PATCH 042/205] gh-104533: Fix `@ctypes.util.struct` with string annotations (#154040) Fix `@ctypes.util.struct` on structures declared in a module which uses `from __future__ import annotations`. The decorator now calls get_annotations() with eval_str=True. --- Lib/ctypes/util.py | 3 ++- Lib/test/test_ctypes/struct_str_ann.py | 15 +++++++++++++++ Lib/test/test_ctypes/test_structures.py | 13 ++++++++++--- 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 Lib/test/test_ctypes/struct_str_ann.py diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index c65fc3032fdfad4..e8db8c578bb3601 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -512,7 +512,8 @@ def _process_struct(decorated_class, /, *, align, layout, endian, pack): fields.extend(decorated_class._fields_) anonymous.extend(decorated_class._anonymous_) - for name, hint in annotationlib.get_annotations(decorated_class).items(): + annotations = annotationlib.get_annotations(decorated_class, eval_str=True) + for name, hint in annotations.items(): if get_origin(hint) is ClassVar: continue diff --git a/Lib/test/test_ctypes/struct_str_ann.py b/Lib/test/test_ctypes/struct_str_ann.py new file mode 100644 index 000000000000000..7a924825dd81eeb --- /dev/null +++ b/Lib/test/test_ctypes/struct_str_ann.py @@ -0,0 +1,15 @@ +from __future__ import annotations +from ctypes.util import struct +from ctypes import c_int + +class TestAnn: + x: c_int + +# Check that "from __future__ import annotations" works as expected +if not isinstance(TestAnn.__annotations__['x'], str): + raise Exception("annotations must be strings") + +@struct +class Point: + x: c_int + y: c_int diff --git a/Lib/test/test_ctypes/test_structures.py b/Lib/test/test_ctypes/test_structures.py index 4dc1ea867c0700a..04c3682e8308ece 100644 --- a/Lib/test/test_ctypes/test_structures.py +++ b/Lib/test/test_ctypes/test_structures.py @@ -88,13 +88,14 @@ class X(Structure): self.assertEqual(sizeof(X), min(8, longlong_align) + longlong_size) self.assertEqual(X.b.offset, min(8, longlong_align)) - with self.assertRaises(ValueError): - if use_struct_util: + if use_struct_util: + with self.assertRaises(NameError): @struct_util(pack=-1, layout='ms') class X: a: "b" b: "q" - else: + else: + with self.assertRaises(ValueError): class X(Structure): _fields_ = [("a", "b"), ("b", "q")] _pack_ = -1 @@ -954,6 +955,12 @@ class Foo: self.assertEqual(Foo.__name__, "Foo") + def test_string_annotations(self): + from test.test_ctypes import struct_str_ann + Point = struct_str_ann.Point + fields = [['x', c_int], ['y', c_int]] + self.assertEqual(Point._fields_, fields) + if __name__ == '__main__': unittest.main() From e26005199b17792b47bed10096eaface7fc60b40 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 19 Jul 2026 12:07:43 +0200 Subject: [PATCH 043/205] gh-104533: Fix `@ctypes.util.struct` with endian (#154038) Change `_fields_` type to a list of tuples, instead of a list of lists. Modify test.test_ctypes.test_aligned_structures to test also `@ctypes.util.struct` decorator. --- Lib/ctypes/util.py | 3 +- .../test_ctypes/test_aligned_structures.py | 429 ++++++++++++------ 2 files changed, 293 insertions(+), 139 deletions(-) diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index e8db8c578bb3601..a73422598b2cd96 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -532,7 +532,8 @@ def _process_struct(decorated_class, /, *, align, layout, endian, pack): else: field.append(hint) - fields.append(field) + # _fields_ is a list of tuples + fields.append(tuple(field)) if endian == 'big': endian_class = BigEndianStructure diff --git a/Lib/test/test_ctypes/test_aligned_structures.py b/Lib/test/test_ctypes/test_aligned_structures.py index 50b4d729b9db8ad..d58d92a19eb33c9 100644 --- a/Lib/test/test_ctypes/test_aligned_structures.py +++ b/Lib/test/test_ctypes/test_aligned_structures.py @@ -3,29 +3,64 @@ BigEndianStructure, LittleEndianStructure, BigEndianUnion, LittleEndianUnion, Structure, ) +from ctypes.util import struct as struct_util import struct import unittest from ._support import StructCheckMixin +from test.support import subTests + + +def get_struct_base(endian): + if endian == 'big': + return BigEndianStructure + elif endian == 'little': + return LittleEndianStructure + elif endian == 'native': + return Structure + else: + raise ValueError('invalid endian') + +def get_union_base(endian): + if endian == 'big': + return BigEndianUnion + elif endian == 'little': + return LittleEndianUnion + else: + raise ValueError('invalid endian') + class TestAlignedStructures(unittest.TestCase, StructCheckMixin): - def test_aligned_string(self): - for base, e in ( - (LittleEndianStructure, "<"), - (BigEndianStructure, ">"), + @subTests("use_struct_util", [False, True]) + def test_aligned_string(self, use_struct_util): + for endian, e in ( + ('little', "<"), + ('big', ">"), ): data = bytearray(struct.pack(f"{e}i12x16s", 7, b"hello world!")) - class Aligned(base): - _align_ = 16 - _fields_ = [ - ('value', c_char * 12) - ] + if use_struct_util: + @struct_util(endian=endian, align=16) + class Aligned: + value: c_char * 12 + else: + base = get_struct_base(endian) + class Aligned(base): + _align_ = 16 + _fields_ = [ + ('value', c_char * 12) + ] self.check_struct(Aligned) - class Main(base): - _fields_ = [ - ('first', c_uint32), - ('string', Aligned), - ] + if use_struct_util: + @struct_util(endian=endian) + class Main: + first: c_uint32 + string: Aligned + else: + class Main(base): + _fields_ = [ + ('first', c_uint32), + ('string', Aligned), + ] self.check_struct(Main) main = Main.from_buffer(data) @@ -37,24 +72,39 @@ class Main(base): self.assertEqual(alignment(main.string), 16) self.assertEqual(alignment(main), 16) - def test_aligned_structures(self): - for base, data in ( - (LittleEndianStructure, bytearray(b"\1\0\0\0\1\0\0\0\7\0\0\0")), - (BigEndianStructure, bytearray(b"\1\0\0\0\1\0\0\0\7\0\0\0")), + @subTests("use_struct_util", [False, True]) + def test_aligned_structures(self, use_struct_util): + for endian, data in ( + ('little', bytearray(b"\1\0\0\0\1\0\0\0\7\0\0\0")), + ('big', bytearray(b"\1\0\0\0\1\0\0\0\7\0\0\0")), ): - class SomeBools(base): - _align_ = 4 - _fields_ = [ - ("bool1", c_ubyte), - ("bool2", c_ubyte), - ] + if use_struct_util: + @struct_util(endian=endian, align=4) + class SomeBools: + bool1: c_ubyte + bool2: c_ubyte + else: + base = get_struct_base(endian) + class SomeBools(base): + _align_ = 4 + _fields_ = [ + ("bool1", c_ubyte), + ("bool2", c_ubyte), + ] self.check_struct(SomeBools) - class Main(base): - _fields_ = [ - ("x", c_ubyte), - ("y", SomeBools), - ("z", c_ubyte), - ] + if use_struct_util: + @struct_util(endian=endian) + class Main: + x: c_ubyte + y: SomeBools + z: c_ubyte + else: + class Main(base): + _fields_ = [ + ("x", c_ubyte), + ("y", SomeBools), + ("z", c_ubyte), + ] self.check_struct(Main) main = Main.from_buffer(data) @@ -69,57 +119,93 @@ class Main(base): self.assertEqual(Main.z.offset, 8) self.assertEqual(main.z, 7) - def test_negative_align(self): - for base in (Structure, LittleEndianStructure, BigEndianStructure): + @subTests("use_struct_util", [False, True]) + def test_negative_align(self, use_struct_util): + for endian in ('native', 'little', 'big'): with ( - self.subTest(base=base), + self.subTest(endian=endian), self.assertRaisesRegex( ValueError, '_align_ must be a non-negative integer', ) ): - class MyStructure(base): - _align_ = -1 - _fields_ = [] - - def test_zero_align_no_fields(self): - for base in (Structure, LittleEndianStructure, BigEndianStructure): - with self.subTest(base=base): - class MyStructure(base): - _align_ = 0 - _fields_ = [] + if use_struct_util: + @struct_util(endian=endian, align=-1) + class MyStructure: + pass + else: + base = get_struct_base(endian) + class MyStructure(base): + _align_ = -1 + _fields_ = [] + + @subTests("use_struct_util", [False, True]) + def test_zero_align_no_fields(self, use_struct_util): + for endian in ('native', 'little', 'big'): + with self.subTest(endian=endian): + if use_struct_util: + @struct_util(endian=endian, align=0) + class MyStructure: + pass + else: + base = get_struct_base(endian) + class MyStructure(base): + _align_ = 0 + _fields_ = [] self.assertEqual(alignment(MyStructure), 1) self.assertEqual(alignment(MyStructure()), 1) - def test_zero_align_with_fields(self): - for base in (Structure, LittleEndianStructure, BigEndianStructure): - with self.subTest(base=base): - class MyStructure(base): - _align_ = 0 - _fields_ = [ - ("x", c_ubyte), - ] + @subTests("use_struct_util", [False, True]) + def test_zero_align_with_fields(self, use_struct_util): + for endian in ('native', 'little', 'big'): + with self.subTest(endian=endian): + if use_struct_util: + @struct_util(endian=endian, align=0) + class MyStructure: + x: c_ubyte + else: + base = get_struct_base(endian) + class MyStructure(base): + _align_ = 0 + _fields_ = [ + ("x", c_ubyte), + ] self.assertEqual(alignment(MyStructure), 1) self.assertEqual(alignment(MyStructure()), 1) - def test_oversized_structure(self): + @subTests("use_struct_util", [False, True]) + def test_oversized_structure(self, use_struct_util): data = bytearray(b"\0" * 8) - for base in (LittleEndianStructure, BigEndianStructure): - class SomeBoolsTooBig(base): - _align_ = 8 - _fields_ = [ - ("bool1", c_ubyte), - ("bool2", c_ubyte), - ("bool3", c_ubyte), - ] + for endian in ('little', 'big'): + if use_struct_util: + @struct_util(endian=endian, align=8) + class SomeBoolsTooBig: + bool1: c_ubyte + bool2: c_ubyte + bool3: c_ubyte + else: + base = get_struct_base(endian) + class SomeBoolsTooBig(base): + _align_ = 8 + _fields_ = [ + ("bool1", c_ubyte), + ("bool2", c_ubyte), + ("bool3", c_ubyte), + ] self.check_struct(SomeBoolsTooBig) - class Main(base): - _fields_ = [ - ("y", SomeBoolsTooBig), - ("z", c_uint32), - ] + if use_struct_util: + @struct_util(endian=endian) + class Main: + y: SomeBoolsTooBig + z: c_uint32 + else: + class Main(base): + _fields_ = [ + ("y", SomeBoolsTooBig), + ("z", c_uint32), + ] self.check_struct(Main) with self.assertRaises(ValueError) as ctx: Main.from_buffer(data) @@ -128,31 +214,49 @@ class Main(base): 'Buffer size too small (4 instead of at least 8 bytes)' ) - def test_aligned_subclasses(self): - for base, e in ( - (LittleEndianStructure, "<"), - (BigEndianStructure, ">"), + @subTests("use_struct_util", [False, True]) + def test_aligned_subclasses(self, use_struct_util): + for endian, e in ( + ('little', "<"), + ('big', ">"), ): data = bytearray(struct.pack(f"{e}4i", 1, 2, 3, 4)) - class UnalignedSub(base): - x: c_uint32 - _fields_ = [ - ("x", c_uint32), - ] + if use_struct_util: + @struct_util(endian=endian) + class UnalignedSub: + x: c_uint32 + else: + base = get_struct_base(endian) + class UnalignedSub(base): + x: c_uint32 + _fields_ = [ + ("x", c_uint32), + ] self.check_struct(UnalignedSub) - class AlignedStruct(UnalignedSub): - _align_ = 8 - _fields_ = [ - ("y", c_uint32), - ] + if use_struct_util: + @struct_util(endian=endian, align=8) + class AlignedStruct(UnalignedSub): + y: c_uint32 + else: + class AlignedStruct(UnalignedSub): + _align_ = 8 + _fields_ = [ + ("y", c_uint32), + ] self.check_struct(AlignedStruct) - class Main(base): - _fields_ = [ - ("a", c_uint32), - ("b", AlignedStruct) - ] + if use_struct_util: + @struct_util(endian=endian) + class Main: + a: c_uint32 + b: AlignedStruct + else: + class Main(base): + _fields_ = [ + ("a", c_uint32), + ("b", AlignedStruct) + ] self.check_struct(Main) main = Main.from_buffer(data) @@ -166,12 +270,14 @@ class Main(base): self.assertEqual(Main.b.offset, 8) self.assertEqual(Main.b.size, 8) - def test_aligned_union(self): - for sbase, ubase, e in ( - (LittleEndianStructure, LittleEndianUnion, "<"), - (BigEndianStructure, BigEndianUnion, ">"), + @subTests("use_struct_util", [False, True]) + def test_aligned_union(self, use_struct_util): + for sendian, uendian, e in ( + ('little', 'little', "<"), + ('big', 'big', ">"), ): data = bytearray(struct.pack(f"{e}4i", 1, 2, 3, 4)) + ubase = get_union_base(uendian) class AlignedUnion(ubase): _align_ = 8 _fields_ = [ @@ -180,11 +286,18 @@ class AlignedUnion(ubase): ] self.check_union(AlignedUnion) - class Main(sbase): - _fields_ = [ - ("first", c_uint32), - ("union", AlignedUnion), - ] + if use_struct_util: + @struct_util(endian=sendian) + class Main: + first: c_uint32 + union: AlignedUnion + else: + sbase = get_struct_base(sendian) + class Main(sbase): + _fields_ = [ + ("first", c_uint32), + ("union", AlignedUnion), + ] self.check_struct(Main) main = Main.from_buffer(data) @@ -196,20 +309,29 @@ class Main(sbase): self.assertEqual(alignment(main.union), 8) self.assertEqual(alignment(main), 8) - def test_aligned_struct_in_union(self): - for sbase, ubase, e in ( - (LittleEndianStructure, LittleEndianUnion, "<"), - (BigEndianStructure, BigEndianUnion, ">"), + @subTests("use_struct_util", [False, True]) + def test_aligned_struct_in_union(self, use_struct_util): + for sendian, uendian, e in ( + ('little', 'little', "<"), + ('big', 'big', ">"), ): data = bytearray(struct.pack(f"{e}4i", 1, 2, 3, 4)) - class Sub(sbase): - _align_ = 8 - _fields_ = [ - ("x", c_uint32), - ("y", c_uint32), - ] + if use_struct_util: + @struct_util(endian=sendian, align=8) + class Sub: + x: c_uint32 + y: c_uint32 + else: + sbase = get_struct_base(sendian) + class Sub(sbase): + _align_ = 8 + _fields_ = [ + ("x", c_uint32), + ("y", c_uint32), + ] self.check_struct(Sub) + ubase = get_union_base(uendian) class MainUnion(ubase): _fields_ = [ ("a", c_uint32), @@ -217,11 +339,17 @@ class MainUnion(ubase): ] self.check_union(MainUnion) - class Main(sbase): - _fields_ = [ - ("first", c_uint32), - ("union", MainUnion), - ] + if use_struct_util: + @struct_util(endian=sendian) + class Main: + first: c_uint32 + union: MainUnion + else: + class Main(sbase): + _fields_ = [ + ("first", c_uint32), + ("union", MainUnion), + ] self.check_struct(Main) main = Main.from_buffer(data) @@ -235,12 +363,14 @@ class Main(sbase): self.assertEqual(main.union.b.x, 3) self.assertEqual(main.union.b.y, 4) - def test_smaller_aligned_subclassed_union(self): - for sbase, ubase, e in ( - (LittleEndianStructure, LittleEndianUnion, "<"), - (BigEndianStructure, BigEndianUnion, ">"), + @subTests("use_struct_util", [False, True]) + def test_smaller_aligned_subclassed_union(self, use_struct_util): + for sendian, uendian, e in ( + ('little', 'little', "<"), + ('big', 'big', ">"), ): data = bytearray(struct.pack(f"{e}H2xI", 1, 0xD60102D7)) + ubase = get_union_base(uendian) class SubUnion(ubase): _align_ = 2 _fields_ = [ @@ -255,11 +385,18 @@ class MainUnion(SubUnion): ] self.check_union(SubUnion) - class Main(sbase): - _fields_ = [ - ("first", c_uint16), - ("union", MainUnion), - ] + if use_struct_util: + @struct_util(endian=sendian) + class Main: + first: c_uint16 + union: MainUnion + else: + sbase = get_struct_base(sendian) + class Main(sbase): + _fields_ = [ + ("first", c_uint16), + ("union", MainUnion), + ] self.check_struct(Main) main = Main.from_buffer(data) @@ -273,11 +410,12 @@ class Main(sbase): self.assertEqual(Main.first.size, 2) def test_larger_aligned_subclassed_union(self): - for ubase, e in ( - (LittleEndianUnion, "<"), - (BigEndianUnion, ">"), + for uendian, e in ( + ('little', "<"), + ('big', ">"), ): data = bytearray(struct.pack(f"{e}I4x", 0xD60102D6)) + ubase = get_union_base(uendian) class SubUnion(ubase): _align_ = 8 _fields_ = [ @@ -299,29 +437,44 @@ class Main(SubUnion): self.assertEqual(main.unsigned, 0xD6) self.assertEqual(main.signed, -42) - def test_aligned_packed_structures(self): - for sbase, e in ( - (LittleEndianStructure, "<"), - (BigEndianStructure, ">"), + @subTests("use_struct_util", [False, True]) + def test_aligned_packed_structures(self, use_struct_util): + for sendian, e in ( + ('little', "<"), + ('big', ">"), ): data = bytearray(struct.pack(f"{e}B2H4xB", 1, 2, 3, 4)) - class Inner(sbase): - _align_ = 8 - _fields_ = [ - ("x", c_uint16), - ("y", c_uint16), - ] + if use_struct_util: + @struct_util(endian=sendian, align=8) + class Inner: + x: c_uint16 + y: c_uint16 + else: + sbase = get_struct_base(sendian) + class Inner(sbase): + _align_ = 8 + _fields_ = [ + ("x", c_uint16), + ("y", c_uint16), + ] self.check_struct(Inner) - class Main(sbase): - _pack_ = 1 - _layout_ = "ms" - _fields_ = [ - ("a", c_ubyte), - ("b", Inner), - ("c", c_ubyte), - ] + if use_struct_util: + @struct_util(endian=sendian, pack=1, layout="ms") + class Main: + a: c_ubyte + b: Inner + c: c_ubyte + else: + class Main(sbase): + _pack_ = 1 + _layout_ = "ms" + _fields_ = [ + ("a", c_ubyte), + ("b", Inner), + ("c", c_ubyte), + ] self.check_struct(Main) main = Main.from_buffer(data) From 16562f1ce31ba654c42eee644f253bb31cff9f9d Mon Sep 17 00:00:00 2001 From: Florian Freitag Date: Sun, 19 Jul 2026 12:26:26 +0200 Subject: [PATCH 044/205] Document getopt and gnu_getopt longopts argument as string (#153976) Document getopt and gnu_getopt longopts as string --- Doc/library/getopt.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Doc/library/getopt.rst b/Doc/library/getopt.rst index 5c63009e22d58c4..9995f114d063e82 100644 --- a/Doc/library/getopt.rst +++ b/Doc/library/getopt.rst @@ -62,6 +62,8 @@ exception: option ``--fo`` will match as ``--foo``, but ``--f`` will not match uniquely, so :exc:`GetoptError` will be raised. + If *longopts* is a string it gets treated as a list of a single element. + The return value consists of two elements: the first is a list of ``(option, value)`` pairs; the second is the list of program arguments left after the option list was stripped (this is a trailing slice of *args*). Each From 20b50f8ec4602fb108e029e6f84b2a19294a95d2 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 19 Jul 2026 12:51:29 +0200 Subject: [PATCH 045/205] gh-104533: Update test_ctypes.test_structures (#154091) --- Lib/test/test_ctypes/test_structures.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_ctypes/test_structures.py b/Lib/test/test_ctypes/test_structures.py index 04c3682e8308ece..a74a3548ee78413 100644 --- a/Lib/test/test_ctypes/test_structures.py +++ b/Lib/test/test_ctypes/test_structures.py @@ -958,7 +958,7 @@ class Foo: def test_string_annotations(self): from test.test_ctypes import struct_str_ann Point = struct_str_ann.Point - fields = [['x', c_int], ['y', c_int]] + fields = [('x', c_int), ('y', c_int)] self.assertEqual(Point._fields_, fields) From 5380589615515fa9e2c48820073a3fd8e32a930d Mon Sep 17 00:00:00 2001 From: "Dominic H." Date: Sun, 19 Jul 2026 13:58:06 +0200 Subject: [PATCH 046/205] Add test for explicit `cls` argument bypassing default JSON decoder (#154094) * Add test for skipped `cls=None` case * Fix lint * Add new line between classes --- Lib/test/test_json/test_decode.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Lib/test/test_json/test_decode.py b/Lib/test/test_json/test_decode.py index 1d51fb2de0e69e4..6d05ef8f8eb0918 100644 --- a/Lib/test/test_json/test_decode.py +++ b/Lib/test/test_json/test_decode.py @@ -1,4 +1,5 @@ import decimal +import unittest.mock from io import StringIO from collections import OrderedDict from test.test_json import PyTest, CTest @@ -155,6 +156,15 @@ def test_limit_int(self): with self.assertRaises(ValueError): self.loads('1' * (maxdigits + 1)) + def test_explicit_cls_skips_json_decoder_default(self): + class CustomDecoder: + pass + + with unittest.mock.patch.object( + CustomDecoder, 'decode', create=True) as mock_decode: + self.loads('{}', cls=CustomDecoder) + mock_decode.assert_called_once() + class TestPyDecode(TestDecode, PyTest): pass class TestCDecode(TestDecode, CTest): pass From 84897d2e30b1b478f3de4fb9a7cd41fc2363da80 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 19 Jul 2026 14:04:30 +0200 Subject: [PATCH 047/205] gh-153903: Use `@ctypes.util.wrap_dll_function()` with pythonapi (#154030) Use the `@ctypes.util.wrap_dll_function()` decorator with ctypes.pythonapi to wrap Python C API functions in the test suite. --- Lib/test/test_capi/test_misc.py | 31 ++++++++++++++----- Lib/test/test_code.py | 37 +++++++++++++---------- Lib/test/test_ctypes/test_refcounts.py | 6 ++-- Lib/test/test_exceptions.py | 10 ++++-- Lib/test/test_frame.py | 27 +++++++++++------ Lib/test/test_free_threading/test_capi.py | 10 +++--- Lib/test/test_free_threading/test_code.py | 35 +++++++++++---------- Lib/test/test_gc.py | 8 +++-- Lib/test/test_threading.py | 24 ++++++++++++--- 9 files changed, 122 insertions(+), 66 deletions(-) diff --git a/Lib/test/test_capi/test_misc.py b/Lib/test/test_capi/test_misc.py index 6d84f0b8c305dfb..7d668843d07debc 100644 --- a/Lib/test/test_capi/test_misc.py +++ b/Lib/test/test_capi/test_misc.py @@ -3043,22 +3043,37 @@ def test_pack_version(self): def test_pack_full_version_ctypes(self): ctypes = import_helper.import_module('ctypes') - ctypes_func = ctypes.pythonapi.Py_PACK_FULL_VERSION - ctypes_func.restype = ctypes.c_uint32 - ctypes_func.argtypes = [ctypes.c_int] * 5 + import ctypes.util # noqa: F811 + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def Py_PACK_FULL_VERSION( + x: ctypes.c_int, + y: ctypes.c_int, + z: ctypes.c_int, + level: ctypes.c_int, + serial: ctypes.c_int, + ) -> ctypes.c_uint32: + pass + for *args, expected in self.full_cases: with self.subTest(hexversion=hex(expected)): - result = ctypes_func(*args) + result = Py_PACK_FULL_VERSION(*args) self.assertEqual(result, expected) def test_pack_version_ctypes(self): ctypes = import_helper.import_module('ctypes') - ctypes_func = ctypes.pythonapi.Py_PACK_VERSION - ctypes_func.restype = ctypes.c_uint32 - ctypes_func.argtypes = [ctypes.c_int] * 2 + import ctypes.util # noqa: F811 + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def Py_PACK_VERSION( + x: ctypes.c_int, + y: ctypes.c_int, + ) -> ctypes.c_uint32: + pass + for *args, expected in self.xy_cases: with self.subTest(hexversion=hex(expected)): - result = ctypes_func(*args) + result = Py_PACK_VERSION(*args) self.assertEqual(result, expected) diff --git a/Lib/test/test_code.py b/Lib/test/test_code.py index bd2fa1d7b70421a..631e5fd2499b13e 100644 --- a/Lib/test/test_code.py +++ b/Lib/test/test_code.py @@ -1540,21 +1540,26 @@ async def afunc(): [(1,1,3)]) if check_impl_detail(cpython=True) and ctypes is not None: - py = ctypes.pythonapi - freefunc = ctypes.CFUNCTYPE(None,ctypes.c_voidp) - - RequestCodeExtraIndex = py.PyUnstable_Eval_RequestCodeExtraIndex - RequestCodeExtraIndex.argtypes = (freefunc,) - RequestCodeExtraIndex.restype = ctypes.c_ssize_t - - SetExtra = py.PyUnstable_Code_SetExtra - SetExtra.argtypes = (ctypes.py_object, ctypes.c_ssize_t, ctypes.c_voidp) - SetExtra.restype = ctypes.c_int - - GetExtra = py.PyUnstable_Code_GetExtra - GetExtra.argtypes = (ctypes.py_object, ctypes.c_ssize_t, - ctypes.POINTER(ctypes.c_voidp)) - GetExtra.restype = ctypes.c_int + import ctypes.util + freefunc = ctypes.CFUNCTYPE(None, ctypes.c_voidp) + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyUnstable_Eval_RequestCodeExtraIndex(free: freefunc) -> ctypes.c_ssize_t: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyUnstable_Code_SetExtra(code: ctypes.py_object, + index: ctypes.c_ssize_t, + extra: ctypes.c_voidp) -> ctypes.c_int: + pass + SetExtra = PyUnstable_Code_SetExtra + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyUnstable_Code_GetExtra(code: ctypes.py_object, + index: ctypes.c_ssize_t, + extra: ctypes.POINTER(ctypes.c_voidp)) -> ctypes.c_int: + pass + GetExtra = PyUnstable_Code_GetExtra LAST_FREED = None def myfree(ptr): @@ -1562,7 +1567,7 @@ def myfree(ptr): LAST_FREED = ptr FREE_FUNC = freefunc(myfree) - FREE_INDEX = RequestCodeExtraIndex(FREE_FUNC) + FREE_INDEX = PyUnstable_Eval_RequestCodeExtraIndex(FREE_FUNC) # Make sure myfree sticks around at least as long as the interpreter, # since we (currently) can't unregister the function and leaving a # dangling pointer will cause a crash on deallocation of code objects if diff --git a/Lib/test/test_ctypes/test_refcounts.py b/Lib/test/test_ctypes/test_refcounts.py index 1815649ceb5fff9..d79937277e7df69 100644 --- a/Lib/test/test_ctypes/test_refcounts.py +++ b/Lib/test/test_ctypes/test_refcounts.py @@ -127,9 +127,9 @@ class PyObjectRestypeTest(unittest.TestCase): def test_restype_py_object_with_null_return(self): # Test that a function which returns a NULL PyObject * # without setting an exception does not crash. - PyErr_Occurred = ctypes.pythonapi.PyErr_Occurred - PyErr_Occurred.argtypes = [] - PyErr_Occurred.restype = ctypes.py_object + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyErr_Occurred() -> ctypes.py_object: + pass # At this point, there's no exception set, so PyErr_Occurred # returns NULL. Given the restype is py_object, the diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index cc7faef93e1af7c..6e458017298dffe 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -440,10 +440,16 @@ def test_WindowsError(self): def test_windows_message(self): """Should fill in unknown error code in Windows error message""" ctypes = import_module('ctypes') + import ctypes.util # noqa: F811 + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyErr_SetFromWindowsErr(ierr: ctypes.c_int) -> ctypes.py_object: + pass + # this error code has no message, Python formats it as hexadecimal code = 3765269347 - with self.assertRaisesRegex(OSError, 'Windows Error 0x%x' % code): - ctypes.pythonapi.PyErr_SetFromWindowsErr(code) + with self.assertRaisesRegex(OSError, f'Windows Error 0x{code:x}'): + PyErr_SetFromWindowsErr(code) def testAttributes(self): # test that exception attributes are happy diff --git a/Lib/test/test_frame.py b/Lib/test/test_frame.py index fc50e16575da2b9..a3a329cb578a8dc 100644 --- a/Lib/test/test_frame.py +++ b/Lib/test/test_frame.py @@ -821,28 +821,37 @@ class TestFrameCApi(unittest.TestCase): def test_basic(self): x = 1 ctypes = import_helper.import_module('ctypes') - PyEval_GetFrameLocals = ctypes.pythonapi.PyEval_GetFrameLocals - PyEval_GetFrameLocals.restype = ctypes.py_object + import ctypes.util # noqa: F811 + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyEval_GetFrameLocals() -> ctypes.py_object: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyEval_GetFrameGlobals() -> ctypes.py_object: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyEval_GetFrameBuiltins() -> ctypes.py_object: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyFrame_GetLocals(frame: ctypes.py_object) -> ctypes.py_object: + pass + frame_locals = PyEval_GetFrameLocals() self.assertTrue(type(frame_locals), dict) self.assertEqual(frame_locals['x'], 1) frame_locals['x'] = 2 self.assertEqual(x, 1) - PyEval_GetFrameGlobals = ctypes.pythonapi.PyEval_GetFrameGlobals - PyEval_GetFrameGlobals.restype = ctypes.py_object frame_globals = PyEval_GetFrameGlobals() self.assertTrue(type(frame_globals), dict) self.assertIs(frame_globals, globals()) - PyEval_GetFrameBuiltins = ctypes.pythonapi.PyEval_GetFrameBuiltins - PyEval_GetFrameBuiltins.restype = ctypes.py_object frame_builtins = PyEval_GetFrameBuiltins() self.assertEqual(frame_builtins, __builtins__) - PyFrame_GetLocals = ctypes.pythonapi.PyFrame_GetLocals - PyFrame_GetLocals.argtypes = [ctypes.py_object] - PyFrame_GetLocals.restype = ctypes.py_object frame = sys._getframe() f_locals = PyFrame_GetLocals(frame) self.assertTrue(f_locals['x'], 1) diff --git a/Lib/test/test_free_threading/test_capi.py b/Lib/test/test_free_threading/test_capi.py index 146d7cfc97adb7d..b0be94629af009d 100644 --- a/Lib/test/test_free_threading/test_capi.py +++ b/Lib/test/test_free_threading/test_capi.py @@ -1,4 +1,4 @@ -import ctypes +import ctypes.util import sys import unittest @@ -6,9 +6,9 @@ from test.support.threading_helper import run_concurrently -_PyImport_AddModuleRef = ctypes.pythonapi.PyImport_AddModuleRef -_PyImport_AddModuleRef.argtypes = (ctypes.c_char_p,) -_PyImport_AddModuleRef.restype = ctypes.py_object +@ctypes.util.wrap_dll_function(ctypes.pythonapi) +def PyImport_AddModuleRef(name: ctypes.c_char_p) -> ctypes.py_object: + pass @threading_helper.requires_working_threading() @@ -26,7 +26,7 @@ def test_pyimport_addmoduleref_thread_safe(self): results = [] def worker(): - module = _PyImport_AddModuleRef(module_name_bytes) + module = PyImport_AddModuleRef(module_name_bytes) results.append(module) for _ in range(NUM_ITERS): diff --git a/Lib/test/test_free_threading/test_code.py b/Lib/test/test_free_threading/test_code.py index 2fc5eea3773c399..121f00c1d7a92d9 100644 --- a/Lib/test/test_free_threading/test_code.py +++ b/Lib/test/test_free_threading/test_code.py @@ -12,25 +12,28 @@ from test.support.threading_helper import run_concurrently if ctypes is not None: - capi = ctypes.pythonapi + import ctypes.util freefunc = ctypes.CFUNCTYPE(None, ctypes.c_voidp) - RequestCodeExtraIndex = capi.PyUnstable_Eval_RequestCodeExtraIndex - RequestCodeExtraIndex.argtypes = (freefunc,) - RequestCodeExtraIndex.restype = ctypes.c_ssize_t - - SetExtra = capi.PyUnstable_Code_SetExtra - SetExtra.argtypes = (ctypes.py_object, ctypes.c_ssize_t, ctypes.c_voidp) - SetExtra.restype = ctypes.c_int - - GetExtra = capi.PyUnstable_Code_GetExtra - GetExtra.argtypes = ( - ctypes.py_object, - ctypes.c_ssize_t, - ctypes.POINTER(ctypes.c_voidp), - ) - GetExtra.restype = ctypes.c_int + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyUnstable_Eval_RequestCodeExtraIndex(free: freefunc) -> ctypes.c_ssize_t: + pass + RequestCodeExtraIndex = PyUnstable_Eval_RequestCodeExtraIndex + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyUnstable_Code_SetExtra(code: ctypes.py_object, + index: ctypes.c_ssize_t, + extra: ctypes.c_voidp) -> ctypes.c_int: + pass + SetExtra = PyUnstable_Code_SetExtra + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyUnstable_Code_GetExtra(code: ctypes.py_object, + index: ctypes.c_ssize_t, + extra: ctypes.POINTER(ctypes.c_voidp)) -> ctypes.c_int: + pass + GetExtra = PyUnstable_Code_GetExtra # Note: each call to RequestCodeExtraIndex permanently allocates a slot # (the counter is monotonically increasing), up to MAX_CO_EXTRA_USERS (255). diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py index 3fc084ea6e9c6e9..4c721c01a34f070 100644 --- a/Lib/test/test_gc.py +++ b/Lib/test/test_gc.py @@ -1434,6 +1434,11 @@ def test_refcount_errors(self): import subprocess code = textwrap.dedent(''' from test.support import gc_collect, SuppressCrashReport + import ctypes.util + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def Py_DecRef(o: ctypes.py_object) -> None: + pass a = [1, 2, 3] b = [a, a] @@ -1445,8 +1450,7 @@ def test_refcount_errors(self): # Simulate the refcount of "a" being too low (compared to the # references held on it by live data), but keeping it above zero # (to avoid deallocating it): - import ctypes - ctypes.pythonapi.Py_DecRef(ctypes.py_object(a)) + Py_DecRef(a) del a del b diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 3d01804513bde98..96b43936be92cda 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -326,9 +326,13 @@ def f(mutex): @cpython_only def test_PyThreadState_SetAsyncExc(self): ctypes = import_module("ctypes") + import ctypes.util # noqa: F811 - set_async_exc = ctypes.pythonapi.PyThreadState_SetAsyncExc - set_async_exc.argtypes = (ctypes.c_ulong, ctypes.py_object) + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyThreadState_SetAsyncExc(id: ctypes.c_ulong, + exc: ctypes.py_object) -> ctypes.c_int: + pass + set_async_exc = PyThreadState_SetAsyncExc class AsyncExc(Exception): pass @@ -485,7 +489,17 @@ def test_finalize_running_thread(self): import_module("ctypes") rc, out, err = assert_python_failure("-c", """if 1: - import ctypes, sys, time, _thread + import ctypes.util, sys, time, _thread + + PyGILState_STATE = ctypes.c_int # enum + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyGILState_Ensure() -> PyGILState_STATE: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def PyGILState_Release(oldstate: PyGILState_STATE) -> None: + pass # This lock is used as a simple event variable. ready = _thread.allocate_lock() @@ -494,8 +508,8 @@ def test_finalize_running_thread(self): # Module globals are cleared before __del__ is run # So we save the functions in class dict class C: - ensure = ctypes.pythonapi.PyGILState_Ensure - release = ctypes.pythonapi.PyGILState_Release + ensure = PyGILState_Ensure + release = PyGILState_Release def __del__(self): state = self.ensure() self.release(state) From ee50ed3ed010e26495300778b30b57da5cadc933 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 19 Jul 2026 14:08:56 +0200 Subject: [PATCH 048/205] gh-104533: Use `@ctypes.util.struct` decorator (#154031) Use also `@ctypes.util.wrap_dll_function()` decorator. --- Lib/test/_test_multiprocessing.py | 16 ++++----- Lib/test/support/__init__.py | 35 +++++++++++++++---- Lib/test/test_buffer.py | 22 ++++++++---- Lib/test/test_codecs.py | 22 +++++++----- Lib/test/test_ctypes/test_refcounts.py | 6 ++-- Lib/test/test_ctypes/test_unicode.py | 8 +++-- .../test_win32_com_foreign_func.py | 15 ++++---- Lib/test/test_io/utils.py | 5 +-- 8 files changed, 84 insertions(+), 45 deletions(-) diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index 115a187a8a85882..8f665b3a98a0371 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -161,9 +161,10 @@ def wait_for_handle(handle, timeout): # try: - from ctypes import Structure, c_int, c_double, c_longlong + from ctypes.util import struct as ctypes_struct + from ctypes import c_int, c_double, c_longlong except ImportError: - Structure = object + def ctypes_struct(cls): return cls c_int = c_double = c_longlong = None @@ -4390,12 +4391,11 @@ def test_free_from_gc(self): # # -class _Foo(Structure): - _fields_ = [ - ('x', c_int), - ('y', c_double), - ('z', c_longlong,) - ] +@ctypes_struct +class _Foo: + x: c_int + y: c_double + z: c_longlong class _TestSharedCTypes(BaseTestCase): diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index d17d9a2ecf8d9b0..e5bc2fd9b3d0954 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -236,20 +236,41 @@ def _is_gui_available(): # if Python is running as a service (such as the buildbot service), # gui interaction may be disallowed import ctypes + import ctypes.util import ctypes.wintypes + UOI_FLAGS = 1 WSF_VISIBLE = 0x0001 - class USEROBJECTFLAGS(ctypes.Structure): - _fields_ = [("fInherit", ctypes.wintypes.BOOL), - ("fReserved", ctypes.wintypes.BOOL), - ("dwFlags", ctypes.wintypes.DWORD)] - dll = ctypes.windll.user32 - h = dll.GetProcessWindowStation() + + @ctypes.util.struct + class USEROBJECTFLAGS: + fInherit: ctypes.wintypes.BOOL + fReserved: ctypes.wintypes.BOOL + dwFlags: ctypes.wintypes.DWORD + + user32 = ctypes.windll.user32 + + @ctypes.util.wrap_dll_function(user32) + def GetProcessWindowStation() -> ctypes.wintypes.HANDLE: + ... + + h = GetProcessWindowStation() if not h: raise ctypes.WinError() + + @ctypes.util.wrap_dll_function(user32) + def GetUserObjectInformationW( + hObj: ctypes.wintypes.HANDLE, + nIndex: ctypes.c_int, + pvInfo: ctypes.c_void_p, + nLength: ctypes.wintypes.DWORD, + lpnLengthNeeded: ctypes.POINTER(ctypes.wintypes.DWORD), + ) -> ctypes.wintypes.BOOL: + ... + uof = USEROBJECTFLAGS() needed = ctypes.wintypes.DWORD() - res = dll.GetUserObjectInformationW(h, + res = GetUserObjectInformationW(h, UOI_FLAGS, ctypes.byref(uof), ctypes.sizeof(uof), diff --git a/Lib/test/test_buffer.py b/Lib/test/test_buffer.py index 3213a4751273431..453dafe2709eb2f 100644 --- a/Lib/test/test_buffer.py +++ b/Lib/test/test_buffer.py @@ -37,6 +37,7 @@ try: import ctypes + import ctypes.util except ImportError: ctypes = None @@ -2849,8 +2850,11 @@ def test_memoryview_cast_1D_ND(self): if ctypes: # format: "T{>l:x:>d:y:}" - class BEPoint(ctypes.BigEndianStructure): - _fields_ = [("x", ctypes.c_long), ("y", ctypes.c_double)] + @ctypes.util.struct(endian='big') + class BEPoint: + x: ctypes.c_long + y: ctypes.c_double + point = BEPoint(100, 200.1) m1 = memoryview(point) m2 = m1.cast('B') @@ -3250,8 +3254,11 @@ def test_memoryview_compare_special_cases(self): # Some ctypes format strings are unknown to the struct module. if ctypes: # format: "T{>l:x:>l:y:}" - class BEPoint(ctypes.BigEndianStructure): - _fields_ = [("x", ctypes.c_long), ("y", ctypes.c_long)] + @ctypes.util.struct(endian='big') + class BEPoint: + x: ctypes.c_long + y: ctypes.c_long + point = BEPoint(100, 200) a = memoryview(point) b = memoryview(point) @@ -3988,8 +3995,11 @@ def test_memoryview_tobytes(self): # Unknown formats are handled: tobytes() purely depends on itemsize. if ctypes: # format: "T{>l:x:>l:y:}" - class BEPoint(ctypes.BigEndianStructure): - _fields_ = [("x", ctypes.c_long), ("y", ctypes.c_long)] + @ctypes.util.struct(endian='big') + class BEPoint: + x: ctypes.c_long + y: ctypes.c_long + point = BEPoint(100, 200) a = memoryview(point) self.assertEqual(a.tobytes(), bytes(point)) diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index c18b203f42f59f3..31704955df3e14e 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -36,21 +36,25 @@ def check(input, expect): self.assertEqual(coder(input), (expect, len(input))) return check -# On small versions of Windows like Windows IoT or Windows Nano Server not all codepages are present +# On small versions of Windows like Windows IoT or Windows Nano Server, +# not all codepages are present def is_code_page_present(cp): - from ctypes import POINTER, WINFUNCTYPE, WinDLL, Structure + from ctypes import POINTER, WINFUNCTYPE, WinDLL + from ctypes.util import struct from ctypes.wintypes import BOOL, BYTE, WCHAR, UINT, DWORD MAX_LEADBYTES = 12 # 5 ranges, 2 bytes ea., 0 term. MAX_DEFAULTCHAR = 2 # single or double byte MAX_PATH = 260 - class CPINFOEXW(Structure): - _fields_ = [("MaxCharSize", UINT), - ("DefaultChar", BYTE*MAX_DEFAULTCHAR), - ("LeadByte", BYTE*MAX_LEADBYTES), - ("UnicodeDefaultChar", WCHAR), - ("CodePage", UINT), - ("CodePageName", WCHAR*MAX_PATH)] + + @struct + class CPINFOEXW: + MaxCharSize: UINT + DefaultChar: BYTE * MAX_DEFAULTCHAR + LeadByte: BYTE * MAX_LEADBYTES + UnicodeDefaultChar: WCHAR + CodePage: UINT + CodePageName: WCHAR * MAX_PATH prototype = WINFUNCTYPE(BOOL, UINT, DWORD, POINTER(CPINFOEXW)) GetCPInfoEx = prototype(("GetCPInfoExW", WinDLL("kernel32"))) diff --git a/Lib/test/test_ctypes/test_refcounts.py b/Lib/test/test_ctypes/test_refcounts.py index d79937277e7df69..5191862658c5671 100644 --- a/Lib/test/test_ctypes/test_refcounts.py +++ b/Lib/test/test_ctypes/test_refcounts.py @@ -54,8 +54,10 @@ def func(*args): gc.collect() self.assertEqual(sys.getrefcount(func), orig_refcount) - class X(ctypes.Structure): - _fields_ = [("a", OtherCallback)] + @ctypes.util.struct + class X: + a: OtherCallback + x = X() x.a = OtherCallback(func) diff --git a/Lib/test/test_ctypes/test_unicode.py b/Lib/test/test_ctypes/test_unicode.py index d9e17371d135724..8e91f8f2c566803 100644 --- a/Lib/test/test_ctypes/test_unicode.py +++ b/Lib/test/test_ctypes/test_unicode.py @@ -1,4 +1,4 @@ -import ctypes +import ctypes.util import unittest from test.support import import_helper _ctypes_test = import_helper.import_module("_ctypes_test") @@ -26,8 +26,10 @@ def test_buffers(self): self.assertEqual(buf[6:5:-1], "") def test_embedded_null(self): - class TestStruct(ctypes.Structure): - _fields_ = [("unicode", ctypes.c_wchar_p)] + @ctypes.util.struct + class TestStruct: + unicode: ctypes.c_wchar_p + t = TestStruct() # This would raise a ValueError: t.unicode = "foo\0bar\0\0" diff --git a/Lib/test/test_ctypes/test_win32_com_foreign_func.py b/Lib/test/test_ctypes/test_win32_com_foreign_func.py index 7e54f8f6c31d33f..c797ab98cf1e424 100644 --- a/Lib/test/test_ctypes/test_win32_com_foreign_func.py +++ b/Lib/test/test_ctypes/test_win32_com_foreign_func.py @@ -1,4 +1,4 @@ -import ctypes +import ctypes.util import gc import sys import unittest @@ -20,14 +20,13 @@ E_NOINTERFACE = -2147467262 -class GUID(ctypes.Structure): +@ctypes.util.struct +class GUID: # https://learn.microsoft.com/en-us/windows/win32/api/guiddef/ns-guiddef-guid - _fields_ = [ - ("Data1", DWORD), - ("Data2", WORD), - ("Data3", WORD), - ("Data4", BYTE * 8), - ] + Data1: DWORD + Data2: WORD + Data3: WORD + Data4: BYTE * 8 def create_proto_com_method(name, index, restype, *argtypes): diff --git a/Lib/test/test_io/utils.py b/Lib/test/test_io/utils.py index 3b1faec2140fbc6..dde49337a24f0b9 100644 --- a/Lib/test/test_io/utils.py +++ b/Lib/test/test_io/utils.py @@ -8,12 +8,13 @@ try: - import ctypes + import ctypes.util except ImportError: def byteslike(*pos, **kw): return array.array("b", bytes(*pos, **kw)) else: - class EmptyStruct(ctypes.Structure): + @ctypes.util.struct + class EmptyStruct: pass def byteslike(*pos, **kw): From 104c397d8f1eeb3649d0c676eec95cd0c9c3f7ce Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Jul 2026 15:26:47 +0300 Subject: [PATCH 049/205] gh-154055: Gate optional curses functions absent on old SVr4 curses (GH-154057) Build hygiene so the curses modules build against a limited curses (e.g. the native SVr4 curses of illumos/Solaris), matching how other optional functions are already gated: * Probe and #ifdef-gate the X/Open attr_t functions (window.attr_get/attr_set/ attr_on/attr_off/color_set), the soft-label attribute functions (slk_attr_on/off/set, slk_color) and scr_set(); scr_set is probed separately from the scr_dump family, which SVr4 has without it. * Stop gating update_lines_cols() on resizeterm(): it only reads LINES/COLS and is used unconditionally (e.g. by set_term()), so a build without resizeterm() failed to link. * On Solaris/illumos define _BOOL (and include ) so the SVr4 "typedef char bool" does not clash with C's bool. test.test_curses: skip or guard the tests that use the now-optional functions, split test_attributes so its chtype-based part still runs, and treat the native curses of NetBSD and illumos/Solaris as having broken newterm() (they crash on repeated newterm()/delscreen(), like ncurses before 6.5). Co-authored-by: Claude Opus 4.8 --- Include/py_curses.h | 9 + Lib/test/test_curses.py | 38 +- ...-07-19-07-48-43.gh-issue-154055.FemUJU.rst | 4 + Modules/_cursesmodule.c | 27 +- Modules/clinic/_cursesmodule.c.h | 86 ++- configure | 600 ++++++++++++++++++ configure.ac | 16 +- pyconfig.h.in | 30 + 8 files changed, 781 insertions(+), 29 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2026-07-19-07-48-43.gh-issue-154055.FemUJU.rst diff --git a/Include/py_curses.h b/Include/py_curses.h index a5f5f3d76075827..85a540086c83844 100644 --- a/Include/py_curses.h +++ b/Include/py_curses.h @@ -43,6 +43,15 @@ # define PDC_NCMOUSE #endif +/* On Solaris/illumos, the SVr4 does "typedef char bool;", which + clashes with C's bool from . Define _BOOL to suppress it, and + include for the bool the header then needs. ncurses ignores + _BOOL. */ +#if defined(__sun) && !defined(_BOOL) +# include +# define _BOOL +#endif + #if defined(HAVE_NCURSESW_NCURSES_H) # include #elif defined(HAVE_NCURSESW_CURSES_H) diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index b0592d3f1d92b95..4ca5dd73f55afee 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -84,10 +84,15 @@ def wrapped(self, *args, **kwargs): term = os.environ.get('TERM') SHORT_MAX = 0x7fff -# ncurses before 6.5 can crash on repeated newterm(). Fall back to initscr() -# and skip the tests that need several screens. +# ncurses before 6.5, and the native curses of NetBSD and illumos/Solaris, +# crash on repeated newterm()/delscreen(); fall back to initscr() and skip the +# multi-screen tests. The native ones are keyed off the platform so a fixed +# version can be excluded later. _ncurses_version = getattr(curses, 'ncurses_version', None) -BROKEN_NEWTERM = _ncurses_version is not None and _ncurses_version < (6, 5) +if _ncurses_version is not None: + BROKEN_NEWTERM = _ncurses_version < (6, 5) +else: + BROKEN_NEWTERM = sys.platform.startswith(('netbsd', 'sunos')) USE_NEWTERM = hasattr(curses, 'newterm') and not BROKEN_NEWTERM # Older macOS reports a variation selector as a spacing character (wcwidth() @@ -1140,8 +1145,17 @@ def test_attributes(self): win.standout() win.standend() + # attron()/attroff()/attrset() reject a bad attribute. + self.assertRaises(OverflowError, win.attron, 1 << 64) + self.assertRaises(OverflowError, win.attroff, -1) + self.assertRaises(OverflowError, win.attrset, 1 << 64) + self.assertRaises(TypeError, win.attron, 'x') + + @requires_curses_window_meth('attr_set') + def test_attr(self): # The attr_*() family works on attr_t attributes paired with a color # pair, unlike the chtype-based attron()/attroff()/attrset(). + win = curses.newwin(5, 15, 5, 2) win.attr_set(curses.A_BOLD | curses.A_UNDERLINE) attrs, pair = win.attr_get() self.assertTrue(attrs & curses.A_BOLD) @@ -1167,13 +1181,9 @@ def test_attributes(self): self.assertRaises(OverflowError, win.attr_set, -1) self.assertRaises(OverflowError, win.attr_on, -1) self.assertRaises(OverflowError, win.attr_set, 1 << 64) - # attron()/attroff()/attrset() reject a bad attribute too. - self.assertRaises(OverflowError, win.attron, 1 << 64) - self.assertRaises(OverflowError, win.attroff, -1) - self.assertRaises(OverflowError, win.attrset, 1 << 64) - self.assertRaises(TypeError, win.attron, 'x') @requires_colors + @requires_curses_window_meth('attr_set') def test_attr_color_pair(self): win = curses.newwin(5, 15, 5, 2) curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK) @@ -1383,8 +1393,10 @@ def test_scr_dump(self): stdscr.refresh() self.assertIsNone(curses.scr_restore(dump)) # scr_init() and scr_set() also accept a dump file and return None. + # scr_set() is not available on every curses (e.g. old SVr4). self.assertIsNone(curses.scr_init(dump)) - self.assertIsNone(curses.scr_set(dump)) + if hasattr(curses, 'scr_set'): + self.assertIsNone(curses.scr_set(dump)) # A bytes (path-like) filename is accepted too. curses.scr_dump(os.fsencode(dump)) # Restoring from a missing file is an error. @@ -1846,9 +1858,11 @@ def test_escdelay(self): def test_tabsize(self): tabsize = curses.get_tabsize() self.assertIsInstance(tabsize, int) - curses.set_tabsize(4) - self.assertEqual(curses.get_tabsize(), 4) - curses.set_tabsize(tabsize) + # set_tabsize() is not available on every curses (e.g. old SVr4). + if hasattr(curses, 'set_tabsize'): + curses.set_tabsize(4) + self.assertEqual(curses.get_tabsize(), 4) + curses.set_tabsize(tabsize) @requires_curses_func('getsyx') def test_getsyx(self): diff --git a/Misc/NEWS.d/next/Build/2026-07-19-07-48-43.gh-issue-154055.FemUJU.rst b/Misc/NEWS.d/next/Build/2026-07-19-07-48-43.gh-issue-154055.FemUJU.rst new file mode 100644 index 000000000000000..94fc9672ef7855f --- /dev/null +++ b/Misc/NEWS.d/next/Build/2026-07-19-07-48-43.gh-issue-154055.FemUJU.rst @@ -0,0 +1,4 @@ +The :mod:`curses` and :mod:`curses.panel` modules can now be built against a +curses library that lacks the X/Open ``attr_t`` and soft-label attribute +functions, ``scr_set()`` or ``resizeterm()`` -- such as the native SVr4 curses +of illumos and Solaris. These functions are probed and used only when present. diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 2253d9ff3d704f3..6df593001b8a1cb 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -2433,6 +2433,7 @@ _curses_window_attrset_impl(PyCursesWindowObject *self, attr_t attr) return curses_window_check_err(self, rtn, "wattrset", "attrset"); } +#ifdef HAVE_CURSES_WATTR_GET /*[clinic input] _curses.window.attr_get @@ -2458,7 +2459,9 @@ _curses_window_attr_get_impl(PyCursesWindowObject *self) } return Py_BuildValue("(ki)", (unsigned long)attrs, (int)pair); } +#endif /* HAVE_CURSES_WATTR_GET */ +#ifdef HAVE_CURSES_WATTR_SET /*[clinic input] _curses.window.attr_set @@ -2482,7 +2485,9 @@ _curses_window_attr_set_impl(PyCursesWindowObject *self, attr_t attr, #endif return curses_window_check_err(self, rtn, "wattr_set", "attr_set"); } +#endif /* HAVE_CURSES_WATTR_SET */ +#ifdef HAVE_CURSES_WATTR_ON /*[clinic input] _curses.window.attr_on @@ -2499,7 +2504,9 @@ _curses_window_attr_on_impl(PyCursesWindowObject *self, attr_t attr) int rtn = wattr_on(self->win, attr, NULL); return curses_window_check_err(self, rtn, "wattr_on", "attr_on"); } +#endif /* HAVE_CURSES_WATTR_ON */ +#ifdef HAVE_CURSES_WATTR_OFF /*[clinic input] _curses.window.attr_off @@ -2516,7 +2523,9 @@ _curses_window_attr_off_impl(PyCursesWindowObject *self, attr_t attr) int rtn = wattr_off(self->win, attr, NULL); return curses_window_check_err(self, rtn, "wattr_off", "attr_off"); } +#endif /* HAVE_CURSES_WATTR_OFF */ +#ifdef HAVE_CURSES_WCOLOR_SET /*[clinic input] _curses.window.color_set @@ -2538,6 +2547,7 @@ _curses_window_color_set_impl(PyCursesWindowObject *self, int pair) #endif return curses_window_check_err(self, rtn, "wcolor_set", "color_set"); } +#endif /* HAVE_CURSES_WCOLOR_SET */ /*[clinic input] _curses.window.getattrs @@ -6083,6 +6093,7 @@ _curses_scr_init(PyObject *module, PyObject *filename) /*[clinic end generated code: output=2e861d381d710419 input=81c45e4702124ef6]*/ ScreenDumpFunctionBody(scr_init) +#ifdef HAVE_CURSES_SCR_SET /*[clinic input] _curses.scr_set @@ -6099,6 +6110,7 @@ static PyObject * _curses_scr_set(PyObject *module, PyObject *filename) /*[clinic end generated code: output=6056fdec12c5935f input=d248c20543cc289b]*/ ScreenDumpFunctionBody(scr_set) +#endif /* HAVE_CURSES_SCR_SET */ #endif /* HAVE_CURSES_SCR_DUMP */ /*[clinic input] @@ -7462,9 +7474,10 @@ _curses_qiflush_impl(PyObject *module, int flag) Py_RETURN_NONE; } -#if defined(HAVE_CURSES_RESIZETERM) || defined(HAVE_CURSES_RESIZE_TERM) /* Internal helper used for updating curses.LINES, curses.COLS, _curses.LINES - * and _curses.COLS. Returns 1 on success and 0 on failure. */ + * and _curses.COLS. Returns 1 on success and 0 on failure. Used + * unconditionally (e.g. by set_term()), so it must not be gated on resizeterm(). + */ static int update_lines_cols(PyObject *private_module) { @@ -7533,8 +7546,6 @@ _curses_update_lines_cols_impl(PyObject *module) Py_RETURN_NONE; } -#endif - /*[clinic input] _curses.raw @@ -8371,6 +8382,7 @@ _curses_slk_attr_impl(PyObject *module) } #endif +#ifdef HAVE_CURSES_SLK_ATTR_ON /*[clinic input] _curses.slk_attr_on @@ -8388,7 +8400,9 @@ _curses_slk_attr_on_impl(PyObject *module, attr_t attr) return curses_check_err(module, slk_attr_on(attr, NULL), "slk_attr_on", NULL); } +#endif /* HAVE_CURSES_SLK_ATTR_ON */ +#ifdef HAVE_CURSES_SLK_ATTR_OFF /*[clinic input] _curses.slk_attr_off @@ -8406,7 +8420,9 @@ _curses_slk_attr_off_impl(PyObject *module, attr_t attr) return curses_check_err(module, slk_attr_off(attr, NULL), "slk_attr_off", NULL); } +#endif /* HAVE_CURSES_SLK_ATTR_OFF */ +#ifdef HAVE_CURSES_SLK_ATTR_SET /*[clinic input] _curses.slk_attr_set @@ -8430,7 +8446,9 @@ _curses_slk_attr_set_impl(PyObject *module, attr_t attr, int pair) #endif return curses_check_err(module, rtn, "slk_attr_set", NULL); } +#endif /* HAVE_CURSES_SLK_ATTR_SET */ +#ifdef HAVE_CURSES_SLK_COLOR /*[clinic input] _curses.slk_color @@ -8447,6 +8465,7 @@ _curses_slk_color_impl(PyObject *module, int pair) PyCursesStatefulInitialised(module); return curses_check_err(module, slk_color((short)pair), "slk_color", NULL); } +#endif /* HAVE_CURSES_SLK_COLOR */ #ifdef HAVE_CURSES_USE_ENV /*[clinic input] diff --git a/Modules/clinic/_cursesmodule.c.h b/Modules/clinic/_cursesmodule.c.h index da1b97c0ea5ad8b..70d99b4bf351a21 100644 --- a/Modules/clinic/_cursesmodule.c.h +++ b/Modules/clinic/_cursesmodule.c.h @@ -534,6 +534,8 @@ _curses_window_attrset(PyObject *self, PyObject *arg) return return_value; } +#if defined(HAVE_CURSES_WATTR_GET) + PyDoc_STRVAR(_curses_window_attr_get__doc__, "attr_get($self, /)\n" "--\n" @@ -552,6 +554,10 @@ _curses_window_attr_get(PyObject *self, PyObject *Py_UNUSED(ignored)) return _curses_window_attr_get_impl((PyCursesWindowObject *)self); } +#endif /* defined(HAVE_CURSES_WATTR_GET) */ + +#if defined(HAVE_CURSES_WATTR_SET) + PyDoc_STRVAR(_curses_window_attr_set__doc__, "attr_set($self, attr, pair=0, /)\n" "--\n" @@ -591,6 +597,10 @@ _curses_window_attr_set(PyObject *self, PyObject *const *args, Py_ssize_t nargs) return return_value; } +#endif /* defined(HAVE_CURSES_WATTR_SET) */ + +#if defined(HAVE_CURSES_WATTR_ON) + PyDoc_STRVAR(_curses_window_attr_on__doc__, "attr_on($self, attr, /)\n" "--\n" @@ -618,6 +628,10 @@ _curses_window_attr_on(PyObject *self, PyObject *arg) return return_value; } +#endif /* defined(HAVE_CURSES_WATTR_ON) */ + +#if defined(HAVE_CURSES_WATTR_OFF) + PyDoc_STRVAR(_curses_window_attr_off__doc__, "attr_off($self, attr, /)\n" "--\n" @@ -645,6 +659,10 @@ _curses_window_attr_off(PyObject *self, PyObject *arg) return return_value; } +#endif /* defined(HAVE_CURSES_WATTR_OFF) */ + +#if defined(HAVE_CURSES_WCOLOR_SET) + PyDoc_STRVAR(_curses_window_color_set__doc__, "color_set($self, pair, /)\n" "--\n" @@ -672,6 +690,8 @@ _curses_window_color_set(PyObject *self, PyObject *arg) return return_value; } +#endif /* defined(HAVE_CURSES_WCOLOR_SET) */ + PyDoc_STRVAR(_curses_window_getattrs__doc__, "getattrs($self, /)\n" "--\n" @@ -3104,7 +3124,7 @@ PyDoc_STRVAR(_curses_scr_init__doc__, #endif /* defined(HAVE_CURSES_SCR_DUMP) */ -#if defined(HAVE_CURSES_SCR_DUMP) +#if defined(HAVE_CURSES_SCR_DUMP) && defined(HAVE_CURSES_SCR_SET) PyDoc_STRVAR(_curses_scr_set__doc__, "scr_set($module, filename, /)\n" @@ -3120,7 +3140,7 @@ PyDoc_STRVAR(_curses_scr_set__doc__, #define _CURSES_SCR_SET_METHODDEF \ {"scr_set", (PyCFunction)_curses_scr_set, METH_O, _curses_scr_set__doc__}, -#endif /* defined(HAVE_CURSES_SCR_DUMP) */ +#endif /* defined(HAVE_CURSES_SCR_DUMP) && defined(HAVE_CURSES_SCR_SET) */ PyDoc_STRVAR(_curses_halfdelay__doc__, "halfdelay($module, tenths, /)\n" @@ -4752,8 +4772,6 @@ _curses_qiflush(PyObject *module, PyObject *const *args, Py_ssize_t nargs) return return_value; } -#if (defined(HAVE_CURSES_RESIZETERM) || defined(HAVE_CURSES_RESIZE_TERM)) - PyDoc_STRVAR(_curses_update_lines_cols__doc__, "update_lines_cols($module, /)\n" "--\n" @@ -4774,8 +4792,6 @@ _curses_update_lines_cols(PyObject *module, PyObject *Py_UNUSED(ignored)) return _curses_update_lines_cols_impl(module); } -#endif /* (defined(HAVE_CURSES_RESIZETERM) || defined(HAVE_CURSES_RESIZE_TERM)) */ - PyDoc_STRVAR(_curses_raw__doc__, "raw($module, flag=True, /)\n" "--\n" @@ -5755,6 +5771,8 @@ _curses_slk_attr(PyObject *module, PyObject *Py_UNUSED(ignored)) #endif /* (defined(NCURSES_EXT_FUNCS) || defined(PDCURSES)) */ +#if defined(HAVE_CURSES_SLK_ATTR_ON) + PyDoc_STRVAR(_curses_slk_attr_on__doc__, "slk_attr_on($module, attr, /)\n" "--\n" @@ -5782,6 +5800,10 @@ _curses_slk_attr_on(PyObject *module, PyObject *arg) return return_value; } +#endif /* defined(HAVE_CURSES_SLK_ATTR_ON) */ + +#if defined(HAVE_CURSES_SLK_ATTR_OFF) + PyDoc_STRVAR(_curses_slk_attr_off__doc__, "slk_attr_off($module, attr, /)\n" "--\n" @@ -5809,6 +5831,10 @@ _curses_slk_attr_off(PyObject *module, PyObject *arg) return return_value; } +#endif /* defined(HAVE_CURSES_SLK_ATTR_OFF) */ + +#if defined(HAVE_CURSES_SLK_ATTR_SET) + PyDoc_STRVAR(_curses_slk_attr_set__doc__, "slk_attr_set($module, attr, pair=0, /)\n" "--\n" @@ -5847,6 +5873,10 @@ _curses_slk_attr_set(PyObject *module, PyObject *const *args, Py_ssize_t nargs) return return_value; } +#endif /* defined(HAVE_CURSES_SLK_ATTR_SET) */ + +#if defined(HAVE_CURSES_SLK_COLOR) + PyDoc_STRVAR(_curses_slk_color__doc__, "slk_color($module, pair, /)\n" "--\n" @@ -5874,6 +5904,8 @@ _curses_slk_color(PyObject *module, PyObject *arg) return return_value; } +#endif /* defined(HAVE_CURSES_SLK_COLOR) */ + #if defined(HAVE_CURSES_USE_ENV) PyDoc_STRVAR(_curses_use_env__doc__, @@ -6003,6 +6035,26 @@ _curses_has_extended_color_support(PyObject *module, PyObject *Py_UNUSED(ignored return _curses_has_extended_color_support_impl(module); } +#ifndef _CURSES_WINDOW_ATTR_GET_METHODDEF + #define _CURSES_WINDOW_ATTR_GET_METHODDEF +#endif /* !defined(_CURSES_WINDOW_ATTR_GET_METHODDEF) */ + +#ifndef _CURSES_WINDOW_ATTR_SET_METHODDEF + #define _CURSES_WINDOW_ATTR_SET_METHODDEF +#endif /* !defined(_CURSES_WINDOW_ATTR_SET_METHODDEF) */ + +#ifndef _CURSES_WINDOW_ATTR_ON_METHODDEF + #define _CURSES_WINDOW_ATTR_ON_METHODDEF +#endif /* !defined(_CURSES_WINDOW_ATTR_ON_METHODDEF) */ + +#ifndef _CURSES_WINDOW_ATTR_OFF_METHODDEF + #define _CURSES_WINDOW_ATTR_OFF_METHODDEF +#endif /* !defined(_CURSES_WINDOW_ATTR_OFF_METHODDEF) */ + +#ifndef _CURSES_WINDOW_COLOR_SET_METHODDEF + #define _CURSES_WINDOW_COLOR_SET_METHODDEF +#endif /* !defined(_CURSES_WINDOW_COLOR_SET_METHODDEF) */ + #ifndef _CURSES_WINDOW_ENCLOSE_METHODDEF #define _CURSES_WINDOW_ENCLOSE_METHODDEF #endif /* !defined(_CURSES_WINDOW_ENCLOSE_METHODDEF) */ @@ -6135,10 +6187,6 @@ _curses_has_extended_color_support(PyObject *module, PyObject *Py_UNUSED(ignored #define _CURSES_MOUSEMASK_METHODDEF #endif /* !defined(_CURSES_MOUSEMASK_METHODDEF) */ -#ifndef _CURSES_UPDATE_LINES_COLS_METHODDEF - #define _CURSES_UPDATE_LINES_COLS_METHODDEF -#endif /* !defined(_CURSES_UPDATE_LINES_COLS_METHODDEF) */ - #ifndef _CURSES_RESIZETERM_METHODDEF #define _CURSES_RESIZETERM_METHODDEF #endif /* !defined(_CURSES_RESIZETERM_METHODDEF) */ @@ -6163,6 +6211,22 @@ _curses_has_extended_color_support(PyObject *module, PyObject *Py_UNUSED(ignored #define _CURSES_SLK_ATTR_METHODDEF #endif /* !defined(_CURSES_SLK_ATTR_METHODDEF) */ +#ifndef _CURSES_SLK_ATTR_ON_METHODDEF + #define _CURSES_SLK_ATTR_ON_METHODDEF +#endif /* !defined(_CURSES_SLK_ATTR_ON_METHODDEF) */ + +#ifndef _CURSES_SLK_ATTR_OFF_METHODDEF + #define _CURSES_SLK_ATTR_OFF_METHODDEF +#endif /* !defined(_CURSES_SLK_ATTR_OFF_METHODDEF) */ + +#ifndef _CURSES_SLK_ATTR_SET_METHODDEF + #define _CURSES_SLK_ATTR_SET_METHODDEF +#endif /* !defined(_CURSES_SLK_ATTR_SET_METHODDEF) */ + +#ifndef _CURSES_SLK_COLOR_METHODDEF + #define _CURSES_SLK_COLOR_METHODDEF +#endif /* !defined(_CURSES_SLK_COLOR_METHODDEF) */ + #ifndef _CURSES_USE_ENV_METHODDEF #define _CURSES_USE_ENV_METHODDEF #endif /* !defined(_CURSES_USE_ENV_METHODDEF) */ @@ -6174,4 +6238,4 @@ _curses_has_extended_color_support(PyObject *module, PyObject *Py_UNUSED(ignored #ifndef _CURSES_ASSUME_DEFAULT_COLORS_METHODDEF #define _CURSES_ASSUME_DEFAULT_COLORS_METHODDEF #endif /* !defined(_CURSES_ASSUME_DEFAULT_COLORS_METHODDEF) */ -/*[clinic end generated code: output=36fcacafc5044720 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=ae1359964feefd64 input=a9049054013a1b77]*/ diff --git a/configure b/configure index 9061cf905119c44..0fc2b0e819a1209 100755 --- a/configure +++ b/configure @@ -32395,6 +32395,546 @@ fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function wattr_get" >&5 +printf %s "checking for curses function wattr_get... " >&6; } +if test ${ac_cv_lib_curses_wattr_get+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef wattr_get + void *x=wattr_get + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_wattr_get=yes +else case e in #( + e) ac_cv_lib_curses_wattr_get=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_wattr_get" >&5 +printf "%s\n" "$ac_cv_lib_curses_wattr_get" >&6; } + if test "x$ac_cv_lib_curses_wattr_get" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_WATTR_GET 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function wattr_set" >&5 +printf %s "checking for curses function wattr_set... " >&6; } +if test ${ac_cv_lib_curses_wattr_set+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef wattr_set + void *x=wattr_set + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_wattr_set=yes +else case e in #( + e) ac_cv_lib_curses_wattr_set=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_wattr_set" >&5 +printf "%s\n" "$ac_cv_lib_curses_wattr_set" >&6; } + if test "x$ac_cv_lib_curses_wattr_set" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_WATTR_SET 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function wattr_on" >&5 +printf %s "checking for curses function wattr_on... " >&6; } +if test ${ac_cv_lib_curses_wattr_on+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef wattr_on + void *x=wattr_on + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_wattr_on=yes +else case e in #( + e) ac_cv_lib_curses_wattr_on=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_wattr_on" >&5 +printf "%s\n" "$ac_cv_lib_curses_wattr_on" >&6; } + if test "x$ac_cv_lib_curses_wattr_on" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_WATTR_ON 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function wattr_off" >&5 +printf %s "checking for curses function wattr_off... " >&6; } +if test ${ac_cv_lib_curses_wattr_off+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef wattr_off + void *x=wattr_off + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_wattr_off=yes +else case e in #( + e) ac_cv_lib_curses_wattr_off=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_wattr_off" >&5 +printf "%s\n" "$ac_cv_lib_curses_wattr_off" >&6; } + if test "x$ac_cv_lib_curses_wattr_off" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_WATTR_OFF 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function wcolor_set" >&5 +printf %s "checking for curses function wcolor_set... " >&6; } +if test ${ac_cv_lib_curses_wcolor_set+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef wcolor_set + void *x=wcolor_set + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_wcolor_set=yes +else case e in #( + e) ac_cv_lib_curses_wcolor_set=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_wcolor_set" >&5 +printf "%s\n" "$ac_cv_lib_curses_wcolor_set" >&6; } + if test "x$ac_cv_lib_curses_wcolor_set" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_WCOLOR_SET 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function slk_attr_on" >&5 +printf %s "checking for curses function slk_attr_on... " >&6; } +if test ${ac_cv_lib_curses_slk_attr_on+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef slk_attr_on + void *x=slk_attr_on + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_slk_attr_on=yes +else case e in #( + e) ac_cv_lib_curses_slk_attr_on=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_slk_attr_on" >&5 +printf "%s\n" "$ac_cv_lib_curses_slk_attr_on" >&6; } + if test "x$ac_cv_lib_curses_slk_attr_on" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_SLK_ATTR_ON 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function slk_attr_off" >&5 +printf %s "checking for curses function slk_attr_off... " >&6; } +if test ${ac_cv_lib_curses_slk_attr_off+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef slk_attr_off + void *x=slk_attr_off + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_slk_attr_off=yes +else case e in #( + e) ac_cv_lib_curses_slk_attr_off=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_slk_attr_off" >&5 +printf "%s\n" "$ac_cv_lib_curses_slk_attr_off" >&6; } + if test "x$ac_cv_lib_curses_slk_attr_off" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_SLK_ATTR_OFF 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function slk_attr_set" >&5 +printf %s "checking for curses function slk_attr_set... " >&6; } +if test ${ac_cv_lib_curses_slk_attr_set+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef slk_attr_set + void *x=slk_attr_set + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_slk_attr_set=yes +else case e in #( + e) ac_cv_lib_curses_slk_attr_set=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_slk_attr_set" >&5 +printf "%s\n" "$ac_cv_lib_curses_slk_attr_set" >&6; } + if test "x$ac_cv_lib_curses_slk_attr_set" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_SLK_ATTR_SET 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function slk_color" >&5 +printf %s "checking for curses function slk_color... " >&6; } +if test ${ac_cv_lib_curses_slk_color+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef slk_color + void *x=slk_color + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_slk_color=yes +else case e in #( + e) ac_cv_lib_curses_slk_color=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_slk_color" >&5 +printf "%s\n" "$ac_cv_lib_curses_slk_color" >&6; } + if test "x$ac_cv_lib_curses_slk_color" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_SLK_COLOR 1" >>confdefs.h + +fi + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses variable ESCDELAY" >&5 printf %s "checking for curses variable ESCDELAY... " >&6; } if test ${ac_cv_lib_curses_ESCDELAY+y} @@ -32621,6 +33161,66 @@ fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function scr_set" >&5 +printf %s "checking for curses function scr_set... " >&6; } +if test ${ac_cv_lib_curses_scr_set+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef scr_set + void *x=scr_set + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_scr_set=yes +else case e in #( + e) ac_cv_lib_curses_scr_set=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_scr_set" >&5 +printf "%s\n" "$ac_cv_lib_curses_scr_set" >&6; } + if test "x$ac_cv_lib_curses_scr_set" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_SCR_SET 1" >>confdefs.h + +fi + + + CPPFLAGS=$ac_save_cppflags fi diff --git a/configure.ac b/configure.ac index 97d2091dbf89a70..980ed2af50b13f7 100644 --- a/configure.ac +++ b/configure.ac @@ -7345,6 +7345,17 @@ PY_CHECK_CURSES_FUNC([define_key]) PY_CHECK_CURSES_FUNC([keyok]) PY_CHECK_CURSES_FUNC([set_escdelay]) PY_CHECK_CURSES_FUNC([set_tabsize]) +dnl The X/Open attr_t and soft-label attribute functions are absent on old +dnl SVr4 curses (e.g. illumos). +PY_CHECK_CURSES_FUNC([wattr_get]) +PY_CHECK_CURSES_FUNC([wattr_set]) +PY_CHECK_CURSES_FUNC([wattr_on]) +PY_CHECK_CURSES_FUNC([wattr_off]) +PY_CHECK_CURSES_FUNC([wcolor_set]) +PY_CHECK_CURSES_FUNC([slk_attr_on]) +PY_CHECK_CURSES_FUNC([slk_attr_off]) +PY_CHECK_CURSES_FUNC([slk_attr_set]) +PY_CHECK_CURSES_FUNC([slk_color]) PY_CHECK_CURSES_VAR([ESCDELAY]) PY_CHECK_CURSES_VAR([TABSIZE]) @@ -7360,9 +7371,10 @@ AS_VAR_IF([ac_cv_lib_curses_getmouse], [yes], [AC_DEFINE([HAVE_CURSES_GETMOUSE], [1], [Define if you have the 'getmouse' function with the X/Open signature.])]) -dnl scr_dump and its companions scr_restore/scr_init/scr_set are an inseparable -dnl group; probing scr_dump alone gates the whole family. +dnl scr_dump gates scr_dump/scr_restore/scr_init; scr_set is separate, since +dnl old SVr4 curses (e.g. illumos) has the former but not scr_set. PY_CHECK_CURSES_FUNC([scr_dump]) +PY_CHECK_CURSES_FUNC([scr_set]) CPPFLAGS=$ac_save_cppflags ])dnl have_curses != no ])dnl save env diff --git a/pyconfig.h.in b/pyconfig.h.in index 2f9b2140d9f191a..e259eda7439761e 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -257,12 +257,27 @@ /* Define if you have the 'scr_dump' function. */ #undef HAVE_CURSES_SCR_DUMP +/* Define if you have the 'scr_set' function. */ +#undef HAVE_CURSES_SCR_SET + /* Define if you have the 'set_escdelay' function. */ #undef HAVE_CURSES_SET_ESCDELAY /* Define if you have the 'set_tabsize' function. */ #undef HAVE_CURSES_SET_TABSIZE +/* Define if you have the 'slk_attr_off' function. */ +#undef HAVE_CURSES_SLK_ATTR_OFF + +/* Define if you have the 'slk_attr_on' function. */ +#undef HAVE_CURSES_SLK_ATTR_ON + +/* Define if you have the 'slk_attr_set' function. */ +#undef HAVE_CURSES_SLK_ATTR_SET + +/* Define if you have the 'slk_color' function. */ +#undef HAVE_CURSES_SLK_COLOR + /* Define if you have the 'syncok' function. */ #undef HAVE_CURSES_SYNCOK @@ -284,9 +299,24 @@ /* Define if you have the 'use_window' function. */ #undef HAVE_CURSES_USE_WINDOW +/* Define if you have the 'wattr_get' function. */ +#undef HAVE_CURSES_WATTR_GET + +/* Define if you have the 'wattr_off' function. */ +#undef HAVE_CURSES_WATTR_OFF + +/* Define if you have the 'wattr_on' function. */ +#undef HAVE_CURSES_WATTR_ON + +/* Define if you have the 'wattr_set' function. */ +#undef HAVE_CURSES_WATTR_SET + /* Define if you have the 'wchgat' function. */ #undef HAVE_CURSES_WCHGAT +/* Define if you have the 'wcolor_set' function. */ +#undef HAVE_CURSES_WCOLOR_SET + /* Define to 1 if you have the header file. */ #undef HAVE_DB_H From b8ec956716c183430a93929e6415ceed74089af1 Mon Sep 17 00:00:00 2001 From: Ajob Kustra Date: Sun, 19 Jul 2026 14:29:17 +0200 Subject: [PATCH 050/205] urllib: Add tests for HTTP errors to complete coverage (#154102) * add test for httperror props such as reason and fp, and stringified urlerror test * rm unnecessary 'reason' attr test, change url to filename and add reason and headers attr * separate file pointer test * prevent resource warning, close httperror exception * exc > err --- Lib/test/test_urllib.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index 2dd739b77b8e4d1..1e5f79998e7cab2 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -467,6 +467,25 @@ def test_redirect_limit_independent(self): finally: self.unfakehttp() + def test_http_error_attribute_values(self): + hdrs = { + "Authorization": "Bearer foobar", + "Accept": "application/json" + } + err = urllib.error.HTTPError("http://something", 404, "foo", hdrs, None) + self.assertEqual(err.filename, "http://something") + self.assertEqual(err.code, 404) + self.assertEqual(err.msg, "foo") + self.assertEqual(err.reason, "foo") + self.assertEqual(err.hdrs, hdrs) + self.assertEqual(err.headers, hdrs) + err.close() + + def test_http_error_default_fp(self): + err = urllib.error.HTTPError("http://something", 404, "foo", {}, None) + self.assertIsInstance(err.fp, io.BytesIO) + err.close() + def test_empty_socket(self): # urlopen() raises OSError if the underlying socket does not send any # data. (#1680230) @@ -513,6 +532,11 @@ def test_ftp_nonexisting(self): self.assertFalse(e.exception.filename) self.assertTrue(e.exception.reason) + def test_url_error_stringified(self): + reason = 'sixseven' + err = urllib.error.URLError(reason) + self.assertEqual(str(err), f'') + class urlopen_DataTests(unittest.TestCase): """Test urlopen() opening a data URL.""" From 1530b38c82f8f09c3c29b2829cd1d8c1db830761 Mon Sep 17 00:00:00 2001 From: Vyron Vasileiadis Date: Sun, 19 Jul 2026 16:10:47 +0300 Subject: [PATCH 051/205] gh-151949: Fix Sphinx reference warnings in `Doc/library/lzma.rst` (GH-153878) The lzma module constants (FORMAT_*, CHECK_*, PRESET_*, FILTER_*, MODE_* and MF_*) were referenced with the :const: role throughout the module documentation but were never defined as reference targets, producing "reference target not found" warnings under nitpicky mode. Document these public constants with .. data:: directives, following the convention used by the signal, socket and ssl modules, so the existing references resolve. The now-redundant inline descriptions of the format and check constants are condensed into linked references. --- Doc/library/lzma.rst | 131 ++++++++++++++++++++++++++++++++++--------- Doc/tools/.nitignore | 1 - 2 files changed, 105 insertions(+), 27 deletions(-) diff --git a/Doc/library/lzma.rst b/Doc/library/lzma.rst index cd72174d54f6e62..580829cfbb46e07 100644 --- a/Doc/library/lzma.rst +++ b/Doc/library/lzma.rst @@ -152,35 +152,14 @@ Compressing and decompressing data in memory :func:`compress`. The *format* argument specifies what container format should be used. - Possible values are: - - * :const:`FORMAT_XZ`: The ``.xz`` container format. - This is the default format. - - * :const:`FORMAT_ALONE`: The legacy ``.lzma`` container format. - This format is more limited than ``.xz`` -- it does not support integrity - checks or multiple filters. - - * :const:`FORMAT_RAW`: A raw data stream, not using any container format. - This format specifier does not support integrity checks, and requires that - you always specify a custom filter chain (for both compression and - decompression). Additionally, data compressed in this manner cannot be - decompressed using :const:`FORMAT_AUTO` (see :class:`LZMADecompressor`). + Possible values are :const:`FORMAT_XZ` (the default), + :const:`FORMAT_ALONE` and :const:`FORMAT_RAW`. The *check* argument specifies the type of integrity check to include in the compressed data. This check is used when decompressing, to ensure that the - data has not been corrupted. Possible values are: - - * :const:`CHECK_NONE`: No integrity check. - This is the default (and the only acceptable value) for - :const:`FORMAT_ALONE` and :const:`FORMAT_RAW`. - - * :const:`CHECK_CRC32`: 32-bit Cyclic Redundancy Check. - - * :const:`CHECK_CRC64`: 64-bit Cyclic Redundancy Check. - This is the default for :const:`FORMAT_XZ`. - - * :const:`CHECK_SHA256`: 256-bit Secure Hash Algorithm. + data has not been corrupted. Possible values are :const:`CHECK_NONE`, + :const:`CHECK_CRC32`, :const:`CHECK_CRC64` (the default for + :const:`FORMAT_XZ`) and :const:`CHECK_SHA256`. If the specified check is not supported, an :class:`LZMAError` is raised. @@ -412,6 +391,106 @@ These filters support one option, ``start_offset``. This specifies the address that should be mapped to the beginning of the input data. The default is 0. +Constants +--------- + +The following module-level constants are provided for use as the *format*, +*check*, *preset* and *filters* arguments of the classes and functions above. + +Container formats: + +.. data:: FORMAT_XZ + + The ``.xz`` container format. + +.. data:: FORMAT_ALONE + + The legacy ``.lzma`` container format. This format is more limited than + ``.xz`` -- it does not support integrity checks or multiple filters. + +.. data:: FORMAT_RAW + + A raw data stream, not using any container format. This format specifier + does not support integrity checks, and requires that you always specify a + custom filter chain (for both compression and decompression). Additionally, + data compressed in this manner cannot be decompressed using + :const:`FORMAT_AUTO`. + +.. data:: FORMAT_AUTO + + Used for decompression only. The container format is detected + automatically, so that both ``.xz`` and ``.lzma`` files can be decompressed. + +Integrity checks: + +.. data:: CHECK_NONE + + No integrity check. This is the default (and the only acceptable value) for + :const:`FORMAT_ALONE` and :const:`FORMAT_RAW`. + +.. data:: CHECK_CRC32 + + A 32-bit Cyclic Redundancy Check. + +.. data:: CHECK_CRC64 + + A 64-bit Cyclic Redundancy Check. This is the default for + :const:`FORMAT_XZ`. + +.. data:: CHECK_SHA256 + + A 256-bit Secure Hash Algorithm. + +.. data:: CHECK_UNKNOWN + + The integrity check used by a stream could not yet be determined. This may + be the value of the :attr:`LZMADecompressor.check` attribute until enough of + the input has been decoded. + +.. data:: CHECK_ID_MAX + + The largest supported integrity-check ID. + +Compression presets: + +.. data:: PRESET_DEFAULT + + The default compression preset, equivalent to preset level ``6``. + +.. data:: PRESET_EXTREME + + A flag that may be bitwise OR-ed with a preset level (``0`` to ``9``) to + select a slower but more thorough variant of that preset. + +Filter IDs and options: + +.. data:: FILTER_LZMA1 + FILTER_LZMA2 + + The LZMA1 and LZMA2 compression filters. :const:`FILTER_LZMA1` is for use + with :const:`FORMAT_ALONE`, while :const:`FILTER_LZMA2` is for use with + :const:`FORMAT_XZ` and :const:`FORMAT_RAW`. + +.. data:: FILTER_DELTA + + The delta filter. + +.. data:: MODE_FAST + MODE_NORMAL + + Compression modes that may be used as the ``mode`` option of a filter + specifier (see :ref:`filter-chain-specs`). + +.. data:: MF_HC3 + MF_HC4 + MF_BT2 + MF_BT3 + MF_BT4 + + Match finders that may be used as the ``mf`` option of a filter specifier + (see :ref:`filter-chain-specs`). + + Examples -------- diff --git a/Doc/tools/.nitignore b/Doc/tools/.nitignore index c5d474895966119..ab592cfa5a1bbbd 100644 --- a/Doc/tools/.nitignore +++ b/Doc/tools/.nitignore @@ -12,7 +12,6 @@ Doc/library/email.parser.rst Doc/library/importlib.rst Doc/library/logging.config.rst Doc/library/logging.handlers.rst -Doc/library/lzma.rst Doc/library/mmap.rst Doc/library/multiprocessing.rst Doc/library/optparse.rst From ee1e48ebd8194cd5984714021c4df85dbb93c6df Mon Sep 17 00:00:00 2001 From: David Date: Sun, 19 Jul 2026 15:19:00 +0200 Subject: [PATCH 052/205] improve json test coverage (GH-154123) Add test that covers the except block on line 106 of decoder.py --- Lib/test/test_json/test_decode.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Lib/test/test_json/test_decode.py b/Lib/test/test_json/test_decode.py index 6d05ef8f8eb0918..33aeefa92f282ae 100644 --- a/Lib/test/test_json/test_decode.py +++ b/Lib/test/test_json/test_decode.py @@ -149,6 +149,10 @@ def test_negative_index(self): d = self.json.JSONDecoder() self.assertRaises(ValueError, d.raw_decode, 'a'*42, -50000) + def test_unterminated_string(self): + d = self.json.JSONDecoder() + self.assertRaises(self.JSONDecodeError, d.raw_decode, '"\\') + def test_limit_int(self): maxdigits = 5000 with support.adjust_int_max_str_digits(maxdigits): From ec1057ebb6b3d515bff058af2feebf2868aadd42 Mon Sep 17 00:00:00 2001 From: thexai <58434170+thexai@users.noreply.github.com> Date: Sun, 19 Jul 2026 15:19:40 +0200 Subject: [PATCH 053/205] gh-152433: Windows: ``_uuid`` module: improve UWP compatibility (#152793) --- Modules/_uuidmodule.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Modules/_uuidmodule.c b/Modules/_uuidmodule.c index c31a7e8fea56084..3edc29a75b32ce9 100644 --- a/Modules/_uuidmodule.c +++ b/Modules/_uuidmodule.c @@ -20,6 +20,9 @@ #ifdef MS_WINDOWS #include +#ifndef RPC_S_OK +#define RPC_S_OK 0L +#endif #endif #ifndef MS_WINDOWS From 1604043caf0a00fe4ea9f6e31e389c4cf8b8baab Mon Sep 17 00:00:00 2001 From: "L. Le" Date: Sun, 19 Jul 2026 15:20:56 +0200 Subject: [PATCH 054/205] gh-153932: protect read of en_index during enumerate.reduce (GH-154118) --- Lib/test/libregrtest/tsan.py | 1 + Lib/test/test_enumerate.py | 26 +++++++++++++++++++ ...-07-19-12-33-27.gh-issue-153932.lKw2bo.rst | 2 ++ Objects/enumobject.c | 9 ++++--- 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-07-19-12-33-27.gh-issue-153932.lKw2bo.rst diff --git a/Lib/test/libregrtest/tsan.py b/Lib/test/libregrtest/tsan.py index bacfe5e21ba0b7d..c7ec63763bc9d85 100644 --- a/Lib/test/libregrtest/tsan.py +++ b/Lib/test/libregrtest/tsan.py @@ -8,6 +8,7 @@ 'test_ctypes', 'test_concurrent_futures', 'test_enum', + 'test_enumerate', 'test_functools', 'test_httpservers', 'test_imaplib', diff --git a/Lib/test/test_enumerate.py b/Lib/test/test_enumerate.py index 5cb54cff9b76fdd..c8b85fe86921781 100644 --- a/Lib/test/test_enumerate.py +++ b/Lib/test/test_enumerate.py @@ -3,8 +3,11 @@ import sys import pickle import gc +import threading + from test import support +from test.support import threading_helper class G: 'Sequence using __getitem__' @@ -292,5 +295,28 @@ def enum(self, iterable, start=sys.maxsize + 1): (sys.maxsize+3,'c')] +@threading_helper.requires_working_threading() +class TestThreadSafety(EnumerateStartTestCase): + def test_thread_safety_while_iterating(self): + # gh-153932: calling reduce while iterating should pass with TSAN + + en = enumerate(range(10_000)) + stop = threading.Event() + + def advance(): + for _ in en: + pass + stop.set() + + def read(): + while not stop.is_set(): + en.__reduce__() + + threads = [threading.Thread(target=advance), threading.Thread(target=read)] + + with threading_helper.start_threads(threads): + pass + + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-07-19-12-33-27.gh-issue-153932.lKw2bo.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-19-12-33-27.gh-issue-153932.lKw2bo.rst new file mode 100644 index 000000000000000..56b96307ed04cd9 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-19-12-33-27.gh-issue-153932.lKw2bo.rst @@ -0,0 +1,2 @@ +Fix thread safety issue in the ``__reduce__`` method of +:py:class:`enumerate`. diff --git a/Objects/enumobject.c b/Objects/enumobject.c index fc53f1bfee8dde4..68aa594c5540cee 100644 --- a/Objects/enumobject.c +++ b/Objects/enumobject.c @@ -277,10 +277,13 @@ enum_reduce(PyObject *op, PyObject *Py_UNUSED(ignored)) enumobject *en = _enumobject_CAST(op); PyObject *result; Py_BEGIN_CRITICAL_SECTION(en); - if (en->en_longindex != NULL) + if (en->en_longindex != NULL) { result = Py_BuildValue("O(OO)", Py_TYPE(en), en->en_sit, en->en_longindex); - else - result = Py_BuildValue("O(On)", Py_TYPE(en), en->en_sit, en->en_index); + } + else { + Py_ssize_t en_index = FT_ATOMIC_LOAD_SSIZE_RELAXED(en->en_index); + result = Py_BuildValue("O(On)", Py_TYPE(en), en->en_sit, en_index); + } Py_END_CRITICAL_SECTION(); return result; } From 69d44f80b55633baabe1d53b6c9a629348a93dca Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Sun, 19 Jul 2026 16:45:17 +0200 Subject: [PATCH 055/205] gh-153906: Show 'Data' in code formatting (#154132) --- Lib/pydoc.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Lib/pydoc.py b/Lib/pydoc.py index 3140723f49b7d0d..72974af26bee64c 100644 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -881,9 +881,10 @@ def docmodule(self, object, name=None, mod=None, *ignored): if data: contents = [] for key, value in data: - contents.append(self.document(value, key)) + contents.append( + f'
    {self.document(value, key)}
    ') result = result + self.bigsection( - 'Data', 'data', '
    \n'.join(contents)) + 'Data', 'data', '\n'.join(contents)) if hasattr(object, '__author__'): contents = self.markup(str(object.__author__), self.preformat) result = result + self.bigsection('Author', 'author', contents) From 8d11eb0c31efcfd1d504650a564d9a4b45cba721 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Jul 2026 18:06:48 +0300 Subject: [PATCH 056/205] gh-154144: Fix false positive from the stdbool.h guard in _testcapimodule.c (GH-154145) Co-authored-by: Claude Fable 5 --- .../Tests/2026-07-19-18-20-00.gh-issue-154144.tcbool.rst | 1 + Modules/_testcapimodule.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2026-07-19-18-20-00.gh-issue-154144.tcbool.rst diff --git a/Misc/NEWS.d/next/Tests/2026-07-19-18-20-00.gh-issue-154144.tcbool.rst b/Misc/NEWS.d/next/Tests/2026-07-19-18-20-00.gh-issue-154144.tcbool.rst new file mode 100644 index 000000000000000..dc1ac8b4035153c --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2026-07-19-18-20-00.gh-issue-154144.tcbool.rst @@ -0,0 +1 @@ +Fix building the :mod:`!_testcapi` module on NetBSD. diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 799390c27053287..fb18a866e628128 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -15,6 +15,10 @@ #include "frameobject.h" // PyFrame_New() #include "marshal.h" // PyMarshal_WriteLongToFile() +#ifdef bool +# error "The public headers should not include , see gh-90904" +#endif + #include // FLT_MAX #include #include // offsetof() @@ -26,10 +30,6 @@ # include // sysctlbyname() #endif -#ifdef bool -# error "The public headers should not include , see gh-48924" -#endif - #include "_testcapi/util.h" From 249d5e0a10839f9891caa85de35a8a9cf5d7a3a3 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 19 Jul 2026 17:12:07 +0200 Subject: [PATCH 057/205] gh-153903: Use `@ctypes.util.wrap_dll_function()` (#154122) --- Lib/platform.py | 12 ++++++--- Lib/test/pythoninfo.py | 17 ++++++------ Lib/test/test_android.py | 13 ++++++--- Lib/test/test_embed.py | 36 ++++++++++++++++--------- Lib/test/test_ntpath.py | 18 ++++++++++--- Lib/test/test_os/test_windows.py | 45 ++++++++++++++++++-------------- Lib/test/win_console_handler.py | 11 ++++---- 7 files changed, 95 insertions(+), 57 deletions(-) diff --git a/Lib/platform.py b/Lib/platform.py index 36489d4fdd98ae2..3141998e02dfe21 100644 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -543,21 +543,25 @@ def android_ver(release="", api_level=0, manufacturer="", model="", device="", is_emulator=False): if sys.platform == "android": try: - from ctypes import CDLL, c_char_p, create_string_buffer + from ctypes import CDLL, c_int, c_char_p, create_string_buffer + from ctypes.util import wrap_dll_function except ImportError: pass else: # An NDK developer confirmed that this is an officially-supported # API (https://stackoverflow.com/a/28416743). Use `getattr` to avoid # private name mangling. - system_property_get = getattr(CDLL("libc.so"), "__system_property_get") - system_property_get.argtypes = (c_char_p, c_char_p) + libc = CDLL("libc.so") + + @wrap_dll_function(libc) + def __system_property_get(name: c_char_p, value: c_char_p) -> c_int: + pass def getprop(name, default): # https://android.googlesource.com/platform/bionic/+/refs/tags/android-5.0.0_r1/libc/include/sys/system_properties.h#39 PROP_VALUE_MAX = 92 buffer = create_string_buffer(PROP_VALUE_MAX) - length = system_property_get(name.encode("UTF-8"), buffer) + length = __system_property_get(name.encode("UTF-8"), buffer) if length == 0: # This API doesn’t distinguish between an empty property and # a missing one. diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py index 3227b91bd82a863..13a3199b1f1267b 100644 --- a/Lib/test/pythoninfo.py +++ b/Lib/test/pythoninfo.py @@ -995,7 +995,7 @@ def collect_windows(info_add): # windows.RtlAreLongPathsEnabled: RtlAreLongPathsEnabled() # windows.is_admin: IsUserAnAdmin() try: - import ctypes + import ctypes.util if not hasattr(ctypes, 'WinDLL'): raise ImportError except ImportError: @@ -1004,20 +1004,19 @@ def collect_windows(info_add): ntdll = ctypes.WinDLL('ntdll') BOOLEAN = ctypes.c_ubyte try: - RtlAreLongPathsEnabled = ntdll.RtlAreLongPathsEnabled + @ctypes.util.wrap_dll_function(ntdll) + def RtlAreLongPathsEnabled() -> BOOLEAN: + pass except AttributeError: res = '' else: - RtlAreLongPathsEnabled.restype = BOOLEAN - RtlAreLongPathsEnabled.argtypes = () res = bool(RtlAreLongPathsEnabled()) info_add('windows.RtlAreLongPathsEnabled', res) - shell32 = ctypes.windll.shell32 - IsUserAnAdmin = shell32.IsUserAnAdmin - IsUserAnAdmin.restype = BOOLEAN - IsUserAnAdmin.argtypes = () - info_add('windows.is_admin', IsUserAnAdmin()) + @ctypes.util.wrap_dll_function(ctypes.windll.shell32) + def IsUserAnAdmin() -> BOOLEAN: + pass + info_add('windows.is_admin', bool(IsUserAnAdmin())) try: import _winapi diff --git a/Lib/test/test_android.py b/Lib/test/test_android.py index 31daafbc3d63009..201d701aff11eb2 100644 --- a/Lib/test/test_android.py +++ b/Lib/test/test_android.py @@ -41,13 +41,18 @@ def logcat_thread(): try: from ctypes import CDLL, c_char_p, c_int - android_log_write = getattr(CDLL("liblog.so"), "__android_log_write") - android_log_write.argtypes = (c_int, c_char_p, c_char_p) - ANDROID_LOG_INFO = 4 + from ctypes.util import wrap_dll_function + liblog = CDLL("liblog.so") + + @wrap_dll_function(liblog) + def __android_log_write(prio: c_int, tag: c_char_p, + text: c_char_p) -> c_int: + pass # Separate tests using a marker line with a different tag. + ANDROID_LOG_INFO = 4 tag, message = "python.test", f"{self.id()} {time()}" - android_log_write( + __android_log_write( ANDROID_LOG_INFO, tag.encode("UTF-8"), message.encode("UTF-8")) self.assert_log("I", tag, message, skip=True) except: diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index 40036609a190551..1ff600e30bf4cbd 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -1884,19 +1884,31 @@ def test_global_pathconfig(self): # The global path configuration (_Py_path_config) must be a copy # of the path configuration of PyInterpreter.config (PyConfig). ctypes = import_helper.import_module('ctypes') + import ctypes.util # noqa: F811 - def get_func(name): - func = getattr(ctypes.pythonapi, name) - func.argtypes = () - func.restype = ctypes.c_wchar_p - return func - - Py_GetPath = get_func('Py_GetPath') - Py_GetPrefix = get_func('Py_GetPrefix') - Py_GetExecPrefix = get_func('Py_GetExecPrefix') - Py_GetProgramName = get_func('Py_GetProgramName') - Py_GetProgramFullPath = get_func('Py_GetProgramFullPath') - Py_GetPythonHome = get_func('Py_GetPythonHome') + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def Py_GetPath() -> ctypes.c_wchar_p: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def Py_GetPrefix() -> ctypes.c_wchar_p: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def Py_GetExecPrefix() -> ctypes.c_wchar_p: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def Py_GetProgramName() -> ctypes.c_wchar_p: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def Py_GetProgramFullPath() -> ctypes.c_wchar_p: + pass + + @ctypes.util.wrap_dll_function(ctypes.pythonapi) + def Py_GetPythonHome() -> ctypes.c_wchar_p: + pass config = _testinternalcapi.get_configs()['config'] diff --git a/Lib/test/test_ntpath.py b/Lib/test/test_ntpath.py index a3728b58335e63b..936332bf94ffe77 100644 --- a/Lib/test/test_ntpath.py +++ b/Lib/test/test_ntpath.py @@ -31,19 +31,29 @@ HAVE_GETFINALPATHNAME = True try: - import ctypes + import ctypes.util + import ctypes.wintypes except ImportError: HAVE_GETSHORTPATHNAME = False else: HAVE_GETSHORTPATHNAME = True def _getshortpathname(path): - GSPN = ctypes.WinDLL("kernel32", use_last_error=True).GetShortPathNameW - GSPN.argtypes = [ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32] - GSPN.restype = ctypes.c_uint32 + kernel32 = ctypes.WinDLL("kernel32", use_last_error=True) + + @ctypes.util.wrap_dll_function(kernel32) + def GetShortPathNameW( + lpszLongPath: ctypes.c_wchar_p, + lpszShortPath: ctypes.c_wchar_p, + cchBuffer: ctypes.wintypes.DWORD, + ) -> ctypes.wintypes.DWORD: + pass + GSPN = GetShortPathNameW + result_len = GSPN(path, None, 0) if not result_len: raise OSError("failed to get short path name 0x{:08X}" .format(ctypes.get_last_error())) + result = ctypes.create_unicode_buffer(result_len) result_len = GSPN(path, result, result_len) return result[:result_len] diff --git a/Lib/test/test_os/test_windows.py b/Lib/test/test_os/test_windows.py index f1c6283f60d35ed..b21dd8a4dca6609 100644 --- a/Lib/test/test_os/test_windows.py +++ b/Lib/test/test_os/test_windows.py @@ -27,7 +27,7 @@ def _kill(self, sig): # subprocess to the parent that the interpreter is ready. When it # becomes ready, send *sig* via os.kill to the subprocess and check # that the return code is equal to *sig*. - import ctypes + import ctypes.util from ctypes import wintypes import msvcrt @@ -35,14 +35,17 @@ def _kill(self, sig): # process has exited, use PeekNamedPipe to see what's inside stdout # without waiting. This is done so we can tell that the interpreter # is started and running at a point where it could handle a signal. - PeekNamedPipe = ctypes.windll.kernel32.PeekNamedPipe - PeekNamedPipe.restype = wintypes.BOOL - PeekNamedPipe.argtypes = (wintypes.HANDLE, # Pipe handle - ctypes.POINTER(ctypes.c_char), # stdout buf - wintypes.DWORD, # Buffer size - ctypes.POINTER(wintypes.DWORD), # bytes read - ctypes.POINTER(wintypes.DWORD), # bytes avail - ctypes.POINTER(wintypes.DWORD)) # bytes left + @ctypes.util.wrap_dll_function(ctypes.windll.kernel32) + def PeekNamedPipe( + hNamedPipe: wintypes.HANDLE, + lpBuffer: ctypes.POINTER(ctypes.c_char), + nBufferSize: wintypes.DWORD, + lpBytesRead: ctypes.POINTER(wintypes.DWORD), + lpTotalBytesAvail: ctypes.POINTER(wintypes.DWORD), + lpBytesLeftThisMessage: ctypes.POINTER(wintypes.DWORD), + ) -> wintypes.BOOL: + pass + msg = "running" proc = subprocess.Popen([sys.executable, "-c", "import sys;" @@ -126,10 +129,11 @@ def test_CTRL_C_EVENT(self): # Make a NULL value by creating a pointer with no argument. NULL = ctypes.POINTER(ctypes.c_int)() - SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler - SetConsoleCtrlHandler.argtypes = (ctypes.POINTER(ctypes.c_int), - wintypes.BOOL) - SetConsoleCtrlHandler.restype = wintypes.BOOL + + @ctypes.util.wrap_dll_function(ctypes.windll.kernel32) + def SetConsoleCtrlHandler(HandlerRoutine: ctypes.POINTER(ctypes.c_int), + Add: wintypes.BOOL) -> wintypes.BOOL: + pass # Calling this with NULL and FALSE causes the calling process to # handle Ctrl+C, rather than ignore it. This property is inherited @@ -458,17 +462,20 @@ def test_getfinalpathname_handles(self): import ctypes.wintypes # noqa: F811 kernel = ctypes.WinDLL('Kernel32.dll', use_last_error=True) - kernel.GetCurrentProcess.restype = ctypes.wintypes.HANDLE + @ctypes.util.wrap_dll_function(kernel) + def GetCurrentProcess() -> ctypes.wintypes.HANDLE: + pass - kernel.GetProcessHandleCount.restype = ctypes.wintypes.BOOL - kernel.GetProcessHandleCount.argtypes = (ctypes.wintypes.HANDLE, - ctypes.wintypes.LPDWORD) + @ctypes.util.wrap_dll_function(kernel) + def GetProcessHandleCount(khProcess: ctypes.wintypes.HANDLE, + pdwHandleCount: ctypes.wintypes.LPDWORD) -> ctypes.wintypes.BOOL: + pass # This is a pseudo-handle that doesn't need to be closed - hproc = kernel.GetCurrentProcess() + hproc = GetCurrentProcess() handle_count = ctypes.wintypes.DWORD() - ok = kernel.GetProcessHandleCount(hproc, ctypes.byref(handle_count)) + ok = GetProcessHandleCount(hproc, ctypes.byref(handle_count)) self.assertEqual(1, ok) before_count = handle_count.value diff --git a/Lib/test/win_console_handler.py b/Lib/test/win_console_handler.py index e7779b9363503b4..a1c7c42c109330b 100644 --- a/Lib/test/win_console_handler.py +++ b/Lib/test/win_console_handler.py @@ -15,7 +15,7 @@ import sys # Function prototype for the handler function. Returns BOOL, takes a DWORD. -HandlerRoutine = WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD) +HANDLER_ROUTINE = WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD) def _ctrl_handler(sig): """Handle a sig event and return 0 to terminate the process""" @@ -27,12 +27,13 @@ def _ctrl_handler(sig): print("UNKNOWN EVENT") return 0 -ctrl_handler = HandlerRoutine(_ctrl_handler) +ctrl_handler = HANDLER_ROUTINE(_ctrl_handler) -SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler -SetConsoleCtrlHandler.argtypes = (HandlerRoutine, wintypes.BOOL) -SetConsoleCtrlHandler.restype = wintypes.BOOL +@ctypes.util.wrap_dll_function(ctypes.windll.kernel32) +def SetConsoleCtrlHandler(HandlerRoutine: HANDLER_ROUTINE, + Add: wintypes.BOOL) -> wintypes.BOOL: + pass if __name__ == "__main__": # Add our console control handling function with value 1 From eb447081ed8182f825fa01953ec87cff41f3d585 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Jul 2026 18:20:35 +0300 Subject: [PATCH 058/205] gh-139806: Mention pickle error changes in What's New in 3.14 (GH-154020) The gh-122311 changes made pickle.dump() and pickle.dumps() raise PicklingError for some failures that previously raised AttributeError, ImportError, ValueError or UnicodeEncodeError, depending on the implementation. Add an entry about this in the "Porting to Python 3.14" section. Co-authored-by: Claude Fable 5 --- Doc/whatsnew/3.14.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Doc/whatsnew/3.14.rst b/Doc/whatsnew/3.14.rst index 2fa7267292d9940..64c6888d9947702 100644 --- a/Doc/whatsnew/3.14.rst +++ b/Doc/whatsnew/3.14.rst @@ -3312,6 +3312,16 @@ Changes in the Python API This temporary change affects other threads. (Contributed by Serhiy Storchaka in :gh:`69998`.) +* :func:`pickle.dump` and :func:`pickle.dumps` now raise + :exc:`~pickle.PicklingError` for some failures that previously raised + :exc:`AttributeError`, :exc:`ImportError`, :exc:`ValueError`, + :exc:`UnicodeEncodeError` or :exc:`!PicklingError`, + depending on the implementation + (for example, pickling a local object, or an object whose module cannot be imported). + The original exception is chained to the :exc:`!PicklingError`. + Code that caught these exceptions should also catch :exc:`!PicklingError`. + (Contributed by Serhiy Storchaka in :gh:`122311`.) + * :class:`types.UnionType` is now an alias for :class:`typing.Union`, causing changes in some behaviors. See :ref:`above ` for more details. From 5625b187ab528e10dcaa21726a7c95b110d97190 Mon Sep 17 00:00:00 2001 From: soreavis <263610811+soreavis@users.noreply.github.com> Date: Sun, 19 Jul 2026 17:31:59 +0200 Subject: [PATCH 059/205] gh-62534: Document that three-argument type() does not call __prepare__ (GH-154028) The three-argument form of type() skips the metaclass __prepare__ method, which is called by the class statement machinery rather than by the metaclass call itself. Say so in the type() entry and point to types.new_class() for dynamic class creation with the appropriate metaclass, as directed in the issue thread. --- Doc/library/functions.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 8dbebf7048b5835..f45ab397e936938 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -2179,6 +2179,11 @@ are always available. They are listed here in alphabetical order. in the same way that keywords in a class definition (besides *metaclass*) would. + Unlike a :keyword:`class` statement, the three argument form does not + call the metaclass ``__prepare__`` method (see :ref:`prepare`). Use + :func:`types.new_class` to dynamically create a class using the + appropriate metaclass. + See also :ref:`class-customization`. .. versionchanged:: 3.6 From f2521324e6bdf331460abec7c2a88e2d3736b91c Mon Sep 17 00:00:00 2001 From: Tobias Alex-Petersen Date: Sun, 19 Jul 2026 15:58:58 +0000 Subject: [PATCH 060/205] gh-119710: fix asyncio Process.wait() to finish on process exit and not wait for closing of pipes (#151983) Co-authored-by: Kumar Aditya --- Lib/asyncio/base_subprocess.py | 25 +++---- Lib/test/test_asyncio/test_subprocess.py | 71 +++++++++++-------- ...-06-11-10-00-00.gh-issue-119710.Qz7Kp2.rst | 4 ++ 3 files changed, 53 insertions(+), 47 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-06-11-10-00-00.gh-issue-119710.Qz7Kp2.rst diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py index 224b1883808a412..3fa1ed1afd2a651 100644 --- a/Lib/asyncio/base_subprocess.py +++ b/Lib/asyncio/base_subprocess.py @@ -26,7 +26,6 @@ def __init__(self, loop, protocol, args, shell, self._pending_calls = collections.deque() self._pipes = {} self._finished = False - self._pipes_connected = False if stdin == subprocess.PIPE: self._pipes[0] = None @@ -214,7 +213,6 @@ async def _connect_pipes(self, waiter): else: if waiter is not None and not waiter.cancelled(): waiter.set_result(None) - self._pipes_connected = True def _call(self, cb, *data): if self._pending_calls is not None: @@ -235,6 +233,7 @@ def _process_exited(self, returncode): if self._loop.get_debug(): logger.info('%r exited with return code %r', self, returncode) self._returncode = returncode + if self._proc.returncode is None: # asyncio uses a child watcher: copy the status into the Popen # object. On Python 3.6, it is required to avoid a ResourceWarning. @@ -243,6 +242,13 @@ def _process_exited(self, returncode): self._try_finish() + # gh-119710: Wake up futures waiting for wait() as soon as the process + # exits. + for waiter in self._exit_waiters: + if not waiter.done(): + waiter.set_result(returncode) + self._exit_waiters = None + async def _wait(self): """Wait until the process exit and return the process return code. @@ -258,15 +264,7 @@ def _try_finish(self): assert not self._finished if self._returncode is None: return - if not self._pipes_connected: - # self._pipes_connected can be False if not all pipes were connected - # because either the process failed to start or the self._connect_pipes task - # got cancelled. In this broken state we consider all pipes disconnected and - # to avoid hanging forever in self._wait as otherwise _exit_waiters - # would never be woken up, we wake them up here. - for waiter in self._exit_waiters: - if not waiter.done(): - waiter.set_result(self._returncode) + if all(p is not None and p.disconnected for p in self._pipes.values()): self._finished = True @@ -276,11 +274,6 @@ def _call_connection_lost(self, exc): try: self._protocol.connection_lost(exc) finally: - # wake up futures waiting for wait() - for waiter in self._exit_waiters: - if not waiter.done(): - waiter.set_result(self._returncode) - self._exit_waiters = None self._loop = None self._proc = None self._protocol = None diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index bb1a7d6ff22be8d..2e97fa5820f8245 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -112,37 +112,6 @@ def test_subprocess_repr(self): ) transport.close() - def test_proc_exited_no_invalid_state_error_on_exit_waiters(self): - # gh-145541: when _connect_pipes hasn't completed (so - # _pipes_connected is False) and the process exits, _try_finish() - # sets the result on exit waiters. Then _call_connection_lost() must - # not call set_result() again on the same waiters. - self.loop.set_exception_handler( - lambda loop, context: self.fail( - f"unexpected exception: {context}") - ) - waiter = self.loop.create_future() - transport, protocol = self.create_transport(waiter) - - # Simulate a waiter registered via _wait() before the process exits. - exit_waiter = self.loop.create_future() - transport._exit_waiters.append(exit_waiter) - - # _connect_pipes hasn't completed, so _pipes_connected is False. - self.assertFalse(transport._pipes_connected) - - # Simulate process exit. _try_finish() will set the result on - # exit_waiter because _pipes_connected is False, and then schedule - # _call_connection_lost() because _pipes is empty (vacuously all - # disconnected). _call_connection_lost() must skip exit_waiter - # because it's already done. - transport._process_exited(6) - self.loop.run_until_complete(waiter) - - self.assertEqual(exit_waiter.result(), 6) - - transport.close() - class SubprocessMixin: @@ -436,6 +405,46 @@ async def len_message(message): self.assertEqual(output.rstrip(), b'3') self.assertEqual(exitcode, 0) + def test_wait_even_if_pipe_is_open(self): + # gh-119710: Process.wait() must return once the process exits even + # if its stdout pipe is inherited by a grandchild that keeps it open, + # so the pipe never reaches EOF. Otherwise wait() hangs forever + # despite the returncode being known. + + async def run(): + # The grandchild inherits the child's stdin and stdout pipes and + # keeps both open after the child is killed. It writes "ready" + # so we know it has started, and exits once its stdin hits EOF. + code = textwrap.dedent("""\ + import subprocess, sys + subprocess.run([sys.executable, "-c", + "import sys; sys.stdout.write('ready');" + " sys.stdout.flush(); sys.stdin.read()"]) + """) + + proc = await asyncio.create_subprocess_exec( + sys.executable, "-c", code, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + ) + try: + wait_proc = asyncio.create_task(proc.wait()) + # Wait until the grandchild holds the inherited pipes; this + # also lets the wait() task register its waiter. + await proc.stdout.readexactly(5) + proc.kill() + returncode = await asyncio.wait_for( + wait_proc, timeout=support.SHORT_TIMEOUT) + if sys.platform == 'win32': + self.assertIsInstance(returncode, int) + else: + self.assertEqual(-signal.SIGKILL, returncode) + finally: + proc.stdin.close() # let the grandchild exit + await proc.stdout.read() + + self.loop.run_until_complete(run()) + def test_empty_input(self): async def empty_input(): diff --git a/Misc/NEWS.d/next/Library/2026-06-11-10-00-00.gh-issue-119710.Qz7Kp2.rst b/Misc/NEWS.d/next/Library/2026-06-11-10-00-00.gh-issue-119710.Qz7Kp2.rst new file mode 100644 index 000000000000000..45f99d72ea29a2f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-06-11-10-00-00.gh-issue-119710.Qz7Kp2.rst @@ -0,0 +1,4 @@ +Fix :mod:`asyncio` subprocess :meth:`~asyncio.subprocess.Process.wait` +hanging when the process has exited but one of its pipes is kept open by an +inherited child process (so the pipe never reaches EOF). ``wait()`` now +returns as soon as the process exits, regardless of the pipes' state. From da5713c489c63622c0fdd25343a7ea7293a66e68 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 19 Jul 2026 18:24:12 +0200 Subject: [PATCH 061/205] gh-104533: Fix ctypes test_pointer_proto_missing_argtypes_error() (#154169) Save/restore Py_GetVersion.argtypes, since Py_GetVersion is used in another test. --- Lib/test/test_ctypes/test_pointers.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_ctypes/test_pointers.py b/Lib/test/test_ctypes/test_pointers.py index 771cc8fbe0ec934..78480af34474a54 100644 --- a/Lib/test/test_ctypes/test_pointers.py +++ b/Lib/test/test_ctypes/test_pointers.py @@ -11,6 +11,7 @@ c_long, c_ulong, c_longlong, c_ulonglong, c_float, c_double) from ctypes import _pointer_type_cache, _pointer_type_cache_fallback +from test import support from test.support import import_helper from weakref import WeakSet _ctypes_test = import_helper.import_module("_ctypes_test") @@ -409,10 +410,9 @@ class BadType(ctypes._Pointer): pass func = ctypes.pythonapi.Py_GetVersion - func.argtypes = (BadType,) - - with self.assertRaises(ctypes.ArgumentError): - func(object()) + with support.swap_attr(func, 'argtypes', (BadType,)): + with self.assertRaises(ctypes.ArgumentError): + func(object()) class PointerTypeCacheTestCase(unittest.TestCase): # dummy tests to check warnings and base behavior From 53916ee48d2e78592898bea2e52bfeb4497e0bcd Mon Sep 17 00:00:00 2001 From: Michael Newman Date: Sun, 19 Jul 2026 13:33:57 -0400 Subject: [PATCH 062/205] Fix typos in `Py_tp_base` macro documentation (#154150) --- Doc/c-api/type.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/c-api/type.rst b/Doc/c-api/type.rst index 6b68c0d085589a1..99a7ed8b1cb7b8e 100644 --- a/Doc/c-api/type.rst +++ b/Doc/c-api/type.rst @@ -699,7 +699,7 @@ but need extra remarks for use as slots: .. soft-deprecated:: 3.15 - When not targetting older Python versions, pefer :c:macro:`!Py_tp_bases`. + When not targeting older Python versions, prefer :c:macro:`!Py_tp_bases`. The following slots do not correspond to public fields in the underlying structures: From 6df4993bb646e7f1a30f37c3f65a5b4c9c033cb0 Mon Sep 17 00:00:00 2001 From: Kumar Aditya Date: Sun, 19 Jul 2026 23:48:14 +0530 Subject: [PATCH 063/205] fix ResourceWarnings of test_kill_issue43884 in asyncio (#154178) --- Lib/test/test_asyncio/test_subprocess.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 2e97fa5820f8245..70480ffe4c55c2a 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -220,7 +220,7 @@ def test_kill_issue43884(self): # kills the process and all its children. creationflags = CREATE_NEW_PROCESS_GROUP proc = self.loop.run_until_complete( - asyncio.create_subprocess_shell(blocking_shell_command, stdout=asyncio.subprocess.PIPE, + asyncio.create_subprocess_shell(blocking_shell_command, creationflags=creationflags) ) self.loop.run_until_complete(asyncio.sleep(1)) From aeedae8b44558ee5c406c8b31287195912c29107 Mon Sep 17 00:00:00 2001 From: Goutam Adwant <8672451+goutamadwant@users.noreply.github.com> Date: Sun, 19 Jul 2026 11:32:43 -0700 Subject: [PATCH 064/205] gh-151022: Fix remote debugging linetable reads (#151036) --- Lib/test/test_external_inspection.py | 50 +++++++++++++++++++ ...-06-06-15-04-37.gh-issue-151022.1Aw8Tk.rst | 2 + Modules/_remote_debugging/code_objects.c | 11 ++-- 3 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-06-06-15-04-37.gh-issue-151022.1Aw8Tk.rst diff --git a/Lib/test/test_external_inspection.py b/Lib/test/test_external_inspection.py index 6b1529aa173f01c..910fe96d5e7d81e 100644 --- a/Lib/test/test_external_inspection.py +++ b/Lib/test/test_external_inspection.py @@ -438,6 +438,56 @@ def _extract_coroutine_stacks_lineno_only(self, stack_trace): # ============================================================================ +@requires_remote_subprocess_debugging() +class TestSelfStackTrace(RemoteInspectionTestBase): + @skip_if_not_supported + @unittest.skipIf( + sys.platform == "linux" and not PROCESS_VM_READV_SUPPORTED, + "Test only runs on Linux with process_vm_readv support", + ) + def test_self_trace_with_large_linetable(self): + script = textwrap.dedent("""\ + import os + import _remote_debugging + + assignments = "\\n".join( + f"value_{i} = {i}" for i in range(1000) + ) + expected_lineno = len(assignments.splitlines()) + 1 + source = ( + f"{assignments}\\n" + "stack_trace = " + "_remote_debugging.RemoteUnwinder(os.getpid()).get_stack_trace()\\n" + ) + code = compile(source, "large_linetable.py", "exec") + assert len(code.co_linetable) > 4096, len(code.co_linetable) + namespace = {"os": os, "_remote_debugging": _remote_debugging} + exec(code, namespace) + large_linetable_frames = [ + frame + for interpreter in namespace["stack_trace"] + for thread in interpreter.threads + for frame in thread.frame_info + if frame.filename == "large_linetable.py" + ] + assert len(large_linetable_frames) == 1, large_linetable_frames + assert large_linetable_frames[0].location.lineno == expected_lineno, ( + large_linetable_frames[0] + ) + """) + + result = subprocess.run( + [sys.executable, "-c", script], + capture_output=True, + text=True, + timeout=SHORT_TIMEOUT, + ) + self.assertEqual( + result.returncode, 0, + f"stdout: {result.stdout}\nstderr: {result.stderr}" + ) + + @requires_remote_subprocess_debugging() class TestGetStackTrace(RemoteInspectionTestBase): @skip_if_not_supported diff --git a/Misc/NEWS.d/next/Library/2026-06-06-15-04-37.gh-issue-151022.1Aw8Tk.rst b/Misc/NEWS.d/next/Library/2026-06-06-15-04-37.gh-issue-151022.1Aw8Tk.rst new file mode 100644 index 000000000000000..f16f024c582fb3c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-06-06-15-04-37.gh-issue-151022.1Aw8Tk.rst @@ -0,0 +1,2 @@ +Fix ``_remote_debugging`` stack traces for code objects with large line +tables. diff --git a/Modules/_remote_debugging/code_objects.c b/Modules/_remote_debugging/code_objects.c index ab889a130ee4e7e..f83252524b96ff4 100644 --- a/Modules/_remote_debugging/code_objects.c +++ b/Modules/_remote_debugging/code_objects.c @@ -7,6 +7,8 @@ #include "_remote_debugging.h" +#define MAX_LINETABLE_SIZE (64 * 1024) + /* ============================================================================ * TLBC CACHING FUNCTIONS (Py_GIL_DISABLED only) * ============================================================================ */ @@ -186,11 +188,7 @@ parse_linetable(const uintptr_t addrq, const char* linetable, Py_ssize_t linetab int computed_line = firstlineno; // Running accumulator, separate from output int val; // Temporary for varint results uint8_t byte; // Temporary for byte reads - const size_t MAX_LINETABLE_ENTRIES = 65536; - size_t entry_count = 0; - - while (ptr < end && *ptr != '\0' && entry_count < MAX_LINETABLE_ENTRIES) { - entry_count++; + while (ptr < end && *ptr != '\0') { uint8_t first_byte = *(ptr++); uint8_t code = (first_byte >> 3) & 15; size_t length = (first_byte & 7) + 1; @@ -387,7 +385,8 @@ parse_code_object(RemoteUnwinderObject *unwinder, } linetable = read_py_bytes(unwinder, - GET_MEMBER(uintptr_t, code_object, unwinder->debug_offsets.code_object.linetable), 4096); + GET_MEMBER(uintptr_t, code_object, unwinder->debug_offsets.code_object.linetable), + MAX_LINETABLE_SIZE); if (!linetable) { set_exception_cause(unwinder, PyExc_RuntimeError, "Failed to read linetable from code object"); goto error; From 40f7fbf4a53d2f2cb0414a22f891d6e7e288280c Mon Sep 17 00:00:00 2001 From: ilya <110783299+bontail@users.noreply.github.com> Date: Sun, 19 Jul 2026 22:15:23 +0300 Subject: [PATCH 065/205] Fix grammatical typos in documentation (#154181) --- Doc/library/ast.rst | 2 +- Doc/library/compression.zstd.rst | 4 ++-- Doc/library/sys.rst | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst index 4809fdb42bf3d77..5bdfe7c182de3ac 100644 --- a/Doc/library/ast.rst +++ b/Doc/library/ast.rst @@ -1366,7 +1366,7 @@ Control flow ``try`` blocks which are followed by ``except*`` clauses. The attributes are the same as for :class:`Try` but the :class:`ExceptHandler` nodes in ``handlers`` - are interpreted as ``except*`` blocks rather then ``except``. + are interpreted as ``except*`` blocks rather than ``except``. .. doctest:: diff --git a/Doc/library/compression.zstd.rst b/Doc/library/compression.zstd.rst index 6d99e36e1e5bb65..6618ccf7d559e78 100644 --- a/Doc/library/compression.zstd.rst +++ b/Doc/library/compression.zstd.rst @@ -503,7 +503,7 @@ Advanced parameter control The :meth:`~.bounds` method can be used on any attribute to get the valid values for that parameter. - Parameters are optional; any omitted parameter will have it's value selected + Parameters are optional; any omitted parameter will have its value selected automatically. Example getting the lower and upper bound of :attr:`~.compression_level`:: @@ -732,7 +732,7 @@ Advanced parameter control An :class:`~enum.IntEnum` containing the advanced decompression parameter keys that can be used when decompressing data. Parameters are optional; any - omitted parameter will have it's value selected automatically. + omitted parameter will have its value selected automatically. The :meth:`~.bounds` method can be used on any attribute to get the valid values for that parameter. diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index 9a41e406c8c10e6..355621db2e18a18 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -2135,7 +2135,7 @@ always available. Unless explicitly noted otherwise, all variables are read-only returned by the :func:`open` function. Their parameters are chosen as follows: - * The encoding and error handling are is initialized from + * The encoding and error handling are initialized from :c:member:`PyConfig.stdio_encoding` and :c:member:`PyConfig.stdio_errors`. On Windows, UTF-8 is used for the console device. Non-character From 51de91dbb076985d7c656f6a57919846f2556bb7 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Mon, 20 Jul 2026 00:17:04 +0200 Subject: [PATCH 066/205] gh-145177: Upgrade to Emscripten 6.0.3 (#154029) --- Platforms/emscripten/config.toml | 2 +- configure | 1 - configure.ac | 2 -- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/Platforms/emscripten/config.toml b/Platforms/emscripten/config.toml index 0c65a6623c9798a..5e4f80b28a41c18 100644 --- a/Platforms/emscripten/config.toml +++ b/Platforms/emscripten/config.toml @@ -1,7 +1,7 @@ # Any data that can vary between Python versions is to be kept in this file. # This allows for blanket copying of the Emscripten build code between supported # Python versions. -emscripten-version = "6.0.2" +emscripten-version = "6.0.3" node-version = "24" test-args = [ "-m", "test", diff --git a/configure b/configure index 0fc2b0e819a1209..b7ba4994b30e701 100755 --- a/configure +++ b/configure @@ -9807,7 +9807,6 @@ fi as_fn_append LINKFORSHARED " -sEXPORTED_FUNCTIONS=_main,_Py_Version,__PyRuntime,_PyGILState_GetThisThreadState,__PyEM_EMSCRIPTEN_TRAMPOLINE_OFFSET" as_fn_append LINKFORSHARED " -sSTACK_SIZE=5MB" as_fn_append LINKFORSHARED " -sTEXTDECODER=2" - as_fn_append LINKFORSHARED " -sGROWABLE_ARRAYBUFFERS=0" if test "x$enable_wasm_dynamic_linking" = xyes then : diff --git a/configure.ac b/configure.ac index 980ed2af50b13f7..5e98a4f91c8d5ed 100644 --- a/configure.ac +++ b/configure.ac @@ -2410,8 +2410,6 @@ AS_CASE([$ac_sys_system], AS_VAR_APPEND([LINKFORSHARED], [" -sSTACK_SIZE=5MB"]) dnl Avoid bugs in JS fallback string decoding path AS_VAR_APPEND([LINKFORSHARED], [" -sTEXTDECODER=2"]) - dnl workaround for emscripten#27241, can remove when we update to emscripten 6.0.3 - AS_VAR_APPEND([LINKFORSHARED], [" -sGROWABLE_ARRAYBUFFERS=0"]) AS_VAR_IF([enable_wasm_dynamic_linking], [yes], [ AS_VAR_APPEND([LINKFORSHARED], [" -sMAIN_MODULE"]) From 1f9d20bbd4fed601e7caf76a12e52d35c8ae2b14 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 20 Jul 2026 00:19:32 +0200 Subject: [PATCH 067/205] gh-154137: Fix handle leak in test_winapi (#154201) Make sure that events handles are closed. --- Lib/test/test_winapi.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Lib/test/test_winapi.py b/Lib/test/test_winapi.py index a1c0b80d47e4d44..0ae03a3bf505f73 100644 --- a/Lib/test/test_winapi.py +++ b/Lib/test/test_winapi.py @@ -12,9 +12,16 @@ MAXIMUM_WAIT_OBJECTS = 64 MAXIMUM_BATCHED_WAIT_OBJECTS = (MAXIMUM_WAIT_OBJECTS - 1) ** 2 + +def close_events(events): + for handle in events: + _winapi.CloseHandle(handle) + + class WinAPIBatchedWaitForMultipleObjectsTests(unittest.TestCase): def _events_waitall_test(self, n): evts = [_winapi.CreateEventW(0, False, False, None) for _ in range(n)] + self.addCleanup(close_events, evts) with self.assertRaises(TimeoutError): _winapi.BatchedWaitForMultipleObjects(evts, True, 100) @@ -42,6 +49,7 @@ def _events_waitall_test(self, n): def _events_waitany_test(self, n): evts = [_winapi.CreateEventW(0, False, False, None) for _ in range(n)] + self.addCleanup(close_events, evts) with self.assertRaises(TimeoutError): _winapi.BatchedWaitForMultipleObjects(evts, False, 100) From e8042329b6bb2472b16645c559e4223486b85965 Mon Sep 17 00:00:00 2001 From: Pranav Choudhary Date: Mon, 20 Jul 2026 10:24:04 +0530 Subject: [PATCH 068/205] gh-154046: docs: fix dead link to codahale timing attacks article in secrets.rst (#154047) --- Doc/library/secrets.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/secrets.rst b/Doc/library/secrets.rst index 3b5b57fb1c21702..842e8c512def139 100644 --- a/Doc/library/secrets.rst +++ b/Doc/library/secrets.rst @@ -137,7 +137,7 @@ Other functions :term:`bytes-like objects ` *a* and *b* are equal, otherwise ``False``, using a "constant-time compare" to reduce the risk of - `timing attacks `_. + `timing attacks `__. See :func:`hmac.compare_digest` for additional details. From 44ea9503bff4001c416f96d9bd604daa005106c7 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 08:00:11 +0300 Subject: [PATCH 069/205] gh-154136: Define _ISOC23_SOURCE to fix building the math module on FreeBSD (GH-154138) Co-authored-by: Claude Fable 5 --- .../Build/2026-07-19-16-45-00.gh-issue-154136.mathpi.rst | 3 +++ configure | 7 +++++++ configure.ac | 6 ++++++ pyconfig.h.in | 3 +++ 4 files changed, 19 insertions(+) create mode 100644 Misc/NEWS.d/next/Build/2026-07-19-16-45-00.gh-issue-154136.mathpi.rst diff --git a/Misc/NEWS.d/next/Build/2026-07-19-16-45-00.gh-issue-154136.mathpi.rst b/Misc/NEWS.d/next/Build/2026-07-19-16-45-00.gh-issue-154136.mathpi.rst new file mode 100644 index 000000000000000..9bfa313873893a4 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2026-07-19-16-45-00.gh-issue-154136.mathpi.rst @@ -0,0 +1,3 @@ +Fix building the :mod:`math` module on FreeBSD. +Define ``_ISOC23_SOURCE`` to make the C23 library declarations +(such as ``sinpi()`` in ``math.h``) visible. diff --git a/configure b/configure index b7ba4994b30e701..71fa0b435d16505 100755 --- a/configure +++ b/configure @@ -4809,6 +4809,13 @@ printf "%s\n" "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h printf "%s\n" "#define _POSIX_C_SOURCE 202405L" >>confdefs.h + + # Defining _POSIX_C_SOURCE and _XOPEN_SOURCE hides C23 library + # declarations on FreeBSD (e.g. sinpi() in math.h) when compiling + # with -std=c11. Defining _ISOC23_SOURCE makes them visible again. + +printf "%s\n" "#define _ISOC23_SOURCE 1" >>confdefs.h + fi # On HP-UX mbstate_t requires _INCLUDE__STDC_A1_SOURCE diff --git a/configure.ac b/configure.ac index 5e98a4f91c8d5ed..5fcf406087cbe5e 100644 --- a/configure.ac +++ b/configure.ac @@ -935,6 +935,12 @@ then AC_DEFINE([_POSIX_C_SOURCE], [202405L], [Define to activate features from IEEE Std 1003.1-2024]) + + # Defining _POSIX_C_SOURCE and _XOPEN_SOURCE hides C23 library + # declarations on FreeBSD (e.g. sinpi() in math.h) when compiling + # with -std=c11. Defining _ISOC23_SOURCE makes them visible again. + AC_DEFINE([_ISOC23_SOURCE], [1], + [Define to activate ISO C23 library declarations]) fi # On HP-UX mbstate_t requires _INCLUDE__STDC_A1_SOURCE diff --git a/pyconfig.h.in b/pyconfig.h.in index e259eda7439761e..25c4842d25e8a67 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -2143,6 +2143,9 @@ /* Define to include mbstate_t for mbrtowc */ #undef _INCLUDE__STDC_A1_SOURCE +/* Define to activate ISO C23 library declarations */ +#undef _ISOC23_SOURCE + /* This must be defined on some systems to enable large file support. */ #undef _LARGEFILE_SOURCE From 69f080144972d1dd0acd445d776cdaea788923ed Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 08:56:50 +0300 Subject: [PATCH 070/205] gh-154146: Fix accuracy of the math.acospi() fallback near 1 (GH-154148) Co-authored-by: Claude Fable 5 --- .../Library/2026-07-19-19-05-00.gh-issue-154146.acospi.rst | 2 ++ Modules/mathmodule.c | 6 ++++++ 2 files changed, 8 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2026-07-19-19-05-00.gh-issue-154146.acospi.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-19-19-05-00.gh-issue-154146.acospi.rst b/Misc/NEWS.d/next/Library/2026-07-19-19-05-00.gh-issue-154146.acospi.rst new file mode 100644 index 000000000000000..5dbddbadee0bd3d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-19-19-05-00.gh-issue-154146.acospi.rst @@ -0,0 +1,2 @@ +Fix accuracy of :func:`math.acospi` for arguments close to 1 +on platforms that do not provide ``acospi()`` in libm. diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index 64e5372d73d2f29..eaa1850b8aee1ac 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -220,6 +220,12 @@ static const double logpi = 1.144729885849400174143427351353058711647; static double m_acospi(double x) { + if (x >= 0.5) { + /* acos(x) = 2*asin(sqrt((1 - x)/2)). 1 - x is exact here. + Some libms (old fdlibm derivatives) lose precision in acos(x) + near x = 1, while asin() is accurate for small arguments. */ + return 2.0*asin(sqrt((1.0 - x)/2.0))/pi; + } double r = acos(x)/pi; if (isgreater(r, 1.0)) { return 1.0; From 863b31268c3160af1febcee4c79ff6ed380f328f Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 08:58:25 +0300 Subject: [PATCH 071/205] gh-154211: Skip C-stack exhaustion tests when the C stack is huge (GH-154212) Co-authored-by: Claude Fable 5 --- Lib/test/list_tests.py | 3 +- Lib/test/mapping_tests.py | 1 + Lib/test/support/__init__.py | 28 ++++++++++++++++++- Lib/test/test_ast/test_ast.py | 10 ++++--- Lib/test/test_call.py | 3 +- Lib/test/test_class.py | 1 + Lib/test/test_compile.py | 1 + Lib/test/test_copy.py | 5 ++++ Lib/test/test_ctypes/test_as_parameter.py | 4 ++- Lib/test/test_descr.py | 2 ++ Lib/test/test_dict.py | 1 + Lib/test/test_dictviews.py | 5 +++- Lib/test/test_exception_group.py | 6 +++- Lib/test/test_exceptions.py | 1 + Lib/test/test_functools.py | 2 +- Lib/test/test_isinstance.py | 6 ++-- Lib/test/test_json/test_recursion.py | 4 +-- Lib/test/test_pyexpat.py | 2 +- Lib/test/test_xml_etree.py | 2 +- ...-20-11-30-00.gh-issue-154211.hugestack.rst | 3 ++ 20 files changed, 73 insertions(+), 17 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2026-07-20-11-30-00.gh-issue-154211.hugestack.rst diff --git a/Lib/test/list_tests.py b/Lib/test/list_tests.py index e76f79c274e744a..ec2aa59f2cb8728 100644 --- a/Lib/test/list_tests.py +++ b/Lib/test/list_tests.py @@ -6,7 +6,7 @@ from functools import cmp_to_key from test import seq_tests -from test.support import ALWAYS_EQ, NEVER_EQ +from test.support import ALWAYS_EQ, NEVER_EQ, skip_if_huge_c_stack from test.support import skip_emscripten_stack_overflow, skip_wasi_stack_overflow @@ -60,6 +60,7 @@ def test_repr(self): self.assertEqual(str(a2), "[0, 1, 2, [...], 3]") self.assertEqual(repr(a2), "[0, 1, 2, [...], 3]") + @skip_if_huge_c_stack(200_000) @skip_wasi_stack_overflow() @skip_emscripten_stack_overflow() def test_repr_deep(self): diff --git a/Lib/test/mapping_tests.py b/Lib/test/mapping_tests.py index 9624072e69adfcc..ae2fb3f5f448e25 100644 --- a/Lib/test/mapping_tests.py +++ b/Lib/test/mapping_tests.py @@ -629,6 +629,7 @@ def __repr__(self): d = self._full_mapping({1: BadRepr()}) self.assertRaises(Exc, repr, d) + @support.skip_if_huge_c_stack() @support.skip_wasi_stack_overflow() @support.skip_emscripten_stack_overflow() @support.skip_if_sanitizer("requires deep stack", ub=True) diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index e5bc2fd9b3d0954..f4c4b4c1acfc182 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -45,7 +45,7 @@ "check__all__", "skip_if_buggy_ucrt_strfptime", "check_disallow_instantiation", "check_sanitizer", "skip_if_sanitizer", "requires_limited_api", "requires_specialization", "thread_unsafe", - "skip_if_unlimited_stack_size", + "skip_if_unlimited_stack_size", "skip_if_huge_c_stack", # sys "MS_WINDOWS", "is_jython", "is_android", "is_emscripten", "is_wasi", "is_apple_mobile", "check_impl_detail", "unix_shell", "setswitchinterval", @@ -2839,6 +2839,32 @@ def exceeds_recursion_limit(): return 150_000 +def skip_if_huge_c_stack(depth=150_000): + """Skip decorator for tests which cannot overflow the C stack. + + Tests exhausting the C stack with *depth* recursive calls cannot + trigger the recursion protection if the C stack is too large (e.g. + with a large or unlimited RLIMIT_STACK), and either fail, or run + for a very long time, or crash, or consume all memory. + """ + try: + from _testinternalcapi import get_c_recursion_remaining + except ImportError: + # Fall back to checking for an unlimited stack size. + huge = False + if not (is_emscripten or is_wasi) and os.name != "nt": + import resource + soft, hard = resource.getrlimit(resource.RLIMIT_STACK) + huge = soft == hard and soft in (-1, 0xFFFF_FFFF_FFFF_FFFF) + else: + remaining = get_c_recursion_remaining() + # A negative value means integer overflow in the estimate + # (e.g. with an unlimited RLIMIT_STACK). + huge = remaining >= depth or remaining < 0 + return unittest.skipIf( + huge, f"the C stack is large enough for {depth} recursive calls") + + # Windows doesn't have os.uname() but it doesn't support s390x. is_s390x = hasattr(os, 'uname') and os.uname().machine == 's390x' skip_on_s390x = unittest.skipIf(is_s390x, 'skipped on s390x') diff --git a/Lib/test/test_ast/test_ast.py b/Lib/test/test_ast/test_ast.py index 31e218df127ae6b..87d63fcd8529336 100644 --- a/Lib/test/test_ast/test_ast.py +++ b/Lib/test/test_ast/test_ast.py @@ -26,7 +26,9 @@ from test import support from test.support import os_helper -from test.support import skip_emscripten_stack_overflow, skip_wasi_stack_overflow, skip_if_unlimited_stack_size +from test.support import (skip_emscripten_stack_overflow, + skip_wasi_stack_overflow, + skip_if_unlimited_stack_size, skip_if_huge_c_stack) from test.support.ast_helper import ASTTestMixin from test.support.import_helper import ensure_lazy_imports from test.test_ast.utils import to_tuple @@ -1023,7 +1025,7 @@ def next(self): enum._test_simple_enum(_Precedence, _ast_unparse._Precedence) @support.cpython_only - @skip_if_unlimited_stack_size + @support.skip_if_huge_c_stack(100_000 if sys.platform == "android" else 500_000) @skip_wasi_stack_overflow() @skip_emscripten_stack_overflow() def test_ast_recursion_limit(self): @@ -2096,7 +2098,7 @@ def test_level_as_none(self): exec(code, ns) self.assertIn('sleep', ns) - @skip_if_unlimited_stack_size + @skip_if_huge_c_stack() @skip_emscripten_stack_overflow() def test_recursion_direct(self): e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0, operand=ast.Constant(1)) @@ -2105,7 +2107,7 @@ def test_recursion_direct(self): with support.infinite_recursion(): compile(ast.Expression(e), "", "eval") - @skip_if_unlimited_stack_size + @skip_if_huge_c_stack() @skip_emscripten_stack_overflow() def test_recursion_indirect(self): e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0, operand=ast.Constant(1)) diff --git a/Lib/test/test_call.py b/Lib/test/test_call.py index f42526aee194174..1e42356be21ddd6 100644 --- a/Lib/test/test_call.py +++ b/Lib/test/test_call.py @@ -3,7 +3,7 @@ set_recursion_limit, skip_on_s390x, skip_emscripten_stack_overflow, skip_wasi_stack_overflow, skip_if_sanitizer, - import_helper) + skip_if_huge_c_stack, import_helper) try: import _testcapi except ImportError: @@ -1062,6 +1062,7 @@ def get_sp(): @unittest.skipIf(is_wasi and Py_DEBUG, "requires deep stack") @skip_if_sanitizer("requires deep stack", thread=True) @unittest.skipIf(_testcapi is None, "requires _testcapi") + @skip_if_huge_c_stack(90_000) @skip_emscripten_stack_overflow() @skip_wasi_stack_overflow() def test_super_deep(self): diff --git a/Lib/test/test_class.py b/Lib/test/test_class.py index e401941c6d69700..62d8806b75d9db0 100644 --- a/Lib/test/test_class.py +++ b/Lib/test/test_class.py @@ -555,6 +555,7 @@ class Custom: self.assertFalse(hasattr(o, "__call__")) self.assertFalse(hasattr(c, "__call__")) + @support.skip_if_huge_c_stack() @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def testSFBug532646(self): diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index ecc69b5383e3f21..2c7b1181817cf55 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -724,6 +724,7 @@ def test_yet_more_evil_still_undecodable(self): @support.cpython_only @unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI") + @support.skip_if_huge_c_stack(100_000 if sys.platform == "android" else 500_000) @support.skip_emscripten_stack_overflow() def test_compiler_recursion_limit(self): # Compiler frames are small diff --git a/Lib/test/test_copy.py b/Lib/test/test_copy.py index 98f56b5ae87f964..9455c9e00514ca4 100644 --- a/Lib/test/test_copy.py +++ b/Lib/test/test_copy.py @@ -377,6 +377,7 @@ def test_deepcopy_list(self): self.assertIsNot(x, y) self.assertIsNot(x[0], y[0]) + @support.skip_if_huge_c_stack() @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_deepcopy_reflexive_list(self): @@ -406,6 +407,7 @@ def test_deepcopy_tuple_of_immutables(self): y = copy.deepcopy(x) self.assertIs(x, y) + @support.skip_if_huge_c_stack() @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_deepcopy_reflexive_tuple(self): @@ -449,6 +451,7 @@ def test_deepcopy_frozendict(self): self.assertIsNot(x[0], y[0]) self.assertIs(y[0]['foo'], y) + @support.skip_if_huge_c_stack() @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_deepcopy_reflexive_dict(self): @@ -609,6 +612,7 @@ def __eq__(self, other): self.assertIsNot(y, x) self.assertIsNot(y.foo, x.foo) + @support.skip_if_huge_c_stack() def test_deepcopy_reflexive_inst(self): class C: pass @@ -671,6 +675,7 @@ def __eq__(self, other): self.assertEqual(y, x) self.assertIsNot(y.foo, x.foo) + @support.skip_if_huge_c_stack() def test_reconstruct_reflexive(self): class C(object): pass diff --git a/Lib/test/test_ctypes/test_as_parameter.py b/Lib/test/test_ctypes/test_as_parameter.py index c9d728e9ae2f9cb..abbfb6efdcea55b 100644 --- a/Lib/test/test_ctypes/test_as_parameter.py +++ b/Lib/test/test_ctypes/test_as_parameter.py @@ -5,7 +5,8 @@ c_short, c_int, c_long, c_longlong, c_byte, c_wchar, c_float, c_double, ArgumentError) -from test.support import import_helper, skip_if_sanitizer, skip_emscripten_stack_overflow +from test.support import (import_helper, skip_if_sanitizer, + skip_emscripten_stack_overflow, skip_if_huge_c_stack) _ctypes_test = import_helper.import_module("_ctypes_test") @@ -193,6 +194,7 @@ class S8I(Structure): (9*2, 8*3, 7*4, 6*5, 5*6, 4*7, 3*8, 2*9)) @skip_if_sanitizer('requires deep stack', thread=True) + @skip_if_huge_c_stack() @skip_emscripten_stack_overflow() def test_recursive_as_param(self): class A: diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index ba504119d294fd3..7ac22455541fe2c 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -3774,6 +3774,7 @@ def f(a): return a encoding='latin1', errors='replace') self.assertEqual(ba, b'abc\xbd?') + @support.skip_if_huge_c_stack() @support.skip_wasi_stack_overflow() @support.skip_emscripten_stack_overflow() def test_recursive_call(self): @@ -5122,6 +5123,7 @@ class Thing: # CALL_METHOD_DESCRIPTOR_O deque.append(thing, thing) + @support.skip_if_huge_c_stack() @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_repr_as_str(self): diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py index 6d61c71e162f8be..dc31d403b837adb 100644 --- a/Lib/test/test_dict.py +++ b/Lib/test/test_dict.py @@ -678,6 +678,7 @@ def __repr__(self): d = {1: BadRepr()} self.assertRaises(Exc, repr, d) + @support.skip_if_huge_c_stack() @support.skip_wasi_stack_overflow() @support.skip_emscripten_stack_overflow() def test_repr_deep(self): diff --git a/Lib/test/test_dictviews.py b/Lib/test/test_dictviews.py index 691fc5dfb5e8ab9..9816ae6c033ec74 100644 --- a/Lib/test/test_dictviews.py +++ b/Lib/test/test_dictviews.py @@ -2,7 +2,9 @@ import copy import pickle import unittest -from test.support import skip_emscripten_stack_overflow, skip_wasi_stack_overflow, exceeds_recursion_limit +from test.support import (skip_emscripten_stack_overflow, + skip_wasi_stack_overflow, skip_if_huge_c_stack, + exceeds_recursion_limit) class DictSetTest(unittest.TestCase): @@ -277,6 +279,7 @@ def test_recursive_repr(self): # Again. self.assertIsInstance(r, str) + @skip_if_huge_c_stack() @skip_wasi_stack_overflow() @skip_emscripten_stack_overflow() def test_deeply_nested_repr(self): diff --git a/Lib/test/test_exception_group.py b/Lib/test/test_exception_group.py index 35ffc9a0a4cf30a..325b1c91fa5aeef 100644 --- a/Lib/test/test_exception_group.py +++ b/Lib/test/test_exception_group.py @@ -1,7 +1,9 @@ import collections import types import unittest -from test.support import skip_emscripten_stack_overflow, skip_wasi_stack_overflow, exceeds_recursion_limit +from test.support import (skip_emscripten_stack_overflow, + skip_wasi_stack_overflow, skip_if_huge_c_stack, + exceeds_recursion_limit) class TestExceptionGroupTypeHierarchy(unittest.TestCase): def test_exception_group_types(self): @@ -547,6 +549,7 @@ def make_deep_eg(self): e = ExceptionGroup('eg', [e]) return e + @skip_if_huge_c_stack() @skip_emscripten_stack_overflow() @skip_wasi_stack_overflow() def test_deep_split(self): @@ -554,6 +557,7 @@ def test_deep_split(self): with self.assertRaises(RecursionError): e.split(TypeError) + @skip_if_huge_c_stack() @skip_emscripten_stack_overflow() @skip_wasi_stack_overflow() def test_deep_subgroup(self): diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 6e458017298dffe..ee4888c18598f3d 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -1523,6 +1523,7 @@ def gen(): @cpython_only @unittest.skipIf(_testcapi is None, "requires _testcapi") @force_not_colorized + @support.skip_if_huge_c_stack() def test_recursion_normalizing_infinite_exception(self): # Issue #30697. Test that a RecursionError is raised when # maximum recursion depth has been exceeded when creating diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py index c30386afe41849b..941dd7249a48d91 100644 --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@ -438,7 +438,7 @@ def test_setstate_subclasses(self): self.assertIs(type(r[0]), tuple) @support.skip_if_sanitizer("thread sanitizer crashes in __tsan::FuncEntry", thread=True) - @support.skip_if_unlimited_stack_size + @support.skip_if_huge_c_stack() @support.skip_emscripten_stack_overflow() def test_recursive_pickle(self): with replaced_module('functools', self.module): diff --git a/Lib/test/test_isinstance.py b/Lib/test/test_isinstance.py index d97535ba46e677f..16d879a3831bc65 100644 --- a/Lib/test/test_isinstance.py +++ b/Lib/test/test_isinstance.py @@ -263,6 +263,7 @@ def test_subclass_tuple(self): self.assertEqual(True, issubclass(int, (int, (float, int)))) self.assertEqual(True, issubclass(str, (str, (Child, str)))) + @support.skip_if_huge_c_stack() @support.skip_wasi_stack_overflow() @support.skip_emscripten_stack_overflow() def test_subclass_recursion_limit(self): @@ -270,6 +271,7 @@ def test_subclass_recursion_limit(self): # blown self.assertRaises(RecursionError, blowstack, issubclass, str, str) + @support.skip_if_huge_c_stack() @support.skip_wasi_stack_overflow() @support.skip_emscripten_stack_overflow() def test_isinstance_recursion_limit(self): @@ -317,7 +319,7 @@ def __bases__(self): self.assertRaises(RecursionError, issubclass, int, X()) self.assertRaises(RecursionError, isinstance, 1, X()) - @support.skip_if_unlimited_stack_size + @support.skip_if_huge_c_stack() @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_infinite_recursion_via_bases_tuple(self): @@ -329,7 +331,7 @@ def __getattr__(self, attr): with self.assertRaises(RecursionError): issubclass(Failure(), int) - @support.skip_if_unlimited_stack_size + @support.skip_if_huge_c_stack() @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_infinite_cycle_in_bases(self): diff --git a/Lib/test/test_json/test_recursion.py b/Lib/test/test_json/test_recursion.py index d732fc80cf1cf30..cbae9fbb4d624ba 100644 --- a/Lib/test/test_json/test_recursion.py +++ b/Lib/test/test_json/test_recursion.py @@ -69,7 +69,7 @@ def default(self, o): @support.skip_if_pgo_task # fails during PGO training w/ some stack sizes - @support.skip_if_unlimited_stack_size + @support.skip_if_huge_c_stack(500_000) @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_highly_nested_objects_decoding(self): @@ -102,7 +102,7 @@ def test_highly_nested_objects_encoding(self): with support.infinite_recursion(5000): self.dumps(d) - @support.skip_if_unlimited_stack_size + @support.skip_if_huge_c_stack() @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_endless_recursion(self): diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py index 98be98a25278024..a2ef67baadd4afb 100644 --- a/Lib/test/test_pyexpat.py +++ b/Lib/test/test_pyexpat.py @@ -904,7 +904,7 @@ def test_trigger_leak(self): parser.ElementDeclHandler = lambda _1, _2: None self.assertRaises(TypeError, parser.Parse, data, True) - @support.skip_if_unlimited_stack_size + @support.skip_if_huge_c_stack(800_000) @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_deeply_nested_content_model(self): diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index acec4ec2ca257c4..bc7f1ac12b42874 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -3246,7 +3246,7 @@ def __deepcopy__(self, memo): self.assertEqual([c.tag for c in children[3:]], [a.tag, b.tag, a.tag, b.tag]) - @support.skip_if_unlimited_stack_size + @support.skip_if_huge_c_stack(500_000) @support.skip_emscripten_stack_overflow() @support.skip_wasi_stack_overflow() def test_deeply_nested_deepcopy(self): diff --git a/Misc/NEWS.d/next/Tests/2026-07-20-11-30-00.gh-issue-154211.hugestack.rst b/Misc/NEWS.d/next/Tests/2026-07-20-11-30-00.gh-issue-154211.hugestack.rst new file mode 100644 index 000000000000000..8030db869c7ba6e --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2026-07-20-11-30-00.gh-issue-154211.hugestack.rst @@ -0,0 +1,3 @@ +Add ``test.support.skip_if_huge_c_stack()`` and use it to skip tests +that exhaust the C stack if the stack limit is very large +(e.g. on DragonFly BSD or with ``ulimit -s unlimited``). From f389b03f9f2768342bfd49987a257460d4aa4faf Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 08:59:31 +0300 Subject: [PATCH 072/205] gh-154176: Fix locale.strxfrm() crash on DragonFly BSD (GH-154177) Query the result size with a real one-element buffer instead of wcsxfrm(NULL, s, 0): DragonFly BSD's wcsxfrm() crashes when the destination is NULL or the size is 0. Co-authored-by: Claude Fable 5 --- .../Library/2026-07-19-21-30-00.gh-issue-154176.strxfrm.rst | 2 ++ Modules/_localemodule.c | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-19-21-30-00.gh-issue-154176.strxfrm.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-19-21-30-00.gh-issue-154176.strxfrm.rst b/Misc/NEWS.d/next/Library/2026-07-19-21-30-00.gh-issue-154176.strxfrm.rst new file mode 100644 index 000000000000000..9ffa5828000113b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-19-21-30-00.gh-issue-154176.strxfrm.rst @@ -0,0 +1,2 @@ +Fix a crash in :func:`locale.strxfrm` on DragonFly BSD, +whose ``wcsxfrm()`` does not support the zero size. diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 0f71358a180dd29..20783dc00f90d3c 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -443,6 +443,7 @@ _locale_strxfrm_impl(PyObject *module, PyObject *str) { Py_ssize_t n1; wchar_t *s = NULL, *buf = NULL; + wchar_t dummy[1]; size_t n2; PyObject *result = NULL; @@ -456,7 +457,9 @@ _locale_strxfrm_impl(PyObject *module, PyObject *str) } errno = 0; - n2 = wcsxfrm(NULL, s, 0); + /* Query the size with a real one-element buffer: DragonFly BSD's + wcsxfrm() crashes when the destination is NULL or the size is 0. */ + n2 = wcsxfrm(dummy, s, 1); if (errno && errno != ERANGE) { PyErr_SetFromErrno(PyExc_OSError); goto exit; From 2875d1dc913d2d7810465da4bc3899305da5abc7 Mon Sep 17 00:00:00 2001 From: Kumar Aditya Date: Mon, 20 Jul 2026 11:57:32 +0530 Subject: [PATCH 073/205] gh-127049: fix race condition in asyncio signalling an unrelated process with ThreadedChildWatcher (#153810) --- Lib/asyncio/base_subprocess.py | 3 + Lib/asyncio/unix_events.py | 53 ++++++++++++--- Lib/test/test_asyncio/test_subprocess.py | 68 +++++++++++++++++++ ...-07-14-15-00-00.gh-issue-127049.pQw7Rk.rst | 5 ++ 4 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-14-15-00-00.gh-issue-127049.pQw7Rk.rst diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py index 3fa1ed1afd2a651..98e72f212aa203e 100644 --- a/Lib/asyncio/base_subprocess.py +++ b/Lib/asyncio/base_subprocess.py @@ -165,6 +165,9 @@ def kill(self): else: def send_signal(self, signal): self._check_proc() + if self._returncode is not None: + # The process already exited + return try: os.kill(self._proc.pid, signal) except ProcessLookupError: diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index 93dd8994e1bcd51..d436512d6c45fc5 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -219,7 +219,7 @@ async def _make_subprocess_transport(self, protocol, args, shell, return transp def _child_watcher_callback(self, pid, returncode, transp): - self.call_soon_threadsafe(transp._process_exited, returncode) + transp._process_exited(returncode) async def create_unix_connection( self, protocol_factory, path=None, *, @@ -930,6 +930,49 @@ def add_child_handler(self, pid, callback, *args): def _do_waitpid(self, loop, expected_pid, callback, args): assert expected_pid > 0 + if hasattr(os, 'waitid'): + # Wait for the child process using waitid() on platforms which support it. + # WNOWAIT is used to avoid reaping the child process, allowing the event loop to + # reap the child process with waitpid() later in event loop thread. + # This makes the reaping of the child and notification of the return code + # atomic with respect to the event loop thread. + try: + os.waitid(os.P_PID, expected_pid, os.WEXITED | os.WNOWAIT) + except ChildProcessError: + # The child process is already reaped + pass + if loop.is_closed(): + # loop is already closed, reap the zombie here so that it is not leaked. + pid, _ = self._reap(loop, expected_pid) + logger.warning("Loop %r that handles pid %r is closed", + loop, pid) + else: + try: + loop.call_soon_threadsafe( + self._reap_and_notify, loop, expected_pid, + callback, args) + except RuntimeError: + # The event loop was closed concurrently. + pid, _ = self._reap(loop, expected_pid) + logger.warning("Loop %r that handles pid %r is closed", + loop, pid) + else: + # Fallback for platforms that don't support waitid(): we have to + # reap the child here, which is racy with respect to send_signal() + pid, returncode = self._reap(loop, expected_pid) + if loop.is_closed(): + logger.warning("Loop %r that handles pid %r is closed", + loop, pid) + else: + loop.call_soon_threadsafe(callback, pid, returncode, *args) + + self._threads.pop(expected_pid) + + def _reap_and_notify(self, loop, expected_pid, callback, args): + pid, returncode = self._reap(loop, expected_pid) + callback(pid, returncode, *args) + + def _reap(self, loop, expected_pid): try: pid, status = os.waitpid(expected_pid, 0) except ChildProcessError: @@ -945,13 +988,7 @@ def _do_waitpid(self, loop, expected_pid, callback, args): if loop.get_debug(): logger.debug('process %s exited with returncode %s', expected_pid, returncode) - - if loop.is_closed(): - logger.warning("Loop %r that handles pid %r is closed", loop, pid) - else: - loop.call_soon_threadsafe(callback, pid, returncode, *args) - - self._threads.pop(expected_pid) + return pid, returncode def can_use_pidfd(): if not hasattr(os, 'pidfd_open'): diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 70480ffe4c55c2a..848a682dd6899c5 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -974,6 +974,45 @@ def test_watcher_implementation(self): else: self.assertIsInstance(watcher, unix_events._ThreadedChildWatcher) + @unittest.skipUnless(hasattr(os, 'waitid'), 'needs os.waitid()') + def test_send_signal_never_targets_reaped_pid(self): + # gh-127049: there must be no window between the child watcher + # reaping the child and asyncio publishing the exit in which + # send_signal() signals the freed (possibly recycled) PID. + reaped_pids = set() + stale_kills = [] + orig_waitpid = os.waitpid + orig_kill = os.kill + + def waitpid(pid, options): + res = orig_waitpid(pid, options) + if res[0] != 0: + reaped_pids.add(res[0]) + return res + + def kill(pid, sig): + if pid in reaped_pids: + stale_kills.append(pid) + return + orig_kill(pid, sig) + + async def run(): + with mock.patch('os.waitpid', waitpid), \ + mock.patch('os.kill', kill): + proc = await asyncio.create_subprocess_exec( + *PROGRAM_BLOCKED) + proc.kill() + deadline = self.loop.time() + support.SHORT_TIMEOUT + while proc.returncode is None: + if self.loop.time() > deadline: + self.fail('child exit was not published in time') + proc.kill() + await asyncio.sleep(0) + await proc.wait() + self.assertEqual(stale_kills, []) + + self.loop.run_until_complete(run()) + class SubprocessThreadedWatcherTests(SubprocessWatcherMixin, test_utils.TestCase): @@ -987,6 +1026,35 @@ def tearDown(self): unix_events.can_use_pidfd = self._original_can_use_pidfd return super().tearDown() + @unittest.skipUnless(hasattr(os, 'waitid'), 'needs os.waitid()') + def test_pid_not_reaped_before_exit_published(self): + # gh-127049: the watcher thread must wait for the child + # without reaping it: the PID must stay reserved until the + # event loop thread reaps it and publishes the exit as one + # atomic step. + async def run(): + proc = await asyncio.create_subprocess_exec( + *PROGRAM_BLOCKED) + thread = self.loop._watcher._threads.get(proc.pid) + self.assertIsNotNone(thread) + proc.kill() + # Wait for the watcher thread to observe the exit while + # the event loop cannot process the notification yet. + thread.join(support.SHORT_TIMEOUT) + self.assertFalse(thread.is_alive()) + # The exit has not been published yet... + self.assertIsNone(proc.returncode) + # ...so the child must still be an unreaped zombie and + # signalling its PID must still be safe. waitid() raises + # ChildProcessError if the PID was already reaped (and + # possibly recycled by the kernel). + os.waitid(os.P_PID, proc.pid, + os.WEXITED | os.WNOWAIT | os.WNOHANG) + proc.kill() + self.assertEqual(await proc.wait(), -signal.SIGKILL) + + self.loop.run_until_complete(run()) + @unittest.skipUnless( unix_events.can_use_pidfd(), "operating system does not support pidfds", diff --git a/Misc/NEWS.d/next/Library/2026-07-14-15-00-00.gh-issue-127049.pQw7Rk.rst b/Misc/NEWS.d/next/Library/2026-07-14-15-00-00.gh-issue-127049.pQw7Rk.rst new file mode 100644 index 000000000000000..d7557d8f562f7a6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-14-15-00-00.gh-issue-127049.pQw7Rk.rst @@ -0,0 +1,5 @@ +Fix a race condition in :mod:`asyncio` on Unix where +:meth:`asyncio.subprocess.Process.send_signal`, :meth:`~asyncio.subprocess.Process.terminate` +or :meth:`~asyncio.subprocess.Process.kill` could signal an unrelated process +that was recycled onto the PID of the already-reaped child when ThreadedChildWatcher is used. +Patch by Kumar Aditya. From 051b6e07f9e43980d99c563d67bea32144238461 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 11:11:53 +0300 Subject: [PATCH 074/205] gh-154218: Fix test_posix_fallocate on file systems that do not support posix_fallocate() (GH-154219) Co-authored-by: Claude Fable 5 --- Lib/test/test_os/test_posix.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_os/test_posix.py b/Lib/test/test_os/test_posix.py index 8e83fa21dae6e22..79e234cbcd2ae25 100644 --- a/Lib/test/test_os/test_posix.py +++ b/Lib/test/test_os/test_posix.py @@ -415,8 +415,10 @@ def test_posix_fallocate(self): if inst.errno == errno.EINVAL and sys.platform.startswith( ('sunos', 'freebsd', 'openbsd', 'gnukfreebsd')): raise unittest.SkipTest("test may fail on ZFS filesystems") - elif inst.errno == errno.EOPNOTSUPP and sys.platform.startswith("netbsd"): - raise unittest.SkipTest("test may fail on FFS filesystems") + elif inst.errno == errno.EOPNOTSUPP: + # ZFS on FreeBSD, FFS on NetBSD, etc. + raise unittest.SkipTest( + "the file system does not support posix_fallocate()") else: raise finally: From d01b90cf33f8f77172eb9f445dbc2ed0055ffd3b Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 11:48:14 +0300 Subject: [PATCH 075/205] gh-154227: Fix os.posix_openpt() on OpenBSD (GH-154228) Co-Authored-By: Claude Fable 5 --- .../Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst | 2 ++ Modules/posixmodule.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst b/Misc/NEWS.d/next/Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst new file mode 100644 index 000000000000000..e33d090d78c5934 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-20-14-00-00.gh-issue-154227.openpt.rst @@ -0,0 +1,2 @@ +Fix :func:`os.posix_openpt` on OpenBSD, where it rejected the +:data:`~os.O_CLOEXEC` flag. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 02d25adddd62675..69f01e04244d5bd 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -9186,7 +9186,9 @@ os_posix_openpt_impl(PyObject *module, int oflag) { int fd; -#if defined(O_CLOEXEC) + // OpenBSD posix_openpt() rejects any flag other than O_RDWR and + // O_NOCTTY; the fd is made non-inheritable below in any case. +#if defined(O_CLOEXEC) && !defined(__OpenBSD__) oflag |= O_CLOEXEC; #endif From a0caab9db6c2655d8429279892848d817343f99d Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 11:48:30 +0300 Subject: [PATCH 076/205] gh-154225: Fix os.openpty() acquiring a controlling terminal on Solaris (GH-154229) Co-Authored-By: Claude Fable 5 --- ...07-20-14-10-00.gh-issue-154225.openpty.rst | 2 ++ Modules/posixmodule.c | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2026-07-20-14-10-00.gh-issue-154225.openpty.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-20-14-10-00.gh-issue-154225.openpty.rst b/Misc/NEWS.d/next/Library/2026-07-20-14-10-00.gh-issue-154225.openpty.rst new file mode 100644 index 000000000000000..f15022b66320062 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-20-14-10-00.gh-issue-154225.openpty.rst @@ -0,0 +1,2 @@ +Fix :func:`os.openpty` on Solaris and illumos: it no longer leaves the +pseudo-terminal as the controlling terminal of the calling process. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 69f01e04244d5bd..75ee7e260ce9850 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -9431,11 +9431,30 @@ os_openpty_impl(PyObject *module) goto posix_error; #if defined(HAVE_STROPTS_H) && !defined(HAVE_DEV_PTC) + // Pushing "ptem" makes the slave a terminal, which a session leader + // without a controlling terminal then acquires as one despite O_NOCTTY. + // Note whether we already had one, so a new one can be disowned below. + int had_ctty = 0; +#ifdef TIOCNOTTY + int tty_fd = open("/dev/tty", O_RDONLY | O_NOCTTY); + if (tty_fd >= 0) { + had_ctty = 1; + close(tty_fd); + } +#endif ioctl(slave_fd, I_PUSH, "ptem"); /* push ptem */ ioctl(slave_fd, I_PUSH, "ldterm"); /* push ldterm */ #ifndef __hpux ioctl(slave_fd, I_PUSH, "ttcompat"); /* push ttcompat */ #endif /* __hpux */ +#ifdef TIOCNOTTY + if (!had_ctty && getsid(0) == getpid()) { + // Disown it; TIOCNOTTY sends SIGHUP to the session leader. + PyOS_sighandler_t sig_saved = PyOS_setsig(SIGHUP, SIG_IGN); + ioctl(slave_fd, TIOCNOTTY); + PyOS_setsig(SIGHUP, sig_saved); + } +#endif #endif /* defined(HAVE_STROPTS_H) && !defined(HAVE_DEV_PTC) */ #endif /* HAVE_OPENPTY */ From 3d998611a48b45691894c687ac0ec52b54df52bf Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 11:51:10 +0300 Subject: [PATCH 077/205] gh-154226: Fix test_posix_pty_functions on Solaris (GH-154230) Co-Authored-By: Claude Fable 5 --- Lib/test/test_os/test_os.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Lib/test/test_os/test_os.py b/Lib/test/test_os/test_os.py index 5c258ff89ba735c..41928b308c47799 100644 --- a/Lib/test/test_os/test_os.py +++ b/Lib/test/test_os/test_os.py @@ -4727,6 +4727,13 @@ def test_posix_pty_functions(self): son_path = os.ptsname(mother_fd) son_fd = os.open(son_path, os.O_RDWR|os.O_NOCTTY) self.addCleanup(os.close, son_fd) + if sys.platform.startswith('sunos'): + # The slave is not a terminal until these STREAMS modules + # are pushed onto it. + import fcntl + I_PUSH = 0x5302 + fcntl.ioctl(son_fd, I_PUSH, b'ptem\0') + fcntl.ioctl(son_fd, I_PUSH, b'ldterm\0') self.assertEqual(os.ptsname(mother_fd), os.ttyname(son_fd)) @warnings_helper.ignore_fork_in_thread_deprecation_warnings() From 9cfa08c80d588931ff4644c885f31598cf2b725f Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 12:22:00 +0300 Subject: [PATCH 078/205] gh-125860: Skip separate-SCM_RIGHTS socket tests on NetBSD, OpenBSD and DragonFly (GH-154239) Co-authored-by: Claude Fable 5 --- Lib/test/test_socket.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 542d97e3f886e24..299e7212966ae3d 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -55,6 +55,10 @@ VSOCKPORT = 1234 AIX = platform.system() == "AIX" SOLARIS = sys.platform.startswith("sunos") +# NetBSD, OpenBSD and DragonFly deliver the file descriptors from only one +# SCM_RIGHTS control message when several are sent in a single sendmsg(). +BSD_COMBINES_SCM_RIGHTS = sys.platform.startswith( + ("netbsd", "openbsd", "dragonfly")) WSL = "microsoft-standard-WSL" in platform.release() try: @@ -4178,6 +4182,7 @@ def _testFDPassCMSG_LEN(self): @unittest.skipIf(is_apple, "skipping, see issue #12958") @unittest.skipIf(SOLARIS, "skipping, see gh-91214") @unittest.skipIf(AIX, "skipping, see issue #22397") + @unittest.skipIf(BSD_COMBINES_SCM_RIGHTS, "skipping, see gh-125860") @requireAttrs(socket, "CMSG_SPACE") def testFDPassSeparate(self): # Pass two FDs in two separate arrays. Arrays may be combined @@ -4190,6 +4195,7 @@ def testFDPassSeparate(self): @unittest.skipIf(is_apple, "skipping, see issue #12958") @unittest.skipIf(SOLARIS, "skipping, see gh-91214") @unittest.skipIf(AIX, "skipping, see issue #22397") + @unittest.skipIf(BSD_COMBINES_SCM_RIGHTS, "skipping, see gh-125860") def _testFDPassSeparate(self): fd0, fd1 = self.newFDs(2) self.assertEqual( @@ -4204,6 +4210,7 @@ def _testFDPassSeparate(self): @unittest.skipIf(is_apple, "skipping, see issue #12958") @unittest.skipIf(SOLARIS, "skipping, see gh-91214") @unittest.skipIf(AIX, "skipping, see issue #22397") + @unittest.skipIf(BSD_COMBINES_SCM_RIGHTS, "skipping, see gh-125860") @requireAttrs(socket, "CMSG_SPACE") def testFDPassSeparateMinSpace(self): # Pass two FDs in two separate arrays, receiving them into the @@ -4219,6 +4226,7 @@ def testFDPassSeparateMinSpace(self): @unittest.skipIf(is_apple, "skipping, see issue #12958") @unittest.skipIf(SOLARIS, "skipping, see gh-91214") @unittest.skipIf(AIX, "skipping, see issue #22397") + @unittest.skipIf(BSD_COMBINES_SCM_RIGHTS, "skipping, see gh-125860") def _testFDPassSeparateMinSpace(self): fd0, fd1 = self.newFDs(2) self.assertEqual( From 86e1fed859dab3de8f069208ef33cee24d816c79 Mon Sep 17 00:00:00 2001 From: Michael Newman Date: Mon, 20 Jul 2026 06:07:05 -0400 Subject: [PATCH 079/205] Fix typo in C API Type Object Structures documentation (#154249) --- Doc/c-api/typeobj.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index 16dcb880712d244..4000f8aa1d4c0c7 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -3051,7 +3051,7 @@ Buffer Object Structures * Resource cleanup when the counter reaches zero must be done atomically, as the final release may race with concurrent releases from other - threads and dellocation must only happen once. + threads and deallocation must only happen once. The exporter MUST use the :c:member:`~Py_buffer.internal` field to keep track of buffer-specific resources. This field is guaranteed to remain From f40b375ec6a5e51720ea3de34d63553410cdcdf8 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Mon, 20 Jul 2026 12:14:45 +0200 Subject: [PATCH 080/205] Bump `profiling.sampling.cli._SYNC_TIMEOUT_SEC` to fix failures on slow Buildbots (#154248) --- Lib/profiling/sampling/cli.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/profiling/sampling/cli.py b/Lib/profiling/sampling/cli.py index 466b0aceae2dcc6..b47b166c6cd9408 100644 --- a/Lib/profiling/sampling/cli.py +++ b/Lib/profiling/sampling/cli.py @@ -87,8 +87,8 @@ def __call__(self, parser, namespace, values, option_string=None): # Constants for socket synchronization -_SYNC_TIMEOUT_SEC = 5.0 -_PROCESS_KILL_TIMEOUT_SEC = 2.0 +_SYNC_TIMEOUT_SEC = 15.0 +_PROCESS_KILL_TIMEOUT_SEC = 5.0 _READY_MESSAGE = b"ready" _RECV_BUFFER_SIZE = 1024 _BINARY_PROFILE_HEADER_SIZE = 64 From e0293b0de4071ca591e36fd42ef04285b91ef546 Mon Sep 17 00:00:00 2001 From: Javad Koushyar Date: Mon, 20 Jul 2026 05:22:08 -0500 Subject: [PATCH 081/205] Fix two typos in two stdlib docstrings (#153479) --- Lib/compression/zstd/_zstdfile.py | 2 +- Lib/concurrent/futures/_base.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/compression/zstd/_zstdfile.py b/Lib/compression/zstd/_zstdfile.py index c4477244e8327f9..26d7c9006375fb6 100644 --- a/Lib/compression/zstd/_zstdfile.py +++ b/Lib/compression/zstd/_zstdfile.py @@ -34,7 +34,7 @@ def __init__(self, file, /, mode='r', *, level=None, options=None, zstd_dict=None): """Open a Zstandard compressed file in binary mode. - *file* can be either an file-like object, or a file name to open. + *file* can be either a file-like object, or a file name to open. *mode* can be 'r' for reading (default), 'w' for (over)writing, 'x' for creating exclusively, or 'a' for appending. These can diff --git a/Lib/concurrent/futures/_base.py b/Lib/concurrent/futures/_base.py index 4e71331f9a0a594..43774066c5a9f00 100644 --- a/Lib/concurrent/futures/_base.py +++ b/Lib/concurrent/futures/_base.py @@ -703,5 +703,5 @@ def __exit__(self, exc_type, exc_val, exc_tb): class BrokenExecutor(RuntimeError): """ - Raised when a executor has become non-functional after a severe failure. + Raised when an executor has become non-functional after a severe failure. """ From 85ab1125f47a05ae3c43bee917e086761784ad4d Mon Sep 17 00:00:00 2001 From: thexai <58434170+thexai@users.noreply.github.com> Date: Mon, 20 Jul 2026 13:28:06 +0200 Subject: [PATCH 082/205] gh-152433: Alternate implementation of _winapi.GetVersion for modern API sets (GH-152694) --- .../2026-06-30-16-40-00.gh-issue-152433.VaeEwR.rst | 1 + Modules/_winapi.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 Misc/NEWS.d/next/Windows/2026-06-30-16-40-00.gh-issue-152433.VaeEwR.rst diff --git a/Misc/NEWS.d/next/Windows/2026-06-30-16-40-00.gh-issue-152433.VaeEwR.rst b/Misc/NEWS.d/next/Windows/2026-06-30-16-40-00.gh-issue-152433.VaeEwR.rst new file mode 100644 index 000000000000000..00f89ffcbc1c29a --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2026-06-30-16-40-00.gh-issue-152433.VaeEwR.rst @@ -0,0 +1 @@ +``_winapi``: implement ``GetVersion()`` UWP alternative. diff --git a/Modules/_winapi.c b/Modules/_winapi.c index 535784adedb24d8..a649d84a7925a04 100644 --- a/Modules/_winapi.c +++ b/Modules/_winapi.c @@ -1739,7 +1739,19 @@ _winapi_GetVersion_impl(PyObject *module) #pragma warning(disable:4996) { +#ifdef MS_WINDOWS_DESKTOP return GetVersion(); +#else + OSVERSIONINFOW version_info; + ZeroMemory(&version_info, sizeof(version_info)); + version_info.dwOSVersionInfoSize = sizeof(version_info); + if (GetVersionExW(&version_info)) { + return version_info.dwMinorVersion | + (version_info.dwMajorVersion << 8) | + (version_info.dwBuildNumber << 16); + } + return 0; +#endif } #pragma warning(pop) From 542b98293108a84fa5d904fb6dcf8bfb5080ec93 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 17:06:19 +0300 Subject: [PATCH 083/205] gh-154258: Fix mmap.resize() crash on NetBSD growing a shared anonymous mapping (GH-154259) NetBSD mremap() returns a mapping whose grown region is not backed when growing a shared anonymous mapping, so accessing it crashes. Reject it with ValueError, as is already done on Linux. Co-authored-by: Claude Fable 5 --- Lib/test/test_mmap.py | 7 ++++--- .../2026-07-20-18-30-00.gh-issue-154258.mmapresize.rst | 3 +++ Modules/mmapmodule.c | 7 +++++-- 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-20-18-30-00.gh-issue-154258.mmapresize.rst diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py index 2e2ac147968dd4a..5be9dfac2f5a76f 100644 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@ -907,9 +907,10 @@ def test_resize_up_anonymous_mapping(self): with mmap.mmap(-1, start_size) as m: m[:] = data - if sys.platform.startswith(('linux', 'android')): - # Can't expand a shared anonymous mapping on Linux. - # See https://bugzilla.kernel.org/show_bug.cgi?id=8691 + if sys.platform.startswith(('linux', 'android', 'netbsd')): + # Can't expand a shared anonymous mapping on Linux + # (see https://bugzilla.kernel.org/show_bug.cgi?id=8691) + # or NetBSD. with self.assertRaises(ValueError): m.resize(new_size) else: diff --git a/Misc/NEWS.d/next/Library/2026-07-20-18-30-00.gh-issue-154258.mmapresize.rst b/Misc/NEWS.d/next/Library/2026-07-20-18-30-00.gh-issue-154258.mmapresize.rst new file mode 100644 index 000000000000000..4c33336e0bbdcad --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-20-18-30-00.gh-issue-154258.mmapresize.rst @@ -0,0 +1,3 @@ +Fix a crash in :meth:`mmap.mmap.resize` on NetBSD when growing a shared +anonymous mapping. :meth:`!resize` now raises :exc:`ValueError` in this +case, as it already did on Linux. diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index d55ab3d4d56edb0..e521e95d4ded73f 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -969,10 +969,13 @@ mmap_mmap_resize_impl(mmap_object *self, Py_ssize_t new_size) #ifdef UNIX void *newmap; -#ifdef __linux__ +#if defined(__linux__) || defined(__NetBSD__) + // Linux mremap() refuses to grow a shared anonymous mapping, and + // NetBSD mremap() returns a mapping whose grown region is not backed, + // so accessing it crashes. Reject it here in both cases. if (self->fd == -1 && !(self->flags & MAP_PRIVATE) && new_size > self->size) { PyErr_Format(PyExc_ValueError, - "mmap: can't expand a shared anonymous mapping on Linux"); + "mmap: can't expand a shared anonymous mapping"); return NULL; } #endif From 1047cbb9746f959f6787f2c393bd79cbae6100c5 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 17:14:50 +0300 Subject: [PATCH 084/205] gh-154167: Fix test suite hang when SIGINT is ignored (GH-154168) Co-Authored-By: Claude Fable 5 --- Lib/test/libregrtest/setup.py | 8 ++++++++ .../Tests/2026-07-19-20-15-00.gh-issue-154167.sigint.rst | 3 +++ 2 files changed, 11 insertions(+) create mode 100644 Misc/NEWS.d/next/Tests/2026-07-19-20-15-00.gh-issue-154167.sigint.rst diff --git a/Lib/test/libregrtest/setup.py b/Lib/test/libregrtest/setup.py index b9b76a44e3b4e79..d62194acd9c29e5 100644 --- a/Lib/test/libregrtest/setup.py +++ b/Lib/test/libregrtest/setup.py @@ -50,6 +50,14 @@ def setup_process() -> None: for signum in signals: faulthandler.register(signum, chain=True, file=stderr_fd) + # Restore the default SIGINT handler if there is no Python-level + # handler. Python inherits the SIG_IGN disposition when the test + # suite runs as a shell background job; then asyncio.Runner does not + # install its own handler and _thread.interrupt_main() is a no-op, + # which makes some tests in test_asyncio and test_threading hang. + if signal.getsignal(signal.SIGINT) in (signal.SIG_IGN, signal.SIG_DFL): + signal.signal(signal.SIGINT, signal.default_int_handler) + adjust_rlimit_nofile() support.record_original_stdout(sys.stdout) diff --git a/Misc/NEWS.d/next/Tests/2026-07-19-20-15-00.gh-issue-154167.sigint.rst b/Misc/NEWS.d/next/Tests/2026-07-19-20-15-00.gh-issue-154167.sigint.rst new file mode 100644 index 000000000000000..b2620f4a0bee54c --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2026-07-19-20-15-00.gh-issue-154167.sigint.rst @@ -0,0 +1,3 @@ +The test runner (regrtest) now restores the default SIGINT handler if it +was inherited as ignored, so the test suite no longer hangs when run as +a shell background job. From 4cde5cfd5bc53e964ff8b594ff47fe88e64df789 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Mon, 20 Jul 2026 16:17:28 +0200 Subject: [PATCH 085/205] gh-99968: FAQ: dev versions end in `+dev` (#153262) Co-authored-by: Stan Ulbrych --- Doc/faq/general.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Doc/faq/general.rst b/Doc/faq/general.rst index 698f2117ff5c649..ff38ba395fba22c 100644 --- a/Doc/faq/general.rst +++ b/Doc/faq/general.rst @@ -152,10 +152,11 @@ Alpha, beta and release candidate versions have an additional suffix: In other words, all versions labeled *2.0aN* precede the versions labeled *2.0bN*, which precede versions labeled *2.0rcN*, and *those* precede 2.0. -You may also find version numbers with a "+" suffix, e.g. "2.2+". These are -unreleased versions, built directly from the CPython development repository. In -practice, after a final minor release is made, the version is incremented to the -next minor version, which becomes the "a0" version, e.g. "2.4a0". +You may also find version numbers with a "+dev" suffix, such as "3.15.0b3+dev". +These are unreleased versions, built directly from the CPython development +repository. After the first beta release is made, the version is +incremented to the next feature version, which becomes the "a0" version, +such as "3.16.0a0". See the `Developer's Guide `__ From fc4d93dcf1a01f56fd8ffc35b6d3700c98ffa6c9 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 17:22:51 +0300 Subject: [PATCH 086/205] gh-154260: Fix test_flush_parameters on DragonFly BSD (GH-154261) DragonFly, like FreeBSD, rejects mmap.flush() with MS_ASYNC|MS_INVALIDATE (EINVAL). Use str.startswith() so the check also matches DragonFly, whose sys.platform carries a version suffix. Co-authored-by: Claude Fable 5 --- Lib/test/test_mmap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py index 5be9dfac2f5a76f..55c6ad04d44d828 100644 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@ -1176,8 +1176,8 @@ def test_flush_parameters(self): if hasattr(mmap, 'MS_INVALIDATE'): m.flush(PAGESIZE * 2, flags=mmap.MS_INVALIDATE) if hasattr(mmap, 'MS_ASYNC') and hasattr(mmap, 'MS_INVALIDATE'): - if sys.platform == 'freebsd': - # FreeBSD doesn't support this combination + if sys.platform.startswith(('freebsd', 'dragonfly')): + # FreeBSD and DragonFly don't support this combination with self.assertRaises(OSError) as cm: m.flush(0, PAGESIZE, flags=mmap.MS_ASYNC | mmap.MS_INVALIDATE) self.assertEqual(cm.exception.errno, errno.EINVAL) From eca3b26067a48bf18e59648695ee1a7bc36534fc Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 17:54:22 +0300 Subject: [PATCH 087/205] gh-154240: Skip cmsg truncation socket tests on OpenBSD and DragonFly (GH-154244) Co-authored-by: Claude Fable 5 --- Lib/test/test_socket.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 299e7212966ae3d..99f9e746c854e32 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -59,6 +59,9 @@ # SCM_RIGHTS control message when several are sent in a single sendmsg(). BSD_COMBINES_SCM_RIGHTS = sys.platform.startswith( ("netbsd", "openbsd", "dragonfly")) +# OpenBSD and DragonFly fail recvmsg() with EMSGSIZE, instead of setting +# MSG_CTRUNC, when the ancillary data buffer is too small for a cmsghdr. +CMSG_TRUNC_RAISES_EMSGSIZE = sys.platform.startswith(("openbsd", "dragonfly")) WSL = "microsoft-standard-WSL" in platform.release() try: @@ -4351,6 +4354,7 @@ def _testCmsgTrunc0(self): # (but still too small) buffer sizes. @skipForRefleakHuntinIf(sys.platform == "darwin", "#80931") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testCmsgTrunc1(self): self.checkTruncatedHeader(self.doRecvmsg(self.serv_sock, len(MSG), 1)) @@ -4359,6 +4363,7 @@ def _testCmsgTrunc1(self): self.createAndSendFDs(1) @skipForRefleakHuntinIf(sys.platform == "darwin", "#80931") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testCmsgTrunc2Int(self): # The cmsghdr structure has at least three members, two of # which are ints, so we still shouldn't see any ancillary @@ -4371,6 +4376,7 @@ def _testCmsgTrunc2Int(self): self.createAndSendFDs(1) @skipForRefleakHuntinIf(sys.platform == "darwin", "#80931") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testCmsgTruncLen0Minus1(self): self.checkTruncatedHeader(self.doRecvmsg(self.serv_sock, len(MSG), socket.CMSG_LEN(0) - 1)) @@ -4408,6 +4414,7 @@ def checkTruncatedArray(self, ancbuf, maxdata, mindata=0): self.checkFDs(fds) @skipForRefleakHuntinIf(sys.platform == "darwin", "#80931") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testCmsgTruncLen0(self): self.checkTruncatedArray(ancbuf=socket.CMSG_LEN(0), maxdata=0) @@ -4416,6 +4423,7 @@ def _testCmsgTruncLen0(self): self.createAndSendFDs(1) @skipForRefleakHuntinIf(sys.platform == "darwin", "#80931") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testCmsgTruncLen0Plus1(self): self.checkTruncatedArray(ancbuf=socket.CMSG_LEN(0) + 1, maxdata=1) @@ -4424,6 +4432,7 @@ def _testCmsgTruncLen0Plus1(self): self.createAndSendFDs(2) @skipForRefleakHuntinIf(sys.platform == "darwin", "#80931") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testCmsgTruncLen1(self): self.checkTruncatedArray(ancbuf=socket.CMSG_LEN(SIZEOF_INT), maxdata=SIZEOF_INT) @@ -4434,6 +4443,7 @@ def _testCmsgTruncLen1(self): @skipForRefleakHuntinIf(sys.platform == "darwin", "#80931") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testCmsgTruncLen2Minus1(self): self.checkTruncatedArray(ancbuf=socket.CMSG_LEN(2 * SIZEOF_INT) - 1, maxdata=(2 * SIZEOF_INT) - 1) @@ -4706,6 +4716,7 @@ def _testSingleCmsgTrunc0(self): # (but still too small) buffer sizes. @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testSingleCmsgTrunc1(self): self.checkHopLimitTruncatedHeader(ancbufsize=1) @@ -4715,6 +4726,7 @@ def _testSingleCmsgTrunc1(self): self.sendToServer(MSG) @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testSingleCmsgTrunc2Int(self): self.checkHopLimitTruncatedHeader(ancbufsize=2 * SIZEOF_INT) @@ -4724,6 +4736,7 @@ def _testSingleCmsgTrunc2Int(self): self.sendToServer(MSG) @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testSingleCmsgTruncLen0Minus1(self): self.checkHopLimitTruncatedHeader(ancbufsize=socket.CMSG_LEN(0) - 1) @@ -4733,6 +4746,7 @@ def _testSingleCmsgTruncLen0Minus1(self): self.sendToServer(MSG) @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testSingleCmsgTruncInData(self): # Test truncation of a control message inside its associated # data. The message may be returned with its data truncated, @@ -4805,6 +4819,7 @@ def _testSecondCmsgTrunc0(self): @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", "IPV6_RECVTCLASS", "IPV6_TCLASS") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testSecondCmsgTrunc1(self): self.checkTruncatedSecondHeader(socket.CMSG_SPACE(SIZEOF_INT) + 1) @@ -4815,6 +4830,7 @@ def _testSecondCmsgTrunc1(self): @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", "IPV6_RECVTCLASS", "IPV6_TCLASS") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testSecondCmsgTrunc2Int(self): self.checkTruncatedSecondHeader(socket.CMSG_SPACE(SIZEOF_INT) + 2 * SIZEOF_INT) @@ -4826,6 +4842,7 @@ def _testSecondCmsgTrunc2Int(self): @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", "IPV6_RECVTCLASS", "IPV6_TCLASS") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testSecondCmsgTruncLen0Minus1(self): self.checkTruncatedSecondHeader(socket.CMSG_SPACE(SIZEOF_INT) + socket.CMSG_LEN(0) - 1) @@ -4837,6 +4854,7 @@ def _testSecondCmsgTruncLen0Minus1(self): @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", "IPV6_RECVTCLASS", "IPV6_TCLASS") + @unittest.skipIf(CMSG_TRUNC_RAISES_EMSGSIZE, "skipping, see gh-154240") def testSecondCmsgTruncInData(self): # Test truncation of the second of two control messages inside # its associated data. From e81f19052ae1dad6bfaa240f3e56c2b34129a8fd Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 21:32:24 +0300 Subject: [PATCH 088/205] gh-154279: Skip readline completion tests that fail on DragonFly and illumos (GH-154280) They are already skipped on FreeBSD, where a backspace does not remove the auto-indentation. The same happens on DragonFly and illumos. Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/test/test_pdb.py | 10 ++++++---- Lib/test/test_sqlite3/test_cli.py | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 0cf5dd2e4c10042..e7b66031a86a6ca 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -5167,8 +5167,9 @@ def f(): self.assertIn('I love Python', output) - @unittest.skipIf(sys.platform.startswith('freebsd'), - '\\x08 is not interpreted as backspace on FreeBSD') + @unittest.skipIf(sys.platform.startswith(('freebsd', 'dragonfly', 'sunos')), + '\\x08 does not remove the auto-indentation with ' + 'GNU readline on this platform') def test_multiline_auto_indent(self): script = textwrap.dedent(""" import pdb; pdb.Pdb().set_trace() @@ -5207,8 +5208,9 @@ def test_multiline_completion(self): self.assertIn('42', output) - @unittest.skipIf(sys.platform.startswith('freebsd'), - '\\x08 is not interpreted as backspace on FreeBSD') + @unittest.skipIf(sys.platform.startswith(('freebsd', 'dragonfly', 'sunos')), + '\\x08 does not remove the auto-indentation with ' + 'GNU readline on this platform') def test_multiline_indent_completion(self): script = textwrap.dedent(""" import pdb; pdb.Pdb().set_trace() diff --git a/Lib/test/test_sqlite3/test_cli.py b/Lib/test/test_sqlite3/test_cli.py index 1fc0236780fa8ba..29819cc19d343bc 100644 --- a/Lib/test/test_sqlite3/test_cli.py +++ b/Lib/test/test_sqlite3/test_cli.py @@ -378,10 +378,10 @@ def test_complete_schemata(self): self.assertIn("main", candidates) self.assertIn("temp", candidates) - @unittest.skipIf(sys.platform.startswith("freebsd"), + @unittest.skipIf(sys.platform.startswith(("freebsd", "dragonfly", "sunos")), "Two actual tabs are inserted when there are no matching" " completions in the pseudo-terminal opened by run_pty()" - " on FreeBSD") + " on this platform") def test_complete_no_match(self): input_ = b"xyzzy\t\t\b\b\b\b\b\b\b.quit\n" # Set NO_COLOR to disable coloring for self.PS1. From 53597df11e2d9f01ade2529c147df24b49685878 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 22:13:21 +0300 Subject: [PATCH 089/205] gh-154283: Make threading.get_native_id() unique across processes on DragonFly (GH-154287) On DragonFly BSD lwp_gettid() is only unique within a process (the main thread is always LWP 1), so combine it with the process id, like Solaris. Co-authored-by: Claude Opus 4.8 (1M context) --- .../Library/2026-07-20-21-36-40.gh-issue-154283.Xip7xE.rst | 2 ++ Python/thread_pthread.h | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-20-21-36-40.gh-issue-154283.Xip7xE.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-20-21-36-40.gh-issue-154283.Xip7xE.rst b/Misc/NEWS.d/next/Library/2026-07-20-21-36-40.gh-issue-154283.Xip7xE.rst new file mode 100644 index 000000000000000..a278d67e1824d58 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-20-21-36-40.gh-issue-154283.Xip7xE.rst @@ -0,0 +1,2 @@ +On DragonFly BSD, :func:`threading.get_native_id` now returns a value that is +unique across processes, matching the other platforms. diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h index 8496f91db2eec2b..de93178576e6ec7 100644 --- a/Python/thread_pthread.h +++ b/Python/thread_pthread.h @@ -399,8 +399,8 @@ PyThread_get_thread_native_id(void) lwpid_t native_id; native_id = _lwp_self(); #elif defined(__DragonFly__) - lwpid_t native_id; - native_id = lwp_gettid(); + // lwp_gettid() is only unique within a process, so combine it with the pid. + unsigned long native_id = (unsigned long)getpid() << 32 | lwp_gettid(); #elif defined(__sun__) && SIZEOF_LONG >= 8 unsigned long native_id = (unsigned long)getpid() << 32 | thr_self(); #endif From 96059f9446510f594c4148d53bd1a4e3532af697 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 22:25:33 +0300 Subject: [PATCH 090/205] gh-154289: Fix test_socket.testGetServBy on DragonFly (GH-154290) DragonFly lists "echo 4/ddp" before "echo 7/tcp" in /etc/services, like FreeBSD, so avoid the "echo" service there too. Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/test/test_socket.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 99f9e746c854e32..a234d6b37ff3797 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -1302,7 +1302,8 @@ def testGetServBy(self): # protocol, at least for modern Linuxes. if ( sys.platform.startswith( - ('linux', 'android', 'freebsd', 'netbsd', 'gnukfreebsd')) + ('linux', 'android', 'freebsd', 'dragonfly', 'netbsd', + 'gnukfreebsd')) or is_apple ): # avoid the 'echo' service on this platform, as there is an From c7bbf040e721781be8f11a3b0716220835d4de2f Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 20 Jul 2026 22:59:56 +0300 Subject: [PATCH 091/205] gh-154291: Fix socket.has_dualstack_ipv6() on DragonFly BSD (GH-154292) On DragonFly BSD setsockopt(IPPROTO_IPV6, IPV6_V6ONLY, 0) succeeds without actually clearing the flag, so has_dualstack_ipv6() wrongly returned True. Verify with getsockopt() that IPV6_V6ONLY was cleared. Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/socket.py | 4 +++- .../Library/2026-07-20-22-03-44.gh-issue-154291.Mi5HeQ.rst | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-20-22-03-44.gh-issue-154291.Mi5HeQ.rst diff --git a/Lib/socket.py b/Lib/socket.py index 03c3fe88f15cfe6..2a4f875f76b069c 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -900,7 +900,9 @@ def has_dualstack_ipv6(): try: with socket(AF_INET6, SOCK_STREAM) as sock: sock.setsockopt(IPPROTO_IPV6, IPV6_V6ONLY, 0) - return True + # On some platforms (e.g. DragonFly BSD) setting IPV6_V6ONLY to 0 + # silently has no effect, so check that it was actually cleared. + return sock.getsockopt(IPPROTO_IPV6, IPV6_V6ONLY) == 0 except error: return False diff --git a/Misc/NEWS.d/next/Library/2026-07-20-22-03-44.gh-issue-154291.Mi5HeQ.rst b/Misc/NEWS.d/next/Library/2026-07-20-22-03-44.gh-issue-154291.Mi5HeQ.rst new file mode 100644 index 000000000000000..d962f8987ad491e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-20-22-03-44.gh-issue-154291.Mi5HeQ.rst @@ -0,0 +1,3 @@ +Fix :func:`socket.has_dualstack_ipv6` to return ``False`` on platforms such as +DragonFly BSD where setting ``IPV6_V6ONLY`` to 0 silently has no +effect. From bd315837d81ea6ccbe05aea919975765021f99cc Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Mon, 20 Jul 2026 22:25:12 +0100 Subject: [PATCH 092/205] gh-153511: Removes Tools/msi, Tools/nuget, and legacy py.exe launcher sources (GH-153512) --- .azure-pipelines/windows-layout-steps.yml | 2 +- .gitattributes | 2 +- .github/CODEOWNERS | 8 +- .github/workflows/build.yml | 18 - .github/workflows/reusable-context.yml | 4 - .github/workflows/reusable-windows-msi.yml | 31 - .gitignore | 3 +- Doc/tools/removed-ids.txt | 16 + Doc/using/win_install_freethreaded.png | Bin 210647 -> 0 bytes Doc/using/win_installer.png | Bin 79713 -> 0 bytes Doc/using/windows.rst | 731 +--- Doc/whatsnew/3.11.rst | 2 +- Include/internal/pycore_magic_number.h | 3 - InternalDocs/interpreter.md | 4 +- Lib/test/test_launcher.py | 804 ---- Lib/test/test_tools/test_compute_changes.py | 9 - ...-07-10-13-25-55.gh-issue-153511.dCPBwU.rst | 3 + PC/classicAppCompat.can.xml | 1 - PC/classicAppCompat.cat | Bin 10984 -> 0 bytes PC/classicAppCompat.sccd | 41 - PC/launcher-usage.txt | 31 - PC/launcher.c | 2047 ---------- PC/launcher2.c | 2858 -------------- PC/layout/README.md | 341 ++ PC/layout/support/appxmanifest.py | 2 + PC/pylauncher.rc | 67 - PC/pyshellext.cpp | 603 --- PC/pyshellext.def | 5 - PC/pyshellext.rc | 51 - PC/store_info.txt | 156 - PCbuild/pcbuild.proj | 4 - PCbuild/pcbuild.sln | 108 - PCbuild/pylauncher.vcxproj | 114 - PCbuild/pylauncher.vcxproj.filters | 28 - PCbuild/pyshellext.vcxproj | 117 - PCbuild/pyshellext.vcxproj.filters | 28 - PCbuild/pywlauncher.vcxproj | 114 - PCbuild/pywlauncher.vcxproj.filters | 28 - PCbuild/readme.txt | 12 +- PCbuild/venvlauncher.vcxproj | 5 +- PCbuild/venvlauncher.vcxproj.filters | 7 +- PCbuild/venvwlauncher.vcxproj | 5 +- PCbuild/venvwlauncher.vcxproj.filters | 7 +- README.rst | 4 +- Tools/README | 4 - Tools/build/compute-changes.py | 14 - Tools/buildbot/buildmsi.bat | 6 +- Tools/msi/README.txt | 530 --- Tools/msi/appendpath/appendpath.wixproj | 19 - Tools/msi/appendpath/appendpath.wxs | 40 - Tools/msi/appendpath/appendpath_en-US.wxl | 6 - Tools/msi/build.bat | 103 - Tools/msi/buildrelease.bat | 261 -- Tools/msi/bundle/Default.ARM64.xsl | 28 - Tools/msi/bundle/Default.thm | 141 - Tools/msi/bundle/Default.wxl | 133 - Tools/msi/bundle/SideBar.png | Bin 51948 -> 0 bytes Tools/msi/bundle/bootstrap/LICENSE.txt | 25 - .../PythonBootstrapperApplication.cpp | 3323 ----------------- Tools/msi/bundle/bootstrap/pch.cpp | 1 - Tools/msi/bundle/bootstrap/pch.h | 60 - Tools/msi/bundle/bootstrap/pythonba.cpp | 76 - Tools/msi/bundle/bootstrap/pythonba.def | 18 - Tools/msi/bundle/bootstrap/pythonba.sln | 22 - Tools/msi/bundle/bootstrap/pythonba.vcxproj | 73 - Tools/msi/bundle/bootstrap/resource.h | 25 - Tools/msi/bundle/bundle.targets | 129 - Tools/msi/bundle/bundle.wxl | 7 - Tools/msi/bundle/bundle.wxs | 128 - Tools/msi/bundle/full.wixproj | 21 - Tools/msi/bundle/packagegroups/core.wxs | 62 - Tools/msi/bundle/packagegroups/crt.wxs | 23 - Tools/msi/bundle/packagegroups/dev.wxs | 44 - Tools/msi/bundle/packagegroups/doc.wxs | 28 - Tools/msi/bundle/packagegroups/exe.wxs | 64 - .../msi/bundle/packagegroups/freethreaded.wxs | 62 - Tools/msi/bundle/packagegroups/launcher.wxs | 35 - Tools/msi/bundle/packagegroups/lib.wxs | 62 - .../bundle/packagegroups/packageinstall.wxs | 26 - Tools/msi/bundle/packagegroups/pip.wxs | 25 - .../msi/bundle/packagegroups/postinstall.wxs | 109 - Tools/msi/bundle/packagegroups/tcltk.wxs | 68 - Tools/msi/bundle/packagegroups/test.wxs | 62 - Tools/msi/bundle/releaselocal.wixproj | 21 - Tools/msi/bundle/releaseweb.wixproj | 21 - Tools/msi/bundle/snapshot.wixproj | 26 - Tools/msi/common.wxs | 138 - Tools/msi/common_en-US.wxl_template | 18 - Tools/msi/core/core.wixproj | 19 - Tools/msi/core/core.wxs | 13 - Tools/msi/core/core_d.wixproj | 19 - Tools/msi/core/core_d.wxs | 14 - Tools/msi/core/core_en-US.wxl | 5 - Tools/msi/core/core_files.wxs | 37 - Tools/msi/core/core_pdb.wixproj | 19 - Tools/msi/core/core_pdb.wxs | 14 - Tools/msi/csv_to_wxs.py | 127 - Tools/msi/dev/dev.wixproj | 29 - Tools/msi/dev/dev.wxs | 17 - Tools/msi/dev/dev_d.wixproj | 19 - Tools/msi/dev/dev_d.wxs | 13 - Tools/msi/dev/dev_en-US.wxl | 5 - Tools/msi/dev/dev_files.wxs | 38 - Tools/msi/doc/doc.wixproj | 37 - Tools/msi/doc/doc.wxs | 43 - Tools/msi/doc/doc_en-US.wxl_template | 7 - Tools/msi/exe/exe.wixproj | 41 - Tools/msi/exe/exe.wxs | 33 - Tools/msi/exe/exe_d.wixproj | 21 - Tools/msi/exe/exe_d.wxs | 13 - Tools/msi/exe/exe_en-US.wxl_template | 8 - Tools/msi/exe/exe_files.wxs | 84 - Tools/msi/exe/exe_pdb.wixproj | 21 - Tools/msi/exe/exe_pdb.wxs | 13 - Tools/msi/exe/exe_reg.wxs | 25 - Tools/msi/freethreaded/freethreaded.wixproj | 20 - Tools/msi/freethreaded/freethreaded.wxs | 18 - Tools/msi/freethreaded/freethreaded_d.wixproj | 20 - Tools/msi/freethreaded/freethreaded_d.wxs | 16 - .../freethreaded_en-US.wxl_template | 8 - Tools/msi/freethreaded/freethreaded_files.wxs | 187 - .../msi/freethreaded/freethreaded_pdb.wixproj | 20 - Tools/msi/freethreaded/freethreaded_pdb.wxs | 15 - Tools/msi/generate_md5.py | 27 - Tools/msi/get_externals.bat | 91 - Tools/msi/launcher/launcher.wixproj | 46 - Tools/msi/launcher/launcher.wxs | 75 - Tools/msi/launcher/launcher_en-US.wxl | 17 - Tools/msi/launcher/launcher_files.wxs | 44 - Tools/msi/launcher/launcher_reg.wxs | 50 - Tools/msi/lib/lib.wixproj | 35 - Tools/msi/lib/lib.wxs | 19 - Tools/msi/lib/lib_d.wixproj | 19 - Tools/msi/lib/lib_d.wxs | 13 - Tools/msi/lib/lib_en-US.wxl | 5 - Tools/msi/lib/lib_files.wxs | 128 - Tools/msi/lib/lib_pdb.wixproj | 19 - Tools/msi/lib/lib_pdb.wxs | 13 - Tools/msi/make_appx.ps1 | 71 - Tools/msi/make_cat.ps1 | 45 - Tools/msi/make_zip.proj | 40 - Tools/msi/msi.props | 234 -- Tools/msi/msi.targets | 96 - Tools/msi/path/path.wixproj | 19 - Tools/msi/path/path.wxs | 40 - Tools/msi/path/path_en-US.wxl | 6 - Tools/msi/pip/pip.wixproj | 19 - Tools/msi/pip/pip.wxs | 39 - Tools/msi/pip/pip_en-US.wxl | 6 - Tools/msi/purge.py | 76 - Tools/msi/sdktools.psm1 | 48 - Tools/msi/sign_build.ps1 | 34 - Tools/msi/tcltk/tcltk.wixproj | 42 - Tools/msi/tcltk/tcltk.wxs | 67 - Tools/msi/tcltk/tcltk_d.wixproj | 28 - Tools/msi/tcltk/tcltk_d.wxs | 13 - Tools/msi/tcltk/tcltk_en-US.wxl_template | 12 - Tools/msi/tcltk/tcltk_files.wxs | 49 - Tools/msi/tcltk/tcltk_pdb.wixproj | 19 - Tools/msi/tcltk/tcltk_pdb.wxs | 13 - Tools/msi/tcltk/tcltk_reg.wxs | 48 - Tools/msi/test/test.wixproj | 29 - Tools/msi/test/test.wxs | 17 - Tools/msi/test/test_d.wixproj | 19 - Tools/msi/test/test_d.wxs | 13 - Tools/msi/test/test_en-US.wxl | 7 - Tools/msi/test/test_files.wxs | 42 - Tools/msi/test/test_pdb.wixproj | 19 - Tools/msi/test/test_pdb.wxs | 13 - Tools/msi/testrelease.bat | 115 - Tools/msi/ucrt/ucrt.wixproj | 28 - Tools/msi/ucrt/ucrt.wxs | 15 - Tools/msi/ucrt/ucrt_en-US.wxl | 5 - Tools/msi/uploadrelease.bat | 109 - Tools/msi/uploadrelease.proj | 113 - Tools/msi/uploadrelease.ps1 | 171 - Tools/msi/wix.props | 10 - Tools/nuget/build.bat | 70 - Tools/nuget/make_pkg.proj | 63 - Tools/nuget/python.nuspec | 18 - Tools/nuget/pythonarm32.nuspec | 20 - Tools/nuget/pythondaily.nuspec | 19 - Tools/nuget/pythondaily.symbols.nuspec | 22 - Tools/nuget/pythonx86.nuspec | 19 - 184 files changed, 389 insertions(+), 17781 deletions(-) delete mode 100644 .github/workflows/reusable-windows-msi.yml delete mode 100644 Doc/using/win_install_freethreaded.png delete mode 100644 Doc/using/win_installer.png delete mode 100644 Lib/test/test_launcher.py create mode 100644 Misc/NEWS.d/next/Build/2026-07-10-13-25-55.gh-issue-153511.dCPBwU.rst delete mode 100644 PC/classicAppCompat.can.xml delete mode 100644 PC/classicAppCompat.cat delete mode 100644 PC/classicAppCompat.sccd delete mode 100644 PC/launcher-usage.txt delete mode 100644 PC/launcher.c delete mode 100644 PC/launcher2.c create mode 100644 PC/layout/README.md delete mode 100644 PC/pylauncher.rc delete mode 100644 PC/pyshellext.cpp delete mode 100644 PC/pyshellext.def delete mode 100644 PC/pyshellext.rc delete mode 100644 PC/store_info.txt delete mode 100644 PCbuild/pylauncher.vcxproj delete mode 100644 PCbuild/pylauncher.vcxproj.filters delete mode 100644 PCbuild/pyshellext.vcxproj delete mode 100644 PCbuild/pyshellext.vcxproj.filters delete mode 100644 PCbuild/pywlauncher.vcxproj delete mode 100644 PCbuild/pywlauncher.vcxproj.filters delete mode 100644 Tools/msi/README.txt delete mode 100644 Tools/msi/appendpath/appendpath.wixproj delete mode 100644 Tools/msi/appendpath/appendpath.wxs delete mode 100644 Tools/msi/appendpath/appendpath_en-US.wxl delete mode 100644 Tools/msi/build.bat delete mode 100644 Tools/msi/buildrelease.bat delete mode 100644 Tools/msi/bundle/Default.ARM64.xsl delete mode 100644 Tools/msi/bundle/Default.thm delete mode 100644 Tools/msi/bundle/Default.wxl delete mode 100644 Tools/msi/bundle/SideBar.png delete mode 100644 Tools/msi/bundle/bootstrap/LICENSE.txt delete mode 100644 Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp delete mode 100644 Tools/msi/bundle/bootstrap/pch.cpp delete mode 100644 Tools/msi/bundle/bootstrap/pch.h delete mode 100644 Tools/msi/bundle/bootstrap/pythonba.cpp delete mode 100644 Tools/msi/bundle/bootstrap/pythonba.def delete mode 100644 Tools/msi/bundle/bootstrap/pythonba.sln delete mode 100644 Tools/msi/bundle/bootstrap/pythonba.vcxproj delete mode 100644 Tools/msi/bundle/bootstrap/resource.h delete mode 100644 Tools/msi/bundle/bundle.targets delete mode 100644 Tools/msi/bundle/bundle.wxl delete mode 100644 Tools/msi/bundle/bundle.wxs delete mode 100644 Tools/msi/bundle/full.wixproj delete mode 100644 Tools/msi/bundle/packagegroups/core.wxs delete mode 100644 Tools/msi/bundle/packagegroups/crt.wxs delete mode 100644 Tools/msi/bundle/packagegroups/dev.wxs delete mode 100644 Tools/msi/bundle/packagegroups/doc.wxs delete mode 100644 Tools/msi/bundle/packagegroups/exe.wxs delete mode 100644 Tools/msi/bundle/packagegroups/freethreaded.wxs delete mode 100644 Tools/msi/bundle/packagegroups/launcher.wxs delete mode 100644 Tools/msi/bundle/packagegroups/lib.wxs delete mode 100644 Tools/msi/bundle/packagegroups/packageinstall.wxs delete mode 100644 Tools/msi/bundle/packagegroups/pip.wxs delete mode 100644 Tools/msi/bundle/packagegroups/postinstall.wxs delete mode 100644 Tools/msi/bundle/packagegroups/tcltk.wxs delete mode 100644 Tools/msi/bundle/packagegroups/test.wxs delete mode 100644 Tools/msi/bundle/releaselocal.wixproj delete mode 100644 Tools/msi/bundle/releaseweb.wixproj delete mode 100644 Tools/msi/bundle/snapshot.wixproj delete mode 100644 Tools/msi/common.wxs delete mode 100644 Tools/msi/common_en-US.wxl_template delete mode 100644 Tools/msi/core/core.wixproj delete mode 100644 Tools/msi/core/core.wxs delete mode 100644 Tools/msi/core/core_d.wixproj delete mode 100644 Tools/msi/core/core_d.wxs delete mode 100644 Tools/msi/core/core_en-US.wxl delete mode 100644 Tools/msi/core/core_files.wxs delete mode 100644 Tools/msi/core/core_pdb.wixproj delete mode 100644 Tools/msi/core/core_pdb.wxs delete mode 100644 Tools/msi/csv_to_wxs.py delete mode 100644 Tools/msi/dev/dev.wixproj delete mode 100644 Tools/msi/dev/dev.wxs delete mode 100644 Tools/msi/dev/dev_d.wixproj delete mode 100644 Tools/msi/dev/dev_d.wxs delete mode 100644 Tools/msi/dev/dev_en-US.wxl delete mode 100644 Tools/msi/dev/dev_files.wxs delete mode 100644 Tools/msi/doc/doc.wixproj delete mode 100644 Tools/msi/doc/doc.wxs delete mode 100644 Tools/msi/doc/doc_en-US.wxl_template delete mode 100644 Tools/msi/exe/exe.wixproj delete mode 100644 Tools/msi/exe/exe.wxs delete mode 100644 Tools/msi/exe/exe_d.wixproj delete mode 100644 Tools/msi/exe/exe_d.wxs delete mode 100644 Tools/msi/exe/exe_en-US.wxl_template delete mode 100644 Tools/msi/exe/exe_files.wxs delete mode 100644 Tools/msi/exe/exe_pdb.wixproj delete mode 100644 Tools/msi/exe/exe_pdb.wxs delete mode 100644 Tools/msi/exe/exe_reg.wxs delete mode 100644 Tools/msi/freethreaded/freethreaded.wixproj delete mode 100644 Tools/msi/freethreaded/freethreaded.wxs delete mode 100644 Tools/msi/freethreaded/freethreaded_d.wixproj delete mode 100644 Tools/msi/freethreaded/freethreaded_d.wxs delete mode 100644 Tools/msi/freethreaded/freethreaded_en-US.wxl_template delete mode 100644 Tools/msi/freethreaded/freethreaded_files.wxs delete mode 100644 Tools/msi/freethreaded/freethreaded_pdb.wixproj delete mode 100644 Tools/msi/freethreaded/freethreaded_pdb.wxs delete mode 100644 Tools/msi/generate_md5.py delete mode 100644 Tools/msi/get_externals.bat delete mode 100644 Tools/msi/launcher/launcher.wixproj delete mode 100644 Tools/msi/launcher/launcher.wxs delete mode 100644 Tools/msi/launcher/launcher_en-US.wxl delete mode 100644 Tools/msi/launcher/launcher_files.wxs delete mode 100644 Tools/msi/launcher/launcher_reg.wxs delete mode 100644 Tools/msi/lib/lib.wixproj delete mode 100644 Tools/msi/lib/lib.wxs delete mode 100644 Tools/msi/lib/lib_d.wixproj delete mode 100644 Tools/msi/lib/lib_d.wxs delete mode 100644 Tools/msi/lib/lib_en-US.wxl delete mode 100644 Tools/msi/lib/lib_files.wxs delete mode 100644 Tools/msi/lib/lib_pdb.wixproj delete mode 100644 Tools/msi/lib/lib_pdb.wxs delete mode 100644 Tools/msi/make_appx.ps1 delete mode 100644 Tools/msi/make_cat.ps1 delete mode 100644 Tools/msi/make_zip.proj delete mode 100644 Tools/msi/msi.props delete mode 100644 Tools/msi/msi.targets delete mode 100644 Tools/msi/path/path.wixproj delete mode 100644 Tools/msi/path/path.wxs delete mode 100644 Tools/msi/path/path_en-US.wxl delete mode 100644 Tools/msi/pip/pip.wixproj delete mode 100644 Tools/msi/pip/pip.wxs delete mode 100644 Tools/msi/pip/pip_en-US.wxl delete mode 100644 Tools/msi/purge.py delete mode 100644 Tools/msi/sdktools.psm1 delete mode 100644 Tools/msi/sign_build.ps1 delete mode 100644 Tools/msi/tcltk/tcltk.wixproj delete mode 100644 Tools/msi/tcltk/tcltk.wxs delete mode 100644 Tools/msi/tcltk/tcltk_d.wixproj delete mode 100644 Tools/msi/tcltk/tcltk_d.wxs delete mode 100644 Tools/msi/tcltk/tcltk_en-US.wxl_template delete mode 100644 Tools/msi/tcltk/tcltk_files.wxs delete mode 100644 Tools/msi/tcltk/tcltk_pdb.wixproj delete mode 100644 Tools/msi/tcltk/tcltk_pdb.wxs delete mode 100644 Tools/msi/tcltk/tcltk_reg.wxs delete mode 100644 Tools/msi/test/test.wixproj delete mode 100644 Tools/msi/test/test.wxs delete mode 100644 Tools/msi/test/test_d.wixproj delete mode 100644 Tools/msi/test/test_d.wxs delete mode 100644 Tools/msi/test/test_en-US.wxl delete mode 100644 Tools/msi/test/test_files.wxs delete mode 100644 Tools/msi/test/test_pdb.wixproj delete mode 100644 Tools/msi/test/test_pdb.wxs delete mode 100644 Tools/msi/testrelease.bat delete mode 100644 Tools/msi/ucrt/ucrt.wixproj delete mode 100644 Tools/msi/ucrt/ucrt.wxs delete mode 100644 Tools/msi/ucrt/ucrt_en-US.wxl delete mode 100644 Tools/msi/uploadrelease.bat delete mode 100644 Tools/msi/uploadrelease.proj delete mode 100644 Tools/msi/uploadrelease.ps1 delete mode 100644 Tools/msi/wix.props delete mode 100644 Tools/nuget/build.bat delete mode 100644 Tools/nuget/make_pkg.proj delete mode 100644 Tools/nuget/python.nuspec delete mode 100644 Tools/nuget/pythonarm32.nuspec delete mode 100644 Tools/nuget/pythondaily.nuspec delete mode 100644 Tools/nuget/pythondaily.symbols.nuspec delete mode 100644 Tools/nuget/pythonx86.nuspec diff --git a/.azure-pipelines/windows-layout-steps.yml b/.azure-pipelines/windows-layout-steps.yml index afd897817904947..e15729fac3443db 100644 --- a/.azure-pipelines/windows-layout-steps.yml +++ b/.azure-pipelines/windows-layout-steps.yml @@ -12,7 +12,7 @@ steps: displayName: Show layout info (${{ parameters.kind }}) - ${{ if eq(parameters.fulltest, 'true') }}: - - script: .\python.exe -m test -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0 --junit-xml="$(Build.BinariesDirectory)\test-results-${{ parameters.kind }}.xml" --tempdir "$(Build.BinariesDirectory)\tmp-${{ parameters.kind }}-$(arch)" -i test_launcher + - script: .\python.exe -m test -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0 --junit-xml="$(Build.BinariesDirectory)\test-results-${{ parameters.kind }}.xml" --tempdir "$(Build.BinariesDirectory)\tmp-${{ parameters.kind }}-$(arch)" workingDirectory: $(Build.BinariesDirectory)\layout-${{ parameters.kind }}-$(arch) displayName: ${{ parameters.kind }} Tests env: diff --git a/.gitattributes b/.gitattributes index 4d52f900b93179e..f00d82e6978c40b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -19,7 +19,7 @@ *.zip binary # Specific binary files -PC/classicAppCompat.* binary +# -- None right now -- # Text files that should not be subject to eol conversion [attr]noeol -text diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0cdf17838b5798f..fd929b0c468699b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -188,12 +188,8 @@ Tools/wasm/wasi @brettcannon @emmatyping @savannahostrowski PC/ @python/windows-team PCbuild/ @python/windows-team -# Windows installer packages -Tools/msi/ @python/windows-team -Tools/nuget/ @python/windows-team - -# Windows Launcher -PC/launcher.c @python/windows-team @vsajip +# Windows Venv launcher/redirector +PC/venvlauncher.c @python/windows-team @vsajip # ---------------------------------------------------------------------------- diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d247f99aefe174c..8d4bd4a346f2e68 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -181,22 +181,6 @@ jobs: free-threading: ${{ matrix.free-threading }} interpreter: ${{ matrix.interpreter }} - build-windows-msi: - # ${{ '' } is a hack to nest jobs under the same sidebar category. - name: Windows MSI${{ '' }} # zizmor: ignore[obfuscation] - needs: build-context - if: fromJSON(needs.build-context.outputs.run-windows-msi) - strategy: - fail-fast: false - matrix: - arch: - - x86 - - x64 - - arm64 - uses: ./.github/workflows/reusable-windows-msi.yml - with: - arch: ${{ matrix.arch }} - build-macos: name: >- macOS @@ -650,7 +634,6 @@ jobs: - check-generated-files - check-c-api-docs - build-windows - - build-windows-msi - build-macos - build-ubuntu - build-ubuntu-ssltests @@ -671,7 +654,6 @@ jobs: allowed-failures: >- build-android, build-emscripten, - build-windows-msi, build-ubuntu-ssltests, test-hypothesis, cifuzz, diff --git a/.github/workflows/reusable-context.yml b/.github/workflows/reusable-context.yml index 6595aef0377e500..c998cbff181dd12 100644 --- a/.github/workflows/reusable-context.yml +++ b/.github/workflows/reusable-context.yml @@ -47,9 +47,6 @@ on: # yamllint disable-line rule:truthy run-wasi: description: Whether to run the WASI tests value: ${{ jobs.compute-changes.outputs.run-wasi }} # bool - run-windows-msi: - description: Whether to run the MSI installer smoke tests - value: ${{ jobs.compute-changes.outputs.run-windows-msi }} # bool run-windows-tests: description: Whether to run the Windows tests value: ${{ jobs.compute-changes.outputs.run-windows-tests }} # bool @@ -73,7 +70,6 @@ jobs: run-ubuntu: ${{ steps.changes.outputs.run-ubuntu }} run-emscripten: ${{ steps.changes.outputs.run-emscripten }} run-wasi: ${{ steps.changes.outputs.run-wasi }} - run-windows-msi: ${{ steps.changes.outputs.run-windows-msi }} run-windows-tests: ${{ steps.changes.outputs.run-windows-tests }} steps: - name: Set up Python diff --git a/.github/workflows/reusable-windows-msi.yml b/.github/workflows/reusable-windows-msi.yml deleted file mode 100644 index d57046ae5ca8f00..000000000000000 --- a/.github/workflows/reusable-windows-msi.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Reusable Windows MSI - -on: - workflow_call: - inputs: - arch: - description: CPU architecture - required: true - type: string - -permissions: - contents: read - -env: - FORCE_COLOR: 1 - -jobs: - build: - name: installer for ${{ inputs.arch }} - runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2025' }} - timeout-minutes: 60 - env: - ARCH: ${{ inputs.arch }} - IncludeFreethreaded: true - steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - - name: Build CPython installer - run: ./Tools/msi/build.bat --doc -"${ARCH}" - shell: bash diff --git a/.gitignore b/.gitignore index 118eb5ee76e8051..2a8dd6a7c3eabd1 100644 --- a/.gitignore +++ b/.gitignore @@ -50,7 +50,7 @@ gmon.out *.exe -# Ignore core dumps... but not Tools/msi/core/ or the like. +# Ignore core dumps... but not .../core/ subdirectories core !core/ @@ -158,7 +158,6 @@ Tools/unicode/data/ /coverage/ /externals/ /htmlcov/ -Tools/msi/obj Tools/ssl/amd64 Tools/ssl/win32 Tools/freeze/test/outdir diff --git a/Doc/tools/removed-ids.txt b/Doc/tools/removed-ids.txt index 48c9809f0502bfa..7796d15f4d2735f 100644 --- a/Doc/tools/removed-ids.txt +++ b/Doc/tools/removed-ids.txt @@ -43,3 +43,19 @@ c-api/typeobj.html: c.Py_tp_bases # Removed pages library/asyncio-policy.html: (page missing) + +# Removed old Windows installer docs +using/windows.html: diagnostics +using/windows.html: dry-run +using/windows.html: from-a-script +using/windows.html: from-file-associations +using/windows.html: from-the-command-line +using/windows.html: install-on-demand +using/windows.html: install-quiet-option +using/windows.html: installing-without-ui +using/windows.html: modifying-an-install +using/windows.html: python-launcher-for-windows-deprecated +using/windows.html: return-codes +using/windows.html: the-full-installer-deprecated +using/windows.html: virtual-environments +using/windows.html: windows-full diff --git a/Doc/using/win_install_freethreaded.png b/Doc/using/win_install_freethreaded.png deleted file mode 100644 index 12b89c0165d994da57308cc3911b901bdf5eb069..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210647 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 cvNz_qG39+2A z*f`~Cp<7UhLKLDh|NX^x85mKUg5F*EMux#5+fOOsS1b8#diN6`3 zLJmSXoVj`v*Fbp%f~V;u{QY|!&Y@F=Ya?>#bkt9EG$f7G z0Wg)xtl%`hi_HPLc!n3)#x^=>XB98;JP*+wSVsj@D5iuA4hb@(aIidJhRSZ^D1I$3 zNwaXpm5ry#&X95*yO7?Ij<8dK_Rs85hczd07deR*i6s7d?GDOq$Qh} z?_f7=v@^sY``E`rJj?CeOdmseB?H7L!XS)>jzqd=g%lP^95Ogw3Gv1$(^x31Y)9hY zfUz{0gna;2Me3Dhb2!DXAcAHA&%=0^LmHx6&V8}L@+7G^p3ef z2pt`b5C#AduTT^S!k9`}0VGI!zh_92VVDekq_IePemH}`fcNw39i^U! zrb(1$!sr;;@g}ol+wso3<&8Vbo9Q3Kp^rqih<&rbtTeA95cUdK|9n{3#IZ?|CQT3V zJgCxqKEfrO#3E{_p_Fna(n1sUhvC!&3lB*l3Q>qcylp!OIYVPHegP492#htdIT8&2 zYgyhe2>k6ij^jy{lKt6H?!TI@qj?2F@N?PEKvuCRt73$9cyl-2CNxA3CM2@m0vnWt z!2K7;g%h~%S>U+u1=B-ESs*|vw?I(pb(*=)d*FM9Uyec?1cZ7$Da#6s%2%D7h%vkc z#&8;@25`zY4p(qF-{;>*lVUr&Sjh{lVFQn_j!`y_fhYMlfEH>g#>Bw!cnxln?Iv%> zB3VCH1(9X6gVXRgwByFT zfby`{8j@P7fGPlHFr9N);Zc|!+Bv``wzHEx^w7xwy=-DPkMKPE**IqX2BkC;BZ@#H zjYZ0Xdt}CeE2(3Y{;4tPt$j?c2*wl=!t=V;vp3iA0Z94e^;i0y`2eEv5_@-i+bFN( zP+qEj=;WSv1lgKADPQ49s2T`NG(u?TXxL=vW`sfZ24siHb_6csG$zwbj0);-oycb~ zl}gG1fq~)C_8Av0RA9Iiq7a36XBP;=po?GLh%T>F;jP=Rhfi?YMj4!;jv63P#FPdR1;x zuPlUPfl7l)xkZ6(<2Y%AN+VSUf%`Y56hc|x_^>0}O=DCB&B?ssbPbV{ph79jgF(F! zJ`fhdnerNryFaE5*JU6uBdo@#r|4OH^He4=l}UN9l{OA=Ky@;}04b56pFTFQm9=c< zah_(7os1`E3K2|irq%EuBr?b3$QBYlgv1`l;o$AmQ#&|yFT@)K0g|4=mhN=`Of>Ys zw1eY~KNo&xlfeQ;Nzyyc8W(UOr?ZF|%wQ75ln|kq3My!z)+@kYS$;QI5ES4-g(yTJ z3Izfnr0Wyl*fvU&c}aROsdnrfbRh`&QA%YK@bMr)c^v@T#_Iv;br%*L4uM`yhqPb_vESKzKV^KzLjNmq(C6s1!J9l#>FLLaMY2 zAyR2@QlK)R(nu%iebxcT=NzP6(z41RR1$ktNSp+&^{Ea{RD^w|j zGy3Y&AK{ShYh!Qs2#Jh?6yRvZlvP#JP*rr0F3)%~l!r>oC4v?jXc76HjUh%DVU#3E zY%Jo$*~Tt5vx6<{W;45Zo*krVBb~=};2BKw&CF*R)0n_?uM5yhBL*f0CK1mqJWBXgiQwi# zxC&8-LKLDK;#bo73 z$3l&ykS@+SP#kEwp0|EK-}eg%>H8gw=~VcCd%F|}?)MUIvaa0Oew-9SrNK#qlSDWP za8f9h%EF6;N_jSgc_7O{M+gfi@vI# zeY{;97i+GL@Ovp7$0B}UH!t7)9lr7V$9R0FMPo^dE#eHm_)nkU^B+EiMx9rjpFC{B z;$%o=(j=8ZaY#oKk{HFrC?+3ZG1s%IvOP>a3^B|e+Gyhd9dyx0A903BGRl6s*v@{Q zV;9|QJzCA#O55R8JxGFz|cyoA*_ntl?b=z0ad#(YlZI409T6&08iQ9_I=DygHE78+=#fe2ypjr!yfbpr|z zp+Xd*5QPHaZ%MgqTuD$Nu)QupUV`qp1%i;mQ$#;_M&D5m%2C;;icmRXu$#QPkAF>b z6H6a12bjv~SdVy`DJv_S$E}RUe9Gk`**+!HQ zh~AAn|Kw9#JGz|jUpAYvsKikUA@Y5S1;SGg%JnQFgsG*PB`iE>_5BReLqCHIG0dXqiNz*C1*+&O^*v}T)d7d3~zoG_y2#5k<@GRPVX;j^l(j8GY2!j%I6lq43r9;;msvW>JFAy*5KUhNAUr~NFfv6(+2lll{i01HB20=sxR1)C zaN`wsu2PZPJ#xHHS{_+@=m?0~i#eI4Or?=#>S(5(O3KkNFg^c^7$uZZN;Q=f5qZ_5 z__3vXp&L+$LKLDpy64~wh1Y@6D;KG^6as>P$0CLL)3CqFmMNp;4|BR+-dCEn+UAhL! z^L)UC3pq{-p+;Qtv7JIVafF>jISH^6NR@JbRvB>O2xkbPMo~`2RR|IaG%ZI0meNc9 zWuOR1Tj;I_ad3E_&#pj~;sIq?=B<*-jT}`mq@#nH5QmfT#v`dC2k@h?v*8siy`= zGt2-x1EQx@Aj+vE?4^@w;s_6DlBN%bGzN7TNN+MDsgfuRbRkeG#UM5*3@U`gRvCts zgDDLR91_aLK@t+Kt(VF(owG?Q2Z4qmz)?176ao!XxKk&#a>xLh&@geANqNhJg^O%= zl!GHAC!_V`un3O}|9LHb*g>v9p%f@YAqr85*Rep5I#`(uwq>D*Lhj5=kUQWh{aYa#S#!+rjqQ-bL z_=&z{Sp<0vK2h22P=IaOt{kUVbogBa9}4BK=dIX1P+r%-briM&9D)SGPPs54CkZME zb{u6V+%AEW0B01bMu0>Pf+Q3|^IJa#XeLPM&g6>m<|`$LkV{^9OMyc~u8Nfsr3tc* zZ{iRg1Zf<>Jf=XTJJ_@CN$$S6p3DC80!~;wiI|~q9IqRvmr+~}#f;Fidm}4v>ZavG zCo`iqMg&m%pXGt|ee{*j<^4+=v4;+@ZRL&p`JpXzjM!LW7Ux`j0VlN#u>Q|K;k&nP zML3)Ia{F9Pe&0WG!Gap9!hLLf_)Z>q=xH_#I9Q<;rY${-_g=J!mSPi?>g477AE!f8 z^bQZQ@xEv1Y?#NqQ%~mNX$fBV^Bp|0yN@AbF6VyeJWg9Sl^S~4w_yX%Jz_KWs)bay zKh0nNyqX;c(uBiBM8guRd;(KWK8wpwo*zrYAHjV&$Dr~jdW=ddk1f0rwN$znOCxmhKSA(DIB|- zj>Hq}P6w1jBLO)ese!QBs{(4GVr;=v1@zFJRd1^#StXE#|2j4+JN z@R-Xm>yRL3P)0Wcsa^)tUJY*?$1GFO!6?#+P!vxQmF3v!jcgs=0UCt$ck!;WIZW1z zJkN))XFgX%F-6|YevC3=R8U4KB>`dD+Mh(Z*i5N|e!QMOet zkeWa#7i#3r&U-K)Zw6D>bTnPdQx$S2VRI@+t~r@RN`dl{a^*N)(IB!(yWfTIISl?w z2!W7Z>)YcfNX;c0D<=ne@?k?+1*1TRK*$_9St&&(lfkiVq^7;)y9P@6lBF3p@wek1 zoXCX>VU2>5a0>({fv`uw8A2-eeL>orHCJwuubH3+vMCXAvnx%aq?beoivT6P?2Fe= zYV`H253)@Hac}~eCrPSa89L=BnM3XL?%TrC6VB$R3+gB~{W>I9L@7rgWRl_DEj;#5 zn>p#-int*Ln|UO115l_r|g%l5}_^{n!^W|FJZE@p|6XMGiTEh1#Q#)+_9&dj*5j`J$EAEvSJ)- zkgaWxldPCRELw~jSjiK8o$M-_$EB^M3=VE)^`2hpr_7)%+{do%yNQ>cL|ttqVNxEa z!u1Lnwz_HGJBU_UO|&#jXt14~1AFNU*V0^GiJ_A09^6bSJ%bsQ6;wsSXoDT>=-)73X$5klObj^baiGw@}eB!dtT@Z+z>QPXENJyk6(KLw=GCPBx z$z-r?D_cBd`40gyF@jui;K6Ey$AQo^E!*KxN@Y6qCW6wU?*O#75+20r2(aL(3|3OIr>UNrB8f4+iHJMKHG}A+2zmgbC8UlS4iPnU zuzKm=_dK`XSL!wK#lyny$j!@F2>_qBZEkN2@|$t21ebwZI4qG1*%pL-eaU0TH83k}FeKf+IU z|2IGR#)mk2Y6KRi+4k$5Y~8S*=xTtelOC=VAQ(o<>t?L$1KpTgDuy^z$-2QU}yV#)6J zv#_R(2fuzN0~ejodGB9Fvr40c!cm}!B!fe%`TZxJBKGf>ar#opuG{~}&mTE~b3Su5 zmz38Kb%xo${T_b($CqjP;8mP6HOb~%{=he$Ud*>Y^ARqqs3Byf81C4|NT>m;cYs() zG3Dh=6eV6}?NfIUzO{iXu6sYn7u$@!{0sK{wVZR_dp;j-Xa&01zQLg5ydlo)IgfeP zMn*nd%+j+j=L4UF=Gz1A~AM%YDBioV)<2+#z%`lE~UcINyK}L3kEkr2m>WGl+**q#l=n|Ot;e@-w5x4 zH&eU80-+xnrNPkAOoJ)CNm9a3gU1@D`D|K+6L-kB2k{DX<$zX7dGl;8x%vT~z3ooK zv`QwPF#BI-XzN=3kS^yx_pjlJ2R5VI4tv_Su&twtiETqLqsS9E2sCkQ z0m@4)Et9%a&f?8Xu=Xj|4ySS0$BzDP%;HfjLKKM*;WCqARYIjxLa83Y zu}i5XMor%N%Mf!aDc@Q|xm80`cNe?Y8`RXF!9@!fFx6|QRnN$9TJm}JA1Ed!hY-)& z)HI&PyB5u3l5ea$zt#Qn#og?DaWgMJy9;G>vu*bfCG91o?FeBFM99FX)X}4UxtS&r zN|Rpdkj`||e_$<-81uRCvW3i?QUZWcKaoi%oWQbY9%TFA2(6|<$ZD2<`aG7-Z6yX! z*T}SaCo=J&1S5{CCZ`>`l~#yC6rvD?c*m2JZ3pT80s;)f@RECxh5sm}Tn>U1SYA@D zNi8Rb8c-SX`2Ygpbq=&VUju)AZlW)6EC6v5=w6Xx+cueu^_G!26+U@S*$9=A@B zh;Rm6h>;MW8E)4=8XlC$P5PBIKx%y zO*M13Y+-v(g4v}JbX+cu56=_9ib2X;bHZ_@eWjF09F$f;-NN(u$meW+^6fuy-Cys+ zJpDI(>irjT`hrSIe2Rphu-guHe>Xk0K`as`>d6OdQXr&;rksNf4MiYHmw+5I_p2D! z30eToz#d+>|2Ce9EadEEis8;B~6sCQiKN5KndMV%!HmJ9xJankiLYecn4+^UNLnfK#Oo4wUeiD+{ABl+bt*2 z^6nE@GP%rCECQ@yM&mYCu|x@hlzsFKW!%Fo74hL=1_u&o69vLbkV&R-CSA@y{``DC zJ-n7X|NBea{O1To_3!0O9G4!U85p__nuQjLQ8Kuijr$JJmY&UQQvyj6gWYs#WlS

    -|1J*7G>w9g0=4oAlarid}cfJI4ho6XbXQ<2*-86j*Ky^)=zQT%Kjv%mn+WZHio1SwFVDq&7ip1&MT#-D zS!3M*Bm&{Mg`*6W5OMn1vST;f`cpKPhX4m_u#?VAgpg@cR1`ti;|z57(>nsS#hzF~ z-+sDZ{44+Y@7t;TyDxM74;NEC_%dtnyPfNQYG8PrAE6XVXlS~TKi-t9G$z9()USM+ z^=)08x?ln^Q-Bj^bf}wdvw~JbqDzHBj!P91h0351g(yTJ-ga?RnO?d9sbmVvvN27Q zP{>3IK_+97NvE^Lf&UEG4PR!|#!6>g8B;$Y_lg9m<%r0B>S5cqTL=WCO8xf)0^P_F zpnXVD#^Vt9T>zhR;5Z7~c4b*LDY5MgnM?+SLi2eJ0gQK6{V0>kBT2uxIR_5P&VUt1 z*rOv-<*dwF2ixh!ccrOL2L+rHIyfLf{?9F^ZXP>vI@Hgm9TfnQgbZ;=VymNq1pKjytk;=D zp?5vU`X?XY&Mg^iElN04K}l;Frs;i1*N`GZa;Tqy(G;1KgChmn^de%R5JiSTYX4pi zY}vqeLuJ38vXtjO?z#kIJ2T^WT`1dCSd%UDnS1Iiraylhx7_+X`@07iXy3`khyKd% zW6PN{sfEciCeS>|K)dl??tF9`9lZne?rUe$eGl_uPY3N2W0ZzNl!QY#{eARqdWL7i zHW}X>MmI3+I3okSB$F93j(0ppGFXvPqO(rnlF#hoS2sM&s#RNv$K$lW_zcgie1_*1 zp3Snl2&KA>W#_xu=Rw*i7}OP_5QQj2p+GoP2f=m|_K<0!X_}jur&BI|--kYUiFua% zYgryVNJC1O#45ccUI>{ZCwotzth}hMp=oXxBArg-IF4IPXfiKp@MTwpkm!ct!kxTr zXEGTt>355ijAa42{gX21;^h|tw&fN(?mlX7+S#+5a3KiTczL?UET`?+_;Oj;|8DXl%8 z_rADL@}9blo6iXk;%pDbYhAOw)&&36KVc8Ag|yt7$I`B2`hWzFuCw{eSt* zV|VeBFJ8bY3#QXtT0!OIU*p^N4^lSeY_9p`6_kGYEKY4MBOEQJq~!1TpIe@1w>pSb zgAh7~GBGs`iR+3U(lrbjP`Z}}nr@;?i6|){vHN~Lv8;sh;tCpOeTvUle1nUQZ(wpc zsK%*GEbHLePn^j4pZ_j5?v4_gb0!}z|0!QNZZef-gez}Y!*iL1EGGBe%#499B~t3> zDuk(NxIzwh8pYqqCMVvv%Q*AXcCe7lw z`2BqSoY}npyLa()yFim6!n%%7CXupfob~B1@bAXmeC@Ou)J-g+X~_?{Q=QE}UAB;_ zs0m77gd>D>nX@es5~+s>nFg9DK#U4eh(Z*Cw;4cMjQQDr`M3xjS0&uUwKR=*wx-42 zD+ZJTr7LFg%@2IxCtUvCs{l9o_hCUnzW{eu-^tGE1rzWb@mP7%sO}_~lrrnS9E1g_ zY<`mOZfx6j)-NGglmwlXb2DH$r{x?zJ_m*J&E9;ORVihbtn7Y7zBvm79E4-JlBCWE z!XCx3h7ryP(u#vUgs}S%b|0uA1R1wx)O9zx*L9SpqX@bD11a6YL3$7(VR%p?-6P?u zz>skvFg^y~RWEX}%m|soet65Mw>3^dA@s=zqxH!B*8rRmI=AoOz;Fi3gM`>-Db;n2 zOst6l7MbBrcJ1t9B;(*~p1pmPpAhdO6scK{~b#qt#YW zURg|tG$Y;n*|(>MxDYP9DO%0MiFK5Rb?+XSVWg*>eY<*yOLrM9T19hn8FFAh`@4on zI08KyC2W=uO$%aE>M1ofgfl?bj&?fwN1?2N`o?OClKu2{T9kOpNHs*~j(v3YC&)-} zM3`7rBNJN62?4e>O5ffCq>HO5t16{P0?sIdJp*))nAEpaQluB8M+;GiLKNaytQGK$p5Psq>Jq)tPb+Gff3~q6fb6*bj z`t5)kQSd;!pY@6oM`caig53|l@OX0$7`Joa`Wg%)>|wBmQ1-CPJ+Ma+c0a=IMmR$* z!&UPM$SxEJErinDLO}S%fYiwmjt#dEKzDx^!c{9mbMeZ;;~WUhBkBr-lKDfUOPT=bb?pBAPfxOO}e)F4Szv0*FD!qHVR zl3?2wwq>J*WOim<1pvWW_g=xlq~mO1;KF|L@Wd)7d5WiQr0ZI~qLFQ9EJJhv?&#JKCvL2x+4cNd3DlE>T5xW~zV@1X4qL=Ywu{JZxVHU5D<_`4mnKZn@g z;PF1hdCDISw<0=Z(OCbtTh(b_MF*>ZwsYlvV zt~8_ObrKvW=W*cA&<7z$L70z}BKr_?4cBZBQsfo~zMp~*@$o;O$yiyV9^a5lc?q-M zfe7xS3n3CX*}sXrg2U}b*eK+pB+3RYF){e7JG^7lWmE%C}$Sg+>#I^=c^_1rHQJV0yvZWv^E8@)o@Vem{S7Y?UX8>L>BOpFx&ztXw{T+X2YU`l-OS{m=LXhVQp9wwqyj=4ev7 zoe2N4eg{K%Gs0Q!!keTx5XuIX_Ds-5v#_FEanOr&`dmk3=@kch#O)qv251q_)4<4e z2GG3Xz=I(9=rf^v256dhJT%WNO?r?bJ@<1EPK5v7J3;T%FA(&?-KG$QC`2I&QHVmk z^9lszfRtJ``Bvn*2|n>x__Cl%;RF(QALe7*c6M3!e>oDf=0S>rF3dhz*>Rk#@{#cS z_R50__(g)3i~26ijt^P#iUR}zN9LTDf)6Y5mv;%#`GpS09)yNa7Q!nIloLl;ailYf zvPV5wkzX97+~i#|P+ACN*!@>GT{w~S4AGQuy$ys8N<&B^+d)w1fv!QWlixY)CUv@oP{VvAqr85LKNa1S|DgrLz6P+-0RP>BV5z1tOAjn znENyLzCw@!S2@TtC3E=%(sg1Mc!|1ekfxNvGbzm`{XTag$7k^N!Y38$x~s_UIXe68 zdB;;#3UVBzrh((QMMD7M>POR$jTZ*IwM){1MI#)aUi|ozyuj`|J6b{ zBC>Ef2TEw!pL6779U%;_V-PG1d~SkQ6iAulCm;fj!a?;SzvUFjs^3;WlY8$~C|v~$ z;6fCl5QQj2AzrTtq9oEMPE^xSUSZ%D8+gQJyn@2ejI3*Nt}t-<3sQIoUTQd= zWAnjgKkjEVT|*CaGn8_92#)P`4%`!{zj?6pD#ts(PNJLp14DZfxK5njhY`A{OEyB&tCno*FKAaWgqEEi#{NY+>jUhy{l znO6;?avX5J8MoCEthGD!tIS5&W5Z}k4XISQU$ z3Q~7Xn_P)g+bas(q+XK}!!UDv2k&pnad4DEX1Ng}=hzI`UZ+5L>+v0%HO(z*#1W7J z-*9M=lSVj6uoJF?sWlAtD8e2@SltLG4w??S>uih`a$!YU2q8_kFhFzVO%YxJ;6aXX zI|d>^Sk4s%!R~>~@e`yB6a*^QL3l^nDIK|Zre#@JmPI%me$%RC6`~M@C`2LN`jJkj zNhXt|)9FJN2$p5h-`~&Z=qSa-#e~D*f@<08fC5RU(+m#}lTN3ps;WZQ^|x1nASGC~ zh2tpnkl`lcUP3N#Jqe_Ay9|FOab5GENdZ&0H%H?@A+Zro8k|v3qi#`P z4SR&-5wHiq83HLl_c;flT<1WBysm*)90=3x&|qX=B3KXzJ76*DxnJ8NfjGaL* z%sOy{@FK%A;wwZU3Q>qc6yo)YR4R4Yj=<>XD9L1!;^JaTOH1Dri7Ri@ZVtf6$OuD2 zLzI`7AM--&b>SdLDLi>n$4eK5he;60DkyqFj;%}Q}d3~f}3sHzd6rvF0MLZry2th0s%OXMw!Rx|7h{a;0(`iOWM=2{S zdwUfKegR;6MrFR)kn5!EbqNA8qe1CVAw+hT-ce4TEUM!v5c$SyZj$a1jeYKblvxrq zL3vZZE085hyTyfDv&bxA*~vMmW%msskRGJTt?m>;dy^y^LV>bDWl$>VIwsq3ut&g& zBb-4{{Rl0C5MfWgG@RugAj6(2k@SiHGayr{2Mn~m;vm>L$ij*AfaIxohZX@xQV11} z#nC7V-U^BSTWx;}QHVkmf>(gOYMNH)9J~<;xvrz@I;m9Z?P-*jl@$$`=qSLk?5w+} z45%4p+-(A_RVj%=)Z zj>vA(FYyV;!GD8AgBCDP3(SxgW))tcP$EFipe# z*)%Z?6Eo!g8w#12p%5X{BpePC3WYFD^EF+!j^kk2wg-W9<&+Nv0UNviH-k?~Aqr85 zLKK3xgrd~n(k*{;LySCFj+h zvoiwFAR$D4Q4si92;nLe1u*>n13bH|a^0IjRGOU@)Lf1vopi?~x`?^bG>hHmJD z%n-V+Q&Cw#Sy>sACQf9^l*tqq7gJPJly}2_<$H#AE?-v>1a-)v_=eom4m+59>4{^k zBXG!l9RJw8qY6N8lJ5;aJ{}+N*p1J(!FL<;J>C>>>0qAsDxBd9@mB00NEfbyXGZ4x z801udG=!8{6(Rqkuq?}c=t_y>xZDGul+=izfu#ZiUj_IMzWR{z zItP9+A$^`gc3F`%RTExk!{3JA={Tkrm5Yf2C*>NV*$LPCz)2uf65$LZ)QAf~(hSgb zlx~0)0_hsb`J4fjbu^Z)LXj_Jip&|F`OqTeD--$t2C9H2dToB!NAJcegbSM!uYwNo z8WO`}GTH^SwY72QU3ar;)oN_pCYemq*jOJhW_KTUK`5br&8O38QmIt-dRJL*iNNQ) znTOoh7h`fC5wPtL*#}q7q%n71{o)~&N)w5MnK^R?$1h&Y!bJ<2G;!h)-ZR7-kSDyt zHePMAqP(PDyh>Wmq4w=q(}fPZkAio6Gw84f;AkA5Llntx)PWaoO~<6nNrUa*(eetnLLkZO_byO7T$XC-dI^x;B!;M2AJ<7<)AVac}>XHzK_QqY8%1JQL zK7uONQI^8V=)@XI3FXy64yl25x_XBgPWy$T#EitKYHFa&d?(xnlMHu`kaP@U^{?0Q z8JmbJ(xZcn3?`73HI#%jUZ0_nX0&gZ(NRfBQ#s)=O_J2$0eX6R8BFDTeKez(s-{ND zBNF)PEz;*D6%RwlBZ^))RK7;UJOvf5etdv4Ho@25~ zd0m7=mYgi?VQ}Iew8-;2kR}MjB_s>O;~emTRJ^XAcD2q3{=$Fuz9npM<& z^D0hX)Jj!$);B@dmWR0GXMZC3f#2}q6Dp_-sVulobUw$!4?M>ck#qU)%Vtm<(q2cn zkwQ5FAxG%m@f5%N!gFjY-$H9^3zp}hayTizL(PN*XZhdAFin%jhI%rY4A=kVuiSR? zovirad->Sqmr@)G1@0x@5gp#i#`}KC|NNwz1^@bgTyttQmEofdxluNqFWk%TzV~7N zW8Dl|L=wxf5LywLou~1S_kV(SpE8dLrh#@O8IO}8oz9R{2E}1L+l@VV)>I%wlA-a& zp>XfP>CP>@@Zj&brR4AV@;OtfkIB~=+NN+fZjl~+iF?2I7^xGQ(ZmQn&y{lee_p{n zL!fyb6(>E)w)=j<4}SD5Zt9ppjh14hU1#!&OZf2D{((yt)Kg`?&23zqc3!;aURH0b zWyOD7{;H2prTGe@St*p2WF#Xn43n@SfdrjfR`THQR#Ni!|H3&_W5ndqy)N9Z(8HF; z?&JPPG*0=(dstE)!N_)L6}uk0j^F&`YkYV6bS9D@lL%2h>2$98#y|6(WfN(NidPt~ z3ak{P84#L5#Ly5TP5-_Zxc3LQz(>E#d2{QjHeLsqop+AX1MRH;>%a1qU$5b@=eM(Z z^(u}({`fb(lb{q*N=CYN@aT^&;lFOT=(S9AJ;UCu^Z5Ipe}=0*a0>H_O?N)B5N{)h zk#gZfnskZ7f}DC$Rz6g?o(Kq$H6yeAZiD~wq)vSw1Xm~4@eI>kW3{YlnFkf}6^-&{ z5*68wgiK_+1A_Ij#Ylay&l;C#zy4Tq&k(p>ynni#*3<4_<_mKsgC;;z(x* zp#~Ac0jcA7CTK3SDC{~V3*CJvN&)!AfLj=VL@1Gi5oKjd#h4ao;fj5YnzTpnN$qs9 zZPl$@`>C5)z3?2a`Tl2^UKz!3fcBMaw0l|CE@+qlP((OXPt%;+x%26zOsQ|6s$TbY z$HC4d7--u`BH>`GgCA&#p+5TTbWUaXb<5iP?o=7kXeEtP?`GZLEHW7jDP2ioCvbhg z6$sXrWg(@cp}~bk{rLw!WLjl8=bd|QU_!#ZygIjSV#^ahBHjA;-1Y1x-gjIHmErKw zIo?4yXJV9O@nSym#cy);(h8!cj-4E){fXc4+ixu8nTu}abMLv36IvD8p-C%l;?%o| z=bw6#Ye!Gwdza3pEUJ%#Q1X+VD4|e2&2w(&j_f!zynO>@XGjhnpi^Y9oi{S?RVXLL zNM9d`)B>h8kFcxzejZZqx97+(D#kFP$3=_k|>eJ#glYy#|$Cp$rW<1PHpQ$?I` z@=3gFUUl{!HF%&Kk#Vw9Q{t$PggPp#bhOdCx$o)a%w92>vQTa-nM5zinydKy6(8b* zOKQvoo;cUVij=il#ZI@PQK=5Gd?SlHmiL zkg|hH?ypOIm$E}-V$1ob|GS276~~y~+Imdxr~VclD?>WDlah;m$^UouJf>FbY`y>I z+<4RPxS^zsruQwTvH(zcn>i_~+|0e>D9@GHZ9$?y>Y581^5jshfDxMJdk#3R;h73} z6L=CyNGV)Cg9l6UI|x~lG6B9p7DD81%eHN#2U{|9J+E`&lMsDH9^uKR3J=`m6CjTr zIoaJWsWK>)La8Luj(gpMB&axoQ5P7umQH9#zZdAj^A+qNuS_He|J7h7B&&}mzmW_>#!gh&OP0W%Ii4( zqD#2#kGt5vd@i%<>vQk`A<;rnbUF4$?04pLi~!c<^&I~GwN+lz#L^4S<$)U2L=Ng_cPZdHC@sIrFTuFf}cZ>U7b*ql>-bQ=E3;EH?aR9eb{t zLqk=V$kC_}#)viOWs{jOVMUzvRX%x*2EENb)b|L;cbX>FmYc|H^5VQM*m%qa1$ zUEDt~pYN!{WNyMAhqWxe=u&PSXB-LyLNhV6H!8Unc|JIrCQ(`m)8@`(c-B@{uGvQa z;!2{r?)TG>QeoCkVcOi|Ic}~AOravu&-wTLKOTMIQdUf`fOikeox3gzgDKi#k^8T)w2AUKe%u&1!_Z>mw zj2SFizMkK#+)nSw&6I{h?wo};r)E@5VB)MrESg^dOry0j&IONN$z#u7&RMf3P+vRF zcMHA~?`F^L5sF*W*=s@wfo7VZxl-`22M@=;uSUwMnS0KAiB?zQH@h;K%rPX|yWhQX z!fX~SUdrThm~5TE?yZmV^noGL3Xu87BgZYx=Z^V#+QEVlK36PwUpbfyl6RLC0ukV} z<=-oU>g8{L2-NGKV&roTd`OYXdJDM3Vu@02Vc^&{!Xqd9j>?YXU|AN9ZD-|6ZLa{( zq(nE(>`C$y1?8x$gK}_YE@ysbX9tax65VrIwk#Xlw(^vW97lO3Y#u4mGi1vuCLJT; z2p6Ac<-v=TlSDX4go?Y8rUI9gEKQG)?3vuKnf z^z2^41HZb5XS;_<8xdxm_c6{paSoHqleDi}%a)DXNmLiJ@vc?uXFeBxb_Fvs>v`z* z2YG7yFpjEa>hklr?ENz-pLQaP%qMY9{Q&i)P%biT+PsCe&prRvRE-g?xPUDUQjWmX z0%N0ZJ9|31Xq#~fS5Jqc>hE&@^CvU8qKwuOiBkJ{>46Qj4GPL;Ic)sJojjiw=oK?K z{XLg*^4tb0wRSe#{}OFOhg(LWP$)Y?CY>Ugaws;zK@zH)$&yPh<-$jP%KEL_X&;`? z1oHrUp1Fsg-1Y+f2}L+Mfn}Fp&gqLMQr-Cs58wQAzIV%JbbAZ`d|)mozwaNpU|uDa zeJi=)wuiX?h5Z;t8BOy~WyQPCW@&wl%IPO_ymL$5I8*_Q>bSQU1&Aa)JD%gITW{g< z-6M>u2+;|ram8gPbKIm#!u~QlpW~@pZszgbapJat8Ck&jA3vWHD);mJz4!9RmHW_T z5w%kmbLM+4VOgu`brIYSa-?cHlP0vV?&%lV+GFC-P zZJOaw2rJdYmU|y(kFDq*?PuMsJBgin0he60gogMYp1kQ6Z z+(M}kAQB9BuIHg&-@)pAz4Y1|^G{kzSZ}1Js*y9#o{GJH3+o?R&1g#nyH~x)%j=6c z@pG4Q!EBpN_us*<9@vVe7g16>hcn-QDJM=TC#DUu>4C>+PbL_&Q@nKNQ*>5MV#3L1 z@ty^OZMWXT!|Qf25Sqt{mz~WSr_ZEG3hbc+Y+rd3*FU_4t`P@I%;2o6-o<$*%wl5e z%dA`ZB3q8&_=s2~t<9ATT1htF|5MhK%xA{JCCqOK;Q(@^jos^><;G1W^J6cw@}c{9 z;2BBh=KI-s>8CmW{H0VQ5PF=U{j0h8#;4iR-pNpSE@xhOE~hS?Or@g`(q?e~23Fnj zS03Kd$FO5S?TK7^$?2Rtx1I`rE8g^+mJ0HECtSn^Xt6fl2 ziI<$k>8H=4NeaLs-nX4+Z@qy>Uh3dLVEml1xP>z5Ft~pU>mOS~V&((}9$v}%joaxf zn#T$6K8w>&pG}hlJ!Dc=U5R65$T$k!Fpl}XRH-ypD$eN0FivrjojZ51FHyzR<|ZmM zo1yltY#1}4^_%ItS2feI`rSJX(XV0snI%;F9x3B7wJlX;WZdbs{&dmGrg1(B8 zQeFYzILLr3p%8*hCPOljz_x8PT}Mipg(c~l?#&gkNqb=%msZ)AM4=R?9tG^9Pu(4IBi^^3>Y6K!Vh=_j*1 z=3u9X>5&%02iCLlh9B_zmx^eaw~*uJDqgz&HXdEMjUF5Z+SYQ%H~yWU-T5+1pUZJe zYAG7n$m6#@%+q^9OgZxuPHHKqBH2TmEFxSsk%e_H^WtcT8H-M1!TdRdLI#6F!`aD% zw^G=)z_QZx#ilWmuyco82!?m;rfcv3m9v&It*V&?OC>iyvYEEtVJ|W1rhWU}{P?}! z<+_{J(mi_-OBPRK+TcU{@F(~4)XrXpMIQ&Y-^Krpv&{efSi_ z2jYWl+Sx{TUxMk&mvhR@GK?+v@T0q4WY16n$LnZ=!lIhSh8pTK8@TI*c2X%PAd;a# zHwlHK7`g_jZaUUI#pBN}WyZ`3ilRg8e&$Ag^qoKP$hIU6r_E>9)Kcu;&8)on=X~#m zT^J2>Iql>VnVML|J%7E8TUYHSE?~5GE30q)3BO-$Q9kWBPCIE5z0X|FkG^^xcf8m} z9Gm#iE}s6yHGKE?Pq9B-&%(23&=?ETyYB$)`?{F2{A5m;-9XL$d->sQYuMU70>o)s zcL&#f`&ZoXbTPsZ5_xLqmNFljfbk+}0{$CPQofGc*X(6z*bZuogKl7k!swbnSR?eTe~QPSm`>}| zG8&`p-2c6sxcB)TbodQ}-t9bp>kqhZw}RryOmAtRrLmFL*~^$Wxt{WnKuU|z-gP{B z!$WMQnC8<@r>6U6es{}VJh;BoThA6&-t=?6bK@@bG2`d9Rl7-IlNj8|(?9(P-}>Io zJm-|sdd6u~ce(3%XoI&$_Amq6ALfRi{g@wo|9{!KZQDVT^KbZlF$udLyNTal`y+nv z!~f+!fBqcF<4)m{lO_=j*tCbPDsA%w|ee8;||sHdb%# zW|QXJ#N_ENd_}pK z=|dNT3P(tUJkCr6m?Kr%dF99TsiF394g; zd+rkZd3obb+J;+MHYY}`GEK|EvsrM{dUkX#XU>FDN`=G-DUz7P>d)ZaS1)6R8E5Fl zGB$tsI-b}tml+Mkgd+~|ahBO~^{;q*{XAwiR}z(n@s&_XE@JU1=P*2+G( z_{^Dw|x0<$teb@5K|TDVHAE)|FqVnlyn)vm)Gk*Ln_|)JRD<;vp8<&=i@gPEpJpT)aQeh=?IwVoKmv^{$>_x#&hivR1s z`QRl>nN(&nw6uJ(03+<(sjx>4%(BIt`@wgyr~-N?4bcAEt!&-U$r-IB z?0@MgZu>?%Q-A&6Ty@@jYQq*oo2&TA_wL|{RTG&pZ3z)w$0(gkdG!*````t+_55x- z+cvZ_I%y{5O$|(5GJ)UU@dEA3o2f1-MMvRaV(nSYllRn6zORZ*&px)^`#8gwU&TrD zCNMX=j71Y3=jp94v9)g&b(Mqkv~S_D`y-t5{o`1?q?Ve-PVVd)W%fxI^Zv6ZAW75J zrEn4%ls=a;-+L*iw3g8~aTxxvo)_1&lU@*^cgGs;__wu`e)F6845{{fY%@o=F>|U+$ zpWnKN)pI6t+4QB%YJ7^PcXcpG8T~_@Y#2R_&raS%Pv0pQ8ZMk+GP?g6Zus;UczE4>CQYcO ztjzV&6@>!f@Zoq)#fH}va2z-B_XnacIqJi8l;e=GEYj(Wr~F}H7=|ljn#pAO1SqgF zu3-^l_zGE)v8QknEJB3HZ4)7|Gns61q3Ifq1Io5R<>XlLX-0ya_klci9Ry$F9c2L- zu+s=T;gOW%;0z&E%Htg9o@$Y2hUUYI5LwRyAp%_jp?QQlF^>6-I#w20g#zJlx7Lt> zfrb%Jk&yxi(DDJ4?muQN6P8}YRmXdL8eyZ&Ucni4KV@h8Ubd&FGuJdQj3UA%ar%-8 z9DB?@r_)%rLvh#yElN@C49>r16Pq7=h`T!KnKES#(`M9D*S(5OTi0Lju9#?jmmionZA5ZR_#T`CbHz>TJC>gCHEE$FteqZDRbsBQ2?Pb zs^^}~eEmA^-_%ZJQOR45e;`mOX>k0C^ZDrI%SgAsjPse>c)9y5Cf3EM(jeKkhL@gQ z%{@D2QoZ&b?$SpYYU@CI@(~_fa{Pedalo*~^Zd1621$8MG~Iim9G+ zCa2f^j9u+}*q)xo+*eZn>Dx!g-Vwy9XK~SqlZY4qAu4B|#7Q%sEj)F{2As$s`?vN|wx@_;+a{g8YFs56qiz~g=N`{V zw>`nS-W4>IMko>r(6Bq!^3wCw*!u*wQ$f?&pWq80Tfw}tFlrPWOXq}hj$_8udP)G| zT@3Eq&4#HL^M%u9QCsGI+1TU-%$vV~ju-cHV1F;A`*yLeY6YL0S5JA71Y%5GbUeqO zmgc#%4>6U5qsutwtVJ}HN8REbLG7eUy0>j&)ty_&7^C#HcN2Mblo2aKk_aLlW#;L} zbNr&oM3ES=$t=0xbl%Mc9N$t&i2$djfrhHx>>nCtK(-QVn!$xvJ;>U-?nB>J$%N^P znNeLy89?o;I6mk69bf#|3g(uD5k-qQ>69wg@7l%Aov@&0KfQbQ&^GfTKGE5Z?* zaRSR`tzzYH51pfmX2+mx@(G-Kv1vmcrQHTflv2Lr<9y-o&S6n~jEFK=dRj9ZpWDTT?IWCGb}_JL6I&-;#<`P< ziG^*ja^|a!HgoIC2m!TIXESqZKWj!3jE?p&*tVOOroDU2_*uxj zc^l|l+eZ74qS!WwmM`F(kBnK*lmT8C8f6%WYB9>DoyW(%b`HwRqkP%uW0l`%5twq} zHGJ`krOatCN$!4vn}7B*zW2)^s^@;3iH=63XesBcSV&`eF%p|h_b&FeDe6u+le3mI zVM+x?3DxsXXGQC3_6&{CU(!lr*+ZCXUt-Z65aeVdvL@Bq^U}Z9%Nt%Wk4k3lW%4EoR zq&}%>I9_)F6q-j8*2WNqgD%R!#99XS#rAv?bi=^1Y#iIcvTQU>q8p~y$#63yU2~;R zgPnzA>s)Cgl;svOj*YN0V5bmv+%rY90Rx2&nvqo{8XrHBUnt}X29e__C>5v;RK9sq z;pbQJv)_nOUKW28>Ws1)sw$%tt=hrP-W1cD3^bu~GZ;Z#dLfWmg0Y5fv@&n8WbOWT zcJ6SPJ2On!te~iL6FWOPv8;MGN%D%ufq_BN=@czB6=0N8I%5S_ecs_$|NAF?^V^#- z&iWo7{m4f-uL6WK0#856t*IwT#M5MyNl8(d$)`@FCMH1@5iY5us$BOZG)+Pc%eeSs z0_)d*;JSbLGJjt9DK5S0OI&_(3#}D8Xf4>WA&Q17&~*pfd26+Dh15t4^^qR!qpExY ziTE({SFGdKjeVTlT2EDZn*Cchv8Qb-dxzofZ#~VZGB72CmUeRAO{;nDNmH0wE5nztw;^c z6R%JTC@H7bsHD=6NEFI(Nsh$3+56IC-2T^_x&F?rP;X+73XtlgQRE3=M%pMo3UKRFxM|T?7j9mBhi2+P8@EE3t~wTY%rp|--nqtQXUm#$sU za`%llaot~@!>W#;uo>WZP7M%Vg~-1xA@JmkRhHibAeBus&{{y&zxNAenRNzrsm?bMHv(3FQaM0%k18=i34TBY+K(>Ehvh*H;rX?ZD;o$MYCg~o0F-j^v1jbH9WxRXqw^XD8(9JE0hGJhK|c)Qlgxi z>JX909@ea!$)xUWw9H=0l(H2(v8{)mjos{zl@Y6~pfub>)rlAJ5$W*5Z~lPqcdVlE zlAHO|d(L7}QbV`e*>PVxf828i{X-T=gYue7SlV1oEF$05^Qijk!a=Yy*~Hu@1!rME zjv`~Zg@F(P!!$8X6Wg{)rPJ7!jnrJ3Q`@q=#NU0`N-49P1wWzp3jygMBUA#^ zs7qLu!c{I3QI~rle9r^TD==J0kwl`DbZ^2)@9{Cl>mXZ{j8WbR-be~RzlxuaqKXj; zBF!|am;Hf&Y75H1{q08EIovo=%aT~QCwd`X;?$*1{3EUhx1Yg zJGO3PbjEaykb!9`p4>$wr?NpLmHDBE6~Z{#N(tI&gG-u zI-QTJFLBTRe383;Uq#Us(i zuJc^xXLJm$k3Bm~cJEEGXmSX!Neyga+paj}$JbI(8fBDT_U_aVT4w96IOU6LDKCqn z+8u&t2N)kIB;JPob zBy8soNulW&h6yByufLgZe`OQJpZX$y{Lx~n2RE|zzT3I}=Ng8mIxTfGI}W#R*~-ZD z8JGfukZ8J&u4|r8j<=1XVxlD2zGEj_dg4rPF#(A^+(S>oMwk(zQ3KsbGtk#d@376Z zhyfCu!CvB9Z{>&ISj*74SM!rqCoq*ZUV7{fe)ee_L#TidgUF81SWOkJGneuBs^|IW zk{T+jTtz!H12YsN910z*BNGo1Vcmc7qEi9NoW<{oC8?+*S_ejeXn{R1Z3U9`P$CqF)` zop5%^eBlmp@Q&x+lM-nqNvCX>as^-bnpo4FvNRcy(M1c`T*MJRMdAVzZ znWYh;QbUdQ(wE3!m4qqQ14XSGvz{@^K}BVyOq_o@&pq@a9mh8^xx5U4D<7^KCZUiy zj*76LeAZGHPCmfe_4jgTX&LLEY-0I)YAA_%1)owlNHpEZQ-*V^wS#5A1fUEP-7u+t zZk+KmJj7_Eo)Xl@x_G8CUM*q zXY$q0ozJW?6AjnDMVdtvh4i;Ayy&Qtl$C>*h?CVX*F9pe5CY4xNTpKPmW8Hin5K!Q zX;_v;CY|;?4&0lpGbZ7ZLSPt1Hqo~%D@%g**I`?h+rjXP1)uC}7={aXN~c{lBuyh6 z4tXs$JI`26NOve^G8vM|R8~Fdm~|19LMhuV1XKz|3Z+t@67CCJ*JGuF?s`k0iNJ$I zb2|%pICT*y3dV|j6(B`#;(QY*VbX$=IscN0toxV$;7iv%!ppll7#tj+zrUaUm+s}s z)$4g?`(Cy_@^k*bPyCpBc8oBp08Pi3zJNv6F7`aXp69!uq_Ks?r+tZe_x_3-p4iT& zwjqWG`{;S`0iL-3WuDWIWA-$One3$RxxetIRh@Jub<9v1MWy8wM=YqTr)K&ju6*W6 zR=w0uA}ujZ16_|037P1~JQs5%04qsm^Ud7(_!c(w2n;huI9f(&lV`=@09u&&CmqkZ z6G}*B1mG~50o^n)3r;ef?zO z87x3F7Eu%qQ*4^p{eARoUc<9thm3!B$s30oc(KP8G!^m!ZLa`uh9n8yF^4 zHiaoCFJi^++xhKH&#?DEA4A=3YUrhN+mTn-Oa5JY+_&600W(! zYnT@5kHA|Z-Q12r^4|K?{|8Ma(0MdiA~E1%%+0Ohq*PM*POx8B85yZY%# z3Ur~cJdd30SXTK`)JiG8GvU8B@7v<@Nmet{2(7vzw8@U95iQ8CKri=JH0!Dfa~diwXx-5++&_A!eG0WP-sh z&#{&S@oWQg9Cau)mW!f5IoLu&AKJ}A+jn&_*n5EOkKNAgJr&f!K|U z8m=Ov%DVdoI$S&=x{yMkZ)5VT+&gPVsB1$~@QVgAtN-;9fOW)uqR`z>2 z!ICd`b~6@MtcjY%r}F7}cku0T#!qJ6GLDN0bm8saLF;j_l|;8X>Dc-Jf4plWJNNc5 zIM`1*oj%6*N`>PXSfhjV_w_P7*vpQU5AxU@8#&Ojfaw!Km%edruB{?l7clpfnM`}( zPHwsFIodjU>D#xHjSt_*pURdqXJQkr5kc{UDKu1%vht35d2VnnGn%TXY?{s-V>{2> z^Bk(Yh6$5n=)EtqBn}LS~k1>?Yeu7b+xNn2(?Aqm)}T*fyHbJZ^zo4_mecD9lg@ z)0>g7Z5JNoSDkJ#;u4QFT}OGd{>qb91>EApvXGiaC>+k?IarpJ?Pg?o6X{g;Ju?(S zJ4U0xMfxbfLWvB5G}1{U9LpswlSBv`gn^Q}XLe=)hTlUT(>wPQs2m*SU~yjuMB#OG zUdnrUKOZG}mn@yif_MKDKmN=6S@hJ!Ts*U$Nz-RBdqM>j|Fw?oqK+kXHgyYjOQD>fl%*GQ&Ci!JaP@Iasf$rmQ%)@Q1%Cd> zCVJ3Z7@?t|`z>%yV22}g-1HBeKCPI>XcJ4n{sP0NUdDy9A`}|{2DOcg`0$w%sBfLa z^0Uw7oSBksk3GxFn>Mk1$8LJMyBHlE&E5loMu{@OdGcSrqMGi_ROkQxx4ztM3=Ivj zZEr7wD#|B6|7p%Y_gp{optNEh=YG&&+m1avef!<4(o1NWIDuA88m!42Ttn*qa1w`NFviX$7dBOw*#pT(j;Iyt}cI z^7#w-r_~7(nO0hSh(dKemCdD0`uh1?^q!CLzfTV^(s~+a&u`=2E0)q|7@YH8Kjp^3 zd7N&WghdYS=8nUO)Y$vku%jQP={UnL@Rv`W#_S0bm_BVfv!+&1dEvMD?aD!_m!Hek zpFIxei|2CclzLhgp3ZSUbvW_-vp97@JupiNlBoP||{ z|MOyI6oonNL!aQgyXu)kDP`Wy>4u4+Npu;2bQmV4q2;`7D<}8>^Nm$EvTZ~DwSTyng z-#B+RANt;%Jl%%t#bUU#?zv8fj$wq*HGvW_nirkQ2fqA4CVu_hte8~G^o2{9_Ak3= zU4Ay_oY0DiKnM*p6dGqerfck)s}S7l^g}wEckZXND~%R5&<)UaneDlZ&8?L(n9$lt zX&KzVZG@$ZW)q9L-3BFf#H1N4R4?$0%NO#2uV2SQdleQsAydc59y5UuI#M$UnG%Nx zRa1}W@_+u^IOFGB-hbva_h~ORjF2(zdJHKMW(1r8wq1D^r?l2n)lkFw_3MwRijj~S zB9-CJuUyEoS#y{+a|$!gyNR7kKFQ}laV9gQM3)+d8N$?MZmgPh%suBKKJlRjUi|n; zET1=x$~hNt$*omfeaWdToK}Ud94MbiLv;gZlnINp3 z0+Aw8eb004Y13#aE2nzVd-!Dfi=4G|GP9c|vG83V=CfC2xZ~VOG*y)mE1kyt6TZ)# z+qxL`AaQToNy#x&$HAADmA`Q_P7??L5g-Z_d#@N!3Y4BRk8fV`$sh2Z4_r+o9Lf@u zZEsdVYLZYWgsy2gN|8=y$Yk6q*6=iWl~QCf7LIZ-ya%t;wCq$waF#F&De`6z{Z2rT zbYoerP>p24@7Ueq^Q} ztbWM!g4KakT?pxbEJo=?I7SqqM-VdX-I=AwO^_g5$7JQJ8c7X-?(!9s=9;HTUks*81W?@G_?zLV?!x`Az#XY<96Ev6hBYiK{)w|6jfpo$TJ&M!#jFghV+JDkn74Tpz>k?x1flMX0fr zs<1=~2Rq)wzTNF~52bJfI7SKO^%Iz0SCo7BIvFxMZ|1wd>!fDs$*fpVL|9`c5L0mf%Z1`ALz(RD7*I@JIhbX`Lg&q3T5SG zv^Lig^17Y~fk^k!{lXvk|Nao=jB_S2ZT3WJN*ige90SR4EaE+T*fnfYUe?W~n;z!r zwI!VRwUdczIupdlp@*RMtgf3-Eo=4Dhr_z zs-Dc0mI{hAe}FlphPybhb1z*<2PHK^<&{K61tm4*l-HLLA;oB42W{Ir7}5-4jWcMj zlBDGA#STJ<}=dg}!K{_`uCTQNY_pg~D> zGj%1}!B&<|lD<9d#6xA2)>IMGeN9;hJKf8^m-o_>vap3h>1EV4H`82GKu=o_)U{Am62_DO79(BzXy4aKe+IOWNhnr9 zbQofjYAKKDjP7k?hzKQhb(EW+(xVLZw9!EwO;s_9OabYBIy#1l6Qj8~Lb`W9yLNRm zYAYA26|HAdYdy6kMvj;Fs*X?KNNv1{Ykzq&zmHwUFaGIrW|ZJ*1S%Y7kj}09=;#|p zRW#Aq+(@a_OK;~8TEhgYiga`wNcXdMe;gvE)YZi>aY&DLvUgJ(eU^igp!5owCN$Al z5kX*+80e+1dkC%maO?5hkkfs1zwmp$@`o6ge*AovHOCp~cQ7hjXf8httA5`j-0;h5 z`Ja(<`SCx$kEL}X567*5QMz{QWq;=YcC4EE36rT{fWG!I=hQnF2~k2rb2%XnKYlbE z(&LQ{e?7!#YAMDZ?quJV{q$SzJ$~}!$&{CuGdMVil#;TtvhlytzI|w#MqORqQRN+2 zi9vezZJ}+z!g3@Cg|eemw6xINTuu=->5)OY1IH&Ml}GSSG1Sq{o}FEc3S24fXf2Z` z*Hc+!xRc15Vzj%Bj;>*xs!2?!jAD=>-n*NfJ(7}|I-07B(J~_pcJF8R-ae8_p@f83 z6VqC2sEq0$(hPO(W6zE*Mx{VG0;!c!H@$_rvM7dq^e{$JO1itd85tR&wYBw#^G^So z{Kb#I%{8C>=dS>R-fIXL@m_Ht0i=Mmt9pY4*xpNxc^zF2f^C6mxGu+;Oa?3CKCFcl zn7WDP&9K?Nx{+R@4@l*;lCq&J(DBe%I`ZH{uVEm!7r ztp7nKok4oMg5YO;VzbX#c(v+9{<5i53d^!R2-RzaC;8}68|9=?P6mez!bu^VIKs)n zi_Ro?nImlM9q?Ki@tj&qLOiKbF2@pBQ$$6%8cU3+2M^)GK z3op8B)!o%krEmCzO0`PW`|oo0^$l#N_v8xOM`&h|5s?Pug_e(kE&8I^<*T@3B%y2kMd5z7v;^^vt779HG4dhq&- z>Yj(+W&i$fviD>6^8=gq(6Q<2mynSjVCy3T*Ql6vBB=qkZM01yLALj5I~1mSduk1q zPXQvDB+vxA}gI39&3aTeGaE5ylIf*jm_h)pt%0Y@$8&6K0H5&sI`vZWkH4 z1~RMni2NpYfU3Ragsr z2;~^q)b?RYV#c}|-RS%(+kCHFaW_!$5CU;iedunEmNP0OZKsqxqT+F#{~C!QeQIl?_%BkP_+ z4$AiKw~ipzF~n%cs^OUf?cs{|a+E?j28qs5?&%!epef+; z5eR$`ZVV&sD1~iX{)18XrvTDFAuY>7d5|DoH+;_m+xxv?7{1%FOB{9;jar3)@>C91 z-H#o=Sa21KY#(>oO7d+FO4PJ0q$V+R!|j4P4mgf4huRKJX#cs93a(r(Gchs2%*+gl zM3Uj*VPdi9yI4^Nl#NhLlxl!o2dC-!AJ9N3;Z6vI<`R*V)^Eo}*^KY( zl)Z-^{Kdb+L^SI<0AEE0!!Ilx3#(bDTC8I!g(U=f>)871Wn(p~R7)FdBih&WYCZ_7 z@WX2#pY`X{I)#|_^X@9=?Ar72N8R(#bO)x04PGn6wa>3L^r@?CbDe!s9>Cp)#<-;p z$)5Z9(ZBn5neWIDa@H47SK*AY(cd@TFL&}`Q=C4|{;z$LgR>rw!#T~7Ls9Pe^r!gb z_RQM%SbsfVAJtW@;yb{=id1Gxa(@yOPqW4zwpYD<9zjnbM!v*bNtvt zy&HO9wBOU#9G`XHd(H1|9dbfoY+4?Jm87gFSQ*A>c>9JN3QbkjuNpnLBZ2HuY=L+YBCwUXYJ2SUp^nN|Ve z5tfys-1pWr&*wn-60EHYcYR@SqZg4L7J@f*@p@o}K1-AG9<8M4Lv3xI#8RC=Nbc1;P#8Lpz_~qdgfqh45q**GY}aJVQI5yyiAHzUJ@poVei!=T*+bTfILwuumHwFNqoN zWBapxH@**7{hW$1^4UH5l4 zveq}SK5cT@c72)UxhmZs`-}X@^G|YLU-X8L#f|;$`uluC?<1~ponGbroo0#Re1+J( zKg{zVeVT`d-raY*^7y>7?{@RY^qt)&-%ZlE(Yrg2!|?Dh!^6WH?$3Hz`*(eRy6!#e zovqzFZ7ki91%lhyQ=THgDjcY3yIceX?leKV&dAD>A#HWaG+pzF&B|9nP(Gg6cTL7E z4%`t?3yB~+!m-`vvW#!w<7x!Ezi+7-w1|r>?m|n>w6)*sI~nc13mcuVW|>_PYC$(7?m!-S1cHUbBwY?NxEgoV&F&?E@mg%)YD?Y=C0eRJ3EKwSO9 zL{J#Kx8Vd!zR!8U*xYn@iTYacWZU?TcR$;2J*A-ce1SR zU{bKJzNu+<<^(}0g-~w7t{jEkZ2IYuuInxwKnNT!>2KW#TZO@@GqPGUHE2Dj9cNYT zL&z2x*v7JyZ*(T5aIyag-;_iO*%C%WdIl=3$w9lR+Ir))^#o|u#)r5vtH+gg^@z>y zCb>`^Ze1uFr7XWVaJeN7&nQUZXwsb`V0g~St)#yNEppX0Rtpuefgo{^z`nPp@=h?F z3F4L{TJL(BAZ}-8J*2p^?}x%uiVD8lhbO|}Fe@u76pKaD>GW-ryxxh$L9tlGvMl29 z_-)ag(r>jar|TskJ==PBlAw7~gKna&P>$_Q0Pt0cS|^>WKw_`y;7hs6HLxAqC({bY z>*(9Irx>Jsa`7r}Kyxu?jzW{dEe_gLi(1?T-+axoux#7aGWV2~Y}=+>E;Bnj3qWsg zFQHKAiUYVthy7htxk7kuiOO-YZ?=U{7D9Ra1K}XhQOYX{JmWK;ge+XKKB3x;b=t`W zt18;9Vj@T`-fK%3_2KGT2XT9yNo|~lce70px9`2;`h1T&;~aiJAsg?jU(p@<-4cle z&1REgv54b1n5KDCs*XY2*tJow*D06Fgu`JHiNqaPAb3V;tz>((1Mk{VJ6<qA?G^$`c^z>VKIA(fw?0#@!h~9{X%#Ll6(!$j&G8BfO+$H~ zVcQN$IS76Adz4BgPMtc%fddD~X0v3{X-w1H_yAso40qGh0~A7ekRmJ;F84sv@D!?P1|RYc zvOC#W4rAp(?;5o66rx`5W?p+v=f$v z@4~F3l;dlq3tTx=Z2SU2NQt3`&~$eaVcRzI^9#KF_90$-?KK{K~<** zZhe8EaFun0z_!(zguXQ?P|8&vav?^_pAhJ};V1X26w>uZu}uJ?gbYxO{cS_>@_>x&qt4T=W$AyTsjgsnS+4A=|hK z?NfvnliO)4B3gw;OW{YcN-l0efm%jr?P^3qx@ofG*fg6KN_pmLa+S2}D;IgtCnXdT z*HfXjzpcr}Dg?ywFr!xzmQ@?fXboJX?f0u1yW%=F*UH6idC)9JIS5Cflx&kI)jXo| zdQOD&%LLW7X07P~0;H1bw8Vpi^t~wc#0?e*Qc7~U9DDZcq0wjrOBX~CK?D&5@0CJP zXJ;p-X$FfC#CtqJ@HO{cXpj)C;=olcQpz>OXz>Bodkt8Y)y4w=!%N7^l`_R*(NCD9 zl%!H=5{bAE!LXW5-vPN*AlSA;ty;rzY+qh=bsgdijN#+c~@hEB|Qka63VuR_~ zDs%G{W*6!#FO{iRs|Xx)Lnob0)7_J!w>w5>A%>J%fHAzqGN(6dH4&_T5J3bHL=XXa zJcv7pr0h-(G~G4Vux!gs#yuYb(Kar(P+C3m4AuwXc1RQn|`APd`m>Z=Y8{ zXtY#FTkxNyr6t~a>n%>7KE>cbA07EDU0q$2%O%d7Im5}5r>It|XqrZ`xWdt+$52Yq z)6+v&R~LmsVO>h7SXo)&P?5v!ZMq;Y4nXGNF+@^5fw^N zE;pE&t#bP85^o=!XMUkfBqE4LG=$WsR&5rSmnfCSNhBgXbYDMDJUT#kclwSqd*K6> zF1mRq<>00rL=Zs)5kwF{+!->b_Nr5IJ8Y%}rIBKlbKp-6EZfDxd)thSjq%DWuWC1_B83?W(QG!Em>B2q;loT!Ot5#~K7xZye}Ggf&5K*KhuOR-Nq62L5^|{49a70UXD*dFaiPxm(j52J6YROyBpT8X zK(py^?(70DygJ6E@ntgU2>0#jVq_>yCT$|5!NO9La~Bpkc6^+Psbvlv8bi}0&wn&b zDj9Yy5`sMS78MG?L?DPDf(RmrAcD9XNy^f7I#wu8QdC{jsd!bT#r=D;+2s8B^Bg~Z zoKz~s?%liDwQCpYblR6bwJeK5M+cE`guVOra`ECt&YU^J;NT#UXw==#PsvtE&g~5R zmO7G4VwOJ9xm7^85FbfA9%p!X7$GE=FOSh^Hb^CtY}>YtOeTY27=%KhD1-=bvQq^!qF2m6gnb2 z{%{}LwiL*u!Wf1?A?fOb?#?K&h~(whEEX2aoH;km!w+Bv*n5njR2f*n<>6^g|bIy*Zl6bf_} zIthhCShnrSq3VP~VMa$snV1;o+_|$%OiXb8+&Kz`f=~XHS8@7lHk-Z)TPvAwFIZT| z@Q*|yM59p*!$3I-UDt`nVx-e)e-g4DJ1(T8udkmco_KqAE z%q$f-dw!mDCQMgfoNOqJWjR!8O;*Zv`upN^7Ge}~5e&oQ7YKo22u#DBPF%bgV`^rF zVyQ;8T6c-v!SsOlTjn%~Ac6=Yh#-Op;to_Xa;FHbq`!S?pgey8U%3YX(&GiRI`2Yw zPRU}8Cqc_KSty0$C}Qy#g+hUJIzzEo-7kus#R1dg}lbL>2#XDzCIF(PC8EmEyksnu#IrKnUYT)cRZ zv9U3_yV7)Yb`y)n5EOA78|isS03?zT`ujC5ObAY#S?1E%GK=#S(lHYu1=2H)6RaB6 zp``ESpp-(BkWPik=c4X5j-pYmyAu{Yuv34(ZIqQ`V_8icVPfiQm8q0t(X@@gpOfKux)G$q^Tisup18OnmaYStqz5a)wHnD&mI(XbqZX1v35SfT7Djiy2xCc5@PIoK-qT5UA3lt3CLrY7H0NTzZ;NUm<6 z$q(AO*ZclWg*0`v+X9Q~?o-opIgr{FJi6OppKsUuPY^+D5b{ycD6^q%K8uhwDigoVD%4aWo-U`ZpPa~ug z3LAbAVKtjLw(S{C1V8WYr?vL#hR&zT)G6Nh?pOHcp$Y1iv!=YLO&n(53*X^;Z;w&= zfRk)ykMY_!zQmVbKh0#l!oua_?EA*sj5n)Po8uh%=01*Hp8sI?bE8-|&D$@0i7$Td z5Em;q<8l2S7mt-G#@_e_|Mg3+aAdAdQ{90jvQ?vYVJ~0*v#;{K<5Mg)-@!UHimaS` zng901uk+f4MT!m|&~(nGG;^B$fByUY!5997FTXXxV%6b2*&F44UUg}Vqc6S8(Ww&E z5AeiwZ&fu`X3wzyYj1IWxyo(f*y2{3P{d^lddD9kIx?T44Rw>7bwxoX}MVeL4gS-O%R4f*$RLUp;;gC)|X1c0N zPTRW+z?Mj%6N^GT>b_6C;V?JfpkDXZ@M=d%wB6~wqOA3Au||AH1<089i=gZs6EhJe zB#TVGafEaIc{Ufq7|Mp~B&QCZ;e0X4=3NQ&jigXTdsk6;hgYoaps8ypBqgQ=#t@-*DY;PI;GliFyFu5m0j z*dD2)r+OIPlETQx2x%K1&(-}}zy2UJ6EoY-maPpE$q=Tv+WEBZ`)%;|E7#y!`?A)h z##$cZ{PDMWyOd?e)_!tb2|_w87tglOT6b)&dfu-qz!y%l|FT0k*UzrLI08kpy29+) zb1--xgAPQcYBTG+mQ1p^&Sc}--}_3*WdT?;stb%Ao5p;6JH1z1Opp_X47>FZpoE;Kdoe2 zlM<=xuEzin3WYEXW7UYP(ZI4SzcBGR2A+en>!2*JunWH$2jSfo3E~>G)%M9kt2nW3 zn_8_#v(ZEd4MUfN41ME-&RbH=kZ8ID1(vO-)+}sWaTN;2n!OT2(eB95OKgK1 z(K{z8-^c_3cj99t`q;en9u~(A@aFk>dQ-im48`)LgPfQX$+ZV^zgXO z17(8*c%ySq2nmTEMt1dhzgeOvG>nkmD$CJB*MUJ?HQBz#KDH9>oBR%I-ZR!o|MpJ$ zudsJ~2cLD#&%Mt2uirkDBDX0;&i{N1%9lBQHiDk+Wz@S~TX&Y5NeujBDBgv%?)BF7 zMz)s*Mt+!k@;7=;ZtyoPOr&cI_jawjcEokQp12W6&JC=q@;<9pqEfCC-tinyJ=(Em z6o2#Q=LTvY)hW)LZ<5t}xTjzE3VG5nyl2?8_xEar%{%$t8=n_06j%>wtRi`CVEs1y z{ub84S@xfWZ9~2Ov&miSo4DR}6GPK63~z#dtM>V(?^j;4V59G~;r-|Oveq|x4F?g# z?K?qG?oCV}JV=q_C&IpBke@WUw=CPTupP(4%e#|>Rx;n}{0m&-v!=C_b(9auX)gq< zW)rK~^i0!~=Xaod!m(kRYh0UKr045#5Z*5|dds}cT|j)s=*uFRA;zl)sK|J5h!1gm7J93igp)}z{iL+;x(0VpAGL$EZ zL!&gusrLTiiU zMwP{hGt6t3$zgFf$aXk`*R5Tp$Jrr$KXhlGDo(I`bKF@dk63<|sA8gcbQwwQSiX|4N8zcuh$Ru@Y(+;WO z9NOGzP9Gm*eoE)`+YKVtb~?NJ=}Oqt%d=cQaf!K_h0-*Vy;~XRN|P|wCxH%jbD7E0 z%ji83tmOsfF3nTcOrn`i`i2L{n*t#eO06(``Vtd!MXE{>$@I`YxQXtV!mbyYTX($D z!@Z=#4))RtR#<0oY=(*>(X#z)9gJd4O>k*!o{Ef;%y%;|+C@q#?B)^^r_bX zn57xU$1ihfz7FUZkvs$2`pHEMSh&c!v1w+D77!wy?_p?jj&OaMsWT1elr@RMVfp+xMPXvbIvCj2M>eFR0oL+3V`Jk? zEL$jL5J`11xV4vzp{*7GqCs(bg7a@5;mpJW%S&(YveQBL$WHom8jXpwT%1~@XerPW zWIFp98ORV4;8i=#*DVEY8%4_4YG3(n-7p(RD1U)2BIq`~p*xHpP0AH`G@8 zMh6Kw3LzDaHP3~E7ipA>)MT2DfnIuhGeiNfvFZzq9lywIr9lHhvU`-i-VQS621SBW zG?y-M{_^TNC%og8)&!2d#Q2GeOfQvb2thPINKbDsh1dqY4^d|J!X?Hh7O9{x;vIAi zZl*UW+=N`!S-gCXv8hE?ED%J9C1NDBNzR>~rasf;;2TAjx9+01kR=_iQ=FaT(wWJt zT!R%B$Hy7FG|P$-gbmx}X*mYhlHXgq&rO!cFEBPS%d!PZL`dZO7#+?Nl^#sDwaxep z%eFu{2GLX(Lt8qCl_xoMewL-Gg_I#u-Tn0S6-e4e=FcDIz^Q5Kv#Z~$uQQB2Gs{XN zOm3u;1mHA_%$z;V_)?9U10s~8XP}S1ju<))jq)<{lXE!PIJL297FS9%^fVp)?Z-Wc zAU+H-r}ioo$nV;FB;+-uW97JHX0HIiDeaqmABfpu%&Pm35PKa1Em~lb&GPPfy#I=qxFft16JLl(Xdf~ zp-bX1149!uZFLQ}iwMR7w`(b(fM|~Hp{?vbafr9hbz>W6IA89icgq%rvl{i{7^e^H zXWyF_k?Ax-K(%_BsnP>HaL+J($r96Nj_~#|lRbkS#59R?nlz^m@zUE7cI>&A&Q!=7 z?0M%yv%=D;@A388<9y=LB&o2ZIChdZzWD}Y{U6~+`ZDy`RTfXZ$cwW(c=o{r#r;Q_ zNR0BxVE;{=N;ZwkG$+3MRW7Bv+-tTNVKAE`Ra#>9t?%>7-V))0hR|xLF$e3B-E8hP zP%CFS_Qrnpzg;EXWgtZjTZNch=;FE0K0-3pWc=ts&MbEDz;J;GpjkEQ;|KWq@lKw9 z^d55Y6~>Of&AEjR9v;aNTN&fXH^0e5XFpoQ#;K)H-FZ@_Y0mBYK6?+@&! zw}-S=W#Rmry!PTLCdxXAY?YcbM$dAX$L`M)uFP=qyIv*k1+0+rEJ~z&}m)>Hr zcbHIliCS}+%PU=5qEit*!#HyBYl6@>hKf)7z5uEx2hrWKC=np)~eObZMsl&YS z)-lFH31U@&sdXWTI*5s7rVs36@A+9u;W&{+MSQ>^G8!jey3E0^oTcNZo*|Y9QJ+4| z+k5wO^z1UBTneXY(@+;!Y(C8WTe`@Es!Sevjkl-D*x3T+@)E^zm6c_|uqlQ2>GjZyr23mTWl5-!sH)YV8i=27&Tbz;ZaaT(koo0$ouRv&#)f+3*j8D(9xTvUA zYn;zyiT4fCiNdZgGjZ|=^W_Rwqt5);BIfq{dF+{o*`1AGHx?K_{wm-7&Lqv4NhngJ ze!j?#`yXb{<}?X??eoB?&T{ds{p>qGL$S5agBIp+ftV;WfBJP^df_4~7{pQ~s%K^y z-f8mq15x)eu+XhNY%Xcx91V$4+)U{umGEsubrZxjel@Wx3Af3w8AT zF!@}a*<){WYA(+MBb|gAi%gw-i&tMdLdA$-L`hc(ezx7Qf zdq#+qYgo-%+i`z{-Pv&P;0)qJ;-rkiQ4YG$e7I4&l95YTc6``RiyZ8<8vaGOLnjuGVVLF>ML_HGEz5FYOWs7n@d^%qVsQh#f3-nk zf4%WwJCx{JFeY8siO1taqfvwq)ao{+N*zbVuEY;ZfdkZE?{NG~l2odIb?7k1FBxq4(a-XcO<`1doFm`*3e)oqY|#e8 zkQ;pOHmHJ-5+PgrV$-xrOf7fvLqB*wTRP)t^=VG-J;?FdB=`Qr5AgV~L2cm_-~Ym^ z96O&TnH-=qr2MrrQz<(8hv4iIRjUhIUu10Fz--pg?IJ6dLR(p3daA+bqXoj@6&y;8 zPZxOX2S38YTRI5KMaGUC;(}C&P=bzaPw~8HFnc7zwtIH-XTai{Iw#@i@uC18k13ZvZIJ=Q*=iIs&59_8bY>|!)u2c;mYc@$;dN7ei&hOjH z8<)dueg4P!*p5z|(hQg1eu1yQdVpm5Dfaa1NZn%TT#;n|qdfKLT_hJSaq|0r#(B+jvsj-hgrYO z_y6P-4jDUn{)Zpr-o6yonNu9u_bU5eHOUtqrAGrHTgUxr9^R6}RM0+<5}HYR^f5kW zI?TtKq=)wK{O$s}=CD#zG%H1BFG!yHu}`q8J4NyBuk!7;&U5m_F!wy(!OFxL-rPG$ z^s!Iz+@4 zb08h zb#OHmqgAuF)n`Pz$`Tt8j8xkLWxavg)n3ygFUR6>GMO~taF|M^#Pae2%5glnRa?R? z!4isM&8AYd(KSILZj#N%Fhhn%kh~hyWuu?=?OP8Jah=x$Ki6H;n}Ha$AB0enSoa9K zm|!Zoo1wuj`Vv5Oj-}Z$c5Vj`?dc;LG0;L0GNXIgkyohVG7FC6D%I@9Wr_my5L#z1 z{Y#U~FRd`YIL&<1#OUu~KrS#fRisjyVSK8aj$D{TSfL#8&W2D5G~Hxq=N7v1X(E~i zE0fGkE-(`+P>5Dom|tXWPNBt?nVFwwX?%?Nc^j1(V#{z6(+Cks7TEgWE_%{2^qb@l zi8f5R5stBG*A@z?1cnfZ#W5zQ%M>Fya%Pda*(DYiL66NdKD$7vWc$Sd3Wy|#Q!Tt}8ju}s-yPQHh3O~c#(rYT#- zn!163jar^yY`K%2ySFgdp9Ud_boSG~c`HNBNoGnGbz34u>$rCikrGYY;1Mh|q<8G4 zrlWh?C?zrD-R%14LyY7zM1`bdaEO79460nCR#~7pev#957oACqT5+D~X&a?iDOF~f zo-1Ejtm|Qt8JlX`I?Il3x*HXm<7YTt>!2eku&eV-Pc^X|i@KU-a=L_VE07XlH?XJA za&|F9C>bTfBGWTv%4HCdImRzdQ9gf?GYfgP?B2p)e+rPqx;p6^8Ky@!2uV;vL)Q&Y z?dKvB8(o9(1;(f6C{0{qdPMzoKosp8_75u}-3>0?(!G>O=Mqb|ba%H%2m(ukfOLsS zcS}h(NG#pmoxi!i&+|U--vbLXJ9Eu>o#%0U4r-}dzt8cVi0Pqn-10B=vOsdH`MTYCzA^~BtwN^B>_==&uZ!6%1VtqUQgJCI<;?ugUJwZY${^Yl|V+8 zM4^XtVLC>ww33r=L`i*32ZueG>5Vm6Is=Y`q+LKoeNkAg*3aQF&Qckl-Dk*VwOSlm zWM^44mS-IE7^k}09889(YQjZDvP7xLLl3E~mCDgCA|9DMVe()abx$Fxz7Yv(N`eH$ z#@nnnf$W-K)QY7+@PXXkSsoBy>`ah;g*H-g=|@wtSTk?pU|2 zPM%F?x4&$VqmwXxc_rG`#;TNU;VYsPAWNCMtJnT{oGw`*F*5S)_O_NBgAzYxLBDx^ zJ2PBU-gCCAufoO?8K*#BSiZ4IaSCH+emZ;GeTnZC!K-BMWW5j>ZfT+44=1c6IMk5F zKtx-!t^({cxbulSFRe5?-@yDljoB5mf~K^icbu|dU+13BuM)u&d_n#&iBOyN?ym_F zxzy6>O8iRTLqnGOn5pkO=aGv3e%owG8xpwWrQh0@K9;ho+kVbeN<1Tfq${$a3adjC z)Y2|*Z2T*tnwx7w>N?L^wD!~s-S)7QuuUY3IF+*yM~zK ztW8Y#3nB2X82ZcI%DK$WtNhr2aK;96`ND?t+dfeH%VdWCg_wWH?Z2;0HxoNP&eq8t;ZRir zOI;h10XkHb-><1BhB>KC)IAAc4KQD(+U5$098!jKC==a#?yfgu8u5NBo5?FdVY3en zH5XMXr@PKy8hyyQ(`I^@*{eVOC5ezVRB8+Yl`g=Z(fvQL`dt7Th=J;(|Jx$_1j-+ zoiNWz`Cw<({WFZFfA>sV4C4nCeOhlus>@w5-{+A=YU!EwPK>X+tf!yyzC}!T{B3J* z5aJxYk@H@WH4^8}`$s`6()jo=Cj)|6&8Nze(1((|lf^oEkkI@*t4Uo^) z)~M#du$WW!C!(aEnkXpLi>96RZS2vPiOzkAJju{}9ae5pQ3#*_8B_xxAtudU`=(X> zXB&NjZrd33M{xt@fJK)+a{w4G#6fYQq~!~ttQ-~2|LFm;L=_nlJ9!rsmM>9;(9zMA zl%i`|TQ`qynhOl4c=IMu;^jz~>96!MlamQun|{1d*l}0!&yOF(#|wOuqZ{l$6rM^vbT^$BJ_EV2>fxWuDnP8mVzpgz5C0ZV^_rT18;uNYARW z;E8Lmhp@5GHJ6y_m_jBP%7kXl(S|%SzNAK!SSE&Vc$O6)7psAFu5Gsg0RjtcEA?;r z92;ie@aiABz{ILa?stC3Vv+J?3E{7=Dm?#qBx_#O65=_9Sl;zVE-RT#7tzryNB(CnQC)Kqja0kz+WNnG@ zq5Zc<)HKLYS}FWGJ)F}G<9M#8CKeX=&rn_^6oxw%2kG~C#TFw6mOS~C6csfDyi3hx z6E>Sol_)8#&Td_zzl3qsW)u|V>Y~xtrc}Or$IKjAFP_v9lk|zM{~G%|KK3w&5m&-@ zN}4T!A(>mC^)sP#N{X$MczMF!Z3N`J?t5k>iX+OSW|$DFe&Q(aL+6<9O> z{MK@w*4rX}$@7yD6C{3r zZZKf%y7DQKlsy|fJV4wY_IR6U&reqx;}!WkS(iPPX&#Fi;=6f>gqiE}%V+uHw9CR~ zUR$K2eqzsXbmhjGWB74~$$1wSEa;^4Ffn^=Vhu&juuA4VU<`sHsOg%NKnu}A3x*o1 z%8*jFiIVf`I?e}cPHlY-lVkB_c{S=3)%+4XCD6vrdeGrMn**8lgVGaiJjUVpbct1% zAEX$QRtBFa9m+1Kl>=|!yRk>P#!?X$vh(++qV`AfCbi}*Bj7!(%!TjH*)j;Bj#RX5 zhYRhAvYzhvHf*)H)D-{5|Bg`=cGWLROh6_bK)g3X#>J!b{LM(o2qk7R_~u$z>l%Ye z?+FL%X$n!T`AaxhE6t1lDgP>W(NCD68Ja<(r#f^|I<$PFXd7DaF)!B!%|dXleHK4r zU*y8-`l4|58v%uH3gw;DH&wGA_$y+4dA8att=|x!rSn$8;6e+cUzq88D9t!b#qv}2 zF12y+XdG?9<3VXWl(Em1Hp~Ss!ryn_;u4_Ds&eUtxDYvHDi&6Xl0x^=5^d7M9pJqC z9-(nr57nP6EW#R=eWUjFZ0;W(fLH3}CjmkRMn=KFN3a<_zLXhPy#xF&kg$2?y?BG) zzjY3{rnm(J#tsizoeo$2la+{yiWWebc_C)NCtd7tI3F+ST3T8PXmBS$@nZY-cKd;l z(X{le^`i!Cyhy3t#F#6s5G$+&60 zH;g6`E}d_~(*W)}b0cIZdhhO0ndBBz&7itnB_{Eg`amfhKgIEzO3B4XJDO zejymZkxhHnF+`rxEJ4}@Brj+1TRrT*=RQ14gi4>S<0@;IU0PnaD<($9LGrl=nxZUZ z>eHBt`|o(nhS{#EDJ$6|uBxcz!CCIk~3Y@$Oz!{a`DIM-Yk{+^UgFv2Rj2+jyMImnVPT z=JUJlt6)87JNN-=j*c|rmTF@F9=RK53ek5Bb&v5R=JlwXftD_#J@aMA;f(akQ|g$@ zZ+YjeB(`iVEKI?^Z|t58MPuEJPrd8a1MQsessFG_igi#(a2D$C@P}=EljogPF}7zb zY1LaH!7G_tC34Aczdgg17YRV*U{OQOU^96^QI+G=8jn0c$ zd%Dz=*)1aod`SljQ3WiUF1O#YYS^>xklE%cm8BVchE{ta7bG#PDw`F>JqQ4tIG-?^C?Eb>dJ z1cmBZWbw$3sr^1~MUtP-q{tz)4ujb5gGWmlN1e+XqWptE3U0#&BE4z-3?JfS5;@P! zXVgYBn|peL+3R;a4wGpLqZpfNdAq}8viy9%&MlI5r>AdfIHcuOU6YntU+C-2X!S)F z{Ws&P45D-*Ul^97k)bPBe<#*`mxi}>Xc?Y2ZlI;Tn7-+^ObcOorz98NBIpvF6WU|4UKPz2Q-?eugq(ofH=K*3#07 z6Y~wkR>O`jB_-vj29OrybKLO~Na249upD_`UCF$GSIZSo0g46=1!gRA-;9f$F)l$t z@eeC&#CTV}efRdHou!=3rEK+2te+z8lwP`3k^=V z$ND}M>bQ5z@)iCgxbn>eJZGI5ppFbD5}~K3r~W>QtxK1TrV>Tahx#u6Wjcx(9d==* zF+S!QzVNST7_rw}%}r4{ych~ONiDDxi<;WW0<9X6$?N8f=syRIUn~S!iQg3@V5M-Y zA}YulyotNOlCoc!w_-t-tt+h43(q2N@%G-*G`jnndYhPN!;3moEonO|X-_(spPP7c zVAc47z!7w%qU+5QUJ`6GQ)0b6Gp1N#vWdh5Mi#Wd$SV|*v*Ah~AP^<@F#3&E$@q@J zw%oH;Z^^6>1oGp14NYlT(SFezU6@HA$2eRZksNYzJ&iK{^qXaKNw#_J`I3VF=Cayj z$8&oJ`+T4HB_b+}DI6<2o|*{DgeicC=K zU#u!#cjR;}*$1u~Da=S7K6I~axqFc$!Elc^vaD`6e?;L!59q!~s?jtV36*{YC;O-C zuu3ZlFqwDvY&cKsnR8m@yh%C7L#!(oQAO+Xd?^cs4Fk75X#J12a@FZ+qWub&!q~Q` zNc}C6U&l4$=sWd14lo5eqx09vOkT77 zi4WwoFg1`Odt&k2+W>y-6*KYV3|q2>deLBrwT3+VW5^F&EVz`*buP&!N~oDUuIhs_ zxptKVbW3>Smu@cHW5uUGN&2YXfV99Qp*)g{H;1CEfd`x%&u6+Y_uikxrQiXhV;^rG za;`U;9{v%(nqk`?ny}7C8o<|eVnsp^IKmW-sXx4yes_%3()Bvv6+C#IZ>n1u1?&wy z4&-vK{S0@oAZdP~@H}=GWC~2CC4kiphXojKZ4t)!R}V-`F!0w#WiH8A$2*AJ4|7+v z-aE8=i%5wSn$2vuJHdNHVhNm8e-?$&@?Q2Z90yqj4@Myaz)X-u(AVG@jKqD=TDz6! zcp7|=c8vYvNqc1#9_0Srd^D#SaUl0dWK#4aIF;dH{X_f33XJD;T(-%oAhry9S1{m|2}%)sz@o-dZWKmaO*d zJtvCwD-MHggP<>#g)j@t`R9JEW*)9C*NBHK!@TQt7o*4gsn#VED2q+cq%Qvn$W(uq z(<#vAn^_g7<(#F7I3w;&d88@|E$}~`8?|5T^tGPQ$Ag*RoeT=Ug3z(WL`MWVo)CC!I^m&S0qSl`*#^5Aa*6dxN@iKEM;dgV2fG2(lrftM0 zkoT<(r}6v{^-D2e-%&vV7B(RJZIDlvg#ZnZ{)Zt`G-iwX9T%3?Own@d=X^wqEVAp# zQvnv;^T!cF$FZNiq?be){ye3`jbff=Ah;Yb#+du9pDdI}8krN}mf$ zU%v++?)%w6X_juFQJjI0hHMg*6v2>JZBT+KqPP1JlW4BGE;hFlE1~2kI@=iqXPL** zVML_`@7U=ln3PCu?!J?g79PgIuW^Vqg` znwv6&zbbT>n828q2oGiFTIVvYLX4D3_xA#RPKGs&ArXR)y%%cA%stQA*2YD&<1U0O zv^V@WvL}%a&t}~uQ;t>sJ-oMw98S7_lq;4>MK&3)m*j4hW$-~>$2t_B6!;qj`OPgA zgH%8I6GrGG_sA@1fWURe_~G%1L|RgQgI9$*$Z6a(bohe4GP1iI1rfVsmi=@K6N+9d zIFe!DB4^=wUpo2vae02yPJ8C}@=lm7+&#RQq%a&F2`O5Wu6cwecbGjlq@G7{a-7pt zE$<8*>HW>$D@%!6!jGLLG-gI;vn!Z8%r~R_ei+ON?!n#I=;&=)}2=h zaGDUr;>R+|Te)ott4kHiFr_fS>wH@cenyM4Cemv6$8#1~rGThY*v8W!cszxQf2U0g z+)FC$?+fpVr4e7u&q*iaZ1T0)H@M=SB(m?{;5H=|d*Ky6wA zGBmU?ts)^KtBMn+i>F%>>@O-4p8JO{nYxa)7#oMjmO`D)5f__bJxP@^k`U7uDb@A8 z3MJBCj8?zC#!j6`z0ny&n_w$^tS!G9`U<#a0+F&3p*23PO$a5GGIUMH284KQNi@Jo zD)yngL*>pCgcgO9#^9Ze#@btD*)wcIe)PO&n2Y#?5@S7g`OhbG1YTb)NGUB~dhCPC zjUp`(ijTTpMVICe^OsGC|2iq{oQ zH$Vu;N2@||vy^>>)TJN+4m(DlaTwHsvL&U|Nx35t&#X~+h-kBpEI+v;-#8vq{gTHq zS)Uh4lloqnYxZ}8&ecaqAck9HTvA&^iU~vyib;G&V&Of-l>bC-eu3I0AsKE~@OUx< zkrh&A1<`9dH$?8?Cfte4Ta)mR(SxGm_m_u9k1|O2qJ8{HV^p~n%WIr_UBjlO zeWUH2#NGsCn&&l_E)Z=tcxnHoL3BFyOXdhVg0H;ZcM!uoDMr=#eDnlf9@DfS>g7WV zy^YMs@r|7fcZ68_4)_qw+l2vHmsa@B$@ROpsIQ%@prbD4YXJ?7H@C&1do2Zs(0pcL0LX@yBU}v~~_T9}=n~nAjMMT=c6D@-Nw6w$0hPR4G&Xf zlJ{>j{Ll3HWU^aRMf30KN1xfilplI_I)p17R9P~&{W=1^oVvw2uZ(_xcFN=T`1y`5 zt@~AbQyxF8kG2ydx(FEfmFtW;J>83K5eMy^ym0)fzNtY-YRyJdbzmX;M~q>+G{zQA za>pQw*5^`;WXW{M*xoMINv3T)i!QDppYL!9ymHLb0bi0A-uS6 z36J>OW?#qWs;Nz56iOgPLl*x%icPz|d4tlt>}wk1#u4t`(u~`kFw#uXC^}L`mYX$&Z0tYGMM1 zRs6=I6Bch3AXoa}KbzB-ar{;su@kvZeB9l7`as7sQ4V~_xLa@0WQ2^sQRS7)&O1WS zE1cCJUNiCMTIgD$GQ5AW9QhcGl`?aQ9_$$#mU2Fxp4XGeuc>gC811=Udr+(@#VjpC z;YCj`&%*Qf-z?QnZDVeU)xPPGzWFoUGa9A zs0=kNCJs;XX4+VT3fbczwp1#d`|?s+UPkXcxwE=ZNo3`kw!VpIw?e=}wf@r0Y56S03Y!NDc+D1Sx3~rvM392o^ zILbn{OGDp)PIXG$WwrS{?A>! zCv)D-GqWa>Uz)MuQ)RO34pdojy$zBwk%`ubwOrbpROIta;_x=*1c_ZFx_Wx?i!yjt zbp~ZUbJm|);_k?QGat=nm!z}$w>}jnt;nAzvAGaVgDR=&I4HiJ2+ zJMliU2cgUK2x)H-{WZ2FD*{}_+iR`l+6_xy+*)?g1A0jIWdk1{tQyfiq`c4;_FSS& zn(__h&s%fz2#*dVGU^%_6sR(d&&+I4PX)BwKnDy2mu`IN_98dpwYLS)joc=Z4bmK+sf{r+wI;5Lq0|)~*!C071t~m!n;f$pVG)UU-34bNy4GppU0Q&&SC}n^ZH`nCG z2(;6_7u|INTcCT1&LP#XW-iTn+wk#= zNLf$R%T(}Qd^_L8{nn-BZv5>5{{MAyo(v&&4h6ha7{!0E*Pfj z$K?Uo7^~bwIl4nXhB?>~5mJ3jev%mBIHvZFj-cb(gf(v^+dIG^i$QKU8^A8nWUvi5 z7+df6OEpRf3qqa2UB{v=^VL4+At51~7e2g@hmXa`Y&OF(Z7@R?YE8@~$2{h+I3cDs zNVBJAlGak){O5C#qJMZj`cmdPTZOd@$S8X(KB#*x0zJPvf1FO2glc3_lTehTX}+Z` z?v)%D>CI31Jz?8PgY$eTjx=}jf4>=&^>Q{GDHdHfE^_wPyyU(n`9uaj4lcLEB486k zj3w-ONR_CpUNJkciz4z>eTss54=>J^TzZs`oY| z3Q`>hr6u5=@L1a6Y?QK^#TIAYA}eGLOUfIG|IR0Z#7tkJG5M0=puZSl{Q3mHUe1%N2vRI)L+xZ{X~yC88^q;o7Od1d`FR$){A|*?%uAaqnIFmqGtoZUCJ<3l zbGBpu-<6B%co3n}qtL@yRgT(F=j*JZL#N=P#2?5oh9oj#y~BfQ4v|r-QH7aq%84=t zJ3)y>_`mmfI9)fY)(~Rr#0&yT?nAGdi2@x~T-4(JP2YIa2}N#txkwF!U@6o!WvrxE zvY#*8YXmYoQ@?IuF|fC=`Dqvaq!)WX+aFb)K8niAj03%(l83dldBMQ2b99ZH#fdnm z-Ch0~_!E4DPrc+yLADgHwd*D0^cz86)f>Y6|M!%zZ&G<5K_^mjNSlu@-WpK6-ff1@ zcnQ}L!SaD8I`~g@`t&;p4o-~B1n)=)scs;`_E7e^XAorS5_|vik=eiN%R&7SVU3Z=e7ev)JMFwzIuRgqSg<`m z@$qc@COi3+4K>yPo6YGh>7v8`doWtmx2Nk_?cskpC9I(Uqk(KBe8t0o-njngo}|A% zwA6;LDjmWLF%6eM(Rm|$E^Q~$XKCn_{B40+nsQr5Pj7W|z)UIHxTqCxEm@lt>4DpR zAB{)MCo=iY1yuU&Xb!Mt3O(fYprgqOv2tjFeSBf+J1HevzwAkm*0K!SHmh^7mk74P z6%nylDoEL<6(;sC;S@>zA+JzTCEkEI(un13@{%AmHg^hg(5W`5<)hn%Z()||CUA%Z z^;7_d6Ze#>wj%`Jz_k55$N2g^wVo~27li*?o=|;hL`O&L^Ax^MFK_Zar+C)){l($f znPbh%8v4p`7T!Nt?_^(Olg?tZ-zjRnfsZ1>9>Or|?t2m%A(iL8iB5+HZ0^C`w6viy zNE_<-tST{yk&5eSbSztBZc&gy+prI!F?i00(|D;23K*A#k$pn_=6F&x&B&jLy$YI3 zoZ}^#wx|{w*_eoJ>GTzJC48kU`@*Q0!!~rXf|3p#a%{S?6>6zujyHcrA}H}3GJ{a< zOM^p%>ztFD_4Z|!r@KP_*+8jy$ss6GtG53K%JCmUpp3hi4cUCi^+kWygI9$mF!}r9 zam3-cJ^!pT3ds1bpFYyIR$N+-0?kWjvh=evoq}v`l!lPxhg8dpT_PgOvD52#^vyg5 z@-WuO?~-|1#Re6e{F>r2?{|yL?W@0pjHVnJx_i>8)@S52o634=xxQcUVaO7Shw>}T zTT4*$l9%i`8Ww;A_HL5C5n%nI$3MUm5K(~e50TxhhmY zvSZQO3V3^L$BP-9H~%x=hNy^i(fR*>|HTxrp3Q{0L);Smu%FHJ*>Rf+EjK+)9Y9;R z&eV{pR;nibVx0m+w9qpk_WbS(y=uR3}1Zq0-1 z&}3)U=p#8A+(c{MP+V?jvU=>yCZ1WvToEQ!;n|N<1;~3g%p`)Ph`wQriVNpL&aLYo zFK|9~(b5TL?F9FnPS@JQyVL+;dYpt?>P!V*(pVF&1Pxy*b}k6HuihXwEJFlKffT*25*se>aWZ|S=PvBqDurEwynDle!yHhq7J1ZK#P|HV4aQ_ zUw$X$>6JlQi7G+^kX;nJcp>X&;CQ*sdhx%Du4(Gb^y%eyr__Z6FyyCG$mC;r*~j;L z!W2N#Ht?=@)g;|!Z?qNN9r~4<>Y%SP!jR&S`!2lr&zr7ShRBh2G*-Ih!j;p!+7tcP ze>uIVj+eXyRMCd6!Edu#%cpr$X;%f`HJE#b{Si1$lyC~cW6sX6Q~=kDL?rA?#<)g~ z8&R|Hja=k81CLCVDl7(vO`3_@FBJ&$mrEe}XDg89%DGyd|JY z$K1zfery6^B1S(*3AmU54F&i$Xvwrg{LS(LLZ@eoYq-g+)TWl!tWb#_VA|In7>m#D1@>LGnj2qDMA!6Cq?E;z9^0{}Tqp*$7 zN!C!=Dd#mKfq4fzUb6pn4;qcZ$enCQw&lNnSGKlB7ugg{?S0A&L0KmP#@NrBR6wg$ zj_!-ZBfoXDMyclZ&d!scF&Naoe_b{Z{J;2gFbE4R^ya6vzJUR7@}z(izt@z~``Pb+ z5v7Zswq=lgzeoi2cptYzK>T#ZStN|28v_?6!7Iym-s9X;rHS9P9?vLut33Q@F6$+@{Vzx78I{!JjkI%SQh*ts zijnpz*{kLg#tGgfHwVwiaafIz!#FVY6ES(P91_5*(~EI!QesG?CW^Xaa1>u$&&V!M zRAP9Nmr#v(i;LLc?^{`2EkP4cm8|ggrW%fDN)RKXroaXG^qUOYErV6xC#x#Nk61n( zeKGSspat&u0rSVMBj3bK>=JB*52$yxjmxXk3ysZq4&(3FbZKSRaqp4*0HU{OQ9-kBbl*WJW~~6o~+Jy3S-C-5^#Rj@!x$o1qJT18Nkv5Afv7Tu#F{{KwGO!uVF)C&c?K@U9V#Q{QeN?_>X->!eAi(e-(1$fh3~; zpg#LFjcO+k0~5}NTebAt&-nG0H3N@}pqiSR9#gL7=9Wkqns$wyU*Z*dz1{gZb_GfT z%@&cut-rfM@B{%qAXQ_JNhE^-`7>NOVKuuvtmI@`CRfeAgjRGk z#+ub2z#Z4YKKDT8X>s7Qjb}mLF1zwUQIs&GMwd*i7rqjRo^?y$hvZhk_wE5JbrTbK zKYVCpl)0ERYWF(@sn0Xs4aoXMlANc|`A~4+<(Iv7s6X5@%CIeduJ!`kec6u#=743MIA&R zw?LDMO}SP^Y#aSt$Vdv2;acu=JMAVqcl>g)8@~49ANTeP&KE$~cYO@+6X>{NgJpxo z>!7+GQPjwvdqX{KUW!^m}aSUr`#`7RDz4B z!`zF}VH+%XP0Gs*;m3H%O9K*7eO33I@m-l1x6=~$n_hyMUnFHPFMwnNuG(x%2qxKH7Lm=O>*UyAfwOXl!gJ*Y=LY+4zlwh>@mP}1PqYI6AV!Qq;cZn*lYLH($D4;H13Oa}uaCP| zH|E>h9!5@4$Q{V^0PcpBgG2p&Dgd|MtZvfuTDb8M3rhmPh%k^~SD|9+?%q-F8I=qh zx4r)0_EGj6)ta7{nVMI9#BZo$v2JaGJ6!jQST(CJSinL2bCLYm*N;9uCVd?fE&F`z z&vGcUYx>N{LsbF&DFg`ge_TRULQ|loy7j^UictvS)+Sca$Kwnd6I~Rpa5ua_kHYSj z)a1bwqIl+|e3QwisK`};+qO#U0T-_+*5E{oxD zMA6>&5<2U$l3+V`##Z7oSDF7+td8PxA*#Ic!%1bxoY0G}7k2o*`c0QyCxUH8{EOlr z1G45NgGR?dF9cQ%H9~(Ix2kX&reF-N>Zq#WC+2Qp%Dy9wJqtTB_FN9T484) z#+x@m2iV@CXEl#c9oM8;3saH?`~8EgEUDPl+G!}r*vkHOJFpw2m5=1bPxA!?auB1c z<3T$zg(m*l^QSo8#9dM9+7`JH`HpuC$biqKs%q#kXakeoxV>k5l_4wOS{E&>3t6j& zY0GrQp>Mu1BX^;cJ(l+X+kYWf>UbqN&g(IzXsaSO>5r#L7jG?9-DbZ~l~x{sekGxi zChC*KV}?#Z9$YP9j@%N#>i{~O`RcZZCmWk>H95!y78$gr9$&!vue@}i*=K@hps}PU z`!FaQ|270Ki->LFu zm!Qqe>2yB|LUiI6y0#2TyQf#qZtIz!N5cbHyPuqA+3(fK5LD>LoSw@B_}kviBqFBQ z{v6KSm|1yIX>HtdIvonylD*3{6r4@ccvU4bP)51obJEl^X@Qm9eBLxgP6#O1@r&6f z`x$?Zu~u>l%F0X06Cur4w`A8MmLN)$2k@_jM(iNZR|9A_H<+8#57X*}f)awrc5*-< zrykK5Bi$0{MP75$!-UBpe^Jwn9p^?B2H;SNii*Jgo17PJ7eJ9j;l27=NJwbWFtFot zTfY)R#m`V7(!j}ayF$O^;>R%|@^XZXEtPf}EDdr)|3GOCp_gF6vhC~J z%s|K#?&=*SQ!FBTz-`KT%S>11GSimF-O@|L(Z8gR7qXKQzR&1gSJ3eSVILg13b3;e zIuyknqCW$B9^ZQ+n*+3kKHg$Zg5OGLIWDdQ2(lmU3@;hYcC|8-6FJU%SMD(b?|R9E z$FixeyMto0?}dXhv;7JHOSa|x<;~q-$BRec%T2qYi#f}VG5ST?%Ld2U*^Y3P2l<<@ zU!$CNPcK~^&vijP9rO1u8|XnLUneBMInQqaP~%C=?w8u1qnYc%FPGYaSF7qejAL%s z`YRh_qiG^H0?$Z6H$(_YtPg55}uN zLczxG>5j1uFi$_@OJC5C@o~RNmR}}u;EwTGl(C-aPOr_dtXQ|z%gsx2$Gwt3$>)hy zm%a+!0{-Xs9Id>AvM)OibIr`igUdNiEPrgOUDpS9Mpd4%gEEc1^Ac6BxGNt2imk8i zI{uDIj1Jm)+wQw)xij`i_`Ln{oO-*qCW5PJy07$5WAiSt!barkCNQ!?=$46`@%cy4 zO`7q>K}zIu0Bkw-8L8to^}|>nC4m<`i($Kf!}7n5UgQs=)*eBUYn+kZAjnkYUo(=T zwU?&=$KZ-JvERYqx@*~5#w514Kdx)k8>PQDw+Z5&BrL9{Fw-zZXuonyq=C(%-x|oVYFK zb#4hYzLz0RUCBn?#I4w`old93AJ>0eDo~RZD+@m zzJb3V$BNj6L*P}u$MX$gLdUuB^+jeyV3dII9be!cZJT*l zxliWrG1t3QfxFC=z^GHJ=eU!XknA;eVf9Y+|A21ZDkn||QOyC794~_ePh$51cZ_}= zV-p-t9@hjNUD-iTpqX>ls2!tC>}Ma?*z<K) zE%Orf61{Sd{gT%4GGOAHkELE`bo{UvG}zQ&WN{K!arQ2#E`;M{dFV%`aV|CeIXfeb zF)9b%xc#TGG3Np&Y<=Wv_nwb}@1pv_wjn#CZXVB@*d1equ9%8n*ck4%U)<9-6SH?x zjaSAFR-RXG-EZGLjs^)UH0kBGJ4aVM4!wi~ZHfU?>C%d4mgnWZglUe}&g|#yS?A}I zm5mOHz!(4udZ9gu?0uxTvROu&>Oqy%TuPyKzm#KOPJ$E?BI$pbPiY3suK%YCGJHem zV_YXB@E*h;N>bvrDqeQHh!yAMfJQA!EVp0~Ev?_z&NtedK?8nXC|mZ{Lv3v-vuHZu zC}e>wtaCSt9TNbcz>^w7X*%NiO>fuQ!O|nC40%IgHK_pWUtHoL{X8%DFE5mjf*QqLY7V^cEMdX=rz3*F%b zoo7fsO2KQG?@r&?rwjHk6F+|rGWJh+u~QLfN{WPvx?c+uU}vvyhN)3VH_ADEL0E&K z_PNAC6UKG`VU|uxSouLI;uc(Uc*^Zu+Qy*--n{PtF>xtY{IOml-5B=D$Yq?2+z#qH zlq-VudE?-krNWK2;A3jKFq>L-1ynD8yh5#HQ8yuvc6l>qF%un_q@Vixw|PTj4@ zR|*lrA8V&%=!A9;-hrK1aqX4G>M)>+<0j36}t<2>ETFKP$J~n z9V%viT74OKN^!HgF?PB^5FgaM>o0{MEX4Gb1Ct3)s6w{&`$C}q#TV8+11MIqYo4Df z>SGUXa<4KMR(52iU>4s(e&{t9Rzp!w)~O zs&!E%k(uteWpAYVX02Wnnzf#P?dT&0)FV4$y*ykucdICSciTG7XY}o-lpVbv%y`5e zGEdGrzNV50pCcLHYqB}#x9y8N|A{cYwBHFndWqLweq@TZC(msV`*MngNUX{luN8KF z=5#LH@$kM+Xdzqp;r94M@nmoGmsot>$VLAZ3!V|h+HW6zn^Gv;7j*5P&~cxdZKp0H&y=#U|kA6#SujQ=QB zJt7OB-+bF(4)FhVGnopldC7oIWfC;BdkxbV{Wkl*SuU#`1lKH`;XkDPYnV;nFoWW+Y_IxevteKIWUKl?wb6U}c53 zRbm>Nk_oNF1)EqmAU+o?wi5Q$0~r}h&Q8>@j8K*>SBy{=nXhq^J9M?Rw7{Ilw%OdY z)MkT8oXIqAZ!(eVN@*`C1X{mSzDUE-BEYwXo2F(v1A>%GqpToLD$=okEbhf->>jn?`<>7JN(2bebzrDs6Ujn-f1%Yp!gw2VwRJQJod=Ha`*gn zxIf}%?DT!I&_#=k$Dp22&;7fh$|FjM{>@pN@ypJm<&o2AYS4MU2q%sN5^E?hVO!Vg zW|%E`L_KL=QeMSJ2sO#mwA2L&cLhG+9pmUbj30SpZ{R zoM5mVd#XN9yfp`wJ=_wg2>>WD4-gNKKk*8fK;XtQ?j9W#>aiJfK~7s{mTxo_)JnCP z*&*sbL{(};zD}{OF@;%%%5T}4H`9iy+Z1d=H0^r_6~fLU-x6sLx_ep9@oJnZpV##l z$m9=P4s+utDt<5eyIZ7;7uiq987nho>hBM`yQ9er<85p6ahJ>kNw+z2@wfN%Dyk2U zaHyAqt;y(2h0>IMv_C613-d_j|0N`w5RimBn@DB_rwOR3{odbcp)-kfXLZ($)-$&N zCO~w3xV)^hN{}gx;kfXk1Gdj`+CS#AhSN{cONa#Lt1{Y6lPaX>E8fQ3ITKZ*IXj^>>UzEk`lk_@ z9*s-xA3gRIlK*%e^i2DFG$($%glF|U2bvJoC!HtEdzvyN;7nYVwyxvr&O~$hD2pJ0t zA6fc?{r%&MfAq`Tv%SygRl~Zwtz+TgGO<3Yivx+#eOL;X5|0-=g+G% zZ~txt6C0aIT3Hw;504}m#E?A(@P5aD&Oug*FSKMGjJ4+;J~5%@d9pk*K8^!~17z!=P(PlyUGA#=hx!J*fl#y{ zZlFCJCh^*EmWe3p1BMOTSKS;?R9KiU`w!v4$wT>Hiuj=xX>sLD+PP3-l6avsije0u z&VV)(3F^$EnNR+vS+h6UCibpreH07BAA|Y`@v(=hNwalUV+6)r)`tm}GMP;$aH_mX zmS|VMykcfbwgZWA{k=nX6FL2ZvJ^m0MaKfL^p#cIPRHp-jlY}w6r$~hLXaUsp|mFV zNJQSN?I!gOdkhrVx%O9BMM#c}@T29BX}$N-_1G1zxv~h%1;|cG&(j0FJZSc^Ci-aO z6Yk>u({brN^@K2|{nCH8iYRnw6@O0uNijFP0`vwfH082%sg&Q6v|q`9WyYSeH~UyJ zfBeX{I;;+}*qOh-qg=-qd!mD{GxSib->JmV8VUC7g*YY7*M%%)`=qFd*i;Wh;BfJu zt;RlrU>BI}5BD}$lrEJLv?6m2F%INpd)be;8q~_ua#I&o+1teXF$DH-l|K_ltd0dF;|EuXLquN-zZjs`}iWP^8yA{{qv^d4JxVu|%4^Ui! z2THNxR-m}MyBCTDcloCGyHWf(fm}mQPvi zMm2MNalCrFUz?cB;&%ImEFP9%2XMMGSC1Yq`@h-$p_YlQw8y&O9L?*WnLPO%9E?X< z6f|(Av_1cKxg zx82>*-e5f5K&Iiju?1tS=$LXKucQn*4p)TtzH9*buHULJFJtyTormXo_t+X-S8fcY zt&s)nRscN0ls)vSbk*I?Wk=BSqB>B=l*6u|(Rc$ewUTrZI9N3vwyh^7WH&T(cK#~_ z9v&V(uyCr-UNM~o~`)s)7hK#ISOFO$*i^5G@rIgP= zOrI`McD+8*k&y{+1J^v<0e$A_l5wZ~iDh7%1Zf(BlY;}WTKI<)oR{1^HN~|z2H9R| zb_Fs>ZCxEe=Pw8}e%0+nt4R2ijk(u%NZRHV)M?!* ziIo)#b_+@1$;4FWX3iEB8a_3qpS5|r%Asi@0snoLX>WY|^mivPY0nB2Fz<-;ji;R& z^(dPvd_rfm+1@v~d1vf?MkoSL@G#BNS&k`PtfqlouDeJ>o~%7!&d2?-Tz5SPEs7Ti&At4Lr|i1Ia-9!Fp4`tN2E8 zenmdW9*($yPwp$O)^`oB*I^N1Qq7?jik|duGwJ5>Jr4vG)EjR`r4-_9>W6|tkQwo( zFHZu%4zs~~XrWH&UdPhK@8d*#uYWv5JQE9vn$#N` z3=z_L5GpkgzL*yBzAup$SNRvXv?djFiyRyj;Ng~Z*ky2R4~X)GwWaloz0|UO#3R(I z1cj_z^ibZ^8Svsm&LInVgp202QBkgLD5{h!0+zoE)ClIWs2a)~fDcRr32MFZx z!sjSLo+s29vHw7q6{}`#0G||igLwh}dmehFY~$hIqdP7FYQQY0tE($1ztflQ2rQuZ z7V@y$`-j3i^Z7a8<21mWuGih3g2w#3`%UumYED7{THssb4Y7sd4G#~K3c4i2IvUd4 zMoi4+Ej(h)2538t-_erZBk^pNQah4n?k=2N@T4dS6BpNVD+U@NL&7j*m6bRvi%P&e?UYxF7Lxz55A)+o?6Li3+aPtEcE#JxR z=9H4BsPgU^86=lBQ=AL~GfD|z1-Zu_FYBQZtyr(Yo=#xrMjf}bNXR~ITZ5~CjCe8V z%$JupXO4k~jRU(bZ2jG>s*Z9}gf6V)mo``+szeaZw^v92@Y<-R`q&HekMFo@eBu4O zLZ*b{7k?<8Re`yD85&#(Z;q)l_39-rbdr_U&|(8lcZa|@wdnUnOlSEA@7iwY8q{iP zYPzak?yFokD)^#gw)sH?hs3N>b#%15TU^a!CnSL94}Q{Tl*IW24H8Vz(_|&|Mxyjl)DA| z16%b&WD4a)*MWJe4v@UnQk%(XwXS8K;s=rsaSm*4Y* zG}WAwTj)cnK3$5Edf99`5yjroVlB|N@;F}VmBbPmnV3j0B1NH!>^HSrZzt>K0Q^+o zd#BKbR7IVeG|QZxAHBikA~N-ApNES@8(>S)vMUm`gxI_&v;*eqc4SdpLRyw5x72%M z;4@9$zUlE5z>=LNS2;;RD#M7y8IVJ+tYncHI3nM#n*1Y$k`z<5bWSJR=(Dp! zly;As^ObnvTwarQk!Bg!L>eUyADjeK%`(8@^{{HJ-GQ-Ho;VA^+3O@X#lne1!$PJj zhjRPme}33Ugqu@^_V5%PmfJ0&0B*Wg7u2VbYYfT9Lm9;3Q6`}(a^=Ng+h1n%)RCj| ztBA9j^&>tRA%=;g23hYvC(G71IFly78ddjR(ssDM4kxNdJCvgC6npM}NjJJnF={?I z`>OW!Bi%~Gp}UX~U*=`tX>SnP_auOfupR3Yc(NCmlY2Xuduj43+yr3A_<1oWP8rVzRwdwqFL0XBrCE2Ybalpc&p_1m1RMo!`Sd!tW$>lr53=h3 z1}6_sPpNuIliwW|5MuzEO)jF{G66I5@Qe+9OG}Ft?<%!1kShVJM3^&?Aw8S3iC9IS`At6j&sKKOOs^OPX*xW2ImMwC4#sIp! zzUC4Z{>Xr*>w3-%op6UZ@gE)DErYiQD_bUV0pB9mKU>l@8Ki9pl4e_|ZaOkLWe@Br zlqqu6)?QzRFM`$g2n1X`G9ykXXczGdTDc{Rl)qL-nX?%f?&KH{oP~<#{UA|HB>-&B zY%ng1tL=L;YPnh1QktEtQ$d!gPCcxMsi|c^jx0PR_FvWE`a=X_AXb!y{{DP_ctt#` zOE#=#Sb#CKn8%?#tJzk1(OqN5QWo^9Z({YSro5Pb{d+}alzv!g-JCkw8%4fJ9<9NF z8Wycxxi704&r%8s^IDysOl%kl1^9=~ZjoF@o2Tq_wZS2k*88m9(|Q_+bssLzML)c; ztX(7#q&pxZ9bT?aGGD%KWik!{+RlgT!=jPY!Wkb8JJtOeU-VFK&-E*bjdYZ#Tas3O>C85-4Di%x71gwVPt27f0NadX=F=0JD3-oA}7o8lBi zmlr%oRf1%gcsNAuLa7%&;#u#rRL!JkFcu^ibnr#we@IP>VIj25ZsQ-%StUrcLO~oE zOH0pY!;P06^fW`2?#}zg!?T5Y^8gVRk!B(2sv-6973An9UTVR~Yf4SJtVbCFf51*v zqYewN2!+M6ObBzG>$=nRPfyPmp(BG@)ERcqQ1zP<#rZG*S2T3Y_|QCgt*#l56`XHu zdM;i$D`m4qlRtz5Uw7|ON51cK|9-4?zOv-7b?yXJrv;n=6{jm1ONV{)m^=!}ph8qE z!vF!%P^*RiZyUu@5!qm#F-4(Wf)Q4$um$mZ@!^Y0ROsCm&n)&HwSUu{2apv@HGocj zqo0^VopCD(SntD$7%ApDQ{?36@BITAdK8kj{1&CeQ*hb9M>@%T6-x4Wz|m}YW(E%e zfe?j{0ayl*sEK4EN3-~VJWa@^zX24aBO_ygnc6y?xu9a3VIfd?nsNOx9j{q%ZDl-xAAyZ3JLcv{ai70q#Ukde&;CBV+8uP>|>hVB627zhD zD_nifc3Ku=JS#hfjLTP=PQd&E1g_5S4bLhqGjo4m4T~qqvJOPh$|no&`@+c0_qFgE_G zX7Q*(o6sF07<8anMpXLd`&Un42`gIde5c6vXVG&@KsivETU2x`l~oT2hd?4GAS9H7 zssRwyTeL7>cq_g5k1q)jX4enJQ6%V+Xz|e6_RJiq3|Rcy)__erLa;W=!Eo*xibGXB z#9U{_=6&WU5+Dw#*gbKT%Gk98-`l$IMzNd6EszQD-BLmO9EB3*_Z7s}r%*c9`~lr= zZH^KzhPy-CBp_c(n1Ie`AVI$W&%wbjQU1Omg{ZSA0j_4m%t`Y01av|xv%!gF|XT{e&o#> z-MDQ-?k}QUN*Xi+@*2z{ZdQ@^WY$+gO|!8;+)6nb5CRz7yJ+v!F4X|I#lL@B0FFBt zZ|tdwZ4*J zJp3493zO#)HMJ6q44M*477!>`XqIS&TTj#dLV?BT%zrA)=&juL(_nKIp|zo z6}znPyMIz6rxKMDBO|^&b{s?GW6c)bb2@z2eK}>#%=!`%b>1?UX^SLq?H1cj1lz^n zVpNsK!J%>(i|eXPC^5eaN0dNkwR5by1f7D;`@*Tjxs2KE7DD0BQa>g!CE{fnjGk0d z+YWh0#|}h#!GOs>e|9e5a+qsgc)b_z>^5+u{vCdm!iP`mq<#cI|JSMUOjDC&YmX+M?8H@J{$-dSc$ zQ#pf5_%4Q1>nXEVEF@b9AwfPlj4Pc+p0KdwSm1q7pC_Rk9cJaT@;_(lg2Cn+N9 zld4t9v~k5)5`#+Gg9?iZdy{y{G)?aK9d=_$)@A&|(GjT{+pdmbr8?tX&w)%~->P!G_vIwr^74b7 z{c&xZuT-PZ#tDRARsn|$aY5ZO@TW^@GP;Hht!C=sioU%QZ0${s*y_g1)631>$+jZ7 zh>uc<0Tg(OYPDaPR!w+h9hEO6Exx$Hv4Y>m){EYV+jiI{Ebx#>;2@$^_ zpz!$0I(g@h7-^c6Q_;9Tk|c2Ii#Vqp8wD3bE%o}@zjHz4G(CUN(hP{BG$K3=kdx9+GkTB!>yiR023NdJi5p1vm0lSK?FZq}d$mSf8& ze7vI;vs@y-bgoQ;u&fT4(Ju@w3>c~16Z)wSn>wWDnccaXZLVr|U5gvg%{4wc?e!t@ z(VL!RpaMs1pCn^9Dkfu={LJT+OF=*)7Gj9?pU$4 z*ogCP4016oDJh>c1(}JGezdobCDE_{12)yInDa{HsFks=&n&O3oH+Kl+b_h@F$x@< zQVRi!hAxhuec_K+n=v!EZ;TJhY3)U9kYn}~h4S+9 z37dL;;RQ=uS4gLmn@n4&IA`P=k}TPylWWEu$)!=I`YfeGSiQ`r&3c1tXMRw=gv+%jm{@;c)!g@*Xg*NzLjx~ zttTKu+@JZ*<0}`W`6nPamm915i@0sFf@}(I%v=zKgnBeTZ%-6eHL673z#a&&O4f~7 zTjBxt8{SFm!^U+Y2crYYNR41KAf@*tcb{vonFD?9E!h zp@r^c2?X^}``f46nG(&xU22~;(+1D@fjvpVVWxB!^O%9NXOE`PTId6UH}j57E`o zd({$uyCmt>_pGhq^zjoA4Dn>5?-Zg~>fcYgXp~8xtm|!N!9=&c(pA{-t$7ZUnLj0C z_Wc=9Vr=ki@q1Y9-@t2hV6WA#!VM45x8x^1d+bG8zt8HogOR#y%Va698(HLQUcz^l zq8sXD9YpfbE;6ZPkR(#a`fXM@ZPOfbOfZzFN#sxDpJ(6@#8%VjJWGgDt7P&=O&@-* z>&A|i&gAr9!RX?kOuP5cvyFNyNlJ3w9La#D%<_r8MV!7FBl`eQ;QSkp5QF9yL;wTl z!;{*!vrts$1bvs4NN*vOGXGt736Q&v1p&f9eChCgZ0BsB%e zIsy~Ggyy|k)fxq}4%2o#3(M=4KzGFFsjkX#Zg601!?vQN4_s4ZDq_erTA38b4Kc_b zW%K>&x{+PDXm>g$1aoq8>jALiyX(gF-TnPYy+#LhrWB$#{<1rZ7w$+QR5!47fXMPd zYHMqo%)EPc46HM`@GTG9vq1YroS3DrE99o#RlH1n@PvAz0}eaUTbRUX$(nYVj=US zDX`2agsM7C{ZtdRzWpJzv%K!zdEdu&b#H1j%avl2s82L?e7(4`WbS(S1#l)%_W#Xm zYs;LhaHnCWe`-=|JTk}@W26T_RfFw8+}3cp_%PJD#hD?Vdg}KCX+-7kwMhk0rf7C? z=o%OZ^WZyju|uDqVw2Ko!2O?D6&%;oLnjB~eReN!n)fdmAoXhkj1MbjVzpzN<SSM-E#s?@xSnk6!&(1I#ya0&YJd4Ew=1|<2dMT%&`}JG2)AVkQIN> zRh|=+t)1LiTOy8#hycPBxv%YNFI<>9f2q`q-aId*m~Vk4P2nmQ^z(RdM5wrJqED`UE>{H_D|;zc64# z79>F;KF+)|tsaXPxa)OI153Y)R^n8{N};Gp`k%;D;)scp}JHU!Rpp+bGkll&09Lj;L~OVfpD8w9KRjJ(M-)_EaM$=W#udd<~41<%H??RK*B@ddGu z2FO8+YsYFVJ61e4$qK#PuowiHZk)rzy)J~IwI3YYS(X*Ls&2TJj9U&2^=WS;@LFYd3BVh@7@N9 z4)Xnox`LoTo`fk0Y4Gob%+&O#RG^;op%j203EuvVi<>FcrJo+0Uk099*B{*5&pTd{ z?$0Hk1tt*g|2Sh{eA$%pq!MZt6Y+5yN|zh`0aJb3Unh>D9>l?j8*Q41ty$J_db568 z5&f_P(BzPfc*QQl*pYZyQ;S#q*f1!vYD=6p&1e5md(W9GjYj6W2Bx)Cp*xO`y31ug zW%8H5+uULkTnw6Q5F5da7BP}KWMVUt-7VYC3!lOtScze~^BKcMu}qD`x0H(LhD>H# zRu;28=v#{1@cdcuuHG+Srx0iCqLey(b@;P2p+1#i2s(=E_$gD`X#ZCUt1qEu40m`B zO&*>E5iSEox`nf~CMZEvX15i4ZmV1bKeQzII%>3Zqk1e~&AC9M1qDLngb8iin2vk`%J^m~yZ)9-7R3^u{sp1^b)+ECl2iH*5^rdgbn=apvq*s_*%u)Z{PYs$);a@Zb z?mR!_KFeN3yj*{{L>GIJ4LrL7I?s#}99w2P49y2h!JnU-CNI-fzff>zlD;R7CwZ-# z66fxncd8t44SS?}Sbs$BxU}uCe>r1+<~A_WFIsGusMbjIO#fhEKofxt1O40;LOJ98 zfjkskDPe+x_8!G1Zz!)Y7ei>BW*M2oimYIY#f4*=duTpf$C}9C$frf0_<_zw|;OW{SKZA;=8yyt|YwFt{woHgZW6M&xBFg~HYQt+vJop*uV9vW4pL|74pu3bM;D7N>D$ zuYOAZSq|}{E)>`jSB^x$`R^BkQ9_fbMVSw3;l*;kRh9I1St$^umsWO4^Ol^{$PZ0R zznFP;>QiFY&~ttu)t?c;Hu+z5PU-hGG&t)!0H&i(Q&Z*e%VgJcy(etKha6_(atYBK z|78A%7IqQ9%ZS}|8DwE9@AKW4Lu80%OZ?x$QR0>+29eKn#!6GgnF~LbV0@A9hZYXn z=KCdz)QdKbl22o9^TwKc8`RE}!T)AHM2TB@GWJY*+@qP$F*iP{jQb_0yU7Aq`w-BW zUV6@xyNBd8E;_!%y?99JSWxD)2)4xk|Ieu#9JXos^b@89bU|doV=?`*ki24tUpW_2 zbQF(84~dzzo*b-bQZ)ZvkX*B%U$OT-Em<5eThAa<9IZc;A3ZUD*Mp8Qg7T(ehm0{A z?qJhIH>|&b9(d!R>iet=jPB#=(_pNaw;-o64zMfe=CIvgWy3}V&0znXFt*7rXlg1u zF2=Oj_V=xgny_1Qsji=r<4s5AtcubM|9@~AXQ!O2Ki)d17nqeyn3ZZ@avT52`yKiE z_v2H+1L6N)`$#!{BTA0UyfWlJ#iCgUOY7Dzq1CJ1n|NAj>m>rnjciE zUm9uAI7O+_{2~7DI9+9)Z!6E+n4>}t33k(Tm^9NK0ch-h_mtLKOf7tPuola;(N&8U zJ|Z>Ie`mUR{`$$h6#+c2z0*;-tO5*b{{J--V+`K-KJV=JvG=LpUymB`|G#jBe-EYr zsj~NW{P*LJUY-;IW@z3xZ~k|z;M0HTP>S#L-XgqSuxA!kc?G=WrIn;ALB_%V2N)Qa AF#rGn diff --git a/Doc/using/win_installer.png b/Doc/using/win_installer.png deleted file mode 100644 index fc9605a79cfcc5181e3227973218b8167419dbe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79713 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

    u#G}L#3 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 GL;fGTg%8sJ diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index 5bec0c57b12214b..40854332af0b24f 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -59,6 +59,8 @@ packages. .. _setting-envvars: .. _windows-path-mod: .. _launcher: +.. _getting-started: +.. _installation-steps: Python install manager ====================== @@ -315,6 +317,8 @@ for new users, but should not generally be relied on rather than using the .. _pymanager-offline: +.. _install-layout-option: +.. _installing-without-downloading: Offline installs ---------------- @@ -378,6 +382,10 @@ again. To completely clean up all Python runtimes, run with ``--purge`` before uninstalling the Python install manager. .. _pymanager-config: +.. _customization: +.. _customizing-default-python-versions: +.. _customization-via-ini-files: +.. _launcher-ini: Configuration ------------- @@ -518,6 +526,7 @@ Dotted names should be nested inside JSON objects, for example, ``list.format`` would be specified as ``{"list": {"format": "table"}}``. .. _pymanager-shebang: +.. _arguments-in-shebang-lines: Shebang lines ------------- @@ -1501,725 +1510,3 @@ releases. These files are in the :file:`PCbuild` directory. Check :file:`PCbuild/readme.txt` for general information on the build process. For extension modules, consult :ref:`building-on-windows`. - - - -.. _windows-full: - -The full installer (deprecated) -=============================== - -.. deprecated:: 3.14 - - This installer is deprecated since 3.14 and will not be produced for Python - 3.16 or later. See :ref:`pymanager` for the modern installer. - - -Installation steps ------------------- - -Four Python |version| installers are available for download - two each for the -32-bit and 64-bit versions of the interpreter. The *web installer* is a small -initial download, and it will automatically download the required components as -necessary. The *offline installer* includes the components necessary for a -default installation and only requires an internet connection for optional -features. See :ref:`install-layout-option` for other ways to avoid downloading -during installation. - -After starting the installer, one of two options may be selected: - -.. image:: win_installer.png - -If you select "Install Now": - -* You will *not* need to be an administrator (unless a system update for the - C Runtime Library is required or you install the :ref:`launcher` for all - users) -* Python will be installed into your user directory -* The :ref:`launcher` will be installed according to the option at the bottom - of the first page -* The standard library, test suite, launcher and pip will be installed -* If selected, the install directory will be added to your :envvar:`PATH` -* Shortcuts will only be visible for the current user - -Selecting "Customize installation" will allow you to select the features to -install, the installation location and other options or post-install actions. -To install debugging symbols or binaries, you will need to use this option. - -To perform an all-users installation, you should select "Customize -installation". In this case: - -* You may be required to provide administrative credentials or approval -* Python will be installed into the Program Files directory -* The :ref:`launcher` will be installed into the Windows directory -* Optional features may be selected during installation -* The standard library can be pre-compiled to bytecode -* If selected, the install directory will be added to the system :envvar:`PATH` -* Shortcuts are available for all users - - -Removing the MAX_PATH limitation --------------------------------- - -Windows historically has limited path lengths to 260 characters. This meant that -paths longer than this would not resolve and errors would result. - -In the latest versions of Windows, this limitation can be expanded to -approximately 32,000 characters. Your administrator will need to activate the -"Enable Win32 long paths" group policy, or set ``LongPathsEnabled`` to ``1`` -in the registry key -``HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem``. - -This allows the :func:`open` function, the :mod:`os` module and most other -path functionality to accept and return paths longer than 260 characters. - -After changing the above option, no further configuration is required. - -.. versionchanged:: 3.6 - - Support for long paths was enabled in Python. - -.. _install-quiet-option: - -Installing without UI ---------------------- - -All of the options available in the installer UI can also be specified from the -command line, allowing scripted installers to replicate an installation on many -machines without user interaction. These options may also be set without -suppressing the UI in order to change some of the defaults. - -The following options (found by executing the installer with ``/?``) can be -passed into the installer: - -+---------------------+--------------------------------------------------------+ -| Name | Description | -+=====================+========================================================+ -| /passive | to display progress without requiring user interaction | -+---------------------+--------------------------------------------------------+ -| /quiet | to install/uninstall without displaying any UI | -+---------------------+--------------------------------------------------------+ -| /simple | to prevent user customization | -+---------------------+--------------------------------------------------------+ -| /uninstall | to remove Python (without confirmation) | -+---------------------+--------------------------------------------------------+ -| /layout [directory] | to pre-download all components | -+---------------------+--------------------------------------------------------+ -| /log [filename] | to specify log files location | -+---------------------+--------------------------------------------------------+ - -All other options are passed as ``name=value``, where the value is usually -``0`` to disable a feature, ``1`` to enable a feature, or a path. The full list -of available options is shown below. - -+---------------------------+--------------------------------------+--------------------------+ -| Name | Description | Default | -+===========================+======================================+==========================+ -| InstallAllUsers | Perform a system-wide installation. | 0 | -+---------------------------+--------------------------------------+--------------------------+ -| TargetDir | The installation directory | Selected based on | -| | | InstallAllUsers | -+---------------------------+--------------------------------------+--------------------------+ -| DefaultAllUsersTargetDir | The default installation directory | :file:`%ProgramFiles%\\\ | -| | for all-user installs | Python X.Y` or :file:`\ | -| | | %ProgramFiles(x86)%\\\ | -| | | Python X.Y` | -+---------------------------+--------------------------------------+--------------------------+ -| DefaultJustForMeTargetDir | The default install directory for | :file:`%LocalAppData%\\\ | -| | just-for-me installs | Programs\\Python\\\ | -| | | PythonXY` or | -| | | :file:`%LocalAppData%\\\ | -| | | Programs\\Python\\\ | -| | | PythonXY-32` or | -| | | :file:`%LocalAppData%\\\ | -| | | Programs\\Python\\\ | -| | | PythonXY-64` | -+---------------------------+--------------------------------------+--------------------------+ -| DefaultCustomTargetDir | The default custom install directory | (empty) | -| | displayed in the UI | | -+---------------------------+--------------------------------------+--------------------------+ -| AssociateFiles | Create file associations if the | 1 | -| | launcher is also installed. | | -+---------------------------+--------------------------------------+--------------------------+ -| CompileAll | Compile all ``.py`` files to | 0 | -| | ``.pyc``. | | -+---------------------------+--------------------------------------+--------------------------+ -| PrependPath | Prepend install and Scripts | 0 | -| | directories to :envvar:`PATH` and | | -| | add ``.PY`` to :envvar:`PATHEXT` | | -+---------------------------+--------------------------------------+--------------------------+ -| AppendPath | Append install and Scripts | 0 | -| | directories to :envvar:`PATH` and | | -| | add ``.PY`` to :envvar:`PATHEXT` | | -+---------------------------+--------------------------------------+--------------------------+ -| Shortcuts | Create shortcuts for the interpreter,| 1 | -| | documentation and IDLE if installed. | | -+---------------------------+--------------------------------------+--------------------------+ -| Include_doc | Install Python manual | 1 | -+---------------------------+--------------------------------------+--------------------------+ -| Include_debug | Install debug binaries | 0 | -+---------------------------+--------------------------------------+--------------------------+ -| Include_dev | Install developer headers and | 1 | -| | libraries. Omitting this may lead to | | -| | an unusable installation. | | -+---------------------------+--------------------------------------+--------------------------+ -| Include_exe | Install :file:`python.exe` and | 1 | -| | related files. Omitting this may | | -| | lead to an unusable installation. | | -+---------------------------+--------------------------------------+--------------------------+ -| Include_launcher | Install :ref:`launcher`. | 1 | -+---------------------------+--------------------------------------+--------------------------+ -| InstallLauncherAllUsers | Installs the launcher for all | 1 | -| | users. Also requires | | -| | ``Include_launcher`` to be set to 1 | | -+---------------------------+--------------------------------------+--------------------------+ -| Include_lib | Install standard library and | 1 | -| | extension modules. Omitting this may | | -| | lead to an unusable installation. | | -+---------------------------+--------------------------------------+--------------------------+ -| Include_pip | Install bundled pip and setuptools | 1 | -+---------------------------+--------------------------------------+--------------------------+ -| Include_symbols | Install debugging symbols (``*.pdb``)| 0 | -+---------------------------+--------------------------------------+--------------------------+ -| Include_tcltk | Install Tcl/Tk support and IDLE | 1 | -+---------------------------+--------------------------------------+--------------------------+ -| Include_test | Install standard library test suite | 1 | -+---------------------------+--------------------------------------+--------------------------+ -| Include_tools | Install utility scripts | 1 | -+---------------------------+--------------------------------------+--------------------------+ -| LauncherOnly | Only installs the launcher. This | 0 | -| | will override most other options. | | -+---------------------------+--------------------------------------+--------------------------+ -| SimpleInstall | Disable most install UI | 0 | -+---------------------------+--------------------------------------+--------------------------+ -| SimpleInstallDescription | A custom message to display when the | (empty) | -| | simplified install UI is used. | | -+---------------------------+--------------------------------------+--------------------------+ - -For example, to silently install a default, system-wide Python installation, -you could use the following command (from an elevated command prompt):: - - python-3.9.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0 - -To allow users to easily install a personal copy of Python without the test -suite, you could provide a shortcut with the following command. This will -display a simplified initial page and disallow customization:: - - python-3.9.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0 - SimpleInstall=1 SimpleInstallDescription="Just for me, no test suite." - -(Note that omitting the launcher also omits file associations, and is only -recommended for per-user installs when there is also a system-wide installation -that included the launcher.) - -The options listed above can also be provided in a file named ``unattend.xml`` -alongside the executable. This file specifies a list of options and values. -When a value is provided as an attribute, it will be converted to a number if -possible. Values provided as element text are always left as strings. This -example file sets the same options as the previous example: - -.. code-block:: xml - - - - - -.. _install-layout-option: - -Installing without downloading ------------------------------- - -As some features of Python are not included in the initial installer download, -selecting those features may require an internet connection. To avoid this -need, all possible components may be downloaded on-demand to create a complete -*layout* that will no longer require an internet connection regardless of the -selected features. Note that this download may be bigger than required, but -where a large number of installations are going to be performed it is very -useful to have a locally cached copy. - -Execute the following command from Command Prompt to download all possible -required files. Remember to substitute ``python-3.9.0.exe`` for the actual -name of your installer, and to create layouts in their own directories to -avoid collisions between files with the same name. - -:: - - python-3.9.0.exe /layout [optional target directory] - -You may also specify the ``/quiet`` option to hide the progress display. - -Modifying an install --------------------- - -Once Python has been installed, you can add or remove features through the -Programs and Features tool that is part of Windows. Select the Python entry and -choose "Uninstall/Change" to open the installer in maintenance mode. - -"Modify" allows you to add or remove features by modifying the checkboxes - -unchanged checkboxes will not install or remove anything. Some options cannot be -changed in this mode, such as the install directory; to modify these, you will -need to remove and then reinstall Python completely. - -"Repair" will verify all the files that should be installed using the current -settings and replace any that have been removed or modified. - -"Uninstall" will remove Python entirely, with the exception of the -:ref:`launcher`, which has its own entry in Programs and Features. - - -Installing free-threaded binaries ---------------------------------- - -.. versionadded:: 3.13 - -To install pre-built binaries with free-threading enabled (see :pep:`703`), you -should select "Customize installation". The second page of options includes the -"Download free-threaded binaries" checkbox. - -.. image:: win_install_freethreaded.png - -Selecting this option will download and install additional binaries to the same -location as the main Python install. The main executable is called -``python3.13t.exe``, and other binaries either receive a ``t`` suffix or a full -ABI suffix. Python source files and bundled third-party dependencies are shared -with the main install. - -The free-threaded version is registered as a regular Python install with the -tag ``3.13t`` (with a ``-32`` or ``-arm64`` suffix as normal for those -platforms). This allows tools to discover it, and for the :ref:`launcher` to -support ``py.exe -3.13t``. Note that the launcher will interpret ``py.exe -3`` -(or a ``python3`` shebang) as "the latest 3.x install", which will prefer the -free-threaded binaries over the regular ones, while ``py.exe -3.13`` will not. -If you use the short style of option, you may prefer to not install the -free-threaded binaries at this time. - -To specify the install option at the command line, use -``Include_freethreaded=1``. See :ref:`install-layout-option` for instructions on -pre-emptively downloading the additional binaries for offline install. The -options to include debug symbols and binaries also apply to the free-threaded -builds. - -Free-threaded binaries are also available :ref:`on nuget.org `. - - -Python launcher for Windows (deprecated) -======================================== - -.. deprecated:: 3.14 - - The launcher and this documentation have been superseded by the Python - Install Manager described above. This is preserved temporarily for historical - interest. - -.. versionadded:: 3.3 - -The Python launcher for Windows is a utility which aids in locating and -executing of different Python versions. It allows scripts (or the -command-line) to indicate a preference for a specific Python version, and -will locate and execute that version. - -Unlike the :envvar:`PATH` variable, the launcher will correctly select the most -appropriate version of Python. It will prefer per-user installations over -system-wide ones, and orders by language version rather than using the most -recently installed version. - -The launcher was originally specified in :pep:`397`. - -Getting started ---------------- - -From the command-line -^^^^^^^^^^^^^^^^^^^^^ - -.. versionchanged:: 3.6 - -System-wide installations of Python 3.3 and later will put the launcher on your -:envvar:`PATH`. The launcher is compatible with all available versions of -Python, so it does not matter which version is installed. To check that the -launcher is available, execute the following command in Command Prompt:: - - py - -You should find that the latest version of Python you have installed is -started - it can be exited as normal, and any additional command-line -arguments specified will be sent directly to Python. - -If you have multiple versions of Python installed (e.g., 3.7 and |version|) you -will have noticed that Python |version| was started - to launch Python 3.7, try -the command:: - - py -3.7 - -If you want the latest version of Python 2 you have installed, try the -command:: - - py -2 - -If you see the following error, you do not have the launcher installed:: - - 'py' is not recognized as an internal or external command, - operable program or batch file. - -The command:: - - py --list - -displays the currently installed version(s) of Python. - -The ``-x.y`` argument is the short form of the ``-V:Company/Tag`` argument, -which allows selecting a specific Python runtime, including those that may have -come from somewhere other than python.org. Any runtime registered by following -:pep:`514` will be discoverable. The ``--list`` command lists all available -runtimes using the ``-V:`` format. - -When using the ``-V:`` argument, specifying the Company will limit selection to -runtimes from that provider, while specifying only the Tag will select from all -providers. Note that omitting the slash implies a tag:: - - # Select any '3.*' tagged runtime - py -V:3 - - # Select any 'PythonCore' released runtime - py -V:PythonCore/ - - # Select PythonCore's latest Python 3 runtime - py -V:PythonCore/3 - -The short form of the argument (``-3``) only ever selects from core Python -releases, and not other distributions. However, the longer form (``-V:3``) will -select from any. - -The Company is matched on the full string, case-insensitive. The Tag is matched -on either the full string, or a prefix, provided the next character is a dot or a -hyphen. This allows ``-V:3.1`` to match ``3.1-32``, but not ``3.10``. Tags are -sorted using numerical ordering (``3.10`` is newer than ``3.1``), but are -compared using text (``-V:3.01`` does not match ``3.1``). - - -Virtual environments -^^^^^^^^^^^^^^^^^^^^ - -.. versionadded:: 3.5 - -If the launcher is run with no explicit Python version specification, and a -virtual environment (created with the standard library :mod:`venv` module or -the external ``virtualenv`` tool) active, the launcher will run the virtual -environment's interpreter rather than the global one. To run the global -interpreter, either deactivate the virtual environment, or explicitly specify -the global Python version. - -From a script -^^^^^^^^^^^^^ - -Let's create a test Python script - create a file called ``hello.py`` with the -following contents - -.. code-block:: python - - #! python - import sys - sys.stdout.write("hello from Python %s\n" % (sys.version,)) - -From the directory in which hello.py lives, execute the command:: - - py hello.py - -You should notice the version number of your latest Python 2.x installation -is printed. Now try changing the first line to be: - -.. code-block:: python - - #! python3 - -Re-executing the command should now print the latest Python 3.x information. -As with the above command-line examples, you can specify a more explicit -version qualifier. Assuming you have Python 3.7 installed, try changing -the first line to ``#! python3.7`` and you should find the 3.7 -version information printed. - -Note that unlike interactive use, a bare "python" will use the latest -version of Python 2.x that you have installed. This is for backward -compatibility and for compatibility with Unix, where the command ``python`` -typically refers to Python 2. - -From file associations -^^^^^^^^^^^^^^^^^^^^^^ - -The launcher should have been associated with Python files (i.e. ``.py``, -``.pyw``, ``.pyc`` files) when it was installed. This means that -when you double-click on one of these files from Windows explorer the launcher -will be used, and therefore you can use the same facilities described above to -have the script specify the version which should be used. - -The key benefit of this is that a single launcher can support multiple Python -versions at the same time depending on the contents of the first line. - -Shebang lines -------------- - -If the first line of a script file starts with ``#!``, it is known as a -"shebang" line. Linux and other Unix like operating systems have native -support for such lines and they are commonly used on such systems to indicate -how a script should be executed. This launcher allows the same facilities to -be used with Python scripts on Windows and the examples above demonstrate their -use. - -To allow shebang lines in Python scripts to be portable between Unix and -Windows, this launcher supports a number of 'virtual' commands to specify -which interpreter to use. The supported virtual commands are: - -* ``/usr/bin/env`` -* ``/usr/bin/python`` -* ``/usr/local/bin/python`` -* ``python`` - -For example, if the first line of your script starts with - -.. code-block:: sh - - #! /usr/bin/python - -The default Python or an active virtual environment will be located and used. -As many Python scripts written to work on Unix will already have this line, -you should find these scripts can be used by the launcher without modification. -If you are writing a new script on Windows which you hope will be useful on -Unix, you should use one of the shebang lines starting with ``/usr``. - -Any of the above virtual commands can be suffixed with an explicit version -(either just the major version, or the major and minor version). -Furthermore the 32-bit version can be requested by adding "-32" after the -minor version. I.e. ``/usr/bin/python3.7-32`` will request usage of the -32-bit Python 3.7. If a virtual environment is active, the version will be -ignored and the environment will be used. - -.. versionadded:: 3.7 - - Beginning with python launcher 3.7 it is possible to request 64-bit version - by the "-64" suffix. Furthermore it is possible to specify a major and - architecture without minor (i.e. ``/usr/bin/python3-64``). - -.. versionchanged:: 3.11 - - The "-64" suffix is deprecated, and now implies "any architecture that is - not provably i386/32-bit". To request a specific environment, use the new - :samp:`-V:{TAG}` argument with the complete tag. - -.. versionchanged:: 3.13 - - Virtual commands referencing ``python`` now prefer an active virtual - environment rather than searching :envvar:`PATH`. This handles cases where - the shebang specifies ``/usr/bin/env python3`` but :file:`python3.exe` is - not present in the active environment. - -The ``/usr/bin/env`` form of shebang line has one further special property. -Before looking for installed Python interpreters, this form will search the -executable :envvar:`PATH` for a Python executable matching the name provided -as the first argument. This corresponds to the behaviour of the Unix ``env`` -program, which performs a :envvar:`PATH` search. -If an executable matching the first argument after the ``env`` command cannot -be found, but the argument starts with ``python``, it will be handled as -described for the other virtual commands. -The environment variable :envvar:`!PYLAUNCHER_NO_SEARCH_PATH` may be set -(to any value) to skip this search of :envvar:`PATH`. - -Shebang lines that do not match any of these patterns are looked up in the -``[commands]`` section of the launcher's :ref:`.INI file `. -This may be used to handle certain commands in a way that makes sense for your -system. The name of the command must be a single argument (no spaces in the -shebang executable), and the value substituted is the full path to the -executable (additional arguments specified in the .INI will be quoted as part -of the filename). - -.. code-block:: ini - - [commands] - /bin/xpython=C:\Program Files\XPython\python.exe - -Any commands not found in the .INI file are treated as **Windows** executable -paths that are absolute or relative to the directory containing the script file. -This is a convenience for Windows-only scripts, such as those generated by an -installer, since the behavior is not compatible with Unix-style shells. -These paths may be quoted, and may include multiple arguments, after which the -path to the script and any additional arguments will be appended. - - -Arguments in shebang lines --------------------------- - -The shebang lines can also specify additional options to be passed to the -Python interpreter. For example, if you have a shebang line: - -.. code-block:: sh - - #! /usr/bin/python -v - -Then Python will be started with the ``-v`` option - -Customization -------------- - -.. _launcher-ini: - -Customization via INI files -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Two .ini files will be searched by the launcher - ``py.ini`` in the current -user's application data directory (``%LOCALAPPDATA%`` or ``$env:LocalAppData``) -and ``py.ini`` in the same directory as the launcher. The same .ini files are -used for both the 'console' version of the launcher (i.e. py.exe) and for the -'windows' version (i.e. pyw.exe). - -Customization specified in the "application directory" will have precedence over -the one next to the executable, so a user, who may not have write access to the -.ini file next to the launcher, can override commands in that global .ini file. - -Customizing default Python versions -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -In some cases, a version qualifier can be included in a command to dictate -which version of Python will be used by the command. A version qualifier -starts with a major version number and can optionally be followed by a period -('.') and a minor version specifier. Furthermore it is possible to specify -if a 32 or 64 bit implementation shall be requested by adding "-32" or "-64". - -For example, a shebang line of ``#!python`` has no version qualifier, while -``#!python3`` has a version qualifier which specifies only a major version. - -If no version qualifiers are found in a command, the environment -variable :envvar:`!PY_PYTHON` can be set to specify the default version -qualifier. If it is not set, the default is "3". The variable can -specify any value that may be passed on the command line, such as "3", -"3.7", "3.7-32" or "3.7-64". (Note that the "-64" option is only -available with the launcher included with Python 3.7 or newer.) - -If no minor version qualifiers are found, the environment variable -``PY_PYTHON{major}`` (where ``{major}`` is the current major version qualifier -as determined above) can be set to specify the full version. If no such option -is found, the launcher will enumerate the installed Python versions and use -the latest minor release found for the major version, which is likely, -although not guaranteed, to be the most recently installed version in that -family. - -On 64-bit Windows with both 32-bit and 64-bit implementations of the same -(major.minor) Python version installed, the 64-bit version will always be -preferred. This will be true for both 32-bit and 64-bit implementations of the -launcher - a 32-bit launcher will prefer to execute a 64-bit Python installation -of the specified version if available. This is so the behavior of the launcher -can be predicted knowing only what versions are installed on the PC and -without regard to the order in which they were installed (i.e., without knowing -whether a 32 or 64-bit version of Python and corresponding launcher was -installed last). As noted above, an optional "-32" or "-64" suffix can be -used on a version specifier to change this behaviour. - -Examples: - -* If no relevant options are set, the commands ``python`` and - ``python2`` will use the latest Python 2.x version installed and - the command ``python3`` will use the latest Python 3.x installed. - -* The command ``python3.7`` will not consult any - options at all as the versions are fully specified. - -* If ``PY_PYTHON=3``, the commands ``python`` and ``python3`` will both use - the latest installed Python 3 version. - -* If ``PY_PYTHON=3.7-32``, the command ``python`` will use the 32-bit - implementation of 3.7 whereas the command ``python3`` will use the latest - installed Python (PY_PYTHON was not considered at all as a major - version was specified.) - -* If ``PY_PYTHON=3`` and ``PY_PYTHON3=3.7``, the commands - ``python`` and ``python3`` will both use specifically 3.7 - -In addition to environment variables, the same settings can be configured -in the .INI file used by the launcher. The section in the INI file is -called ``[defaults]`` and the key name will be the same as the -environment variables without the leading ``PY_`` prefix (and note that -the key names in the INI file are case insensitive.) The contents of -an environment variable will override things specified in the INI file. - -For example: - -* Setting ``PY_PYTHON=3.7`` is equivalent to the INI file containing: - -.. code-block:: ini - - [defaults] - python=3.7 - -* Setting ``PY_PYTHON=3`` and ``PY_PYTHON3=3.7`` is equivalent to the INI file - containing: - -.. code-block:: ini - - [defaults] - python=3 - python3=3.7 - -Diagnostics ------------ - -If an environment variable :envvar:`!PYLAUNCHER_DEBUG` is set (to any value), the -launcher will print diagnostic information to stderr (i.e. to the console). -While this information manages to be simultaneously verbose *and* terse, it -should allow you to see what versions of Python were located, why a -particular version was chosen and the exact command-line used to execute the -target Python. It is primarily intended for testing and debugging. - -Dry run -------- - -If an environment variable :envvar:`!PYLAUNCHER_DRYRUN` is set (to any value), -the launcher will output the command it would have run, but will not actually -launch Python. This may be useful for tools that want to use the launcher to -detect and then launch Python directly. Note that the command written to -standard output is always encoded using UTF-8, and may not render correctly in -the console. - -Install on demand ------------------ - -If an environment variable :envvar:`!PYLAUNCHER_ALLOW_INSTALL` is set (to any -value), and the requested Python version is not installed but is available on -the Microsoft Store, the launcher will attempt to install it. This may require -user interaction to complete, and you may need to run the command again. - -An additional :envvar:`!PYLAUNCHER_ALWAYS_INSTALL` variable causes the launcher -to always try to install Python, even if it is detected. This is mainly intended -for testing (and should be used with :envvar:`!PYLAUNCHER_DRYRUN`). - -Return codes ------------- - -The following exit codes may be returned by the Python launcher. Unfortunately, -there is no way to distinguish these from the exit code of Python itself. - -The names of codes are as used in the sources, and are only for reference. There -is no way to access or resolve them apart from reading this page. Entries are -listed in alphabetical order of names. - -+-------------------+-------+-----------------------------------------------+ -| Name | Value | Description | -+===================+=======+===============================================+ -| RC_BAD_VENV_CFG | 107 | A :file:`pyvenv.cfg` was found but is corrupt.| -+-------------------+-------+-----------------------------------------------+ -| RC_CREATE_PROCESS | 101 | Failed to launch Python. | -+-------------------+-------+-----------------------------------------------+ -| RC_INSTALLING | 111 | An install was started, but the command will | -| | | need to be re-run after it completes. | -+-------------------+-------+-----------------------------------------------+ -| RC_INTERNAL_ERROR | 109 | Unexpected error. Please report a bug. | -+-------------------+-------+-----------------------------------------------+ -| RC_NO_COMMANDLINE | 108 | Unable to obtain command line from the | -| | | operating system. | -+-------------------+-------+-----------------------------------------------+ -| RC_NO_PYTHON | 103 | Unable to locate the requested version. | -+-------------------+-------+-----------------------------------------------+ -| RC_NO_VENV_CFG | 106 | A :file:`pyvenv.cfg` was required but not | -| | | found. | -+-------------------+-------+-----------------------------------------------+ - diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 7b3475882063635..4adb5cbd1b7d3b9 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -522,7 +522,7 @@ Other CPython Implementation Changes have been removed, as they can be derived from ``exc_value``. (Contributed by Irit Katriel in :issue:`45711`.) -* A new :ref:`command line option `, ``AppendPath``, +* A new command line option, ``AppendPath``, has been added for the Windows installer. It behaves similarly to ``PrependPath``, but appends the install and scripts directories instead of prepending them. diff --git a/Include/internal/pycore_magic_number.h b/Include/internal/pycore_magic_number.h index 53ed570f99f118a..e0c5cfc02bbc359 100644 --- a/Include/internal/pycore_magic_number.h +++ b/Include/internal/pycore_magic_number.h @@ -310,9 +310,6 @@ Known values: You should always use the *upcoming* tag. For example, if 3.12a6 came out a week ago, I should put "Python 3.12a7" next to my new magic number. -Whenever PYC_MAGIC_NUMBER is changed, the ranges in the magic_values array in -PC/launcher.c must also be updated. - */ #define PYC_MAGIC_NUMBER 3704 diff --git a/InternalDocs/interpreter.md b/InternalDocs/interpreter.md index 7fc41a807dd5667..fa89996aa654291 100644 --- a/InternalDocs/interpreter.md +++ b/InternalDocs/interpreter.md @@ -307,9 +307,7 @@ With a new bytecode you must also change what is called the "magic number" for .pyc files: bump the value of the variable `MAGIC_NUMBER` in [`Lib/importlib/_bootstrap_external.py`](../Lib/importlib/_bootstrap_external.py). Changing this number will lead to all .pyc files with the old `MAGIC_NUMBER` -to be recompiled by the interpreter on import. Whenever `MAGIC_NUMBER` is -changed, the ranges in the `magic_values` array in -[`PC/launcher.c`](../PC/launcher.c) may also need to be updated. Changes to +to be recompiled by the interpreter on import. Changes to [`Lib/importlib/_bootstrap_external.py`](../Lib/importlib/_bootstrap_external.py) will take effect only after running `make regen-importlib`. diff --git a/Lib/test/test_launcher.py b/Lib/test/test_launcher.py deleted file mode 100644 index 795890bd7e4b473..000000000000000 --- a/Lib/test/test_launcher.py +++ /dev/null @@ -1,804 +0,0 @@ -import contextlib -import itertools -import os -import re -import shutil -import subprocess -import sys -import sysconfig -import tempfile -import unittest -from pathlib import Path -from test import support - -if sys.platform != "win32": - raise unittest.SkipTest("test only applies to Windows") - -# Get winreg after the platform check -import winreg - - -PY_EXE = "py.exe" -DEBUG_BUILD = False -if sys.executable.casefold().endswith("_d.exe".casefold()): - PY_EXE = "py_d.exe" - DEBUG_BUILD = True - -# Registry data to create. On removal, everything beneath top-level names will -# be deleted. -TEST_DATA = { - "PythonTestSuite": { - "DisplayName": "Python Test Suite", - "SupportUrl": "https://www.python.org/", - "3.100": { - "DisplayName": "X.Y version", - "InstallPath": { - None: sys.prefix, - "ExecutablePath": "X.Y.exe", - } - }, - "3.100-32": { - "DisplayName": "X.Y-32 version", - "InstallPath": { - None: sys.prefix, - "ExecutablePath": "X.Y-32.exe", - } - }, - "3.100-arm64": { - "DisplayName": "X.Y-arm64 version", - "InstallPath": { - None: sys.prefix, - "ExecutablePath": "X.Y-arm64.exe", - "ExecutableArguments": "-X fake_arg_for_test", - } - }, - "ignored": { - "DisplayName": "Ignored because no ExecutablePath", - "InstallPath": { - None: sys.prefix, - } - }, - }, - "PythonTestSuite1": { - "DisplayName": "Python Test Suite Single", - "3.100": { - "DisplayName": "Single Interpreter", - "InstallPath": { - None: sys.prefix, - "ExecutablePath": sys.executable, - } - } - }, -} - - -TEST_PY_ENV = dict( - PY_PYTHON="PythonTestSuite/3.100", - PY_PYTHON2="PythonTestSuite/3.100-32", - PY_PYTHON3="PythonTestSuite/3.100-arm64", -) - - -TEST_PY_DEFAULTS = "\n".join([ - "[defaults]", - *[f"{k[3:].lower()}={v}" for k, v in TEST_PY_ENV.items()], -]) - - -TEST_PY_COMMANDS = "\n".join([ - "[commands]", - "test-command=TEST_EXE.exe", -]) - - -def quote(s): - s = str(s) - return f'"{s}"' if " " in s else s - - -def create_registry_data(root, data): - def _create_registry_data(root, key, value): - if isinstance(value, dict): - # For a dict, we recursively create keys - with winreg.CreateKeyEx(root, key) as hkey: - for k, v in value.items(): - _create_registry_data(hkey, k, v) - elif isinstance(value, str): - # For strings, we set values. 'key' may be None in this case - winreg.SetValueEx(root, key, None, winreg.REG_SZ, value) - else: - raise TypeError("don't know how to create data for '{}'".format(value)) - - for k, v in data.items(): - _create_registry_data(root, k, v) - - -def enum_keys(root): - for i in itertools.count(): - try: - yield winreg.EnumKey(root, i) - except OSError as ex: - if ex.winerror == 259: - break - raise - - -def delete_registry_data(root, keys): - ACCESS = winreg.KEY_WRITE | winreg.KEY_ENUMERATE_SUB_KEYS - for key in list(keys): - with winreg.OpenKey(root, key, access=ACCESS) as hkey: - delete_registry_data(hkey, enum_keys(hkey)) - winreg.DeleteKey(root, key) - - -def is_installed(tag): - key = rf"Software\Python\PythonCore\{tag}\InstallPath" - for root, flag in [ - (winreg.HKEY_CURRENT_USER, 0), - (winreg.HKEY_LOCAL_MACHINE, winreg.KEY_WOW64_64KEY), - (winreg.HKEY_LOCAL_MACHINE, winreg.KEY_WOW64_32KEY), - ]: - try: - winreg.CloseKey(winreg.OpenKey(root, key, access=winreg.KEY_READ | flag)) - return True - except OSError: - pass - return False - - -class PreservePyIni: - def __init__(self, path, content): - self.path = Path(path) - self.content = content - self._preserved = None - - def __enter__(self): - try: - self._preserved = self.path.read_bytes() - except FileNotFoundError: - self._preserved = None - self.path.write_text(self.content, encoding="utf-16") - - def __exit__(self, *exc_info): - if self._preserved is None: - self.path.unlink() - else: - self.path.write_bytes(self._preserved) - - -class RunPyMixin: - py_exe = None - - @classmethod - def find_py(cls): - py_exe = None - if sysconfig.is_python_build(): - py_exe = Path(sys.executable).parent / PY_EXE - else: - for p in os.getenv("PATH").split(";"): - if p: - py_exe = Path(p) / PY_EXE - if py_exe.is_file(): - break - else: - py_exe = None - - # Test launch and check version, to exclude installs of older - # releases when running outside of a source tree - if py_exe: - try: - with subprocess.Popen( - [py_exe, "-h"], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - encoding="ascii", - errors="ignore", - ) as p: - p.stdin.close() - version = next(p.stdout, "\n").splitlines()[0].rpartition(" ")[2] - p.stdout.read() - p.wait(10) - if not sys.version.startswith(version): - py_exe = None - except OSError: - py_exe = None - - if not py_exe: - raise unittest.SkipTest( - "cannot locate '{}' for test".format(PY_EXE) - ) - return py_exe - - def get_py_exe(self): - if not self.py_exe: - self.py_exe = self.find_py() - return self.py_exe - - def run_py(self, args, env=None, allow_fail=False, expect_returncode=0, argv=None): - if not self.py_exe: - self.py_exe = self.find_py() - - ignore = {"VIRTUAL_ENV", "PY_PYTHON", "PY_PYTHON2", "PY_PYTHON3"} - env = { - **{k.upper(): v for k, v in os.environ.items() if k.upper() not in ignore}, - "PYLAUNCHER_DEBUG": "1", - "PYLAUNCHER_DRYRUN": "1", - "PYLAUNCHER_LIMIT_TO_COMPANY": "", - **{k.upper(): v for k, v in (env or {}).items()}, - } - if ini_dir := getattr(self, '_ini_dir', None): - env.setdefault("_PYLAUNCHER_INIDIR", ini_dir) - if not argv: - argv = [self.py_exe, *args] - with subprocess.Popen( - argv, - env=env, - executable=self.py_exe, - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - ) as p: - p.stdin.close() - p.wait(10) - out = p.stdout.read().decode("utf-8", "replace") - err = p.stderr.read().decode("ascii", "replace").replace("\uFFFD", "?") - if p.returncode != expect_returncode and support.verbose and not allow_fail: - print("++ COMMAND ++") - print([self.py_exe, *args]) - print("++ STDOUT ++") - print(out) - print("++ STDERR ++") - print(err) - if allow_fail and p.returncode != expect_returncode: - raise subprocess.CalledProcessError(p.returncode, [self.py_exe, *args], out, err) - else: - self.assertEqual(expect_returncode, p.returncode) - data = { - s.partition(":")[0]: s.partition(":")[2].lstrip() - for s in err.splitlines() - if not s.startswith("#") and ":" in s - } - data["stdout"] = out - data["stderr"] = err - return data - - def py_ini(self, content): - ini_dir = getattr(self, '_ini_dir', None) - if not ini_dir: - local_appdata = os.environ.get("LOCALAPPDATA") - if not local_appdata: - raise unittest.SkipTest("LOCALAPPDATA environment variable is " - "missing or empty") - ini_dir = local_appdata - return PreservePyIni(Path(ini_dir) / "py.ini", content) - - @contextlib.contextmanager - def script(self, content, encoding="utf-8"): - file = Path(tempfile.mktemp(dir=os.getcwd()) + ".py") - if isinstance(content, bytes): - file.write_bytes(content) - else: - file.write_text(content, encoding=encoding) - try: - yield file - finally: - file.unlink() - - @contextlib.contextmanager - def fake_venv(self): - venv = Path.cwd() / "Scripts" - venv.mkdir(exist_ok=True, parents=True) - venv_exe = (venv / ("python_d.exe" if DEBUG_BUILD else "python.exe")) - venv_exe.touch() - try: - yield venv_exe, {"VIRTUAL_ENV": str(venv.parent)} - finally: - shutil.rmtree(venv) - - -class TestLauncher(unittest.TestCase, RunPyMixin): - @classmethod - def setUpClass(cls): - with winreg.CreateKey(winreg.HKEY_CURRENT_USER, rf"Software\Python") as key: - create_registry_data(key, TEST_DATA) - - if support.verbose: - p = subprocess.check_output("reg query HKCU\\Software\\Python /s") - #print(p.decode('mbcs')) - - cls._ini_dir = tempfile.mkdtemp() - cls.addClassCleanup(shutil.rmtree, cls._ini_dir, ignore_errors=True) - - @classmethod - def tearDownClass(cls): - with winreg.OpenKey(winreg.HKEY_CURRENT_USER, rf"Software\Python", access=winreg.KEY_WRITE | winreg.KEY_ENUMERATE_SUB_KEYS) as key: - delete_registry_data(key, TEST_DATA) - - - def test_version(self): - data = self.run_py(["-0"]) - self.assertEqual(self.py_exe, Path(data["argv0"])) - self.assertEqual(sys.version.partition(" ")[0], data["version"]) - - def test_help_option(self): - data = self.run_py(["-h"]) - self.assertEqual("True", data["SearchInfo.help"]) - - def test_list_option(self): - for opt, v1, v2 in [ - ("-0", "True", "False"), - ("-0p", "False", "True"), - ("--list", "True", "False"), - ("--list-paths", "False", "True"), - ]: - with self.subTest(opt): - data = self.run_py([opt]) - self.assertEqual(v1, data["SearchInfo.list"]) - self.assertEqual(v2, data["SearchInfo.listPaths"]) - - def test_list(self): - data = self.run_py(["--list"]) - found = {} - expect = {} - for line in data["stdout"].splitlines(): - m = re.match(r"\s*(.+?)\s+?(\*\s+)?(.+)$", line) - if m: - found[m.group(1)] = m.group(3) - for company in TEST_DATA: - company_data = TEST_DATA[company] - tags = [t for t in company_data if isinstance(company_data[t], dict)] - for tag in tags: - arg = f"-V:{company}/{tag}" - expect[arg] = company_data[tag]["DisplayName"] - expect.pop(f"-V:{company}/ignored", None) - - actual = {k: v for k, v in found.items() if k in expect} - try: - self.assertDictEqual(expect, actual) - except: - if support.verbose: - print("*** STDOUT ***") - print(data["stdout"]) - raise - - def test_list_paths(self): - data = self.run_py(["--list-paths"]) - found = {} - expect = {} - for line in data["stdout"].splitlines(): - m = re.match(r"\s*(.+?)\s+?(\*\s+)?(.+)$", line) - if m: - found[m.group(1)] = m.group(3) - for company in TEST_DATA: - company_data = TEST_DATA[company] - tags = [t for t in company_data if isinstance(company_data[t], dict)] - for tag in tags: - arg = f"-V:{company}/{tag}" - install = company_data[tag]["InstallPath"] - try: - expect[arg] = install["ExecutablePath"] - try: - expect[arg] += " " + install["ExecutableArguments"] - except KeyError: - pass - except KeyError: - expect[arg] = str(Path(install[None]) / Path(sys.executable).name) - - expect.pop(f"-V:{company}/ignored", None) - - actual = {k: v for k, v in found.items() if k in expect} - try: - self.assertDictEqual(expect, actual) - except: - if support.verbose: - print("*** STDOUT ***") - print(data["stdout"]) - raise - - def test_filter_to_company(self): - company = "PythonTestSuite" - data = self.run_py([f"-V:{company}/"]) - self.assertEqual("X.Y.exe", data["LaunchCommand"]) - self.assertEqual(company, data["env.company"]) - self.assertEqual("3.100", data["env.tag"]) - - def test_filter_to_company_with_default(self): - company = "PythonTestSuite" - data = self.run_py([f"-V:{company}/"], env=dict(PY_PYTHON="3.0")) - self.assertEqual("X.Y.exe", data["LaunchCommand"]) - self.assertEqual(company, data["env.company"]) - self.assertEqual("3.100", data["env.tag"]) - - def test_filter_to_tag(self): - company = "PythonTestSuite" - data = self.run_py(["-V:3.100"]) - self.assertEqual("X.Y.exe", data["LaunchCommand"]) - self.assertEqual(company, data["env.company"]) - self.assertEqual("3.100", data["env.tag"]) - - data = self.run_py(["-V:3.100-32"]) - self.assertEqual("X.Y-32.exe", data["LaunchCommand"]) - self.assertEqual(company, data["env.company"]) - self.assertEqual("3.100-32", data["env.tag"]) - - data = self.run_py(["-V:3.100-arm64"]) - self.assertEqual("X.Y-arm64.exe -X fake_arg_for_test", data["LaunchCommand"]) - self.assertEqual(company, data["env.company"]) - self.assertEqual("3.100-arm64", data["env.tag"]) - - def test_filter_to_company_and_tag(self): - company = "PythonTestSuite" - data = self.run_py([f"-V:{company}/3.1"], expect_returncode=103) - - data = self.run_py([f"-V:{company}/3.100"]) - self.assertEqual("X.Y.exe", data["LaunchCommand"]) - self.assertEqual(company, data["env.company"]) - self.assertEqual("3.100", data["env.tag"]) - - def test_filter_with_single_install(self): - company = "PythonTestSuite1" - data = self.run_py( - ["-V:Nonexistent"], - env={"PYLAUNCHER_LIMIT_TO_COMPANY": company}, - expect_returncode=103, - ) - - def test_search_major_3(self): - try: - data = self.run_py(["-3"], allow_fail=True) - except subprocess.CalledProcessError: - raise unittest.SkipTest("requires at least one Python 3.x install") - self.assertEqual("PythonCore", data["env.company"]) - self.assertStartsWith(data["env.tag"], "3.") - - def test_search_major_3_32(self): - try: - data = self.run_py(["-3-32"], allow_fail=True) - except subprocess.CalledProcessError: - if not any(is_installed(f"3.{i}-32") for i in range(5, 11)): - raise unittest.SkipTest("requires at least one 32-bit Python 3.x install") - raise - self.assertEqual("PythonCore", data["env.company"]) - self.assertStartsWith(data["env.tag"], "3.") - self.assertEndsWith(data["env.tag"], "-32") - - def test_search_major_2(self): - try: - data = self.run_py(["-2"], allow_fail=True) - except subprocess.CalledProcessError: - if not is_installed("2.7"): - raise unittest.SkipTest("requires at least one Python 2.x install") - raise - self.assertEqual("PythonCore", data["env.company"]) - self.assertStartsWith(data["env.tag"], "2.") - - def test_py_default(self): - with self.py_ini(TEST_PY_DEFAULTS): - data = self.run_py(["-arg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100", data["SearchInfo.tag"]) - self.assertEqual("X.Y.exe -arg", data["stdout"].strip()) - - def test_py2_default(self): - with self.py_ini(TEST_PY_DEFAULTS): - data = self.run_py(["-2", "-arg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100-32", data["SearchInfo.tag"]) - self.assertEqual("X.Y-32.exe -arg", data["stdout"].strip()) - - def test_py3_default(self): - with self.py_ini(TEST_PY_DEFAULTS): - data = self.run_py(["-3", "-arg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100-arm64", data["SearchInfo.tag"]) - self.assertEqual("X.Y-arm64.exe -X fake_arg_for_test -arg", data["stdout"].strip()) - - def test_py_default_env(self): - data = self.run_py(["-arg"], env=TEST_PY_ENV) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100", data["SearchInfo.tag"]) - self.assertEqual("X.Y.exe -arg", data["stdout"].strip()) - - def test_py2_default_env(self): - data = self.run_py(["-2", "-arg"], env=TEST_PY_ENV) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100-32", data["SearchInfo.tag"]) - self.assertEqual("X.Y-32.exe -arg", data["stdout"].strip()) - - def test_py3_default_env(self): - data = self.run_py(["-3", "-arg"], env=TEST_PY_ENV) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100-arm64", data["SearchInfo.tag"]) - self.assertEqual("X.Y-arm64.exe -X fake_arg_for_test -arg", data["stdout"].strip()) - - def test_py_default_short_argv0(self): - with self.py_ini(TEST_PY_DEFAULTS): - for argv0 in ['"py.exe"', 'py.exe', '"py"', 'py']: - with self.subTest(argv0): - data = self.run_py(["--version"], argv=f'{argv0} --version') - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100", data["SearchInfo.tag"]) - self.assertEqual("X.Y.exe --version", data["stdout"].strip()) - - def test_py_default_in_list(self): - data = self.run_py(["-0"], env=TEST_PY_ENV) - default = None - for line in data["stdout"].splitlines(): - m = re.match(r"\s*-V:(.+?)\s+?\*\s+(.+)$", line) - if m: - default = m.group(1) - break - self.assertEqual("PythonTestSuite/3.100", default) - - def test_virtualenv_in_list(self): - with self.fake_venv() as (venv_exe, env): - data = self.run_py(["-0p"], env=env) - for line in data["stdout"].splitlines(): - m = re.match(r"\s*\*\s+(.+)$", line) - if m: - self.assertEqual(str(venv_exe), m.group(1)) - break - else: - if support.verbose: - print(data["stdout"]) - print(data["stderr"]) - self.fail("did not find active venv path") - - data = self.run_py(["-0"], env=env) - for line in data["stdout"].splitlines(): - m = re.match(r"\s*\*\s+(.+)$", line) - if m: - self.assertEqual("Active venv", m.group(1)) - break - else: - self.fail("did not find active venv entry") - - def test_virtualenv_with_env(self): - with self.fake_venv() as (venv_exe, env): - data1 = self.run_py([], env={**env, "PY_PYTHON": "PythonTestSuite/3"}) - data2 = self.run_py(["-V:PythonTestSuite/3"], env={**env, "PY_PYTHON": "PythonTestSuite/3"}) - # Compare stdout, because stderr goes via ascii - self.assertEqual(data1["stdout"].strip(), quote(venv_exe)) - self.assertEqual(data1["SearchInfo.lowPriorityTag"], "True") - # Ensure passing the argument doesn't trigger the same behaviour - self.assertNotEqual(data2["stdout"].strip(), quote(venv_exe)) - self.assertNotEqual(data2["SearchInfo.lowPriorityTag"], "True") - - def test_py_shebang(self): - with self.py_ini(TEST_PY_DEFAULTS): - with self.script("#! /usr/bin/python -prearg") as script: - data = self.run_py([script, "-postarg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100", data["SearchInfo.tag"]) - self.assertEqual(f"X.Y.exe -prearg {quote(script)} -postarg", data["stdout"].strip()) - - def test_python_shebang(self): - with self.py_ini(TEST_PY_DEFAULTS): - with self.script("#! python -prearg") as script: - data = self.run_py([script, "-postarg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100", data["SearchInfo.tag"]) - self.assertEqual(f"X.Y.exe -prearg {quote(script)} -postarg", data["stdout"].strip()) - - def test_py2_shebang(self): - with self.py_ini(TEST_PY_DEFAULTS): - with self.script("#! /usr/bin/python2 -prearg") as script: - data = self.run_py([script, "-postarg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100-32", data["SearchInfo.tag"]) - self.assertEqual(f"X.Y-32.exe -prearg {quote(script)} -postarg", - data["stdout"].strip()) - - def test_py3_shebang(self): - with self.py_ini(TEST_PY_DEFAULTS): - with self.script("#! /usr/bin/python3 -prearg") as script: - data = self.run_py([script, "-postarg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100-arm64", data["SearchInfo.tag"]) - self.assertEqual(f"X.Y-arm64.exe -X fake_arg_for_test -prearg {quote(script)} -postarg", - data["stdout"].strip()) - - def test_py_shebang_nl(self): - with self.py_ini(TEST_PY_DEFAULTS): - with self.script("#! /usr/bin/python -prearg\n") as script: - data = self.run_py([script, "-postarg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100", data["SearchInfo.tag"]) - self.assertEqual(f"X.Y.exe -prearg {quote(script)} -postarg", - data["stdout"].strip()) - - def test_py2_shebang_nl(self): - with self.py_ini(TEST_PY_DEFAULTS): - with self.script("#! /usr/bin/python2 -prearg\n") as script: - data = self.run_py([script, "-postarg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100-32", data["SearchInfo.tag"]) - self.assertEqual(f"X.Y-32.exe -prearg {quote(script)} -postarg", - data["stdout"].strip()) - - def test_py3_shebang_nl(self): - with self.py_ini(TEST_PY_DEFAULTS): - with self.script("#! /usr/bin/python3 -prearg\n") as script: - data = self.run_py([script, "-postarg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100-arm64", data["SearchInfo.tag"]) - self.assertEqual(f"X.Y-arm64.exe -X fake_arg_for_test -prearg {quote(script)} -postarg", - data["stdout"].strip()) - - def test_py_shebang_short_argv0(self): - with self.py_ini(TEST_PY_DEFAULTS): - with self.script("#! /usr/bin/python -prearg") as script: - # Override argv to only pass "py.exe" as the command - data = self.run_py([script, "-postarg"], argv=f'"py.exe" "{script}" -postarg') - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100", data["SearchInfo.tag"]) - self.assertEqual(f'X.Y.exe -prearg "{script}" -postarg', data["stdout"].strip()) - - def test_py_shebang_valid_bom(self): - with self.py_ini(TEST_PY_DEFAULTS): - content = "#! /usr/bin/python -prearg".encode("utf-8") - with self.script(b"\xEF\xBB\xBF" + content) as script: - data = self.run_py([script, "-postarg"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100", data["SearchInfo.tag"]) - self.assertEqual(f"X.Y.exe -prearg {quote(script)} -postarg", data["stdout"].strip()) - - def test_py_shebang_invalid_bom(self): - with self.py_ini(TEST_PY_DEFAULTS): - content = "#! /usr/bin/python3 -prearg".encode("utf-8") - with self.script(b"\xEF\xAA\xBF" + content) as script: - data = self.run_py([script, "-postarg"]) - self.assertIn("Invalid BOM", data["stderr"]) - self.assertEqual("PythonTestSuite", data["SearchInfo.company"]) - self.assertEqual("3.100", data["SearchInfo.tag"]) - self.assertEqual(f"X.Y.exe {quote(script)} -postarg", data["stdout"].strip()) - - def test_py_handle_64_in_ini(self): - with self.py_ini("\n".join(["[defaults]", "python=3.999-64"])): - # Expect this to fail, but should get oldStyleTag flipped on - data = self.run_py([], allow_fail=True, expect_returncode=103) - self.assertEqual("3.999-64", data["SearchInfo.tag"]) - self.assertEqual("True", data["SearchInfo.oldStyleTag"]) - - def test_search_path(self): - exe = Path("arbitrary-exe-name.exe").absolute() - exe.touch() - self.addCleanup(exe.unlink) - with self.py_ini(TEST_PY_DEFAULTS): - with self.script(f"#! /usr/bin/env {exe.stem} -prearg") as script: - data = self.run_py( - [script, "-postarg"], - env={"PATH": f"{exe.parent};{os.getenv('PATH')}"}, - ) - self.assertEqual(f"{quote(exe)} -prearg {quote(script)} -postarg", - data["stdout"].strip()) - - def test_search_path_exe(self): - # Leave the .exe on the name to ensure we don't add it a second time - exe = Path("arbitrary-exe-name.exe").absolute() - exe.touch() - self.addCleanup(exe.unlink) - with self.py_ini(TEST_PY_DEFAULTS): - with self.script(f"#! /usr/bin/env {exe.name} -prearg") as script: - data = self.run_py( - [script, "-postarg"], - env={"PATH": f"{exe.parent};{os.getenv('PATH')}"}, - ) - self.assertEqual(f"{quote(exe)} -prearg {quote(script)} -postarg", - data["stdout"].strip()) - - def test_recursive_search_path(self): - stem = self.get_py_exe().stem - with self.py_ini(TEST_PY_DEFAULTS): - with self.script(f"#! /usr/bin/env {stem}") as script: - data = self.run_py( - [script], - env={"PATH": f"{self.get_py_exe().parent};{os.getenv('PATH')}"}, - ) - # The recursive search is ignored and we get normal "py" behavior - self.assertEqual(f"X.Y.exe {quote(script)}", data["stdout"].strip()) - - def test_install(self): - data = self.run_py(["-V:3.10"], env={"PYLAUNCHER_ALWAYS_INSTALL": "1"}, expect_returncode=111) - cmd = data["stdout"].strip() - # If winget is runnable, we should find it. Otherwise, we'll be trying - # to open the Store. - try: - subprocess.check_call(["winget.exe", "--version"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - except FileNotFoundError: - self.assertIn("ms-windows-store://", cmd) - else: - self.assertIn("winget.exe", cmd) - # Both command lines include the store ID - self.assertIn("9PJPW5LDXLZ5", cmd) - - def test_literal_shebang_absolute(self): - with self.script("#! C:/some_random_app -witharg") as script: - data = self.run_py([script]) - self.assertEqual( - f"C:\\some_random_app -witharg {quote(script)}", - data["stdout"].strip(), - ) - - def test_literal_shebang_relative(self): - with self.script("#! ..\\some_random_app -witharg") as script: - data = self.run_py([script]) - self.assertEqual( - f"{quote(script.parent.parent / 'some_random_app')} -witharg {quote(script)}", - data["stdout"].strip(), - ) - - def test_literal_shebang_quoted(self): - with self.script('#! "some random app" -witharg') as script: - data = self.run_py([script]) - self.assertEqual( - f"{quote(script.parent / 'some random app')} -witharg {quote(script)}", - data["stdout"].strip(), - ) - - with self.script('#! some" random "app -witharg') as script: - data = self.run_py([script]) - self.assertEqual( - f"{quote(script.parent / 'some random app')} -witharg {quote(script)}", - data["stdout"].strip(), - ) - - def test_literal_shebang_quoted_escape(self): - with self.script('#! some\\" random "app -witharg') as script: - data = self.run_py([script]) - self.assertEqual( - f"{quote(script.parent / 'some/ random app')} -witharg {quote(script)}", - data["stdout"].strip(), - ) - - def test_literal_shebang_command(self): - with self.py_ini(TEST_PY_COMMANDS): - with self.script('#! test-command arg1') as script: - data = self.run_py([script]) - self.assertEqual( - f"TEST_EXE.exe arg1 {quote(script)}", - data["stdout"].strip(), - ) - - def test_literal_shebang_invalid_template(self): - with self.script('#! /usr/bin/not-python arg1') as script: - data = self.run_py([script]) - expect = script.parent / "/usr/bin/not-python" - self.assertEqual( - f"{quote(expect)} arg1 {quote(script)}", - data["stdout"].strip(), - ) - - def test_shebang_command_in_venv(self): - stem = "python-that-is-not-on-path" - - # First ensure that our test name doesn't exist, and the launcher does - # not match any installed env - with self.script(f'#! /usr/bin/env {stem} arg1') as script: - data = self.run_py([script], expect_returncode=103) - - with self.fake_venv() as (venv_exe, env): - # Put a "normal" Python on PATH as a distraction. - # The active VIRTUAL_ENV should be preferred when the name isn't an - # exact match. - exe = Path(Path(venv_exe).name).absolute() - exe.touch() - self.addCleanup(exe.unlink) - env["PATH"] = f"{exe.parent};{os.environ['PATH']}" - - with self.script(f'#! /usr/bin/env {stem} arg1') as script: - data = self.run_py([script], env=env) - self.assertEqual(data["stdout"].strip(), f"{quote(venv_exe)} arg1 {quote(script)}") - - with self.script(f'#! /usr/bin/env {exe.stem} arg1') as script: - data = self.run_py([script], env=env) - self.assertEqual(data["stdout"].strip(), f"{quote(exe)} arg1 {quote(script)}") - - def test_shebang_executable_extension(self): - with self.script('#! /usr/bin/env python3.99') as script: - data = self.run_py([script], expect_returncode=103) - expect = "# Search PATH for python3.99.exe" - actual = [line.strip() for line in data["stderr"].splitlines() - if line.startswith("# Search PATH")] - self.assertEqual([expect], actual) diff --git a/Lib/test/test_tools/test_compute_changes.py b/Lib/test/test_tools/test_compute_changes.py index eb1ecd447a7ce0a..4c2b9966c4cd5b6 100644 --- a/Lib/test/test_tools/test_compute_changes.py +++ b/Lib/test/test_tools/test_compute_changes.py @@ -109,15 +109,6 @@ def test_unix(self): self.assertTrue(result.run_tests) self.assertFalse(result.run_windows_tests) - def test_msi(self): - for f in ( - ".github/workflows/reusable-windows-msi.yml", - "Tools/msi/build.bat", - ): - with self.subTest(f=f): - result = process_changed_files({Path(f)}) - self.assertTrue(result.run_windows_msi) - def test_all_run(self): for f in ( ".github/workflows/some-new-workflow.yml", diff --git a/Misc/NEWS.d/next/Build/2026-07-10-13-25-55.gh-issue-153511.dCPBwU.rst b/Misc/NEWS.d/next/Build/2026-07-10-13-25-55.gh-issue-153511.dCPBwU.rst new file mode 100644 index 000000000000000..0d9163c8dc4d0ee --- /dev/null +++ b/Misc/NEWS.d/next/Build/2026-07-10-13-25-55.gh-issue-153511.dCPBwU.rst @@ -0,0 +1,3 @@ +Removes the legacy MSI and Nuget build scripts, the legacy ``py.exe`` +launcher (now replaced by the Python install manager), and adds a +``PC/layout`` readme. diff --git a/PC/classicAppCompat.can.xml b/PC/classicAppCompat.can.xml deleted file mode 100644 index df361f8e3e2cd32..000000000000000 --- a/PC/classicAppCompat.can.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/PC/classicAppCompat.cat b/PC/classicAppCompat.cat deleted file mode 100644 index 3d213596accffa255e1443126228f7ab1bb2899c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10984 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 M - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 diff --git a/PC/launcher-usage.txt b/PC/launcher-usage.txt deleted file mode 100644 index aad103509daa283..000000000000000 --- a/PC/launcher-usage.txt +++ /dev/null @@ -1,31 +0,0 @@ -Python Launcher for Windows Version %s - -usage: -%s [launcher-args] [python-args] [script [script-args]] - -Launcher arguments: --2 : Launch the latest Python 2.x version --3 : Launch the latest Python 3.x version --X.Y : Launch the specified Python version - -The above default to an architecture native runtime, but will select any -available. Add a "-32" to the argument to only launch 32-bit runtimes, -or add "-64" to omit 32-bit runtimes (this latter option is deprecated). - -To select a specific runtime, use the -V: options. - --V:TAG : Launch a Python runtime with the specified tag --V:COMPANY/TAG : Launch a Python runtime from the specified company and - with the specified tag - --0 --list : List the available pythons --0p --list-paths : List with paths - -If no options are given but a script is specified, the script is checked for a -shebang line. Otherwise, an active virtual environment or global default will -be selected. - -See https://docs.python.org/using/windows.html#python-launcher-for-windows for -additional configuration. - -The following help text is from Python: diff --git a/PC/launcher.c b/PC/launcher.c deleted file mode 100644 index 5667fc851aa5904..000000000000000 --- a/PC/launcher.c +++ /dev/null @@ -1,2047 +0,0 @@ -/* - * Copyright (C) 2011-2013 Vinay Sajip. - * Licensed to PSF under a contributor agreement. - * - * Based on the work of: - * - * Mark Hammond (original author of Python version) - * Curt Hagenlocher (job management) - */ - -#include -#include -#include -#include - -#define BUFSIZE 256 -#define MSGSIZE 1024 - -/* Build options. */ -#define SKIP_PREFIX -#define SEARCH_PATH - -/* Error codes */ - -#define RC_NO_STD_HANDLES 100 -#define RC_CREATE_PROCESS 101 -#define RC_BAD_VIRTUAL_PATH 102 -#define RC_NO_PYTHON 103 -#define RC_NO_MEMORY 104 -/* - * SCRIPT_WRAPPER is used to choose one of the variants of an executable built - * from this source file. If not defined, the PEP 397 Python launcher is built; - * if defined, a script launcher of the type used by setuptools is built, which - * looks for a script name related to the executable name and runs that script - * with the appropriate Python interpreter. - * - * SCRIPT_WRAPPER should be undefined in the source, and defined in a VS project - * which builds the setuptools-style launcher. - */ -#if defined(SCRIPT_WRAPPER) -#define RC_NO_SCRIPT 105 -#endif -/* - * VENV_REDIRECT is used to choose the variant that looks for an adjacent or - * one-level-higher pyvenv.cfg, and uses its "home" property to locate and - * launch the original python.exe. - */ -#if defined(VENV_REDIRECT) -#define RC_NO_VENV_CFG 106 -#define RC_BAD_VENV_CFG 107 -#endif - -/* Just for now - static definition */ - -static FILE * log_fp = NULL; - -static wchar_t * -skip_whitespace(wchar_t * p) -{ - while (*p && isspace(*p)) - ++p; - return p; -} - -static void -debug(wchar_t * format, ...) -{ - va_list va; - - if (log_fp != NULL) { - va_start(va, format); - vfwprintf_s(log_fp, format, va); - va_end(va); - } -} - -static void -winerror(int rc, wchar_t * message, int size) -{ - FormatMessageW( - FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, rc, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - message, size, NULL); -} - -static void -error(int rc, wchar_t * format, ... ) -{ - va_list va; - wchar_t message[MSGSIZE]; - wchar_t win_message[MSGSIZE]; - int len; - - va_start(va, format); - len = _vsnwprintf_s(message, MSGSIZE, _TRUNCATE, format, va); - va_end(va); - - if (rc == 0) { /* a Windows error */ - winerror(GetLastError(), win_message, MSGSIZE); - if (len >= 0) { - _snwprintf_s(&message[len], MSGSIZE - len, _TRUNCATE, L": %ls", - win_message); - } - } - -#if !defined(_WINDOWS) - fwprintf(stderr, L"%ls\n", message); -#else - MessageBoxW(NULL, message, L"Python Launcher is sorry to say ...", - MB_OK); -#endif - exit(rc); -} - -/* - * This function is here to simplify memory management - * and to treat blank values as if they are absent. - */ -static wchar_t * get_env(wchar_t * key) -{ - /* This is not thread-safe, just like getenv */ - static wchar_t buf[BUFSIZE]; - DWORD result = GetEnvironmentVariableW(key, buf, BUFSIZE); - - if (result >= BUFSIZE) { - /* Large environment variable. Accept some leakage */ - wchar_t *buf2 = (wchar_t*)malloc(sizeof(wchar_t) * (result+1)); - if (buf2 == NULL) { - error(RC_NO_MEMORY, L"Could not allocate environment buffer"); - } - GetEnvironmentVariableW(key, buf2, result); - return buf2; - } - - if (result == 0) - /* Either some error, e.g. ERROR_ENVVAR_NOT_FOUND, - or an empty environment variable. */ - return NULL; - - return buf; -} - -#if defined(Py_DEBUG) -/* Do not define EXECUTABLEPATH_VALUE in debug builds as it'll - never point to the debug build. */ -#if defined(_WINDOWS) - -#define PYTHON_EXECUTABLE L"pythonw_d.exe" - -#else - -#define PYTHON_EXECUTABLE L"python_d.exe" - -#endif -#else -#if defined(_WINDOWS) - -#define PYTHON_EXECUTABLE L"pythonw.exe" -#define EXECUTABLEPATH_VALUE L"WindowedExecutablePath" - -#else - -#define PYTHON_EXECUTABLE L"python.exe" -#define EXECUTABLEPATH_VALUE L"ExecutablePath" - -#endif -#endif - -#define MAX_VERSION_SIZE 8 - -typedef struct { - wchar_t version[MAX_VERSION_SIZE]; /* m.n */ - int bits; /* 32 or 64 */ - wchar_t executable[MAX_PATH]; - wchar_t exe_display[MAX_PATH]; -} INSTALLED_PYTHON; - -/* - * To avoid messing about with heap allocations, just assume we can allocate - * statically and never have to deal with more versions than this. - */ -#define MAX_INSTALLED_PYTHONS 100 - -static INSTALLED_PYTHON installed_pythons[MAX_INSTALLED_PYTHONS]; - -static size_t num_installed_pythons = 0; - -/* - * To hold SOFTWARE\Python\PythonCore\X.Y...\InstallPath - * The version name can be longer than MAX_VERSION_SIZE, but will be - * truncated to just X.Y for comparisons. - */ -#define IP_BASE_SIZE 80 -#define IP_VERSION_SIZE 8 -#define IP_SIZE (IP_BASE_SIZE + IP_VERSION_SIZE) -#define CORE_PATH L"SOFTWARE\\Python\\PythonCore" -/* - * Installations from the Microsoft Store will set the same registry keys, - * but because of a limitation in Windows they cannot be enumerated normally - * (unless you have no other Python installations... which is probably false - * because that's the most likely way to get this launcher!) - * This key is under HKEY_LOCAL_MACHINE - */ -#define LOOKASIDE_PATH L"SOFTWARE\\Microsoft\\AppModel\\Lookaside\\user\\Software\\Python\\PythonCore" - -static wchar_t * location_checks[] = { - L"\\", - L"\\PCbuild\\win32\\", - L"\\PCbuild\\amd64\\", - /* To support early 32bit versions of Python that stuck the build binaries - * directly in PCbuild... */ - L"\\PCbuild\\", - NULL -}; - -static INSTALLED_PYTHON * -find_existing_python(const wchar_t * path) -{ - INSTALLED_PYTHON * result = NULL; - size_t i; - INSTALLED_PYTHON * ip; - - for (i = 0, ip = installed_pythons; i < num_installed_pythons; i++, ip++) { - if (_wcsicmp(path, ip->executable) == 0) { - result = ip; - break; - } - } - return result; -} - -static INSTALLED_PYTHON * -find_existing_python2(int bits, const wchar_t * version) -{ - INSTALLED_PYTHON * result = NULL; - size_t i; - INSTALLED_PYTHON * ip; - - for (i = 0, ip = installed_pythons; i < num_installed_pythons; i++, ip++) { - if (bits == ip->bits && _wcsicmp(version, ip->version) == 0) { - result = ip; - break; - } - } - return result; -} - -static void -_locate_pythons_for_key(HKEY root, LPCWSTR subkey, REGSAM flags, int bits, - int display_name_only) -{ - HKEY core_root, ip_key; - LSTATUS status = RegOpenKeyExW(root, subkey, 0, flags, &core_root); - wchar_t message[MSGSIZE]; - DWORD i; - size_t n; - BOOL ok, append_name; - DWORD type, data_size, attrs; - INSTALLED_PYTHON * ip, * pip; - wchar_t ip_version[IP_VERSION_SIZE]; - wchar_t ip_path[IP_SIZE]; - wchar_t * check; - wchar_t ** checkp; - wchar_t *key_name = (root == HKEY_LOCAL_MACHINE) ? L"HKLM" : L"HKCU"; - - if (status != ERROR_SUCCESS) - debug(L"locate_pythons_for_key: unable to open PythonCore key in %ls\n", - key_name); - else { - ip = &installed_pythons[num_installed_pythons]; - for (i = 0; num_installed_pythons < MAX_INSTALLED_PYTHONS; i++) { - status = RegEnumKeyW(core_root, i, ip_version, IP_VERSION_SIZE); - if (status != ERROR_SUCCESS) { - if (status != ERROR_NO_MORE_ITEMS) { - /* unexpected error */ - winerror(status, message, MSGSIZE); - debug(L"Can't enumerate registry key for version %ls: %ls\n", - ip_version, message); - } - break; - } - else { - wcsncpy_s(ip->version, MAX_VERSION_SIZE, ip_version, - MAX_VERSION_SIZE-1); - /* Still treating version as "x.y" rather than sys.winver - * When PEP 514 tags are properly used, we shouldn't need - * to strip this off here. - */ - check = wcsrchr(ip->version, L'-'); - if (check && !wcscmp(check, L"-32")) { - *check = L'\0'; - } - _snwprintf_s(ip_path, IP_SIZE, _TRUNCATE, - L"%ls\\%ls\\InstallPath", subkey, ip_version); - status = RegOpenKeyExW(root, ip_path, 0, flags, &ip_key); - if (status != ERROR_SUCCESS) { - winerror(status, message, MSGSIZE); - /* Note: 'message' already has a trailing \n*/ - debug(L"%ls\\%ls: %ls", key_name, ip_path, message); - continue; - } - data_size = sizeof(ip->executable) - 1; - append_name = FALSE; -#ifdef EXECUTABLEPATH_VALUE - status = RegQueryValueExW(ip_key, EXECUTABLEPATH_VALUE, NULL, &type, - (LPBYTE)ip->executable, &data_size); -#else - status = ERROR_FILE_NOT_FOUND; /* actual error doesn't matter */ -#endif - if (status != ERROR_SUCCESS || type != REG_SZ || !data_size) { - append_name = TRUE; - data_size = sizeof(ip->executable) - 1; - status = RegQueryValueExW(ip_key, NULL, NULL, &type, - (LPBYTE)ip->executable, &data_size); - if (status != ERROR_SUCCESS) { - winerror(status, message, MSGSIZE); - debug(L"%ls\\%ls: %ls\n", key_name, ip_path, message); - RegCloseKey(ip_key); - continue; - } - } - RegCloseKey(ip_key); - if (type != REG_SZ) { - continue; - } - - data_size = data_size / sizeof(wchar_t) - 1; /* for NUL */ - if (ip->executable[data_size - 1] == L'\\') - --data_size; /* reg value ended in a backslash */ - /* ip->executable is data_size long */ - for (checkp = location_checks; *checkp; ++checkp) { - check = *checkp; - if (append_name) { - _snwprintf_s(&ip->executable[data_size], - MAX_PATH - data_size, - MAX_PATH - data_size, - L"%ls%ls", check, PYTHON_EXECUTABLE); - } - attrs = GetFileAttributesW(ip->executable); - if (attrs == INVALID_FILE_ATTRIBUTES) { - winerror(GetLastError(), message, MSGSIZE); - debug(L"locate_pythons_for_key: %ls: %ls", - ip->executable, message); - } - else if (attrs & FILE_ATTRIBUTE_DIRECTORY) { - debug(L"locate_pythons_for_key: '%ls' is a directory\n", - ip->executable); - } - else if (find_existing_python(ip->executable)) { - debug(L"locate_pythons_for_key: %ls: already found\n", - ip->executable); - } - else { - /* check the executable type. */ - if (bits) { - ip->bits = bits; - } else { - ok = GetBinaryTypeW(ip->executable, &attrs); - if (!ok) { - debug(L"Failure getting binary type: %ls\n", - ip->executable); - } - else { - if (attrs == SCS_64BIT_BINARY) - ip->bits = 64; - else if (attrs == SCS_32BIT_BINARY) - ip->bits = 32; - else - ip->bits = 0; - } - } - if (ip->bits == 0) { - debug(L"locate_pythons_for_key: %ls: \ -invalid binary type: %X\n", - ip->executable, attrs); - } - else { - if (display_name_only) { - /* display just the executable name. This is - * primarily for the Store installs */ - const wchar_t *name = wcsrchr(ip->executable, L'\\'); - if (name) { - wcscpy_s(ip->exe_display, MAX_PATH, name+1); - } - } - if (wcschr(ip->executable, L' ') != NULL) { - /* has spaces, so quote, and set original as - * the display name */ - if (!ip->exe_display[0]) { - wcscpy_s(ip->exe_display, MAX_PATH, ip->executable); - } - n = wcslen(ip->executable); - memmove(&ip->executable[1], - ip->executable, n * sizeof(wchar_t)); - ip->executable[0] = L'\"'; - ip->executable[n + 1] = L'\"'; - ip->executable[n + 2] = L'\0'; - } - debug(L"locate_pythons_for_key: %ls \ -is a %dbit executable\n", - ip->executable, ip->bits); - if (find_existing_python2(ip->bits, ip->version)) { - debug(L"locate_pythons_for_key: %ls-%i: already \ -found\n", ip->version, ip->bits); - } - else { - ++num_installed_pythons; - pip = ip++; - if (num_installed_pythons >= - MAX_INSTALLED_PYTHONS) - break; - } - } - } - } - } - } - RegCloseKey(core_root); - } -} - -static int -compare_pythons(const void * p1, const void * p2) -{ - INSTALLED_PYTHON * ip1 = (INSTALLED_PYTHON *) p1; - INSTALLED_PYTHON * ip2 = (INSTALLED_PYTHON *) p2; - /* note reverse sorting on version */ - int result = CompareStringW(LOCALE_INVARIANT, SORT_DIGITSASNUMBERS, - ip2->version, -1, ip1->version, -1); - switch (result) { - case 0: - error(0, L"CompareStringW failed"); - return 0; - case CSTR_LESS_THAN: - return -1; - case CSTR_EQUAL: - return ip2->bits - ip1->bits; /* 64 before 32 */ - case CSTR_GREATER_THAN: - return 1; - default: - return 0; // This should never be reached. - } -} - -static void -locate_pythons_for_key(HKEY root, REGSAM flags) -{ - _locate_pythons_for_key(root, CORE_PATH, flags, 0, FALSE); -} - -static void -locate_store_pythons(void) -{ -#if defined(_M_X64) - /* 64bit process, so look in native registry */ - _locate_pythons_for_key(HKEY_LOCAL_MACHINE, LOOKASIDE_PATH, - KEY_READ, 64, TRUE); -#else - /* 32bit process, so check that we're on 64bit OS */ - BOOL f64 = FALSE; - if (IsWow64Process(GetCurrentProcess(), &f64) && f64) { - _locate_pythons_for_key(HKEY_LOCAL_MACHINE, LOOKASIDE_PATH, - KEY_READ | KEY_WOW64_64KEY, 64, TRUE); - } -#endif -} - -static void -locate_venv_python(void) -{ - static wchar_t venv_python[MAX_PATH]; - INSTALLED_PYTHON * ip; - wchar_t *virtual_env = get_env(L"VIRTUAL_ENV"); - DWORD attrs; - - /* Check for VIRTUAL_ENV environment variable */ - if (virtual_env == NULL || virtual_env[0] == L'\0') { - return; - } - - /* Check for a python executable in the venv */ - debug(L"Checking for Python executable in virtual env '%ls'\n", virtual_env); - _snwprintf_s(venv_python, MAX_PATH, _TRUNCATE, - L"%ls\\Scripts\\%ls", virtual_env, PYTHON_EXECUTABLE); - attrs = GetFileAttributesW(venv_python); - if (attrs == INVALID_FILE_ATTRIBUTES) { - debug(L"Python executable %ls missing from virtual env\n", venv_python); - return; - } - - ip = &installed_pythons[num_installed_pythons++]; - wcscpy_s(ip->executable, MAX_PATH, venv_python); - ip->bits = 0; - wcscpy_s(ip->version, MAX_VERSION_SIZE, L"venv"); -} - -static void -locate_all_pythons(void) -{ - /* venv Python is highest priority */ - locate_venv_python(); -#if defined(_M_X64) - /* If we are a 64bit process, first hit the 32bit keys. */ - debug(L"locating Pythons in 32bit registry\n"); - locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ | KEY_WOW64_32KEY); - locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ | KEY_WOW64_32KEY); -#else - /* If we are a 32bit process on a 64bit Windows, first hit the 64bit keys.*/ - BOOL f64 = FALSE; - if (IsWow64Process(GetCurrentProcess(), &f64) && f64) { - debug(L"locating Pythons in 64bit registry\n"); - locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ | KEY_WOW64_64KEY); - locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ | KEY_WOW64_64KEY); - } -#endif - /* now hit the "native" key for this process bittedness. */ - debug(L"locating Pythons in native registry\n"); - locate_pythons_for_key(HKEY_CURRENT_USER, KEY_READ); - locate_pythons_for_key(HKEY_LOCAL_MACHINE, KEY_READ); - /* Store-installed Python is lowest priority */ - locate_store_pythons(); - qsort(installed_pythons, num_installed_pythons, sizeof(INSTALLED_PYTHON), - compare_pythons); -} - -static INSTALLED_PYTHON * -find_python_by_version(wchar_t const * wanted_ver) -{ - INSTALLED_PYTHON * result = NULL; - INSTALLED_PYTHON * ip = installed_pythons; - size_t i, n; - size_t wlen = wcslen(wanted_ver); - int bits = 0; - - if (wcsstr(wanted_ver, L"-32")) { - bits = 32; - wlen -= wcslen(L"-32"); - } - else if (wcsstr(wanted_ver, L"-64")) { /* Added option to select 64 bit explicitly */ - bits = 64; - wlen -= wcslen(L"-64"); - } - for (i = 0; i < num_installed_pythons; i++, ip++) { - n = wcslen(ip->version); - /* - * If wlen is greater than 1, we're probably trying to find a specific - * version and thus want an exact match: 3.1 != 3.10. Otherwise, we - * just want a prefix match. - */ - if ((wlen > 1) && (n != wlen)) { - continue; - } - if (n > wlen) { - n = wlen; - } - if ((wcsncmp(ip->version, wanted_ver, n) == 0) && - /* bits == 0 => don't care */ - ((bits == 0) || (ip->bits == bits))) { - result = ip; - break; - } - } - return result; -} - - -static wchar_t appdata_ini_path[MAX_PATH]; -static wchar_t launcher_ini_path[MAX_PATH]; - -/* - * Get a value either from the environment or a configuration file. - * The key passed in will either be "python", "python2" or "python3". - */ -static wchar_t * -get_configured_value(wchar_t * key) -{ -/* - * Note: this static value is used to return a configured value - * obtained either from the environment or configuration file. - * This should be OK since there wouldn't be any concurrent calls. - */ - static wchar_t configured_value[MSGSIZE]; - wchar_t * result = NULL; - wchar_t * found_in = L"environment"; - DWORD size; - - /* First, search the environment. */ - _snwprintf_s(configured_value, MSGSIZE, _TRUNCATE, L"py_%ls", key); - result = get_env(configured_value); - if (result == NULL && appdata_ini_path[0]) { - /* Not in environment: check local configuration. */ - size = GetPrivateProfileStringW(L"defaults", key, NULL, - configured_value, MSGSIZE, - appdata_ini_path); - if (size > 0) { - result = configured_value; - found_in = appdata_ini_path; - } - } - if (result == NULL && launcher_ini_path[0]) { - /* Not in environment or local: check global configuration. */ - size = GetPrivateProfileStringW(L"defaults", key, NULL, - configured_value, MSGSIZE, - launcher_ini_path); - if (size > 0) { - result = configured_value; - found_in = launcher_ini_path; - } - } - if (result) { - debug(L"found configured value '%ls=%ls' in %ls\n", - key, result, found_in ? found_in : L"(unknown)"); - } else { - debug(L"found no configured value for '%ls'\n", key); - } - return result; -} - -static INSTALLED_PYTHON * -locate_python(wchar_t * wanted_ver, BOOL from_shebang) -{ - static wchar_t config_key [] = { L"pythonX" }; - static wchar_t * last_char = &config_key[sizeof(config_key) / - sizeof(wchar_t) - 2]; - INSTALLED_PYTHON * result = NULL; - size_t n = wcslen(wanted_ver); - wchar_t * configured_value; - - if (num_installed_pythons == 0) - locate_all_pythons(); - - if (n == 1) { /* just major version specified */ - *last_char = *wanted_ver; - configured_value = get_configured_value(config_key); - if (configured_value != NULL) - wanted_ver = configured_value; - } - if (*wanted_ver) { - result = find_python_by_version(wanted_ver); - debug(L"search for Python version '%ls' found ", wanted_ver); - if (result) { - debug(L"'%ls'\n", result->executable); - } else { - debug(L"no interpreter\n"); - } - } - else { - *last_char = L'\0'; /* look for an overall default */ - result = find_python_by_version(L"venv"); - if (result == NULL) { - configured_value = get_configured_value(config_key); - if (configured_value) - result = find_python_by_version(configured_value); - } - /* Not found a value yet - try by major version. - * If we're looking for an interpreter specified in a shebang line, - * we want to try Python 2 first, then Python 3 (for Unix and backward - * compatibility). If we're being called interactively, assume the user - * wants the latest version available, so try Python 3 first, then - * Python 2. - */ - if (result == NULL) - result = find_python_by_version(from_shebang ? L"2" : L"3"); - if (result == NULL) - result = find_python_by_version(from_shebang ? L"3" : L"2"); - debug(L"search for default Python found "); - if (result) { - debug(L"version %ls at '%ls'\n", - result->version, result->executable); - } else { - debug(L"no interpreter\n"); - } - } - return result; -} - -#if defined(SCRIPT_WRAPPER) -/* - * Check for a script located alongside the executable - */ - -#if defined(_WINDOWS) -#define SCRIPT_SUFFIX L"-script.pyw" -#else -#define SCRIPT_SUFFIX L"-script.py" -#endif - -static wchar_t wrapped_script_path[MAX_PATH]; - -/* Locate the script being wrapped. - * - * This code should store the name of the wrapped script in - * wrapped_script_path, or terminate the program with an error if there is no - * valid wrapped script file. - */ -static void -locate_wrapped_script(void) -{ - wchar_t * p; - size_t plen; - DWORD attrs; - - plen = GetModuleFileNameW(NULL, wrapped_script_path, MAX_PATH); - p = wcsrchr(wrapped_script_path, L'.'); - if (p == NULL) { - debug(L"GetModuleFileNameW returned value has no extension: %ls\n", - wrapped_script_path); - error(RC_NO_SCRIPT, L"Wrapper name '%ls' is not valid.", wrapped_script_path); - } - - wcsncpy_s(p, MAX_PATH - (p - wrapped_script_path) + 1, SCRIPT_SUFFIX, _TRUNCATE); - attrs = GetFileAttributesW(wrapped_script_path); - if (attrs == INVALID_FILE_ATTRIBUTES) { - debug(L"File '%ls' non-existent\n", wrapped_script_path); - error(RC_NO_SCRIPT, L"Script file '%ls' is not present.", wrapped_script_path); - } - - debug(L"Using wrapped script file '%ls'\n", wrapped_script_path); -} -#endif - -/* - * Process creation code - */ - -static BOOL -safe_duplicate_handle(HANDLE in, HANDLE * pout) -{ - BOOL ok; - HANDLE process = GetCurrentProcess(); - DWORD rc; - - *pout = NULL; - ok = DuplicateHandle(process, in, process, pout, 0, TRUE, - DUPLICATE_SAME_ACCESS); - if (!ok) { - rc = GetLastError(); - if (rc == ERROR_INVALID_HANDLE) { - debug(L"DuplicateHandle returned ERROR_INVALID_HANDLE\n"); - ok = TRUE; - } - else { - debug(L"DuplicateHandle returned %d\n", rc); - } - } - return ok; -} - -static BOOL WINAPI -ctrl_c_handler(DWORD code) -{ - return TRUE; /* We just ignore all control events. */ -} - -static void -run_child(wchar_t * cmdline) -{ - HANDLE job; - JOBOBJECT_EXTENDED_LIMIT_INFORMATION info; - DWORD rc; - BOOL ok; - STARTUPINFOW si; - PROCESS_INFORMATION pi; - -#if defined(_WINDOWS) - /* - When explorer launches a Windows (GUI) application, it displays - the "app starting" (the "pointer + hourglass") cursor for a number - of seconds, or until the app does something UI-ish (eg, creating a - window, or fetching a message). As this launcher doesn't do this - directly, that cursor remains even after the child process does these - things. We avoid that by doing a simple post+get message. - See http://bugs.python.org/issue17290 - */ - MSG msg; - - PostMessage(0, 0, 0, 0); - GetMessage(&msg, 0, 0, 0); -#endif - - debug(L"run_child: about to run '%ls'\n", cmdline); - job = CreateJobObject(NULL, NULL); - ok = QueryInformationJobObject(job, JobObjectExtendedLimitInformation, - &info, sizeof(info), &rc); - if (!ok || (rc != sizeof(info)) || !job) - error(RC_CREATE_PROCESS, L"Job information querying failed"); - info.BasicLimitInformation.LimitFlags |= JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE | - JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK; - ok = SetInformationJobObject(job, JobObjectExtendedLimitInformation, &info, - sizeof(info)); - if (!ok) - error(RC_CREATE_PROCESS, L"Job information setting failed"); - memset(&si, 0, sizeof(si)); - GetStartupInfoW(&si); - ok = safe_duplicate_handle(GetStdHandle(STD_INPUT_HANDLE), &si.hStdInput); - if (!ok) - error(RC_NO_STD_HANDLES, L"stdin duplication failed"); - ok = safe_duplicate_handle(GetStdHandle(STD_OUTPUT_HANDLE), &si.hStdOutput); - if (!ok) - error(RC_NO_STD_HANDLES, L"stdout duplication failed"); - ok = safe_duplicate_handle(GetStdHandle(STD_ERROR_HANDLE), &si.hStdError); - if (!ok) - error(RC_NO_STD_HANDLES, L"stderr duplication failed"); - - ok = SetConsoleCtrlHandler(ctrl_c_handler, TRUE); - if (!ok) - error(RC_CREATE_PROCESS, L"control handler setting failed"); - - si.dwFlags = STARTF_USESTDHANDLES; - ok = CreateProcessW(NULL, cmdline, NULL, NULL, TRUE, - 0, NULL, NULL, &si, &pi); - if (!ok) - error(RC_CREATE_PROCESS, L"Unable to create process using '%ls'", cmdline); - AssignProcessToJobObject(job, pi.hProcess); - CloseHandle(pi.hThread); - WaitForSingleObjectEx(pi.hProcess, INFINITE, FALSE); - ok = GetExitCodeProcess(pi.hProcess, &rc); - if (!ok) - error(RC_CREATE_PROCESS, L"Failed to get exit code of process"); - debug(L"child process exit code: %d\n", rc); - exit(rc); -} - -static void -invoke_child(wchar_t * executable, wchar_t * suffix, wchar_t * cmdline) -{ - wchar_t * child_command; - size_t child_command_size; - BOOL no_suffix = (suffix == NULL) || (*suffix == L'\0'); - BOOL no_cmdline = (*cmdline == L'\0'); - - if (no_suffix && no_cmdline) - run_child(executable); - else { - if (no_suffix) { - /* add 2 for space separator + terminating NUL. */ - child_command_size = wcslen(executable) + wcslen(cmdline) + 2; - } - else { - /* add 3 for 2 space separators + terminating NUL. */ - child_command_size = wcslen(executable) + wcslen(suffix) + - wcslen(cmdline) + 3; - } - child_command = calloc(child_command_size, sizeof(wchar_t)); - if (child_command == NULL) - error(RC_CREATE_PROCESS, L"unable to allocate %zd bytes for child command.", - child_command_size); - if (no_suffix) - _snwprintf_s(child_command, child_command_size, - child_command_size - 1, L"%ls %ls", - executable, cmdline); - else - _snwprintf_s(child_command, child_command_size, - child_command_size - 1, L"%ls %ls %ls", - executable, suffix, cmdline); - run_child(child_command); - free(child_command); - } -} - -typedef struct { - wchar_t *shebang; - BOOL search; -} SHEBANG; - -static SHEBANG builtin_virtual_paths [] = { - { L"/usr/bin/env python", TRUE }, - { L"/usr/bin/python", FALSE }, - { L"/usr/local/bin/python", FALSE }, - { L"python", FALSE }, - { NULL, FALSE }, -}; - -/* For now, a static array of commands. */ - -#define MAX_COMMANDS 100 - -typedef struct { - wchar_t key[MAX_PATH]; - wchar_t value[MSGSIZE]; -} COMMAND; - -static COMMAND commands[MAX_COMMANDS]; -static int num_commands = 0; - -#if defined(SKIP_PREFIX) - -static wchar_t * builtin_prefixes [] = { - /* These must be in an order that the longest matches should be found, - * i.e. if the prefix is "/usr/bin/env ", it should match that entry - * *before* matching "/usr/bin/". - */ - L"/usr/bin/env ", - L"/usr/bin/", - L"/usr/local/bin/", - NULL -}; - -static wchar_t * skip_prefix(wchar_t * name) -{ - wchar_t ** pp = builtin_prefixes; - wchar_t * result = name; - wchar_t * p; - size_t n; - - for (; p = *pp; pp++) { - n = wcslen(p); - if (_wcsnicmp(p, name, n) == 0) { - result += n; /* skip the prefix */ - if (p[n - 1] == L' ') /* No empty strings in table, so n > 1 */ - result = skip_whitespace(result); - break; - } - } - return result; -} - -#endif - -#if defined(SEARCH_PATH) - -static COMMAND path_command; - -static COMMAND * find_on_path(wchar_t * name) -{ - wchar_t * pathext; - size_t varsize; - wchar_t * context = NULL; - wchar_t * extension; - COMMAND * result = NULL; - DWORD len; - errno_t rc; - - wcscpy_s(path_command.key, MAX_PATH, name); - if (wcschr(name, L'.') != NULL) { - /* assume it has an extension. */ - len = SearchPathW(NULL, name, NULL, MSGSIZE, path_command.value, NULL); - if (len) { - result = &path_command; - } - } - else { - /* No extension - search using registered extensions. */ - rc = _wdupenv_s(&pathext, &varsize, L"PATHEXT"); - if (rc == 0) { - extension = wcstok_s(pathext, L";", &context); - while (extension) { - len = SearchPathW(NULL, name, extension, MSGSIZE, path_command.value, NULL); - if (len) { - result = &path_command; - break; - } - extension = wcstok_s(NULL, L";", &context); - } - free(pathext); - } - } - return result; -} - -#endif - -static COMMAND * find_command(wchar_t * name) -{ - COMMAND * result = NULL; - COMMAND * cp = commands; - int i; - - for (i = 0; i < num_commands; i++, cp++) { - if (_wcsicmp(cp->key, name) == 0) { - result = cp; - break; - } - } -#if defined(SEARCH_PATH) - if (result == NULL) - result = find_on_path(name); -#endif - return result; -} - -static void -update_command(COMMAND * cp, wchar_t * name, wchar_t * cmdline) -{ - wcsncpy_s(cp->key, MAX_PATH, name, _TRUNCATE); - wcsncpy_s(cp->value, MSGSIZE, cmdline, _TRUNCATE); -} - -static void -add_command(wchar_t * name, wchar_t * cmdline) -{ - if (num_commands >= MAX_COMMANDS) { - debug(L"can't add %ls = '%ls': no room\n", name, cmdline); - } - else { - COMMAND * cp = &commands[num_commands++]; - - update_command(cp, name, cmdline); - } -} - -static void -read_config_file(wchar_t * config_path) -{ - wchar_t keynames[MSGSIZE]; - wchar_t value[MSGSIZE]; - DWORD read; - wchar_t * key; - COMMAND * cp; - wchar_t * cmdp; - - read = GetPrivateProfileStringW(L"commands", NULL, NULL, keynames, MSGSIZE, - config_path); - if (read == MSGSIZE - 1) { - debug(L"read_commands: %ls: not enough space for names\n", config_path); - } - key = keynames; - while (*key) { - read = GetPrivateProfileStringW(L"commands", key, NULL, value, MSGSIZE, - config_path); - if (read == MSGSIZE - 1) { - debug(L"read_commands: %ls: not enough space for %ls\n", - config_path, key); - } - cmdp = skip_whitespace(value); - if (*cmdp) { - cp = find_command(key); - if (cp == NULL) - add_command(key, value); - else - update_command(cp, key, value); - } - key += wcslen(key) + 1; - } -} - -static void read_commands(void) -{ - if (launcher_ini_path[0]) - read_config_file(launcher_ini_path); - if (appdata_ini_path[0]) - read_config_file(appdata_ini_path); -} - -static BOOL -parse_shebang(wchar_t * shebang_line, int nchars, wchar_t ** command, - wchar_t ** suffix, BOOL *search) -{ - BOOL rc = FALSE; - SHEBANG * vpp; - size_t plen; - wchar_t * p; - wchar_t zapped; - wchar_t * endp = shebang_line + nchars - 1; - COMMAND * cp; - wchar_t * skipped; - - *command = NULL; /* failure return */ - *suffix = NULL; - *search = FALSE; - - if ((*shebang_line++ == L'#') && (*shebang_line++ == L'!')) { - shebang_line = skip_whitespace(shebang_line); - if (*shebang_line) { - *command = shebang_line; - for (vpp = builtin_virtual_paths; vpp->shebang; ++vpp) { - plen = wcslen(vpp->shebang); - if (wcsncmp(shebang_line, vpp->shebang, plen) == 0) { - rc = TRUE; - *search = vpp->search; - /* We can do this because all builtin commands contain - * "python". - */ - *command = wcsstr(shebang_line, L"python"); - break; - } - } - if (vpp->shebang == NULL) { - /* - * Not found in builtins - look in customized commands. - * - * We can't permanently modify the shebang line in case - * it's not a customized command, but we can temporarily - * stick a NUL after the command while searching for it, - * then put back the char we zapped. - */ -#if defined(SKIP_PREFIX) - skipped = skip_prefix(shebang_line); -#else - skipped = shebang_line; -#endif - p = wcspbrk(skipped, L" \t\r\n"); - if (p != NULL) { - zapped = *p; - *p = L'\0'; - } - cp = find_command(skipped); - if (p != NULL) - *p = zapped; - if (cp != NULL) { - *command = cp->value; - if (p != NULL) - *suffix = skip_whitespace(p); - } - } - /* remove trailing whitespace */ - while ((endp > shebang_line) && isspace(*endp)) - --endp; - if (endp > shebang_line) - endp[1] = L'\0'; - } - } - return rc; -} - -/* #define CP_UTF8 65001 defined in winnls.h */ -#define CP_UTF16LE 1200 -#define CP_UTF16BE 1201 -#define CP_UTF32LE 12000 -#define CP_UTF32BE 12001 - -typedef struct { - int length; - char sequence[4]; - UINT code_page; -} BOM; - -/* - * Strictly, we don't need to handle UTF-16 and UTF-32, since Python itself - * doesn't. Never mind, one day it might - there's no harm leaving it in. - */ -static BOM BOMs[] = { - { 3, { 0xEF, 0xBB, 0xBF }, CP_UTF8 }, /* UTF-8 - keep first */ - /* Test UTF-32LE before UTF-16LE since UTF-16LE BOM is a prefix - * of UTF-32LE BOM. */ - { 4, { 0xFF, 0xFE, 0x00, 0x00 }, CP_UTF32LE }, /* UTF-32LE */ - { 4, { 0x00, 0x00, 0xFE, 0xFF }, CP_UTF32BE }, /* UTF-32BE */ - { 2, { 0xFF, 0xFE }, CP_UTF16LE }, /* UTF-16LE */ - { 2, { 0xFE, 0xFF }, CP_UTF16BE }, /* UTF-16BE */ - { 0 } /* sentinel */ -}; - -static BOM * -find_BOM(char * buffer) -{ -/* - * Look for a BOM in the input and return a pointer to the - * corresponding structure, or NULL if not found. - */ - BOM * result = NULL; - BOM *bom; - - for (bom = BOMs; bom->length; bom++) { - if (strncmp(bom->sequence, buffer, bom->length) == 0) { - result = bom; - break; - } - } - return result; -} - -static char * -find_terminator(char * buffer, int len, BOM *bom) -{ - char * result = NULL; - char * end = buffer + len; - char * p; - char c; - int cp; - - for (p = buffer; p < end; p++) { - c = *p; - if (c == '\r') { - result = p; - break; - } - if (c == '\n') { - result = p; - break; - } - } - if (result != NULL) { - cp = bom->code_page; - - /* adjustments to include all bytes of the char */ - /* no adjustment needed for UTF-8 or big endian */ - if (cp == CP_UTF16LE) - ++result; - else if (cp == CP_UTF32LE) - result += 3; - ++result; /* point just past terminator */ - } - return result; -} - -static BOOL -validate_version(wchar_t * p) -{ - /* - Version information should start with the major version, - Optionally followed by a period and a minor version, - Optionally followed by a minus and one of 32 or 64. - Valid examples: - 2 - 3 - 2.7 - 3.6 - 2.7-32 - The intent is to add to the valid patterns: - 3.10 - 3-32 - 3.6-64 - 3-64 - */ - BOOL result = (p != NULL); /* Default to False if null pointer. */ - - result = result && iswdigit(*p); /* Result = False if first string element is not a digit. */ - - while (result && iswdigit(*p)) /* Require a major version */ - ++p; /* Skip all leading digit(s) */ - if (result && (*p == L'.')) /* Allow . for major minor separator.*/ - { - result = iswdigit(*++p); /* Must be at least one digit */ - while (result && iswdigit(*++p)) ; /* Skip any more Digits */ - } - if (result && (*p == L'-')) { /* Allow - for Bits Separator */ - switch(*++p){ - case L'3': /* 3 is OK */ - result = (*++p == L'2') && !*++p; /* only if followed by 2 and ended.*/ - break; - case L'6': /* 6 is OK */ - result = (*++p == L'4') && !*++p; /* only if followed by 4 and ended.*/ - break; - default: - result = FALSE; - break; - } - } - result = result && !*p; /* Must have reached EOS */ - return result; - -} - -typedef struct { - unsigned short min; - unsigned short max; - wchar_t version[MAX_VERSION_SIZE]; -} PYC_MAGIC; - -static PYC_MAGIC magic_values[] = { - { 50823, 50823, L"2.0" }, - { 60202, 60202, L"2.1" }, - { 60717, 60717, L"2.2" }, - { 62011, 62021, L"2.3" }, - { 62041, 62061, L"2.4" }, - { 62071, 62131, L"2.5" }, - { 62151, 62161, L"2.6" }, - { 62171, 62211, L"2.7" }, - { 3000, 3131, L"3.0" }, - { 3141, 3151, L"3.1" }, - { 3160, 3180, L"3.2" }, - { 3190, 3230, L"3.3" }, - { 3250, 3310, L"3.4" }, - { 3320, 3351, L"3.5" }, - { 3360, 3379, L"3.6" }, - { 3390, 3399, L"3.7" }, - { 3400, 3419, L"3.8" }, - { 3420, 3429, L"3.9" }, - { 3430, 3449, L"3.10" }, - /* Allow 50 magic numbers per version from here on */ - { 3450, 3499, L"3.11" }, - { 3500, 3549, L"3.12" }, - { 3550, 3599, L"3.13" }, - { 3600, 3649, L"3.14" }, - { 3650, 3699, L"3.15" }, - { 3700, 3749, L"3.16" }, - { 0 } -}; - -static INSTALLED_PYTHON * -find_by_magic(unsigned short magic) -{ - INSTALLED_PYTHON * result = NULL; - PYC_MAGIC * mp; - - for (mp = magic_values; mp->min; mp++) { - if ((magic >= mp->min) && (magic <= mp->max)) { - result = locate_python(mp->version, FALSE); - if (result != NULL) - break; - } - } - return result; -} - -static void -maybe_handle_shebang(wchar_t ** argv, wchar_t * cmdline) -{ -/* - * Look for a shebang line in the first argument. If found - * and we spawn a child process, this never returns. If it - * does return then we process the args "normally". - * - * argv[0] might be a filename with a shebang. - */ - FILE * fp; - errno_t rc = _wfopen_s(&fp, *argv, L"rb"); - char buffer[BUFSIZE]; - wchar_t shebang_line[BUFSIZE + 1]; - size_t read; - char *p; - char * start; - char * shebang_alias = (char *) shebang_line; - BOM* bom; - int i, j, nchars = 0; - int header_len; - BOOL is_virt; - BOOL search; - wchar_t * command; - wchar_t * suffix; - COMMAND *cmd = NULL; - INSTALLED_PYTHON * ip; - - if (rc == 0) { - read = fread(buffer, sizeof(char), BUFSIZE, fp); - debug(L"maybe_handle_shebang: read %zd bytes\n", read); - fclose(fp); - - if ((read >= 4) && (buffer[3] == '\n') && (buffer[2] == '\r')) { - ip = find_by_magic((((unsigned char)buffer[1]) << 8 | - (unsigned char)buffer[0]) & 0xFFFF); - if (ip != NULL) { - debug(L"script file is compiled against Python %ls\n", - ip->version); - invoke_child(ip->executable, NULL, cmdline); - } - } - /* Look for BOM */ - bom = find_BOM(buffer); - if (bom == NULL) { - start = buffer; - debug(L"maybe_handle_shebang: BOM not found, using UTF-8\n"); - bom = BOMs; /* points to UTF-8 entry - the default */ - } - else { - debug(L"maybe_handle_shebang: BOM found, code page %u\n", - bom->code_page); - start = &buffer[bom->length]; - } - p = find_terminator(start, BUFSIZE, bom); - /* - * If no CR or LF was found in the heading, - * we assume it's not a shebang file. - */ - if (p == NULL) { - debug(L"maybe_handle_shebang: No line terminator found\n"); - } - else { - /* - * Found line terminator - parse the shebang. - * - * Strictly, we don't need to handle UTF-16 anf UTF-32, - * since Python itself doesn't. - * Never mind, one day it might. - */ - header_len = (int) (p - start); - switch(bom->code_page) { - case CP_UTF8: - nchars = MultiByteToWideChar(bom->code_page, - 0, - start, header_len, shebang_line, - BUFSIZE); - break; - case CP_UTF16BE: - if (header_len % 2 != 0) { - debug(L"maybe_handle_shebang: UTF-16BE, but an odd number \ -of bytes: %d\n", header_len); - /* nchars = 0; Not needed - initialised to 0. */ - } - else { - for (i = header_len; i > 0; i -= 2) { - shebang_alias[i - 1] = start[i - 2]; - shebang_alias[i - 2] = start[i - 1]; - } - nchars = header_len / sizeof(wchar_t); - } - break; - case CP_UTF16LE: - if ((header_len % 2) != 0) { - debug(L"UTF-16LE, but an odd number of bytes: %d\n", - header_len); - /* nchars = 0; Not needed - initialised to 0. */ - } - else { - /* no actual conversion needed. */ - memcpy(shebang_line, start, header_len); - nchars = header_len / sizeof(wchar_t); - } - break; - case CP_UTF32BE: - if (header_len % 4 != 0) { - debug(L"UTF-32BE, but not divisible by 4: %d\n", - header_len); - /* nchars = 0; Not needed - initialised to 0. */ - } - else { - for (i = header_len, j = header_len / 2; i > 0; i -= 4, - j -= 2) { - shebang_alias[j - 1] = start[i - 2]; - shebang_alias[j - 2] = start[i - 1]; - } - nchars = header_len / sizeof(wchar_t); - } - break; - case CP_UTF32LE: - if (header_len % 4 != 0) { - debug(L"UTF-32LE, but not divisible by 4: %d\n", - header_len); - /* nchars = 0; Not needed - initialised to 0. */ - } - else { - for (i = header_len, j = header_len / 2; i > 0; i -= 4, - j -= 2) { - shebang_alias[j - 1] = start[i - 3]; - shebang_alias[j - 2] = start[i - 4]; - } - nchars = header_len / sizeof(wchar_t); - } - break; - } - if (nchars > 0) { - shebang_line[--nchars] = L'\0'; - is_virt = parse_shebang(shebang_line, nchars, &command, - &suffix, &search); - if (command != NULL) { - debug(L"parse_shebang: found command: %ls\n", command); - if (!is_virt) { - invoke_child(command, suffix, cmdline); - } - else { - suffix = wcschr(command, L' '); - if (suffix != NULL) { - *suffix++ = L'\0'; - suffix = skip_whitespace(suffix); - } - if (wcsncmp(command, L"python", 6)) - error(RC_BAD_VIRTUAL_PATH, L"Unknown virtual \ -path '%ls'", command); - command += 6; /* skip past "python" */ - if (search && ((*command == L'\0') || isspace(*command))) { - /* Command is eligible for path search, and there - * is no version specification. - */ - debug(L"searching PATH for python executable\n"); - cmd = find_on_path(PYTHON_EXECUTABLE); - debug(L"Python on path: %ls\n", cmd ? cmd->value : L""); - if (cmd) { - debug(L"located python on PATH: %ls\n", cmd->value); - invoke_child(cmd->value, suffix, cmdline); - /* Exit here, as we have found the command */ - return; - } - /* FALL THROUGH: No python found on PATH, so fall - * back to locating the correct installed python. - */ - } - if (*command && !validate_version(command)) - error(RC_BAD_VIRTUAL_PATH, L"Invalid version \ -specification: '%ls'.\nIn the first line of the script, 'python' needs to be \ -followed by a valid version specifier.\nPlease check the documentation.", - command); - /* TODO could call validate_version(command) */ - ip = locate_python(command, TRUE); - if (ip == NULL) { - error(RC_NO_PYTHON, L"Requested Python version \ -(%ls) is not installed", command); - } - else { - invoke_child(ip->executable, suffix, cmdline); - } - } - } - } - } - } -} - -static wchar_t * -skip_me(wchar_t * cmdline) -{ - BOOL quoted; - wchar_t c; - wchar_t * result = cmdline; - - quoted = cmdline[0] == L'\"'; - if (!quoted) - c = L' '; - else { - c = L'\"'; - ++result; - } - result = wcschr(result, c); - if (result == NULL) /* when, for example, just exe name on command line */ - result = L""; - else { - ++result; /* skip past space or closing quote */ - result = skip_whitespace(result); - } - return result; -} - -static DWORD version_high = 0; -static DWORD version_low = 0; - -static void -get_version_info(wchar_t * version_text, size_t size) -{ - WORD maj, min, rel, bld; - - if (!version_high && !version_low) - wcsncpy_s(version_text, size, L"0.1", _TRUNCATE); /* fallback */ - else { - maj = HIWORD(version_high); - min = LOWORD(version_high); - rel = HIWORD(version_low); - bld = LOWORD(version_low); - _snwprintf_s(version_text, size, _TRUNCATE, L"%d.%d.%d.%d", maj, - min, rel, bld); - } -} - -static void -show_help_text(wchar_t ** argv) -{ - wchar_t version_text [MAX_PATH]; -#if defined(_M_X64) - BOOL canDo64bit = TRUE; -#else - /* If we are a 32bit process on a 64bit Windows, first hit the 64bit keys. */ - BOOL canDo64bit = FALSE; - IsWow64Process(GetCurrentProcess(), &canDo64bit); -#endif - - get_version_info(version_text, MAX_PATH); - fwprintf(stdout, L"\ -Python Launcher for Windows Version %ls\n\n", version_text); - fwprintf(stdout, L"\ -usage:\n\ -%ls [launcher-args] [python-args] [script [script-args]]\n\n", argv[0]); - fputws(L"\ -Launcher arguments:\n\n\ --2 : Launch the latest Python 2.x version\n\ --3 : Launch the latest Python 3.x version\n\ --X.Y : Launch the specified Python version\n", stdout); - if (canDo64bit) { - fputws(L"\ - The above all default to 64 bit if a matching 64 bit python is present.\n\ --X.Y-32: Launch the specified 32bit Python version\n\ --X-32 : Launch the latest 32bit Python X version\n\ --X.Y-64: Launch the specified 64bit Python version\n\ --X-64 : Launch the latest 64bit Python X version", stdout); - } - fputws(L"\n-0 --list : List the available pythons", stdout); - fputws(L"\n-0p --list-paths : List with paths", stdout); - fputws(L"\n\n If no script is specified the specified interpreter is opened.", stdout); - fputws(L"\nIf an exact version is not given, using the latest version can be overridden by", stdout); - fputws(L"\nany of the following, (in priority order):", stdout); - fputws(L"\n An active virtual environment", stdout); - fputws(L"\n A shebang line in the script (if present)", stdout); - fputws(L"\n With -2 or -3 flag a matching PY_PYTHON2 or PY_PYTHON3 Environment variable", stdout); - fputws(L"\n A PY_PYTHON Environment variable", stdout); - fputws(L"\n From [defaults] in py.ini in your %LOCALAPPDATA%\\py.ini", stdout); - fputws(L"\n From [defaults] in py.ini beside py.exe (use `where py` to locate)", stdout); - fputws(L"\n\nThe following help text is from Python:\n\n", stdout); - fflush(stdout); -} - -static BOOL -show_python_list(wchar_t ** argv) -{ - /* - * Display options -0 - */ - INSTALLED_PYTHON * result = NULL; - INSTALLED_PYTHON * ip = installed_pythons; /* List of installed pythons */ - INSTALLED_PYTHON * defpy = locate_python(L"", FALSE); - size_t i = 0; - wchar_t *p = argv[1]; - wchar_t *ver_fmt = L"-%ls-%d"; - wchar_t *fmt = L"\n %ls"; - wchar_t *defind = L" *"; /* Default indicator */ - - /* - * Output informational messages to stderr to keep output - * clean for use in pipes, etc. - */ - fwprintf(stderr, - L"Installed Pythons found by %s Launcher for Windows", argv[0]); - if (!_wcsicmp(p, L"-0p") || !_wcsicmp(p, L"--list-paths")) - fmt = L"\n %-15ls%ls"; /* include path */ - - if (num_installed_pythons == 0) /* We have somehow got here without searching for pythons */ - locate_all_pythons(); /* Find them, Populates installed_pythons */ - - if (num_installed_pythons == 0) /* No pythons found */ - fwprintf(stderr, L"\nNo Installed Pythons Found!"); - else - { - for (i = 0; i < num_installed_pythons; i++, ip++) { - wchar_t version[BUFSIZ]; - if (wcscmp(ip->version, L"venv") == 0) { - wcscpy_s(version, BUFSIZ, L"(venv)"); - } - else { - swprintf_s(version, BUFSIZ, ver_fmt, ip->version, ip->bits); - } - - if (ip->exe_display[0]) { - fwprintf(stdout, fmt, version, ip->exe_display); - } - else { - fwprintf(stdout, fmt, version, ip->executable); - } - /* If there is a default indicate it */ - if (defpy == ip) - fwprintf(stderr, defind); - } - } - - if ((defpy == NULL) && (num_installed_pythons > 0)) - /* We have pythons but none is the default */ - fwprintf(stderr, L"\n\nCan't find a Default Python.\n\n"); - else - fwprintf(stderr, L"\n\n"); /* End with a blank line */ - return FALSE; /* If this has been called we cannot continue */ -} - -#if defined(VENV_REDIRECT) - -static int -find_home_value(const char *buffer, const char **start, DWORD *length) -{ - for (const char *s = strstr(buffer, "home"); s; s = strstr(s + 1, "\nhome")) { - if (*s == '\n') { - ++s; - } - for (int i = 4; i > 0 && *s; --i, ++s); - - while (*s && iswspace(*s)) { - ++s; - } - if (*s != L'=') { - continue; - } - - do { - ++s; - } while (*s && iswspace(*s)); - - *start = s; - char *nl = strchr(s, '\n'); - if (nl) { - *length = (DWORD)((ptrdiff_t)nl - (ptrdiff_t)s); - } else { - *length = (DWORD)strlen(s); - } - return 1; - } - return 0; -} -#endif - -static wchar_t * -wcsdup_pad(const wchar_t *s, int padding, int *newlen) -{ - size_t len = wcslen(s); - len += 1 + padding; - wchar_t *r = (wchar_t *)malloc(len * sizeof(wchar_t)); - if (!r) { - return NULL; - } - if (wcscpy_s(r, len, s)) { - free(r); - return NULL; - } - *newlen = len < MAXINT ? (int)len : MAXINT; - return r; -} - -static wchar_t * -get_process_name(void) -{ - DWORD bufferLen = MAX_PATH; - DWORD len = bufferLen; - wchar_t *r = NULL; - - while (!r) { - r = (wchar_t *)malloc(bufferLen * sizeof(wchar_t)); - if (!r) { - error(RC_NO_MEMORY, L"out of memory"); - return NULL; - } - len = GetModuleFileNameW(NULL, r, bufferLen); - if (len == 0) { - free(r); - error(0, L"Failed to get module name"); - return NULL; - } else if (len == bufferLen && - GetLastError() == ERROR_INSUFFICIENT_BUFFER) { - free(r); - r = NULL; - bufferLen *= 2; - } - } - - return r; -} - -static int -process(int argc, wchar_t ** argv) -{ - wchar_t * wp; - wchar_t * command; - wchar_t * executable; - wchar_t * p; - wchar_t * argv0; - int rc = 0; - INSTALLED_PYTHON * ip; - BOOL valid; - DWORD size, attrs; - wchar_t message[MSGSIZE]; - void * version_data; - VS_FIXEDFILEINFO * file_info; - UINT block_size; -#if defined(VENV_REDIRECT) - wchar_t * venv_cfg_path; - int newlen; -#elif defined(SCRIPT_WRAPPER) - wchar_t * newcommand; - wchar_t * av[2]; - int newlen; - HRESULT hr; - int index; -#else - HRESULT hr; - int index; -#endif - - setvbuf(stderr, (char *)NULL, _IONBF, 0); - wp = get_env(L"PYLAUNCH_DEBUG"); - if ((wp != NULL) && (*wp != L'\0')) - log_fp = stderr; - -#if defined(_M_X64) - debug(L"launcher build: 64bit\n"); -#else - debug(L"launcher build: 32bit\n"); -#endif -#if defined(_WINDOWS) - debug(L"launcher executable: Windows\n"); -#else - debug(L"launcher executable: Console\n"); -#endif -#if !defined(VENV_REDIRECT) - /* Get the local appdata folder (non-roaming) */ - hr = SHGetFolderPathW(NULL, CSIDL_LOCAL_APPDATA, - NULL, 0, appdata_ini_path); - if (hr != S_OK) { - debug(L"SHGetFolderPath failed: %X\n", hr); - appdata_ini_path[0] = L'\0'; - } - else { - wcsncat_s(appdata_ini_path, MAX_PATH, L"\\py.ini", _TRUNCATE); - attrs = GetFileAttributesW(appdata_ini_path); - if (attrs == INVALID_FILE_ATTRIBUTES) { - debug(L"File '%ls' non-existent\n", appdata_ini_path); - appdata_ini_path[0] = L'\0'; - } else { - debug(L"Using local configuration file '%ls'\n", appdata_ini_path); - } - } -#endif - argv0 = get_process_name(); - size = GetFileVersionInfoSizeW(argv0, &size); - if (size == 0) { - winerror(GetLastError(), message, MSGSIZE); - debug(L"GetFileVersionInfoSize failed: %ls\n", message); - } - else { - version_data = malloc(size); - if (version_data) { - valid = GetFileVersionInfoW(argv0, 0, size, - version_data); - if (!valid) - debug(L"GetFileVersionInfo failed: %X\n", GetLastError()); - else { - valid = VerQueryValueW(version_data, L"\\", - (LPVOID *) &file_info, &block_size); - if (!valid) - debug(L"VerQueryValue failed: %X\n", GetLastError()); - else { - version_high = file_info->dwFileVersionMS; - version_low = file_info->dwFileVersionLS; - } - } - free(version_data); - } - } - -#if defined(VENV_REDIRECT) - /* Allocate some extra space for new filenames */ - venv_cfg_path = wcsdup_pad(argv0, 32, &newlen); - if (!venv_cfg_path) { - error(RC_NO_MEMORY, L"Failed to copy module name"); - } - p = wcsrchr(venv_cfg_path, L'\\'); - - if (p == NULL) { - error(RC_NO_VENV_CFG, L"No pyvenv.cfg file"); - } - p[0] = L'\0'; - wcscat_s(venv_cfg_path, newlen, L"\\pyvenv.cfg"); - attrs = GetFileAttributesW(venv_cfg_path); - if (attrs == INVALID_FILE_ATTRIBUTES) { - debug(L"File '%ls' non-existent\n", venv_cfg_path); - p[0] = '\0'; - p = wcsrchr(venv_cfg_path, L'\\'); - if (p != NULL) { - p[0] = '\0'; - wcscat_s(venv_cfg_path, newlen, L"\\pyvenv.cfg"); - attrs = GetFileAttributesW(venv_cfg_path); - if (attrs == INVALID_FILE_ATTRIBUTES) { - debug(L"File '%ls' non-existent\n", venv_cfg_path); - error(RC_NO_VENV_CFG, L"No pyvenv.cfg file"); - } - } - } - debug(L"Using venv configuration file '%ls'\n", venv_cfg_path); -#else - /* Allocate some extra space for new filenames */ - if (wcscpy_s(launcher_ini_path, MAX_PATH, argv0)) { - error(RC_NO_MEMORY, L"Failed to copy module name"); - } - p = wcsrchr(launcher_ini_path, L'\\'); - - if (p == NULL) { - debug(L"GetModuleFileNameW returned value has no backslash: %ls\n", - launcher_ini_path); - launcher_ini_path[0] = L'\0'; - } - else { - p[0] = L'\0'; - wcscat_s(launcher_ini_path, MAX_PATH, L"\\py.ini"); - attrs = GetFileAttributesW(launcher_ini_path); - if (attrs == INVALID_FILE_ATTRIBUTES) { - debug(L"File '%ls' non-existent\n", launcher_ini_path); - launcher_ini_path[0] = L'\0'; - } else { - debug(L"Using global configuration file '%ls'\n", launcher_ini_path); - } - } -#endif - - command = skip_me(GetCommandLineW()); - debug(L"Called with command line: %ls\n", command); - -#if !defined(VENV_REDIRECT) - /* bpo-35811: The __PYVENV_LAUNCHER__ variable is used to - * override sys.executable and locate the original prefix path. - * However, if it is silently inherited by a non-venv Python - * process, that process will believe it is running in the venv - * still. This is the only place where *we* can clear it (that is, - * when py.exe is being used to launch Python), so we do. - */ - SetEnvironmentVariableW(L"__PYVENV_LAUNCHER__", NULL); -#endif - -#if defined(SCRIPT_WRAPPER) - /* The launcher is being used in "script wrapper" mode. - * There should therefore be a Python script named -script.py in - * the same directory as the launcher executable. - * Put the script name into argv as the first (script name) argument. - */ - - /* Get the wrapped script name - if the script is not present, this will - * terminate the program with an error. - */ - locate_wrapped_script(); - - /* Add the wrapped script to the start of command */ - newlen = wcslen(wrapped_script_path) + wcslen(command) + 2; /* ' ' + NUL */ - newcommand = malloc(sizeof(wchar_t) * newlen); - if (!newcommand) { - error(RC_NO_MEMORY, L"Could not allocate new command line"); - } - else { - wcscpy_s(newcommand, newlen, wrapped_script_path); - wcscat_s(newcommand, newlen, L" "); - wcscat_s(newcommand, newlen, command); - debug(L"Running wrapped script with command line '%ls'\n", newcommand); - read_commands(); - av[0] = wrapped_script_path; - av[1] = NULL; - maybe_handle_shebang(av, newcommand); - /* Returns if no shebang line - pass to default processing */ - command = newcommand; - valid = FALSE; - } -#elif defined(VENV_REDIRECT) - { - FILE *f; - char buffer[4096]; /* 4KB should be enough for anybody */ - char *start; - DWORD len, cch, cch_actual; - size_t cb; - if (_wfopen_s(&f, venv_cfg_path, L"r")) { - error(RC_BAD_VENV_CFG, L"Cannot read '%ls'", venv_cfg_path); - } - cb = fread_s(buffer, sizeof(buffer), sizeof(buffer[0]), - sizeof(buffer) / sizeof(buffer[0]), f); - fclose(f); - - if (!find_home_value(buffer, &start, &len)) { - error(RC_BAD_VENV_CFG, L"Cannot find home in '%ls'", - venv_cfg_path); - } - - cch = MultiByteToWideChar(CP_UTF8, 0, start, len, NULL, 0); - if (!cch) { - error(0, L"Cannot determine memory for home path"); - } - cch += (DWORD)wcslen(PYTHON_EXECUTABLE) + 4; /* include sep, null and quotes */ - executable = (wchar_t *)malloc(cch * sizeof(wchar_t)); - if (executable == NULL) { - error(RC_NO_MEMORY, L"A memory allocation failed"); - } - /* start with a quote - we'll skip this ahead, but want it for the final string */ - executable[0] = L'"'; - cch_actual = MultiByteToWideChar(CP_UTF8, 0, start, len, &executable[1], cch - 1); - if (!cch_actual) { - error(RC_BAD_VENV_CFG, L"Cannot decode home path in '%ls'", - venv_cfg_path); - } - cch_actual += 1; /* account for the first quote */ - executable[cch_actual] = L'\0'; - if (executable[cch_actual - 1] != L'\\') { - executable[cch_actual++] = L'\\'; - executable[cch_actual] = L'\0'; - } - if (wcscat_s(&executable[1], cch - 1, PYTHON_EXECUTABLE)) { - error(RC_BAD_VENV_CFG, L"Cannot create executable path from '%ls'", - venv_cfg_path); - } - /* there's no trailing quote, so we only have to skip one character for the test */ - if (GetFileAttributesW(&executable[1]) == INVALID_FILE_ATTRIBUTES) { - error(RC_NO_PYTHON, L"No Python at '%ls'", executable); - } - /* now append the final quote */ - wcscat_s(executable, cch, L"\""); - /* smuggle our original path through */ - if (!SetEnvironmentVariableW(L"__PYVENV_LAUNCHER__", argv0)) { - error(0, L"Failed to set launcher environment"); - } - valid = 1; - } -#else - if (argc <= 1) { - valid = FALSE; - p = NULL; - } - else { - p = argv[1]; - if ((argc == 2) && // list version args - (!wcsncmp(p, L"-0", wcslen(L"-0")) || - !wcsncmp(p, L"--list", wcslen(L"--list")))) - { - show_python_list(argv); - return rc; - } - valid = valid && (*p == L'-') && validate_version(&p[1]); - if (valid) { - ip = locate_python(&p[1], FALSE); - if (ip == NULL) - { - fwprintf(stdout, \ - L"Python %ls not found!\n", &p[1]); - valid = show_python_list(argv); - error(RC_NO_PYTHON, L"Requested Python version (%ls) not \ -installed, use -0 for available pythons", &p[1]); - } - executable = ip->executable; - command += wcslen(p); - command = skip_whitespace(command); - } - else { - for (index = 1; index < argc; ++index) { - if (*argv[index] != L'-') - break; - } - if (index < argc) { - read_commands(); - maybe_handle_shebang(&argv[index], command); - } - } - } -#endif - - if (!valid) { - if ((argc == 2) && (!_wcsicmp(p, L"-h") || !_wcsicmp(p, L"--help"))) - show_help_text(argv); - if ((argc == 2) && - (!_wcsicmp(p, L"-0") || !_wcsicmp(p, L"--list") || - !_wcsicmp(p, L"-0p") || !_wcsicmp(p, L"--list-paths"))) - { - executable = NULL; /* Info call only */ - } - else { - /* look for the default Python */ - ip = locate_python(L"", FALSE); - if (ip == NULL) - error(RC_NO_PYTHON, L"Can't find a default Python."); - executable = ip->executable; - } - } - if (executable != NULL) - invoke_child(executable, NULL, command); - else - rc = RC_NO_PYTHON; - return rc; -} - -#if defined(_WINDOWS) - -int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, - LPWSTR lpstrCmd, int nShow) -{ - return process(__argc, __wargv); -} - -#else - -int cdecl wmain(int argc, wchar_t ** argv) -{ - return process(argc, argv); -} - -#endif diff --git a/PC/launcher2.c b/PC/launcher2.c deleted file mode 100644 index 4dd18c8eb5462e9..000000000000000 --- a/PC/launcher2.c +++ /dev/null @@ -1,2858 +0,0 @@ -/* - * Rewritten Python launcher for Windows - * - * This new rewrite properly handles PEP 514 and allows any registered Python - * runtime to be launched. It also enables auto-install of versions when they - * are requested but no installation can be found. - */ - -#define __STDC_WANT_LIB_EXT1__ 1 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define MS_WINDOWS -#include "patchlevel.h" - -#define MAXLEN PATHCCH_MAX_CCH -#define MSGSIZE 1024 - -#define RC_NO_STD_HANDLES 100 -#define RC_CREATE_PROCESS 101 -#define RC_BAD_VIRTUAL_PATH 102 -#define RC_NO_PYTHON 103 -#define RC_NO_MEMORY 104 -#define RC_NO_SCRIPT 105 -#define RC_NO_VENV_CFG 106 -#define RC_BAD_VENV_CFG 107 -#define RC_NO_COMMANDLINE 108 -#define RC_INTERNAL_ERROR 109 -#define RC_DUPLICATE_ITEM 110 -#define RC_INSTALLING 111 -#define RC_NO_PYTHON_AT_ALL 112 -#define RC_NO_SHEBANG 113 -#define RC_RECURSIVE_SHEBANG 114 - -static FILE * log_fp = NULL; - -void -debug(wchar_t * format, ...) -{ - va_list va; - - if (log_fp != NULL) { - wchar_t buffer[MAXLEN]; - int r = 0; - va_start(va, format); - r = vswprintf_s(buffer, MAXLEN, format, va); - va_end(va); - - if (r <= 0) { - return; - } - fputws(buffer, log_fp); - while (r && isspace(buffer[r])) { - buffer[r--] = L'\0'; - } - if (buffer[0]) { - OutputDebugStringW(buffer); - } - } -} - - -void -formatWinerror(int rc, wchar_t * message, int size) -{ - FormatMessageW( - FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, rc, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - message, size, NULL); -} - - -void -winerror(int err, wchar_t * format, ... ) -{ - va_list va; - wchar_t message[MSGSIZE]; - wchar_t win_message[MSGSIZE]; - int len; - - if (err == 0) { - err = GetLastError(); - } - - va_start(va, format); - len = _vsnwprintf_s(message, MSGSIZE, _TRUNCATE, format, va); - va_end(va); - - formatWinerror(err, win_message, MSGSIZE); - if (len >= 0) { - _snwprintf_s(&message[len], MSGSIZE - len, _TRUNCATE, L": %s", - win_message); - } - -#if !defined(_WINDOWS) - fwprintf(stderr, L"%s\n", message); -#else - MessageBoxW(NULL, message, L"Python Launcher is sorry to say ...", - MB_OK); -#endif -} - - -void -error(wchar_t * format, ... ) -{ - va_list va; - wchar_t message[MSGSIZE]; - - va_start(va, format); - _vsnwprintf_s(message, MSGSIZE, _TRUNCATE, format, va); - va_end(va); - -#if !defined(_WINDOWS) - fwprintf(stderr, L"%s\n", message); -#else - MessageBoxW(NULL, message, L"Python Launcher is sorry to say ...", - MB_OK); -#endif -} - - -typedef BOOL (*PIsWow64Process2)(HANDLE, USHORT*, USHORT*); - - -USHORT -_getNativeMachine(void) -{ - static USHORT _nativeMachine = IMAGE_FILE_MACHINE_UNKNOWN; - if (_nativeMachine == IMAGE_FILE_MACHINE_UNKNOWN) { - USHORT processMachine; - HMODULE kernel32 = GetModuleHandleW(L"kernel32.dll"); - PIsWow64Process2 IsWow64Process2 = kernel32 ? - (PIsWow64Process2)GetProcAddress(kernel32, "IsWow64Process2") : - NULL; - if (!IsWow64Process2) { - BOOL wow64Process; - if (!IsWow64Process(NULL, &wow64Process)) { - winerror(0, L"Checking process type"); - } else if (wow64Process) { - // We should always be a 32-bit executable, so if running - // under emulation, it must be a 64-bit host. - _nativeMachine = IMAGE_FILE_MACHINE_AMD64; - } else { - // Not running under emulation, and an old enough OS to not - // have IsWow64Process2, so assume it's x86. - _nativeMachine = IMAGE_FILE_MACHINE_I386; - } - } else if (!IsWow64Process2(NULL, &processMachine, &_nativeMachine)) { - winerror(0, L"Checking process type"); - } - } - return _nativeMachine; -} - - -bool -isAMD64Host(void) -{ - return _getNativeMachine() == IMAGE_FILE_MACHINE_AMD64; -} - - -bool -isARM64Host(void) -{ - return _getNativeMachine() == IMAGE_FILE_MACHINE_ARM64; -} - - -bool -isEnvVarSet(const wchar_t *name) -{ - /* only looking for non-empty, which means at least one character - and the null terminator */ - return GetEnvironmentVariableW(name, NULL, 0) >= 2; -} - - -bool -join(wchar_t *buffer, size_t bufferLength, const wchar_t *fragment) -{ - if (SUCCEEDED(PathCchCombineEx(buffer, bufferLength, buffer, fragment, PATHCCH_ALLOW_LONG_PATHS))) { - return true; - } - return false; -} - - -bool -split_parent(wchar_t *buffer, size_t bufferLength) -{ - return SUCCEEDED(PathCchRemoveFileSpec(buffer, bufferLength)); -} - - -int -_compare(const wchar_t *x, int xLen, const wchar_t *y, int yLen) -{ - // Empty strings sort first - if (!x || !xLen) { - return (!y || !yLen) ? 0 : -1; - } else if (!y || !yLen) { - return 1; - } - switch (CompareStringEx( - LOCALE_NAME_INVARIANT, NORM_IGNORECASE | SORT_DIGITSASNUMBERS, - x, xLen, y, yLen, - NULL, NULL, 0 - )) { - case CSTR_LESS_THAN: - return -1; - case CSTR_EQUAL: - return 0; - case CSTR_GREATER_THAN: - return 1; - default: - winerror(0, L"Error comparing '%.*s' and '%.*s' (compare)", xLen, x, yLen, y); - return -1; - } -} - - -int -_compareArgument(const wchar_t *x, int xLen, const wchar_t *y, int yLen) -{ - // Empty strings sort first - if (!x || !xLen) { - return (!y || !yLen) ? 0 : -1; - } else if (!y || !yLen) { - return 1; - } - switch (CompareStringEx( - LOCALE_NAME_INVARIANT, 0, - x, xLen, y, yLen, - NULL, NULL, 0 - )) { - case CSTR_LESS_THAN: - return -1; - case CSTR_EQUAL: - return 0; - case CSTR_GREATER_THAN: - return 1; - default: - winerror(0, L"Error comparing '%.*s' and '%.*s' (compareArgument)", xLen, x, yLen, y); - return -1; - } -} - -int -_comparePath(const wchar_t *x, int xLen, const wchar_t *y, int yLen) -{ - // Empty strings sort first - if (!x || !xLen) { - return !y || !yLen ? 0 : -1; - } else if (!y || !yLen) { - return 1; - } - switch (CompareStringOrdinal(x, xLen, y, yLen, TRUE)) { - case CSTR_LESS_THAN: - return -1; - case CSTR_EQUAL: - return 0; - case CSTR_GREATER_THAN: - return 1; - default: - winerror(0, L"Error comparing '%.*s' and '%.*s' (comparePath)", xLen, x, yLen, y); - return -1; - } -} - - -bool -_startsWith(const wchar_t *x, int xLen, const wchar_t *y, int yLen) -{ - if (!x || !y) { - return false; - } - yLen = yLen < 0 ? (int)wcsnlen_s(y, MAXLEN) : yLen; - xLen = xLen < 0 ? (int)wcsnlen_s(x, MAXLEN) : xLen; - return xLen >= yLen && 0 == _compare(x, yLen, y, yLen); -} - - -bool -_startsWithArgument(const wchar_t *x, int xLen, const wchar_t *y, int yLen) -{ - if (!x || !y) { - return false; - } - yLen = yLen < 0 ? (int)wcsnlen_s(y, MAXLEN) : yLen; - xLen = xLen < 0 ? (int)wcsnlen_s(x, MAXLEN) : xLen; - return xLen >= yLen && 0 == _compareArgument(x, yLen, y, yLen); -} - - -// Unlike regular startsWith, this function requires that the following -// character is either NULL (that is, the entire string matches) or is one of -// the characters in 'separators'. -bool -_startsWithSeparated(const wchar_t *x, int xLen, const wchar_t *y, int yLen, const wchar_t *separators) -{ - if (!x || !y) { - return false; - } - yLen = yLen < 0 ? (int)wcsnlen_s(y, MAXLEN) : yLen; - xLen = xLen < 0 ? (int)wcsnlen_s(x, MAXLEN) : xLen; - if (xLen < yLen) { - return false; - } - if (xLen == yLen) { - return 0 == _compare(x, xLen, y, yLen); - } - return separators && - 0 == _compare(x, yLen, y, yLen) && - wcschr(separators, x[yLen]) != NULL; -} - - - -/******************************************************************************\ - *** HELP TEXT *** -\******************************************************************************/ - - -int -showHelpText(wchar_t ** argv) -{ - // The help text is stored in launcher-usage.txt, which is compiled into - // the launcher and loaded at runtime if needed. - // - // The file must be UTF-8. There are two substitutions: - // %ls - PY_VERSION (as wchar_t*) - // %ls - argv[0] (as wchar_t*) - HRSRC res = FindResourceExW(NULL, L"USAGE", MAKEINTRESOURCE(1), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL)); - HGLOBAL resData = res ? LoadResource(NULL, res) : NULL; - const char *usage = resData ? (const char*)LockResource(resData) : NULL; - if (usage == NULL) { - winerror(0, L"Unable to load usage text"); - return RC_INTERNAL_ERROR; - } - - DWORD cbData = SizeofResource(NULL, res); - DWORD cchUsage = MultiByteToWideChar(CP_UTF8, 0, usage, cbData, NULL, 0); - if (!cchUsage) { - winerror(0, L"Unable to preprocess usage text"); - return RC_INTERNAL_ERROR; - } - - cchUsage += 1; - wchar_t *wUsage = (wchar_t*)malloc(cchUsage * sizeof(wchar_t)); - cchUsage = MultiByteToWideChar(CP_UTF8, 0, usage, cbData, wUsage, cchUsage); - if (!cchUsage) { - winerror(0, L"Unable to preprocess usage text"); - free((void *)wUsage); - return RC_INTERNAL_ERROR; - } - // Ensure null termination - wUsage[cchUsage] = L'\0'; - - fwprintf(stdout, wUsage, (L"" PY_VERSION), argv[0]); - fflush(stdout); - - free((void *)wUsage); - - return 0; -} - - -/******************************************************************************\ - *** SEARCH INFO *** -\******************************************************************************/ - - -struct _SearchInfoBuffer { - struct _SearchInfoBuffer *next; - wchar_t buffer[0]; -}; - - -typedef struct { - // the original string, managed by the OS - const wchar_t *originalCmdLine; - // pointer into the cmdline to mark what we've consumed - const wchar_t *restOfCmdLine; - // if known/discovered, the full executable path of our runtime - const wchar_t *executablePath; - // pointer and length into cmdline for the file to check for a - // shebang line, if any. Length can be -1 if the string is null - // terminated. - const wchar_t *scriptFile; - int scriptFileLength; - // pointer and length into cmdline or a static string with the - // name of the target executable. Length can be -1 if the string - // is null terminated. - const wchar_t *executable; - int executableLength; - // pointer and length into a string with additional interpreter - // arguments to include before restOfCmdLine. Length can be -1 if - // the string is null terminated. - const wchar_t *executableArgs; - int executableArgsLength; - // pointer and length into cmdline or a static string with the - // company name for PEP 514 lookup. Length can be -1 if the string - // is null terminated. - const wchar_t *company; - int companyLength; - // pointer and length into cmdline or a static string with the - // tag for PEP 514 lookup. Length can be -1 if the string is - // null terminated. - const wchar_t *tag; - int tagLength; - // if true, treats 'tag' as a non-PEP 514 filter - bool oldStyleTag; - // if true, ignores 'tag' when a high priority environment is found - // gh-92817: This is currently set when a tag is read from configuration, - // the environment, or a shebang, rather than the command line, and the - // only currently possible high priority environment is an active virtual - // environment - bool lowPriorityTag; - // if true, allow PEP 514 lookup to override 'executable' - bool allowExecutableOverride; - // if true, allow a nearby pyvenv.cfg to locate the executable - bool allowPyvenvCfg; - // if true, allow defaults (env/py.ini) to clarify/override tags - bool allowDefaults; - // if true, prefer windowed (console-less) executable - bool windowed; - // if true, only list detected runtimes without launching - bool list; - // if true, only list detected runtimes with paths without launching - bool listPaths; - // if true, display help message before continuing - bool help; - // if set, limits search to registry keys with the specified Company - // This is intended for debugging and testing only - const wchar_t *limitToCompany; - // dynamically allocated buffers to free later - struct _SearchInfoBuffer *_buffer; -} SearchInfo; - - -wchar_t * -allocSearchInfoBuffer(SearchInfo *search, int wcharCount) -{ - struct _SearchInfoBuffer *buffer = (struct _SearchInfoBuffer*)malloc( - sizeof(struct _SearchInfoBuffer) + - wcharCount * sizeof(wchar_t) - ); - if (!buffer) { - return NULL; - } - buffer->next = search->_buffer; - search->_buffer = buffer; - return buffer->buffer; -} - - -void -freeSearchInfo(SearchInfo *search) -{ - struct _SearchInfoBuffer *b = search->_buffer; - search->_buffer = NULL; - while (b) { - struct _SearchInfoBuffer *nextB = b->next; - free((void *)b); - b = nextB; - } -} - - -void -_debugStringAndLength(const wchar_t *s, int len, const wchar_t *name) -{ - if (!s) { - debug(L"%s: (null)\n", name); - } else if (len == 0) { - debug(L"%s: (empty)\n", name); - } else if (len < 0) { - debug(L"%s: %s\n", name, s); - } else { - debug(L"%s: %.*ls\n", name, len, s); - } -} - - -void -dumpSearchInfo(SearchInfo *search) -{ - if (!log_fp) { - return; - } - -#ifdef __clang__ -#define DEBUGNAME(s) L # s -#else -#define DEBUGNAME(s) # s -#endif -#define DEBUG(s) debug(L"SearchInfo." DEBUGNAME(s) L": %s\n", (search->s) ? (search->s) : L"(null)") -#define DEBUG_2(s, sl) _debugStringAndLength((search->s), (search->sl), L"SearchInfo." DEBUGNAME(s)) -#define DEBUG_BOOL(s) debug(L"SearchInfo." DEBUGNAME(s) L": %s\n", (search->s) ? L"True" : L"False") - DEBUG(originalCmdLine); - DEBUG(restOfCmdLine); - DEBUG(executablePath); - DEBUG_2(scriptFile, scriptFileLength); - DEBUG_2(executable, executableLength); - DEBUG_2(executableArgs, executableArgsLength); - DEBUG_2(company, companyLength); - DEBUG_2(tag, tagLength); - DEBUG_BOOL(oldStyleTag); - DEBUG_BOOL(lowPriorityTag); - DEBUG_BOOL(allowDefaults); - DEBUG_BOOL(allowExecutableOverride); - DEBUG_BOOL(windowed); - DEBUG_BOOL(list); - DEBUG_BOOL(listPaths); - DEBUG_BOOL(help); - DEBUG(limitToCompany); -#undef DEBUG_BOOL -#undef DEBUG_2 -#undef DEBUG -#undef DEBUGNAME -} - - -int -findArgv0Length(const wchar_t *buffer, int bufferLength) -{ - // Note: this implements semantics that are only valid for argv0. - // Specifically, there is no escaping of quotes, and quotes within - // the argument have no effect. A quoted argv0 must start and end - // with a double quote character; otherwise, it ends at the first - // ' ' or '\t'. - int quoted = buffer[0] == L'"'; - for (int i = 1; bufferLength < 0 || i < bufferLength; ++i) { - switch (buffer[i]) { - case L'\0': - return i; - case L' ': - case L'\t': - if (!quoted) { - return i; - } - break; - case L'"': - if (quoted) { - return i + 1; - } - break; - } - } - return bufferLength; -} - - -const wchar_t * -findArgv0End(const wchar_t *buffer, int bufferLength) -{ - return &buffer[findArgv0Length(buffer, bufferLength)]; -} - - -/******************************************************************************\ - *** COMMAND-LINE PARSING *** -\******************************************************************************/ - -// Adapted from https://stackoverflow.com/a/65583702 -typedef struct AppExecLinkFile { // For tag IO_REPARSE_TAG_APPEXECLINK - DWORD reparseTag; - WORD reparseDataLength; - WORD reserved; - ULONG version; - wchar_t stringList[MAX_PATH * 4]; // Multistring (Consecutive UTF-16 strings each ending with a NUL) - /* There are normally 4 strings here. Ex: - Package ID: L"Microsoft.DesktopAppInstaller_8wekyb3d8bbwe" - Entry Point: L"Microsoft.DesktopAppInstaller_8wekyb3d8bbwe!PythonRedirector" - Executable: L"C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.17.106910_x64__8wekyb3d8bbwe\AppInstallerPythonRedirector.exe" - Applic. Type: L"0" // Integer as ASCII. "0" = Desktop bridge application; Else sandboxed UWP application - */ -} AppExecLinkFile; - - -int -parseCommandLine(SearchInfo *search) -{ - if (!search || !search->originalCmdLine) { - return RC_NO_COMMANDLINE; - } - - const wchar_t *argv0End = findArgv0End(search->originalCmdLine, -1); - const wchar_t *tail = argv0End; // will be start of the executable name - const wchar_t *end = argv0End; // will be end of the executable name - search->restOfCmdLine = argv0End; // will be first space after argv0 - while (--tail != search->originalCmdLine) { - if (*tail == L'"' && end == argv0End) { - // Move the "end" up to the quote, so we also allow moving for - // a period later on. - end = argv0End = tail; - } else if (*tail == L'.' && end == argv0End) { - end = tail; - } else if (*tail == L'\\' || *tail == L'/') { - ++tail; - break; - } - } - if (tail == search->originalCmdLine && tail[0] == L'"') { - ++tail; - } - // Without special cases, we can now fill in the search struct - int tailLen = (int)(end ? (end - tail) : wcsnlen_s(tail, MAXLEN)); - search->executableLength = -1; - - // Our special cases are as follows -#define MATCHES(s) (0 == _comparePath(tail, tailLen, (s), -1)) -#define STARTSWITH(s) _startsWith(tail, tailLen, (s), -1) - if (MATCHES(L"py")) { - search->executable = L"python.exe"; - search->allowExecutableOverride = true; - search->allowDefaults = true; - } else if (MATCHES(L"pyw")) { - search->executable = L"pythonw.exe"; - search->allowExecutableOverride = true; - search->allowDefaults = true; - search->windowed = true; - } else if (MATCHES(L"py_d")) { - search->executable = L"python_d.exe"; - search->allowExecutableOverride = true; - search->allowDefaults = true; - } else if (MATCHES(L"pyw_d")) { - search->executable = L"pythonw_d.exe"; - search->allowExecutableOverride = true; - search->allowDefaults = true; - search->windowed = true; - } else if (STARTSWITH(L"python3")) { - search->executable = L"python.exe"; - search->tag = &tail[6]; - search->tagLength = tailLen - 6; - search->allowExecutableOverride = true; - search->oldStyleTag = true; - search->allowPyvenvCfg = true; - } else if (STARTSWITH(L"pythonw3")) { - search->executable = L"pythonw.exe"; - search->tag = &tail[7]; - search->tagLength = tailLen - 7; - search->allowExecutableOverride = true; - search->oldStyleTag = true; - search->allowPyvenvCfg = true; - search->windowed = true; - } else { - search->executable = tail; - search->executableLength = tailLen; - search->allowPyvenvCfg = true; - } -#undef STARTSWITH -#undef MATCHES - - // First argument might be one of our options. If so, consume it, - // update flags and then set restOfCmdLine. - const wchar_t *arg = search->restOfCmdLine; - while(*arg && isspace(*arg)) { ++arg; } -#define MATCHES(s) (0 == _compareArgument(arg, argLen, (s), -1)) -#define STARTSWITH(s) _startsWithArgument(arg, argLen, (s), -1) - if (*arg && *arg == L'-' && *++arg) { - tail = arg; - while (*tail && !isspace(*tail)) { ++tail; } - int argLen = (int)(tail - arg); - if (argLen > 0) { - if (STARTSWITH(L"2") || STARTSWITH(L"3")) { - // All arguments starting with 2 or 3 are assumed to be version tags - search->tag = arg; - search->tagLength = argLen; - search->oldStyleTag = true; - search->restOfCmdLine = tail; - } else if (STARTSWITH(L"V:") || STARTSWITH(L"-version:")) { - // Arguments starting with 'V:' specify company and/or tag - const wchar_t *argStart = wcschr(arg, L':') + 1; - const wchar_t *tagStart = wcschr(argStart, L'/') ; - if (tagStart) { - search->company = argStart; - search->companyLength = (int)(tagStart - argStart); - search->tag = tagStart + 1; - } else { - search->tag = argStart; - } - search->tagLength = (int)(tail - search->tag); - search->allowDefaults = false; - search->restOfCmdLine = tail; - } else if (MATCHES(L"0") || MATCHES(L"-list")) { - search->list = true; - search->restOfCmdLine = tail; - } else if (MATCHES(L"0p") || MATCHES(L"-list-paths")) { - search->listPaths = true; - search->restOfCmdLine = tail; - } else if (MATCHES(L"h") || MATCHES(L"-help")) { - search->help = true; - // Do not update restOfCmdLine so that we trigger the help - // message from whichever interpreter we select - } - } - } -#undef STARTSWITH -#undef MATCHES - - // Might have a script filename. If it looks like a filename, add - // it to the SearchInfo struct for later reference. - arg = search->restOfCmdLine; - while(*arg && isspace(*arg)) { ++arg; } - if (*arg && *arg != L'-') { - search->scriptFile = arg; - if (*arg == L'"') { - ++search->scriptFile; - while (*++arg && *arg != L'"') { } - } else { - while (*arg && !isspace(*arg)) { ++arg; } - } - search->scriptFileLength = (int)(arg - search->scriptFile); - } - - return 0; -} - - -int -_decodeShebang(SearchInfo *search, const char *buffer, int bufferLength, bool onlyUtf8, wchar_t **decoded, int *decodedLength) -{ - DWORD cp = CP_UTF8; - int wideLen = MultiByteToWideChar(cp, MB_ERR_INVALID_CHARS, buffer, bufferLength, NULL, 0); - if (!wideLen) { - cp = CP_ACP; - wideLen = MultiByteToWideChar(cp, MB_ERR_INVALID_CHARS, buffer, bufferLength, NULL, 0); - if (!wideLen) { - debug(L"# Failed to decode shebang line (0x%08X)\n", GetLastError()); - return RC_BAD_VIRTUAL_PATH; - } - } - wchar_t *b = allocSearchInfoBuffer(search, wideLen + 1); - if (!b) { - return RC_NO_MEMORY; - } - wideLen = MultiByteToWideChar(cp, 0, buffer, bufferLength, b, wideLen + 1); - if (!wideLen) { - debug(L"# Failed to decode shebang line (0x%08X)\n", GetLastError()); - return RC_BAD_VIRTUAL_PATH; - } - b[wideLen] = L'\0'; - *decoded = b; - *decodedLength = wideLen; - return 0; -} - - -bool -_shebangStartsWith(const wchar_t *buffer, int bufferLength, const wchar_t *prefix, const wchar_t **rest, int *firstArgumentLength) -{ - int prefixLength = (int)wcsnlen_s(prefix, MAXLEN); - if (bufferLength < prefixLength || !_startsWithArgument(buffer, bufferLength, prefix, prefixLength)) { - return false; - } - if (rest) { - *rest = &buffer[prefixLength]; - } - if (firstArgumentLength) { - int i = prefixLength; - while (i < bufferLength && !isspace(buffer[i])) { - i += 1; - } - *firstArgumentLength = i - prefixLength; - } - return true; -} - - -int -ensure_no_redirector_stub(wchar_t* filename, wchar_t* buffer) -{ - // Make sure we didn't find a reparse point that will open the Microsoft Store - // If we did, pretend there was no shebang and let normal handling take over - WIN32_FIND_DATAW findData; - HANDLE hFind = FindFirstFileW(buffer, &findData); - if (!hFind) { - // Let normal handling take over - debug(L"# Did not find %s on PATH\n", filename); - return RC_NO_SHEBANG; - } - - FindClose(hFind); - - if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && - findData.dwReserved0 & IO_REPARSE_TAG_APPEXECLINK)) { - return 0; - } - - HANDLE hReparsePoint = CreateFileW(buffer, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT, NULL); - if (!hReparsePoint) { - // Let normal handling take over - debug(L"# Did not find %s on PATH\n", filename); - return RC_NO_SHEBANG; - } - - AppExecLinkFile appExecLink; - - if (!DeviceIoControl(hReparsePoint, FSCTL_GET_REPARSE_POINT, NULL, 0, &appExecLink, sizeof(appExecLink), NULL, NULL)) { - // Let normal handling take over - debug(L"# Did not find %s on PATH\n", filename); - CloseHandle(hReparsePoint); - return RC_NO_SHEBANG; - } - - CloseHandle(hReparsePoint); - - const wchar_t* redirectorPackageId = L"Microsoft.DesktopAppInstaller_8wekyb3d8bbwe"; - - if (0 == wcscmp(appExecLink.stringList, redirectorPackageId)) { - debug(L"# ignoring redirector that would launch store\n"); - return RC_NO_SHEBANG; - } - - return 0; -} - - -int -searchPath(SearchInfo *search, const wchar_t *shebang, int shebangLength) -{ - if (isEnvVarSet(L"PYLAUNCHER_NO_SEARCH_PATH")) { - return RC_NO_SHEBANG; - } - - wchar_t *command; - int commandLength; - if (!_shebangStartsWith(shebang, shebangLength, L"/usr/bin/env ", &command, &commandLength)) { - return RC_NO_SHEBANG; - } - - if (!commandLength || commandLength == MAXLEN) { - return RC_BAD_VIRTUAL_PATH; - } - - int lastDot = commandLength; - while (lastDot > 0 && command[lastDot] != L'.') { - lastDot -= 1; - } - if (!lastDot) { - lastDot = commandLength; - } - - wchar_t filename[MAXLEN]; - if (wcsncpy_s(filename, MAXLEN, command, commandLength)) { - return RC_BAD_VIRTUAL_PATH; - } - - const wchar_t *ext = L".exe"; - // If the command already has an extension, we do not want to add it again - if (!lastDot || _comparePath(&filename[lastDot], -1, ext, -1)) { - if (wcscat_s(filename, MAXLEN, L".exe")) { - return RC_BAD_VIRTUAL_PATH; - } - } - - debug(L"# Search PATH for %s\n", filename); - - wchar_t pathVariable[MAXLEN]; - int n = GetEnvironmentVariableW(L"PATH", pathVariable, MAXLEN); - if (!n) { - if (GetLastError() == ERROR_ENVVAR_NOT_FOUND) { - return RC_NO_SHEBANG; - } - winerror(0, L"Failed to read PATH\n", filename); - return RC_INTERNAL_ERROR; - } - - wchar_t buffer[MAXLEN]; - n = SearchPathW(pathVariable, filename, NULL, MAXLEN, buffer, NULL); - if (!n) { - if (GetLastError() == ERROR_FILE_NOT_FOUND) { - debug(L"# Did not find %s on PATH\n", filename); - // If we didn't find it on PATH, let normal handling take over - return RC_NO_SHEBANG; - } - // Other errors should cause us to break - winerror(0, L"Failed to find %s on PATH\n", filename); - return RC_BAD_VIRTUAL_PATH; - } - - int result = ensure_no_redirector_stub(filename, buffer); - if (result) { - return result; - } - - // Check that we aren't going to call ourselves again - // If we are, pretend there was no shebang and let normal handling take over - if (GetModuleFileNameW(NULL, filename, MAXLEN) && - 0 == _comparePath(filename, -1, buffer, -1)) { - debug(L"# ignoring recursive shebang command\n"); - return RC_RECURSIVE_SHEBANG; - } - - wchar_t *buf = allocSearchInfoBuffer(search, n + 1); - if (!buf || wcscpy_s(buf, n + 1, buffer)) { - return RC_NO_MEMORY; - } - - search->executablePath = buf; - search->executableArgs = &command[commandLength]; - search->executableArgsLength = shebangLength - commandLength; - debug(L"# Found %s on PATH\n", buf); - - return 0; -} - - -int -_readIni(const wchar_t *section, const wchar_t *settingName, wchar_t *buffer, int bufferLength) -{ - wchar_t iniPath[MAXLEN]; - int n; - // Check for _PYLAUNCHER_INIDIR override (used for test isolation) - DWORD len = GetEnvironmentVariableW(L"_PYLAUNCHER_INIDIR", iniPath, MAXLEN); - if (len && len < MAXLEN) { - if (join(iniPath, MAXLEN, L"py.ini")) { - debug(L"# Reading from %s for %s/%s\n", iniPath, section, settingName); - n = GetPrivateProfileStringW(section, settingName, NULL, buffer, bufferLength, iniPath); - if (n) { - debug(L"# Found %s in %s\n", settingName, iniPath); - return n; - } - } - // When _PYLAUNCHER_INIDIR is set, skip the default locations - return 0; - } - if (SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, iniPath)) && - join(iniPath, MAXLEN, L"py.ini")) { - debug(L"# Reading from %s for %s/%s\n", iniPath, section, settingName); - n = GetPrivateProfileStringW(section, settingName, NULL, buffer, bufferLength, iniPath); - if (n) { - debug(L"# Found %s in %s\n", settingName, iniPath); - return n; - } else if (GetLastError() == ERROR_FILE_NOT_FOUND) { - debug(L"# Did not find file %s\n", iniPath); - } else { - winerror(0, L"Failed to read from %s\n", iniPath); - } - } - if (GetModuleFileNameW(NULL, iniPath, MAXLEN) && - SUCCEEDED(PathCchRemoveFileSpec(iniPath, MAXLEN)) && - join(iniPath, MAXLEN, L"py.ini")) { - debug(L"# Reading from %s for %s/%s\n", iniPath, section, settingName); - n = GetPrivateProfileStringW(section, settingName, NULL, buffer, MAXLEN, iniPath); - if (n) { - debug(L"# Found %s in %s\n", settingName, iniPath); - return n; - } else if (GetLastError() == ERROR_FILE_NOT_FOUND) { - debug(L"# Did not find file %s\n", iniPath); - } else { - winerror(0, L"Failed to read from %s\n", iniPath); - } - } - return 0; -} - - -bool -_findCommand(SearchInfo *search, const wchar_t *command, int commandLength) -{ - wchar_t commandBuffer[MAXLEN]; - wchar_t buffer[MAXLEN]; - wcsncpy_s(commandBuffer, MAXLEN, command, commandLength); - int n = _readIni(L"commands", commandBuffer, buffer, MAXLEN); - if (!n) { - return false; - } - wchar_t *path = allocSearchInfoBuffer(search, n + 1); - if (!path) { - return false; - } - wcscpy_s(path, n + 1, buffer); - search->executablePath = path; - return true; -} - - -int -_useShebangAsExecutable(SearchInfo *search, const wchar_t *shebang, int shebangLength) -{ - wchar_t buffer[MAXLEN]; - wchar_t script[MAXLEN]; - wchar_t command[MAXLEN]; - - int commandLength = 0; - int inQuote = 0; - - if (!shebang || !shebangLength) { - return 0; - } - - wchar_t *pC = command; - for (int i = 0; i < shebangLength; ++i) { - wchar_t c = shebang[i]; - if (isspace(c) && !inQuote) { - commandLength = i; - break; - } else if (c == L'"') { - inQuote = !inQuote; - } else if (c == L'/' || c == L'\\') { - *pC++ = L'\\'; - } else { - *pC++ = c; - } - } - *pC = L'\0'; - - if (!GetCurrentDirectoryW(MAXLEN, buffer) || - wcsncpy_s(script, MAXLEN, search->scriptFile, search->scriptFileLength) || - FAILED(PathCchCombineEx(buffer, MAXLEN, buffer, script, - PATHCCH_ALLOW_LONG_PATHS)) || - FAILED(PathCchRemoveFileSpec(buffer, MAXLEN)) || - FAILED(PathCchCombineEx(buffer, MAXLEN, buffer, command, - PATHCCH_ALLOW_LONG_PATHS)) - ) { - return RC_NO_MEMORY; - } - - int n = (int)wcsnlen(buffer, MAXLEN); - wchar_t *path = allocSearchInfoBuffer(search, n + 1); - if (!path) { - return RC_NO_MEMORY; - } - wcscpy_s(path, n + 1, buffer); - search->executablePath = path; - if (commandLength) { - search->executableArgs = &shebang[commandLength]; - search->executableArgsLength = shebangLength - commandLength; - } - return 0; -} - - -int -checkShebang(SearchInfo *search) -{ - // Do not check shebang if a tag was provided or if no script file - // was found on the command line. - if (search->tag || !search->scriptFile) { - return 0; - } - - if (search->scriptFileLength < 0) { - search->scriptFileLength = (int)wcsnlen_s(search->scriptFile, MAXLEN); - } - - wchar_t *scriptFile = (wchar_t*)malloc(sizeof(wchar_t) * (search->scriptFileLength + 1)); - if (!scriptFile) { - return RC_NO_MEMORY; - } - - wcsncpy_s(scriptFile, search->scriptFileLength + 1, - search->scriptFile, search->scriptFileLength); - - HANDLE hFile = CreateFileW(scriptFile, GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - NULL, OPEN_EXISTING, 0, NULL); - - if (hFile == INVALID_HANDLE_VALUE) { - debug(L"# Failed to open %s for shebang parsing (0x%08X)\n", - scriptFile, GetLastError()); - free(scriptFile); - return RC_NO_SCRIPT; - } - - DWORD bytesRead = 0; - unsigned char buffer[4096]; - if (!ReadFile(hFile, buffer, sizeof(buffer), &bytesRead, NULL)) { - debug(L"# Failed to read %s for shebang parsing (0x%08X)\n", - scriptFile, GetLastError()); - free(scriptFile); - return 0; - } - - CloseHandle(hFile); - debug(L"# Read %d bytes from %s to find shebang line\n", bytesRead, scriptFile); - free(scriptFile); - - - unsigned char *b = buffer; - bool onlyUtf8 = false; - if (bytesRead > 3 && *b == 0xEF) { - if (*++b == 0xBB && *++b == 0xBF) { - // Allow a UTF-8 BOM - ++b; - bytesRead -= 3; - onlyUtf8 = true; - } else { - debug(L"# Invalid BOM in shebang line"); - return 0; - } - } - if (bytesRead <= 2 || b[0] != '#' || b[1] != '!') { - // No shebang (#!) at start of line - debug(L"# No valid shebang line"); - return 0; - } - ++b; - --bytesRead; - while (--bytesRead > 0 && isspace(*++b)) { } - const unsigned char *start = b; - while (--bytesRead > 0 && *++b != '\r' && *b != '\n') { } - wchar_t *shebang; - int shebangLength; - // We add 1 when bytesRead==0, as in that case we hit EOF and b points - // to the last character in the file, not the newline - int exitCode = _decodeShebang(search, (const char*)start, (int)(b - start + (bytesRead == 0)), onlyUtf8, &shebang, &shebangLength); - if (exitCode) { - return exitCode; - } - debug(L"Shebang: %s\n", shebang); - - // Handle shebangs that we should search PATH for - int executablePathWasSetByUsrBinEnv = 0; - exitCode = searchPath(search, shebang, shebangLength); - if (exitCode == 0) { - executablePathWasSetByUsrBinEnv = 1; - } else if (exitCode != RC_NO_SHEBANG) { - return exitCode; - } - - // Handle some known, case-sensitive shebangs - const wchar_t *command; - int commandLength; - // Each template must end with "python" - static const wchar_t *shebangTemplates[] = { - L"/usr/bin/env python", - L"/usr/bin/python", - L"/usr/local/bin/python", - L"python", - NULL - }; - - for (const wchar_t **tmpl = shebangTemplates; *tmpl; ++tmpl) { - // Just to make sure we don't mess this up in the future - assert(0 == wcscmp(L"python", (*tmpl) + wcslen(*tmpl) - 6)); - - if (_shebangStartsWith(shebang, shebangLength, *tmpl, &command, &commandLength)) { - // Search for "python{command}" overrides. All templates end with - // "python", so we prepend it by jumping back 6 characters - if (_findCommand(search, &command[-6], commandLength + 6)) { - search->executableArgs = &command[commandLength]; - search->executableArgsLength = shebangLength - commandLength; - debug(L"# Treating shebang command '%.*s' as %s\n", - commandLength + 6, &command[-6], search->executablePath); - return 0; - } - - search->tag = command; - search->tagLength = commandLength; - // If we had 'python3.12.exe' then we want to strip the suffix - // off of the tag - if (search->tagLength >= 4) { - const wchar_t *suffix = &search->tag[search->tagLength - 4]; - if (0 == _comparePath(suffix, 4, L".exe", -1)) { - search->tagLength -= 4; - } - } - // If we had 'python3_d' then we want to strip the '_d' (any - // '.exe' is already gone) - if (search->tagLength >= 2) { - const wchar_t *suffix = &search->tag[search->tagLength - 2]; - if (0 == _comparePath(suffix, 2, L"_d", -1)) { - search->tagLength -= 2; - } - } - search->oldStyleTag = true; - search->lowPriorityTag = true; - search->executableArgs = &command[commandLength]; - search->executableArgsLength = shebangLength - commandLength; - if (search->tag && search->tagLength) { - debug(L"# Treating shebang command '%.*s' as 'py -%.*s'\n", - commandLength, command, search->tagLength, search->tag); - } else { - debug(L"# Treating shebang command '%.*s' as 'py'\n", - commandLength, command); - } - return 0; - } - } - - // Didn't match a template, but we found it on PATH - if (executablePathWasSetByUsrBinEnv) { - return 0; - } - - // Unrecognised executables are first tried as command aliases - commandLength = 0; - while (commandLength < shebangLength && !isspace(shebang[commandLength])) { - commandLength += 1; - } - if (_findCommand(search, shebang, commandLength)) { - search->executableArgs = &shebang[commandLength]; - search->executableArgsLength = shebangLength - commandLength; - debug(L"# Treating shebang command '%.*s' as %s\n", - commandLength, shebang, search->executablePath); - return 0; - } - - // Unrecognised commands are joined to the script's directory and treated - // as the executable path - return _useShebangAsExecutable(search, shebang, shebangLength); -} - - -int -checkDefaults(SearchInfo *search) -{ - if (!search->allowDefaults) { - return 0; - } - - // Only resolve old-style (or absent) tags to defaults - if (search->tag && search->tagLength && !search->oldStyleTag) { - return 0; - } - - // If tag is only a major version number, expand it from the environment - // or an ini file - const wchar_t *iniSettingName = NULL; - const wchar_t *envSettingName = NULL; - if (!search->tag || !search->tagLength) { - iniSettingName = L"python"; - envSettingName = L"py_python"; - } else if (0 == wcsncmp(search->tag, L"3", search->tagLength)) { - iniSettingName = L"python3"; - envSettingName = L"py_python3"; - } else if (0 == wcsncmp(search->tag, L"2", search->tagLength)) { - iniSettingName = L"python2"; - envSettingName = L"py_python2"; - } else { - debug(L"# Cannot select defaults for tag '%.*s'\n", search->tagLength, search->tag); - return 0; - } - - // First, try to read an environment variable - wchar_t buffer[MAXLEN]; - int n = GetEnvironmentVariableW(envSettingName, buffer, MAXLEN); - - // If none found, check in our two .ini files instead - if (!n) { - n = _readIni(L"defaults", iniSettingName, buffer, MAXLEN); - } - - if (n) { - wchar_t *tag = allocSearchInfoBuffer(search, n + 1); - if (!tag) { - return RC_NO_MEMORY; - } - wcscpy_s(tag, n + 1, buffer); - wchar_t *slash = wcschr(tag, L'/'); - if (!slash) { - search->tag = tag; - search->tagLength = n; - search->oldStyleTag = true; - } else { - search->company = tag; - search->companyLength = (int)(slash - tag); - search->tag = slash + 1; - search->tagLength = n - (search->companyLength + 1); - search->oldStyleTag = false; - } - // gh-92817: allow a high priority env to be selected even if it - // doesn't match the tag - search->lowPriorityTag = true; - } - - return 0; -} - -/******************************************************************************\ - *** ENVIRONMENT SEARCH *** -\******************************************************************************/ - -typedef struct EnvironmentInfo { - /* We use a binary tree and sort on insert */ - struct EnvironmentInfo *prev; - struct EnvironmentInfo *next; - /* parent is only used when constructing */ - struct EnvironmentInfo *parent; - const wchar_t *company; - const wchar_t *tag; - int internalSortKey; - const wchar_t *installDir; - const wchar_t *executablePath; - const wchar_t *executableArgs; - const wchar_t *architecture; - const wchar_t *displayName; - bool highPriority; -} EnvironmentInfo; - - -int -copyWstr(const wchar_t **dest, const wchar_t *src) -{ - if (!dest) { - return RC_NO_MEMORY; - } - if (!src) { - *dest = NULL; - return 0; - } - size_t n = wcsnlen_s(src, MAXLEN - 1) + 1; - wchar_t *buffer = (wchar_t*)malloc(n * sizeof(wchar_t)); - if (!buffer) { - return RC_NO_MEMORY; - } - wcsncpy_s(buffer, n, src, n - 1); - *dest = (const wchar_t*)buffer; - return 0; -} - - -EnvironmentInfo * -newEnvironmentInfo(const wchar_t *company, const wchar_t *tag) -{ - EnvironmentInfo *env = (EnvironmentInfo *)malloc(sizeof(EnvironmentInfo)); - if (!env) { - return NULL; - } - memset(env, 0, sizeof(EnvironmentInfo)); - int exitCode = copyWstr(&env->company, company); - if (exitCode) { - free((void *)env); - return NULL; - } - exitCode = copyWstr(&env->tag, tag); - if (exitCode) { - free((void *)env->company); - free((void *)env); - return NULL; - } - return env; -} - - -void -freeEnvironmentInfo(EnvironmentInfo *env) -{ - if (env) { - free((void *)env->company); - free((void *)env->tag); - free((void *)env->installDir); - free((void *)env->executablePath); - free((void *)env->executableArgs); - free((void *)env->displayName); - freeEnvironmentInfo(env->prev); - env->prev = NULL; - freeEnvironmentInfo(env->next); - env->next = NULL; - free((void *)env); - } -} - - -/* Specific string comparisons for sorting the tree */ - -int -_compareCompany(const wchar_t *x, const wchar_t *y) -{ - if (!x && !y) { - return 0; - } else if (!x) { - return -1; - } else if (!y) { - return 1; - } - - bool coreX = 0 == _compare(x, -1, L"PythonCore", -1); - bool coreY = 0 == _compare(y, -1, L"PythonCore", -1); - if (coreX) { - return coreY ? 0 : -1; - } else if (coreY) { - return 1; - } - return _compare(x, -1, y, -1); -} - - -int -_compareTag(const wchar_t *x, const wchar_t *y) -{ - if (!x && !y) { - return 0; - } else if (!x) { - return -1; - } else if (!y) { - return 1; - } - - // Compare up to the first dash. If not equal, that's our sort order - const wchar_t *xDash = wcschr(x, L'-'); - const wchar_t *yDash = wcschr(y, L'-'); - int xToDash = xDash ? (int)(xDash - x) : -1; - int yToDash = yDash ? (int)(yDash - y) : -1; - int r = _compare(x, xToDash, y, yToDash); - if (r) { - return r; - } - // If we're equal up to the first dash, we want to sort one with - // no dash *after* one with a dash. Otherwise, a reversed compare. - // This works out because environments are sorted in descending tag - // order, so that higher versions (probably) come first. - // For PythonCore, our "X.Y" structure ensures that higher versions - // come first. Everyone else will just have to deal with it. - if (xDash && yDash) { - return _compare(yDash, -1, xDash, -1); - } else if (xDash) { - return -1; - } else if (yDash) { - return 1; - } - return 0; -} - - -int -addEnvironmentInfo(EnvironmentInfo **root, EnvironmentInfo* parent, EnvironmentInfo *node) -{ - EnvironmentInfo *r = *root; - if (!r) { - *root = node; - node->parent = parent; - return 0; - } - // Sort by company name - switch (_compareCompany(node->company, r->company)) { - case -1: - return addEnvironmentInfo(&r->prev, r, node); - case 1: - return addEnvironmentInfo(&r->next, r, node); - case 0: - break; - } - // Then by tag (descending) - switch (_compareTag(node->tag, r->tag)) { - case -1: - return addEnvironmentInfo(&r->next, r, node); - case 1: - return addEnvironmentInfo(&r->prev, r, node); - case 0: - break; - } - // Then keep the one with the lowest internal sort key - if (node->internalSortKey < r->internalSortKey) { - // Replace the current node - node->parent = r->parent; - if (node->parent) { - if (node->parent->prev == r) { - node->parent->prev = node; - } else if (node->parent->next == r) { - node->parent->next = node; - } else { - debug(L"# Inconsistent parent value in tree\n"); - freeEnvironmentInfo(node); - return RC_INTERNAL_ERROR; - } - } else { - // If node has no parent, then it is the root. - *root = node; - } - - node->next = r->next; - node->prev = r->prev; - - debug(L"# replaced %s/%s/%i in tree\n", node->company, node->tag, node->internalSortKey); - freeEnvironmentInfo(r); - } else { - debug(L"# not adding %s/%s/%i to tree\n", node->company, node->tag, node->internalSortKey); - return RC_DUPLICATE_ITEM; - } - return 0; -} - - -/******************************************************************************\ - *** REGISTRY SEARCH *** -\******************************************************************************/ - - -int -_registryReadString(const wchar_t **dest, HKEY root, const wchar_t *subkey, const wchar_t *value) -{ - // Note that this is bytes (hence 'cb'), not characters ('cch') - DWORD cbData = 0; - DWORD flags = RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ; - - if (ERROR_SUCCESS != RegGetValueW(root, subkey, value, flags, NULL, NULL, &cbData)) { - return 0; - } - - wchar_t *buffer = (wchar_t*)malloc(cbData); - if (!buffer) { - return RC_NO_MEMORY; - } - - if (ERROR_SUCCESS == RegGetValueW(root, subkey, value, flags, NULL, buffer, &cbData)) { - *dest = buffer; - } else { - free((void *)buffer); - } - return 0; -} - - -int -_combineWithInstallDir(const wchar_t **dest, const wchar_t *installDir, const wchar_t *fragment, int fragmentLength) -{ - wchar_t buffer[MAXLEN]; - wchar_t fragmentBuffer[MAXLEN]; - if (wcsncpy_s(fragmentBuffer, MAXLEN, fragment, fragmentLength)) { - return RC_NO_MEMORY; - } - - if (FAILED(PathCchCombineEx(buffer, MAXLEN, installDir, fragmentBuffer, PATHCCH_ALLOW_LONG_PATHS))) { - return RC_NO_MEMORY; - } - - return copyWstr(dest, buffer); -} - - -bool -_isLegacyVersion(EnvironmentInfo *env) -{ - // Check if backwards-compatibility is required. - // Specifically PythonCore versions 2.X and 3.0 - 3.5 do not implement PEP 514. - if (0 != _compare(env->company, -1, L"PythonCore", -1)) { - return false; - } - - int versionMajor, versionMinor; - int n = swscanf_s(env->tag, L"%d.%d", &versionMajor, &versionMinor); - if (n != 2) { - debug(L"# %s/%s has an invalid version tag\n", env->company, env->tag); - return false; - } - - return versionMajor == 2 - || (versionMajor == 3 && versionMinor >= 0 && versionMinor <= 5); -} - -int -_registryReadLegacyEnvironment(const SearchInfo *search, HKEY root, EnvironmentInfo *env, const wchar_t *fallbackArch) -{ - // Backwards-compatibility for PythonCore versions which do not implement PEP 514. - int exitCode = _combineWithInstallDir( - &env->executablePath, - env->installDir, - search->executable, - search->executableLength - ); - if (exitCode) { - return exitCode; - } - - if (search->windowed) { - exitCode = _registryReadString(&env->executableArgs, root, L"InstallPath", L"WindowedExecutableArguments"); - } - else { - exitCode = _registryReadString(&env->executableArgs, root, L"InstallPath", L"ExecutableArguments"); - } - if (exitCode) { - return exitCode; - } - - if (fallbackArch) { - copyWstr(&env->architecture, fallbackArch); - } else { - DWORD binaryType; - BOOL success = GetBinaryTypeW(env->executablePath, &binaryType); - if (!success) { - return RC_NO_PYTHON; - } - - switch (binaryType) { - case SCS_32BIT_BINARY: - copyWstr(&env->architecture, L"32bit"); - break; - case SCS_64BIT_BINARY: - copyWstr(&env->architecture, L"64bit"); - break; - default: - return RC_NO_PYTHON; - } - } - - if (0 == _compare(env->architecture, -1, L"32bit", -1)) { - size_t tagLength = wcslen(env->tag); - if (tagLength <= 3 || 0 != _compare(&env->tag[tagLength - 3], 3, L"-32", 3)) { - const wchar_t *rawTag = env->tag; - wchar_t *realTag = (wchar_t*) malloc(sizeof(wchar_t) * (tagLength + 4)); - if (!realTag) { - return RC_NO_MEMORY; - } - - int count = swprintf_s(realTag, tagLength + 4, L"%s-32", env->tag); - if (count == -1) { - debug(L"# Failed to generate 32bit tag\n"); - free(realTag); - return RC_INTERNAL_ERROR; - } - - env->tag = realTag; - free((void*)rawTag); - } - } - - wchar_t buffer[MAXLEN]; - if (swprintf_s(buffer, MAXLEN, L"Python %s", env->tag)) { - copyWstr(&env->displayName, buffer); - } - - return 0; -} - - -int -_registryReadEnvironment(const SearchInfo *search, HKEY root, EnvironmentInfo *env, const wchar_t *fallbackArch) -{ - int exitCode = _registryReadString(&env->installDir, root, L"InstallPath", NULL); - if (exitCode) { - return exitCode; - } - if (!env->installDir) { - return RC_NO_PYTHON; - } - - if (_isLegacyVersion(env)) { - return _registryReadLegacyEnvironment(search, root, env, fallbackArch); - } - - // If pythonw.exe requested, check specific value - if (search->windowed) { - exitCode = _registryReadString(&env->executablePath, root, L"InstallPath", L"WindowedExecutablePath"); - if (!exitCode && env->executablePath) { - exitCode = _registryReadString(&env->executableArgs, root, L"InstallPath", L"WindowedExecutableArguments"); - } - } - if (exitCode) { - return exitCode; - } - - // Missing windowed path or non-windowed request means we use ExecutablePath - if (!env->executablePath) { - exitCode = _registryReadString(&env->executablePath, root, L"InstallPath", L"ExecutablePath"); - if (!exitCode && env->executablePath) { - exitCode = _registryReadString(&env->executableArgs, root, L"InstallPath", L"ExecutableArguments"); - } - } - if (exitCode) { - return exitCode; - } - - if (!env->executablePath) { - debug(L"# %s/%s has no executable path\n", env->company, env->tag); - return RC_NO_PYTHON; - } - - exitCode = _registryReadString(&env->architecture, root, NULL, L"SysArchitecture"); - if (exitCode) { - return exitCode; - } - - exitCode = _registryReadString(&env->displayName, root, NULL, L"DisplayName"); - if (exitCode) { - return exitCode; - } - - return 0; -} - -int -_registrySearchTags(const SearchInfo *search, EnvironmentInfo **result, HKEY root, int sortKey, const wchar_t *company, const wchar_t *fallbackArch) -{ - wchar_t buffer[256]; - int err = 0; - int exitCode = 0; - for (int i = 0; exitCode == 0; ++i) { - DWORD cchBuffer = sizeof(buffer) / sizeof(buffer[0]); - err = RegEnumKeyExW(root, i, buffer, &cchBuffer, NULL, NULL, NULL, NULL); - if (err) { - if (err != ERROR_NO_MORE_ITEMS) { - winerror(0, L"Failed to read installs (tags) from the registry"); - } - break; - } - HKEY subkey; - if (ERROR_SUCCESS == RegOpenKeyExW(root, buffer, 0, KEY_READ, &subkey)) { - EnvironmentInfo *env = newEnvironmentInfo(company, buffer); - env->internalSortKey = sortKey; - exitCode = _registryReadEnvironment(search, subkey, env, fallbackArch); - RegCloseKey(subkey); - if (exitCode == RC_NO_PYTHON) { - freeEnvironmentInfo(env); - exitCode = 0; - } else if (!exitCode) { - exitCode = addEnvironmentInfo(result, NULL, env); - if (exitCode) { - freeEnvironmentInfo(env); - if (exitCode == RC_DUPLICATE_ITEM) { - exitCode = 0; - } - } - } - } - } - return exitCode; -} - - -int -registrySearch(const SearchInfo *search, EnvironmentInfo **result, HKEY root, int sortKey, const wchar_t *fallbackArch) -{ - wchar_t buffer[256]; - int err = 0; - int exitCode = 0; - for (int i = 0; exitCode == 0; ++i) { - DWORD cchBuffer = sizeof(buffer) / sizeof(buffer[0]); - err = RegEnumKeyExW(root, i, buffer, &cchBuffer, NULL, NULL, NULL, NULL); - if (err) { - if (err != ERROR_NO_MORE_ITEMS) { - winerror(0, L"Failed to read distributors (company) from the registry"); - } - break; - } - if (search->limitToCompany && 0 != _compare(search->limitToCompany, -1, buffer, cchBuffer)) { - debug(L"# Skipping %s due to PYLAUNCHER_LIMIT_TO_COMPANY\n", buffer); - continue; - } - HKEY subkey; - if (ERROR_SUCCESS == RegOpenKeyExW(root, buffer, 0, KEY_READ, &subkey)) { - exitCode = _registrySearchTags(search, result, subkey, sortKey, buffer, fallbackArch); - RegCloseKey(subkey); - } - } - return exitCode; -} - - -/******************************************************************************\ - *** APP PACKAGE SEARCH *** -\******************************************************************************/ - -int -appxSearch(const SearchInfo *search, EnvironmentInfo **result, const wchar_t *packageFamilyName, const wchar_t *tag, int sortKey) -{ - wchar_t realTag[32]; - wchar_t buffer[MAXLEN]; - const wchar_t *exeName = search->executable; - if (!exeName || search->allowExecutableOverride) { - exeName = search->windowed ? L"pythonw.exe" : L"python.exe"; - } - - // Failure to get LocalAppData may just mean we're running as a user who - // doesn't have a profile directory. - // In this case, return "not found", but don't fail. - // Chances are they can't launch Store installs anyway. - if (FAILED(SHGetFolderPathW(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, buffer))) { - return RC_NO_PYTHON; - } - - if (!join(buffer, MAXLEN, L"Microsoft\\WindowsApps") || - !join(buffer, MAXLEN, packageFamilyName) || - !join(buffer, MAXLEN, exeName)) { - debug(L"# Failed to construct App Execution Alias path\n"); - return RC_INTERNAL_ERROR; - } - - if (INVALID_FILE_ATTRIBUTES == GetFileAttributesW(buffer)) { - return RC_NO_PYTHON; - } - - // Assume packages are native architecture, which means we need to append - // the '-arm64' on ARM64 host. - wcscpy_s(realTag, 32, tag); - if (isARM64Host()) { - wcscat_s(realTag, 32, L"-arm64"); - } - - EnvironmentInfo *env = newEnvironmentInfo(L"PythonCore", realTag); - if (!env) { - return RC_NO_MEMORY; - } - env->internalSortKey = sortKey; - if (isAMD64Host()) { - copyWstr(&env->architecture, L"64bit"); - } else if (isARM64Host()) { - copyWstr(&env->architecture, L"ARM64"); - } - - copyWstr(&env->executablePath, buffer); - - if (swprintf_s(buffer, MAXLEN, L"Python %s (Store)", tag)) { - copyWstr(&env->displayName, buffer); - } - - int exitCode = addEnvironmentInfo(result, NULL, env); - if (exitCode) { - freeEnvironmentInfo(env); - if (exitCode == RC_DUPLICATE_ITEM) { - exitCode = 0; - } - } - - - return exitCode; -} - - -/******************************************************************************\ - *** OVERRIDDEN EXECUTABLE PATH *** -\******************************************************************************/ - - -int -explicitOverrideSearch(const SearchInfo *search, EnvironmentInfo **result) -{ - if (!search->executablePath) { - return 0; - } - - EnvironmentInfo *env = newEnvironmentInfo(NULL, NULL); - if (!env) { - return RC_NO_MEMORY; - } - env->internalSortKey = 10; - int exitCode = copyWstr(&env->executablePath, search->executablePath); - if (exitCode) { - goto abort; - } - exitCode = copyWstr(&env->displayName, L"Explicit override"); - if (exitCode) { - goto abort; - } - exitCode = addEnvironmentInfo(result, NULL, env); - if (exitCode) { - goto abort; - } - return 0; - -abort: - freeEnvironmentInfo(env); - if (exitCode == RC_DUPLICATE_ITEM) { - exitCode = 0; - } - return exitCode; -} - - -/******************************************************************************\ - *** ACTIVE VIRTUAL ENVIRONMENT SEARCH *** -\******************************************************************************/ - -int -virtualenvSearch(const SearchInfo *search, EnvironmentInfo **result) -{ - int exitCode = 0; - EnvironmentInfo *env = NULL; - wchar_t buffer[MAXLEN]; - int n = GetEnvironmentVariableW(L"VIRTUAL_ENV", buffer, MAXLEN); - if (!n || !join(buffer, MAXLEN, L"Scripts") || !join(buffer, MAXLEN, search->executable)) { - return 0; - } - - DWORD attr = GetFileAttributesW(buffer); - if (INVALID_FILE_ATTRIBUTES == attr && search->lowPriorityTag) { - if (!split_parent(buffer, MAXLEN) || !join(buffer, MAXLEN, L"python.exe")) { - return 0; - } - attr = GetFileAttributesW(buffer); - } - - if (INVALID_FILE_ATTRIBUTES == attr) { - debug(L"Python executable %s missing from virtual env\n", buffer); - return 0; - } - - env = newEnvironmentInfo(NULL, NULL); - if (!env) { - return RC_NO_MEMORY; - } - env->highPriority = true; - env->internalSortKey = 20; - exitCode = copyWstr(&env->displayName, L"Active venv"); - if (exitCode) { - goto abort; - } - exitCode = copyWstr(&env->executablePath, buffer); - if (exitCode) { - goto abort; - } - exitCode = addEnvironmentInfo(result, NULL, env); - if (exitCode) { - goto abort; - } - return 0; - -abort: - freeEnvironmentInfo(env); - if (exitCode == RC_DUPLICATE_ITEM) { - return 0; - } - return exitCode; -} - -/******************************************************************************\ - *** COLLECT ENVIRONMENTS *** -\******************************************************************************/ - - -struct RegistrySearchInfo { - // Registry subkey to search - const wchar_t *subkey; - // Registry hive to search - HKEY hive; - // Flags to use when opening the subkey - DWORD flags; - // Internal sort key to select between "identical" environments discovered - // through different methods - int sortKey; - // Fallback value to assume for PythonCore entries missing a SysArchitecture value - const wchar_t *fallbackArch; -}; - - -struct RegistrySearchInfo REGISTRY_SEARCH[] = { - { - L"Software\\Python", - HKEY_CURRENT_USER, - KEY_READ, - 1, - NULL - }, - { - L"Software\\Python", - HKEY_LOCAL_MACHINE, - KEY_READ | KEY_WOW64_64KEY, - 3, - L"64bit" - }, - { - L"Software\\Python", - HKEY_LOCAL_MACHINE, - KEY_READ | KEY_WOW64_32KEY, - 4, - L"32bit" - }, - { NULL, 0, 0, 0, NULL } -}; - - -struct AppxSearchInfo { - // The package family name. Can be found for an installed package using the - // Powershell "Get-AppxPackage" cmdlet - const wchar_t *familyName; - // The tag to treat the installation as - const wchar_t *tag; - // Internal sort key to select between "identical" environments discovered - // through different methods - int sortKey; -}; - - -struct AppxSearchInfo APPX_SEARCH[] = { - // Releases made through the Store - { L"PythonSoftwareFoundation.Python.3.14_qbz5n2kfra8p0", L"3.14", 10 }, - { L"PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0", L"3.13", 10 }, - { L"PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0", L"3.12", 10 }, - { L"PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0", L"3.11", 10 }, - { L"PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0", L"3.10", 10 }, - { L"PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0", L"3.9", 10 }, - { L"PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0", L"3.8", 10 }, - - // Side-loadable releases. Note that the publisher ID changes whenever we - // change our code signing certificate subject, so the newer IDs have higher - // priorities (lower sortKey) - { L"PythonSoftwareFoundation.Python.3.14_3847v3x7pw1km", L"3.14", 11 }, - { L"PythonSoftwareFoundation.Python.3.13_3847v3x7pw1km", L"3.13", 11 }, - { L"PythonSoftwareFoundation.Python.3.12_3847v3x7pw1km", L"3.12", 11 }, - { L"PythonSoftwareFoundation.Python.3.11_3847v3x7pw1km", L"3.11", 11 }, - { L"PythonSoftwareFoundation.Python.3.11_hd69rhyc2wevp", L"3.11", 12 }, - { L"PythonSoftwareFoundation.Python.3.10_3847v3x7pw1km", L"3.10", 11 }, - { L"PythonSoftwareFoundation.Python.3.10_hd69rhyc2wevp", L"3.10", 12 }, - { L"PythonSoftwareFoundation.Python.3.9_3847v3x7pw1km", L"3.9", 11 }, - { L"PythonSoftwareFoundation.Python.3.9_hd69rhyc2wevp", L"3.9", 12 }, - { L"PythonSoftwareFoundation.Python.3.8_hd69rhyc2wevp", L"3.8", 12 }, - { NULL, NULL, 0 } -}; - - -int -collectEnvironments(const SearchInfo *search, EnvironmentInfo **result) -{ - int exitCode = 0; - HKEY root; - EnvironmentInfo *env = NULL; - - if (!result) { - debug(L"# collectEnvironments() was passed a NULL result\n"); - return RC_INTERNAL_ERROR; - } - *result = NULL; - - exitCode = explicitOverrideSearch(search, result); - if (exitCode) { - return exitCode; - } - - exitCode = virtualenvSearch(search, result); - if (exitCode) { - return exitCode; - } - - // If we aren't collecting all items to list them, we can exit now. - if (env && !(search->list || search->listPaths)) { - return 0; - } - - for (struct RegistrySearchInfo *info = REGISTRY_SEARCH; info->subkey; ++info) { - if (ERROR_SUCCESS == RegOpenKeyExW(info->hive, info->subkey, 0, info->flags, &root)) { - exitCode = registrySearch(search, result, root, info->sortKey, info->fallbackArch); - RegCloseKey(root); - } - if (exitCode) { - return exitCode; - } - } - - if (search->limitToCompany) { - debug(L"# Skipping APPX search due to PYLAUNCHER_LIMIT_TO_COMPANY\n"); - return 0; - } - - for (struct AppxSearchInfo *info = APPX_SEARCH; info->familyName; ++info) { - exitCode = appxSearch(search, result, info->familyName, info->tag, info->sortKey); - if (exitCode && exitCode != RC_NO_PYTHON) { - return exitCode; - } - } - - return 0; -} - - -/******************************************************************************\ - *** INSTALL ON DEMAND *** -\******************************************************************************/ - -struct StoreSearchInfo { - // The tag a user is looking for - const wchar_t *tag; - // The Store ID for a package if it can be installed from the Microsoft - // Store. These are obtained from the dashboard at - // https://partner.microsoft.com/dashboard - const wchar_t *storeId; -}; - - -struct StoreSearchInfo STORE_SEARCH[] = { - { L"3", /* 3.13 */ L"9PNRBTZXMB4Z" }, - { L"3.14", L"9NTRHQCBBPR8" }, - { L"3.13", L"9PNRBTZXMB4Z" }, - { L"3.12", L"9NCVDN91XZQP" }, - { L"3.11", L"9NRWMJP3717K" }, - { L"3.10", L"9PJPW5LDXLZ5" }, - { L"3.9", L"9P7QFQMJRFP7" }, - { L"3.8", L"9MSSZTT1N39L" }, - { NULL, NULL } -}; - - -int -_installEnvironment(const wchar_t *command, const wchar_t *arguments) -{ - SHELLEXECUTEINFOW siw = { - sizeof(SHELLEXECUTEINFOW), - SEE_MASK_NOASYNC | SEE_MASK_NOCLOSEPROCESS | SEE_MASK_NO_CONSOLE, - NULL, NULL, - command, arguments, NULL, - SW_SHOWNORMAL - }; - - debug(L"# Installing with %s %s\n", command, arguments); - if (isEnvVarSet(L"PYLAUNCHER_DRYRUN")) { - debug(L"# Exiting due to PYLAUNCHER_DRYRUN\n"); - fflush(stdout); - int mode = _setmode(_fileno(stdout), _O_U8TEXT); - if (arguments) { - fwprintf_s(stdout, L"\"%s\" %s\n", command, arguments); - } else { - fwprintf_s(stdout, L"\"%s\"\n", command); - } - fflush(stdout); - if (mode >= 0) { - _setmode(_fileno(stdout), mode); - } - return RC_INSTALLING; - } - - if (!ShellExecuteExW(&siw)) { - return RC_NO_PYTHON; - } - - if (!siw.hProcess) { - return RC_INSTALLING; - } - - WaitForSingleObjectEx(siw.hProcess, INFINITE, FALSE); - DWORD exitCode = 0; - if (GetExitCodeProcess(siw.hProcess, &exitCode) && exitCode == 0) { - return 0; - } - return RC_INSTALLING; -} - - -const wchar_t *WINGET_COMMAND = L"Microsoft\\WindowsApps\\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\\winget.exe"; -const wchar_t *WINGET_ARGUMENTS = L"install -q %s --exact --accept-package-agreements --source msstore"; - -const wchar_t *MSSTORE_COMMAND = L"ms-windows-store://pdp/?productid=%s"; - -int -installEnvironment(const SearchInfo *search) -{ - // No tag? No installing - if (!search->tag || !search->tagLength) { - debug(L"# Cannot install Python with no tag specified\n"); - return RC_NO_PYTHON; - } - - // PEP 514 tag but not PythonCore? No installing - if (!search->oldStyleTag && - search->company && search->companyLength && - 0 != _compare(search->company, search->companyLength, L"PythonCore", -1)) { - debug(L"# Cannot install for company %.*s\n", search->companyLength, search->company); - return RC_NO_PYTHON; - } - - const wchar_t *storeId = NULL; - for (struct StoreSearchInfo *info = STORE_SEARCH; info->tag; ++info) { - if (0 == _compare(search->tag, search->tagLength, info->tag, -1)) { - storeId = info->storeId; - break; - } - } - - if (!storeId) { - return RC_NO_PYTHON; - } - - int exitCode; - wchar_t command[MAXLEN]; - wchar_t arguments[MAXLEN]; - if (SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, command)) && - join(command, MAXLEN, WINGET_COMMAND) && - swprintf_s(arguments, MAXLEN, WINGET_ARGUMENTS, storeId)) { - if (INVALID_FILE_ATTRIBUTES == GetFileAttributesW(command)) { - formatWinerror(GetLastError(), arguments, MAXLEN); - debug(L"# Skipping %s: %s\n", command, arguments); - } else { - fputws(L"Launching winget to install Python. The following output is from the install process\n\ -***********************************************************************\n", stdout); - exitCode = _installEnvironment(command, arguments); - if (exitCode == RC_INSTALLING) { - fputws(L"***********************************************************************\n\ -Please check the install status and run your command again.", stderr); - return exitCode; - } else if (exitCode) { - return exitCode; - } - fputws(L"***********************************************************************\n\ -Install appears to have succeeded. Searching for new matching installs.\n", stdout); - return 0; - } - } - - if (swprintf_s(command, MAXLEN, MSSTORE_COMMAND, storeId)) { - fputws(L"Opening the Microsoft Store to install Python. After installation, " - L"please run your command again.\n", stderr); - exitCode = _installEnvironment(command, NULL); - if (exitCode) { - return exitCode; - } - return 0; - } - - return RC_NO_PYTHON; -} - -/******************************************************************************\ - *** ENVIRONMENT SELECT *** -\******************************************************************************/ - -bool -_companyMatches(const SearchInfo *search, const EnvironmentInfo *env) -{ - if (!search->company || !search->companyLength) { - return true; - } - return 0 == _compare(env->company, -1, search->company, search->companyLength); -} - - -bool -_tagMatches(const SearchInfo *search, const EnvironmentInfo *env, int searchTagLength) -{ - if (searchTagLength < 0) { - searchTagLength = search->tagLength; - } - if (!search->tag || !searchTagLength) { - return true; - } - return _startsWithSeparated(env->tag, -1, search->tag, searchTagLength, L".-"); -} - - -bool -_is32Bit(const EnvironmentInfo *env) -{ - if (env->architecture) { - return 0 == _compare(env->architecture, -1, L"32bit", -1); - } - return false; -} - - -int -_selectEnvironment(const SearchInfo *search, EnvironmentInfo *env, EnvironmentInfo **best) -{ - int exitCode = 0; - while (env) { - exitCode = _selectEnvironment(search, env->prev, best); - - if (exitCode && exitCode != RC_NO_PYTHON) { - return exitCode; - } else if (!exitCode && *best) { - return 0; - } - - if (env->highPriority && search->lowPriorityTag) { - // This environment is marked high priority, and the search allows - // it to be selected even though a tag is specified, so select it - // gh-92817: this allows an active venv to be selected even when a - // default tag has been found in py.ini or the environment - *best = env; - return 0; - } - - if (!search->oldStyleTag) { - if (_companyMatches(search, env) && _tagMatches(search, env, -1)) { - // Because of how our sort tree is set up, we will walk up the - // "prev" side and implicitly select the "best" best. By - // returning straight after a match, we skip the entire "next" - // branch and won't ever select a "worse" best. - *best = env; - return 0; - } - } else if (0 == _compare(env->company, -1, L"PythonCore", -1)) { - // Old-style tags can only match PythonCore entries - - // If the tag ends with -64, we want to exclude 32-bit runtimes - // (If the tag ends with -32, it will be filtered later) - int tagLength = search->tagLength; - bool exclude32Bit = false, only32Bit = false; - if (tagLength > 3) { - if (0 == _compareArgument(&search->tag[tagLength - 3], 3, L"-64", 3)) { - tagLength -= 3; - exclude32Bit = true; - } else if (0 == _compareArgument(&search->tag[tagLength - 3], 3, L"-32", 3)) { - tagLength -= 3; - only32Bit = true; - } - } - - if (_tagMatches(search, env, tagLength)) { - if (exclude32Bit && _is32Bit(env)) { - debug(L"# Excluding %s/%s because it looks like 32bit\n", env->company, env->tag); - } else if (only32Bit && !_is32Bit(env)) { - debug(L"# Excluding %s/%s because it doesn't look 32bit\n", env->company, env->tag); - } else { - *best = env; - return 0; - } - } - } - - env = env->next; - } - return RC_NO_PYTHON; -} - -int -selectEnvironment(const SearchInfo *search, EnvironmentInfo *root, EnvironmentInfo **best) -{ - if (!best) { - debug(L"# selectEnvironment() was passed a NULL best\n"); - return RC_INTERNAL_ERROR; - } - if (!root) { - *best = NULL; - return RC_NO_PYTHON_AT_ALL; - } - - EnvironmentInfo *result = NULL; - int exitCode = _selectEnvironment(search, root, &result); - if (!exitCode) { - *best = result; - } - - return exitCode; -} - - -/******************************************************************************\ - *** LIST ENVIRONMENTS *** -\******************************************************************************/ - -#define TAGWIDTH 16 - -int -_printEnvironment(const EnvironmentInfo *env, FILE *out, bool showPath, const wchar_t *argument) -{ - if (showPath) { - if (env->executablePath && env->executablePath[0]) { - if (env->executableArgs && env->executableArgs[0]) { - fwprintf(out, L" %-*s %s %s\n", TAGWIDTH, argument, env->executablePath, env->executableArgs); - } else { - fwprintf(out, L" %-*s %s\n", TAGWIDTH, argument, env->executablePath); - } - } else if (env->installDir && env->installDir[0]) { - fwprintf(out, L" %-*s %s\n", TAGWIDTH, argument, env->installDir); - } else { - fwprintf(out, L" %s\n", argument); - } - } else if (env->displayName) { - fwprintf(out, L" %-*s %s\n", TAGWIDTH, argument, env->displayName); - } else { - fwprintf(out, L" %s\n", argument); - } - return 0; -} - - -int -_listAllEnvironments(EnvironmentInfo *env, FILE * out, bool showPath, EnvironmentInfo *defaultEnv) -{ - wchar_t buffer[256]; - const int bufferSize = 256; - while (env) { - int exitCode = _listAllEnvironments(env->prev, out, showPath, defaultEnv); - if (exitCode) { - return exitCode; - } - - if (!env->company || !env->tag) { - buffer[0] = L'\0'; - } else if (0 == _compare(env->company, -1, L"PythonCore", -1)) { - swprintf_s(buffer, bufferSize, L"-V:%s", env->tag); - } else { - swprintf_s(buffer, bufferSize, L"-V:%s/%s", env->company, env->tag); - } - - if (env == defaultEnv) { - wcscat_s(buffer, bufferSize, L" *"); - } - - if (buffer[0]) { - exitCode = _printEnvironment(env, out, showPath, buffer); - if (exitCode) { - return exitCode; - } - } - - env = env->next; - } - return 0; -} - - -int -listEnvironments(EnvironmentInfo *env, FILE * out, bool showPath, EnvironmentInfo *defaultEnv) -{ - if (!env) { - fwprintf_s(stdout, L"No installed Pythons found!\n"); - return 0; - } - - /* TODO: Do we want to display these? - In favour, helps users see that '-3' is a good option - Against, repeats the next line of output - SearchInfo majorSearch; - EnvironmentInfo *major; - int exitCode; - - if (showPath) { - memset(&majorSearch, 0, sizeof(majorSearch)); - majorSearch.company = L"PythonCore"; - majorSearch.companyLength = -1; - majorSearch.tag = L"3"; - majorSearch.tagLength = -1; - majorSearch.oldStyleTag = true; - major = NULL; - exitCode = selectEnvironment(&majorSearch, env, &major); - if (!exitCode && major) { - exitCode = _printEnvironment(major, out, showPath, L"-3 *"); - isDefault = false; - if (exitCode) { - return exitCode; - } - } - majorSearch.tag = L"2"; - major = NULL; - exitCode = selectEnvironment(&majorSearch, env, &major); - if (!exitCode && major) { - exitCode = _printEnvironment(major, out, showPath, L"-2"); - if (exitCode) { - return exitCode; - } - } - } - */ - - int mode = _setmode(_fileno(out), _O_U8TEXT); - int exitCode = _listAllEnvironments(env, out, showPath, defaultEnv); - fflush(out); - if (mode >= 0) { - _setmode(_fileno(out), mode); - } - return exitCode; -} - - -/******************************************************************************\ - *** INTERPRETER LAUNCH *** -\******************************************************************************/ - - -int -calculateCommandLine(const SearchInfo *search, const EnvironmentInfo *launch, wchar_t *buffer, int bufferLength) -{ - int exitCode = 0; - const wchar_t *executablePath = NULL; - - // Construct command line from a search override, or else the selected - // environment's executablePath - if (search->executablePath) { - executablePath = search->executablePath; - } else if (launch && launch->executablePath) { - executablePath = launch->executablePath; - } - - // If we have an executable path, put it at the start of the command, but - // only if the search allowed an override. - // Otherwise, use the environment's installDir and the search's default - // executable name. - if (executablePath && search->allowExecutableOverride) { - if (wcschr(executablePath, L' ') && executablePath[0] != L'"') { - buffer[0] = L'"'; - exitCode = wcscpy_s(&buffer[1], bufferLength - 1, executablePath); - if (!exitCode) { - exitCode = wcscat_s(buffer, bufferLength, L"\""); - } - } else { - exitCode = wcscpy_s(buffer, bufferLength, executablePath); - } - } else if (launch) { - if (!launch->installDir) { - fwprintf_s(stderr, L"Cannot launch %s %s because no install directory was specified", - launch->company, launch->tag); - exitCode = RC_NO_PYTHON; - } else if (!search->executable || !search->executableLength) { - fwprintf_s(stderr, L"Cannot launch %s %s because no executable name is available", - launch->company, launch->tag); - exitCode = RC_NO_PYTHON; - } else { - wchar_t executable[256]; - wcsncpy_s(executable, 256, search->executable, search->executableLength); - if ((wcschr(launch->installDir, L' ') && launch->installDir[0] != L'"') || - (wcschr(executable, L' ') && executable[0] != L'"')) { - buffer[0] = L'"'; - exitCode = wcscpy_s(&buffer[1], bufferLength - 1, launch->installDir); - if (!exitCode) { - exitCode = join(buffer, bufferLength, executable) ? 0 : RC_NO_MEMORY; - } - if (!exitCode) { - exitCode = wcscat_s(buffer, bufferLength, L"\""); - } - } else { - exitCode = wcscpy_s(buffer, bufferLength, launch->installDir); - if (!exitCode) { - exitCode = join(buffer, bufferLength, executable) ? 0 : RC_NO_MEMORY; - } - } - } - } else { - exitCode = RC_NO_PYTHON; - } - - if (!exitCode && launch && launch->executableArgs) { - exitCode = wcscat_s(buffer, bufferLength, L" "); - if (!exitCode) { - exitCode = wcscat_s(buffer, bufferLength, launch->executableArgs); - } - } - - if (!exitCode && search->executableArgs) { - if (search->executableArgsLength < 0) { - exitCode = wcscat_s(buffer, bufferLength, search->executableArgs); - } else if (search->executableArgsLength > 0) { - int end = (int)wcsnlen_s(buffer, MAXLEN); - if (end < bufferLength - (search->executableArgsLength + 1)) { - exitCode = wcsncpy_s(&buffer[end], bufferLength - end, - search->executableArgs, search->executableArgsLength); - } - } - } - - if (!exitCode && search->restOfCmdLine) { - exitCode = wcscat_s(buffer, bufferLength, search->restOfCmdLine); - } - - return exitCode; -} - - - -BOOL -_safeDuplicateHandle(HANDLE in, HANDLE * pout, const wchar_t *nameForError) -{ - BOOL ok; - HANDLE process = GetCurrentProcess(); - DWORD rc; - - *pout = NULL; - ok = DuplicateHandle(process, in, process, pout, 0, TRUE, - DUPLICATE_SAME_ACCESS); - if (!ok) { - rc = GetLastError(); - if (rc == ERROR_INVALID_HANDLE) { - debug(L"DuplicateHandle returned ERROR_INVALID_HANDLE\n"); - ok = TRUE; - } - else { - winerror(0, L"Failed to duplicate %s handle", nameForError); - } - } - return ok; -} - -BOOL WINAPI -ctrl_c_handler(DWORD code) -{ - return TRUE; /* We just ignore all control events. */ -} - - -int -launchEnvironment(const SearchInfo *search, const EnvironmentInfo *launch, wchar_t *launchCommand) -{ - HANDLE job; - JOBOBJECT_EXTENDED_LIMIT_INFORMATION info; - DWORD rc; - BOOL ok; - STARTUPINFOW si; - PROCESS_INFORMATION pi; - - // If this is a dryrun, do not actually launch - if (isEnvVarSet(L"PYLAUNCHER_DRYRUN")) { - debug(L"LaunchCommand: %s\n", launchCommand); - debug(L"# Exiting due to PYLAUNCHER_DRYRUN variable\n"); - fflush(stdout); - int mode = _setmode(_fileno(stdout), _O_U8TEXT); - fwprintf(stdout, L"%s\n", launchCommand); - fflush(stdout); - if (mode >= 0) { - _setmode(_fileno(stdout), mode); - } - return 0; - } - -#if defined(_WINDOWS) - /* - When explorer launches a Windows (GUI) application, it displays - the "app starting" (the "pointer + hourglass") cursor for a number - of seconds, or until the app does something UI-ish (eg, creating a - window, or fetching a message). As this launcher doesn't do this - directly, that cursor remains even after the child process does these - things. We avoid that by doing a simple post+get message. - See http://bugs.python.org/issue17290 - */ - MSG msg; - - PostMessage(0, 0, 0, 0); - GetMessage(&msg, 0, 0, 0); -#endif - - debug(L"# about to run: %s\n", launchCommand); - job = CreateJobObject(NULL, NULL); - ok = QueryInformationJobObject(job, JobObjectExtendedLimitInformation, - &info, sizeof(info), &rc); - if (!ok || (rc != sizeof(info)) || !job) { - winerror(0, L"Failed to query job information"); - return RC_CREATE_PROCESS; - } - info.BasicLimitInformation.LimitFlags |= JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE | - JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK; - ok = SetInformationJobObject(job, JobObjectExtendedLimitInformation, &info, - sizeof(info)); - if (!ok) { - winerror(0, L"Failed to update job information"); - return RC_CREATE_PROCESS; - } - memset(&si, 0, sizeof(si)); - GetStartupInfoW(&si); - if (!_safeDuplicateHandle(GetStdHandle(STD_INPUT_HANDLE), &si.hStdInput, L"stdin") || - !_safeDuplicateHandle(GetStdHandle(STD_OUTPUT_HANDLE), &si.hStdOutput, L"stdout") || - !_safeDuplicateHandle(GetStdHandle(STD_ERROR_HANDLE), &si.hStdError, L"stderr")) { - return RC_NO_STD_HANDLES; - } - - ok = SetConsoleCtrlHandler(ctrl_c_handler, TRUE); - if (!ok) { - winerror(0, L"Failed to update Control-C handler"); - return RC_NO_STD_HANDLES; - } - - si.dwFlags = STARTF_USESTDHANDLES; - ok = CreateProcessW(NULL, launchCommand, NULL, NULL, TRUE, - 0, NULL, NULL, &si, &pi); - if (!ok) { - winerror(0, L"Unable to create process using '%s'", launchCommand); - return RC_CREATE_PROCESS; - } - AssignProcessToJobObject(job, pi.hProcess); - CloseHandle(pi.hThread); - WaitForSingleObjectEx(pi.hProcess, INFINITE, FALSE); - ok = GetExitCodeProcess(pi.hProcess, &rc); - if (!ok) { - winerror(0, L"Failed to get exit code of process"); - return RC_CREATE_PROCESS; - } - debug(L"child process exit code: %d\n", rc); - return rc; -} - - -/******************************************************************************\ - *** PROCESS CONTROLLER *** -\******************************************************************************/ - - -int -performSearch(SearchInfo *search, EnvironmentInfo **envs) -{ - // First parse the command line for options - int exitCode = parseCommandLine(search); - if (exitCode) { - return exitCode; - } - - // Check for a shebang line in our script file - // (or return quickly if no script file was specified) - exitCode = checkShebang(search); - switch (exitCode) { - case 0: - case RC_NO_SHEBANG: - case RC_RECURSIVE_SHEBANG: - break; - case RC_NO_SCRIPT: - if (!_comparePath(search->scriptFile, search->scriptFileLength, L"install", -1) || - !_comparePath(search->scriptFile, search->scriptFileLength, L"uninstall", -1) || - !_comparePath(search->scriptFile, search->scriptFileLength, L"list", -1) || - !_comparePath(search->scriptFile, search->scriptFileLength, L"help", -1)) { - fprintf( - stderr, - "WARNING: The '%.*ls' command is unavailable because this is the legacy py.exe command.\n" - "If you have already installed the Python install manager, open Installed Apps and " - "remove 'Python Launcher' to enable the new py.exe command.\n", - search->scriptFileLength, - search->scriptFile - ); - } - break; - default: - return exitCode; - } - - // Resolve old-style tags (possibly from a shebang) against py.ini entries - // and environment variables. - exitCode = checkDefaults(search); - if (exitCode) { - return exitCode; - } - - // If debugging is enabled, list our search criteria - dumpSearchInfo(search); - - // Find all matching environments - exitCode = collectEnvironments(search, envs); - if (exitCode) { - return exitCode; - } - - return 0; -} - - -int -process(int argc, wchar_t ** argv) -{ - int exitCode = 0; - int searchExitCode = 0; - SearchInfo search = {0}; - EnvironmentInfo *envs = NULL; - EnvironmentInfo *env = NULL; - wchar_t launchCommand[MAXLEN]; - - memset(launchCommand, 0, sizeof(launchCommand)); - - if (isEnvVarSet(L"PYLAUNCHER_DEBUG")) { - setvbuf(stderr, (char *)NULL, _IONBF, 0); - log_fp = stderr; - debug(L"argv0: %s\nversion: %S\n", argv[0], PY_VERSION); - } - - DWORD len = GetEnvironmentVariableW(L"PYLAUNCHER_LIMIT_TO_COMPANY", NULL, 0); - if (len > 1) { - wchar_t *limitToCompany = allocSearchInfoBuffer(&search, len); - if (!limitToCompany) { - exitCode = RC_NO_MEMORY; - winerror(0, L"Failed to allocate internal buffer"); - goto abort; - } - search.limitToCompany = limitToCompany; - if (0 == GetEnvironmentVariableW(L"PYLAUNCHER_LIMIT_TO_COMPANY", limitToCompany, len)) { - exitCode = RC_INTERNAL_ERROR; - winerror(0, L"Failed to read PYLAUNCHER_LIMIT_TO_COMPANY variable"); - goto abort; - } - } - - search.originalCmdLine = GetCommandLineW(); - - exitCode = performSearch(&search, &envs); - if (exitCode) { - goto abort; - } - - // Display the help text, but only exit on error - if (search.help) { - exitCode = showHelpText(argv); - if (exitCode) { - goto abort; - } - } - - // Select best environment - // This is early so that we can show the default when listing, but all - // responses to any errors occur later. - searchExitCode = selectEnvironment(&search, envs, &env); - - // List all environments, then exit - if (search.list || search.listPaths) { - exitCode = listEnvironments(envs, stdout, search.listPaths, env); - goto abort; - } - - // When debugging, list all discovered environments anyway - if (log_fp) { - exitCode = listEnvironments(envs, log_fp, true, NULL); - if (exitCode) { - goto abort; - } - } - - // We searched earlier, so if we didn't find anything, now we react - exitCode = searchExitCode; - // If none found, and if permitted, install it - if (((exitCode == RC_NO_PYTHON) && isEnvVarSet(L"PYLAUNCHER_ALLOW_INSTALL")) || - isEnvVarSet(L"PYLAUNCHER_ALWAYS_INSTALL")) { - exitCode = installEnvironment(&search); - if (!exitCode) { - // Successful install, so we need to re-scan and select again - env = NULL; - exitCode = performSearch(&search, &envs); - if (exitCode) { - goto abort; - } - exitCode = selectEnvironment(&search, envs, &env); - } - } - if (exitCode == RC_NO_PYTHON) { - fputws(L"No suitable Python runtime found\n", stderr); - fputws(L"Pass --list (-0) to see all detected environments on your machine\n", stderr); - if (!isEnvVarSet(L"PYLAUNCHER_ALLOW_INSTALL") && search.oldStyleTag) { - fputws(L"or set environment variable PYLAUNCHER_ALLOW_INSTALL to use winget\n" - L"or open the Microsoft Store to the requested version.\n", stderr); - } - goto abort; - } - if (exitCode == RC_NO_PYTHON_AT_ALL) { - fputws(L"No installed Python found!\n", stderr); - goto abort; - } - if (exitCode) { - goto abort; - } - - if (env) { - debug(L"env.company: %s\nenv.tag: %s\n", env->company, env->tag); - } else { - debug(L"env.company: (null)\nenv.tag: (null)\n"); - } - - exitCode = calculateCommandLine(&search, env, launchCommand, sizeof(launchCommand) / sizeof(launchCommand[0])); - if (exitCode) { - goto abort; - } - - // Launch selected runtime - exitCode = launchEnvironment(&search, env, launchCommand); - -abort: - freeSearchInfo(&search); - freeEnvironmentInfo(envs); - return exitCode; -} - - -#if defined(_WINDOWS) - -int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, - LPWSTR lpstrCmd, int nShow) -{ - return process(__argc, __wargv); -} - -#else - -int cdecl wmain(int argc, wchar_t ** argv) -{ - return process(argc, argv); -} - -#endif diff --git a/PC/layout/README.md b/PC/layout/README.md new file mode 100644 index 000000000000000..086cc23194b1b96 --- /dev/null +++ b/PC/layout/README.md @@ -0,0 +1,341 @@ +# PC/layout script + +This document provides an overview of the `PC/layout` script, which is used to +convert from a build tree to a ready-to-run directory of files. It's the +equivalent of `make install` when using the Makefile. We use it for official +binary releases, but it also supports a lot of configuration and can be used for +whatever your custom scenario should look like. + +The script never builds anything. It reads files from an existing build tree +(`-b`) and the source tree (`-s`), then copies or zips them into a layout. It +does not require the Python being laid out to be runnable, and it can target a +different version from the one running the script (see [Build source +options](#build-source-options)). + +## Quick start + +Run the script as a directory with any Python 3 interpreter. From the +repository root: + +``` +python PC/layout --help +``` + +A useful invocation names an output directory and a preset. The build +directory is inferred from the running interpreter (`-b` overrides it), but a +`--preset-` (or explicit `--include-` options) is required; +otherwise the result is a bare, minimal layout that is rarely useful. + +``` +python PC/layout --copy dist --preset-default +``` + +### Output options + +The script produces one or both of the following outputs. At least one is +required for the run to do anything useful. + +* `--copy

    ` copies the layout into a directory. +* `--zip ` writes the layout into a ZIP file. + +Additional output-related options: + +* `--catalog ` writes a `.cdf` catalog definition for the non-binary + files, used later to produce a signed catalog. Compilation and signing are + separate steps. +* `--log ` writes all operations to a log file. +* `-t`, `--temp ` sets the temporary working directory used for generated + files (ZIP library, `._pth`, extracted pip, generated JSON). When omitted, a + temporary directory is created automatically. If `--copy` targets a Dev + Drive, an adjacent temp directory on the same drive is used for speed. +* `-v` increases verbosity. Repeat for more detail. + +### Layout options + +Optional components are selected with `--include-` flags. Presets group +these into the configurations we ship (see [Layouts](#layouts)). For a quick +throwaway layout, `-a`/`--include-all` turns on every option (except those +noted below as not affected by `--include-all`); it is intended for debugging +rather than for producing a real distribution, since it mixes components that +are never shipped together. The main component flags are: + +* `--include-stable` the stable ABI DLL (`python3.dll`). +* `--include-pip` pip, extracted from the bundled wheels in + `Lib/ensurepip/_bundled`. +* `--include-pip-user` a `pip.ini` defaulting to `--user` installs. +* `--include-tcltk` Tcl, Tk and tkinter. +* `--include-idle` IDLE. Implies `--include-tcltk`. +* `--include-tests` the test suite. +* `--include-tools` scripts from `Tools`. +* `--include-venv` venv and ensurepip, plus the venv launcher executables. +* `--include-dev` headers and `.lib` files. +* `--include-symbols` `.pdb` symbol files. +* `--include-underpth` a `python._pth` file. Not affected by + `--include-all`. +* `--include-launchers` extra launcher executables (used with + `--include-appxmanifest`). +* `--include-appxmanifest` an APPX/MSIX manifest. +* `--include-props` a `python.props` MSBuild file. +* `--include-nuspec` a `python.nuspec` NuGet spec. +* `--include-chm` the CHM documentation. +* `--include-html-doc` the HTML documentation. +* `--include-freethreaded` free-threaded binaries. Not affected by + `--include-all`. +* `--include-alias`, `--include-alias3`, `--include-alias3x` aliased + entry-point executables (`python.exe`, `python3.exe`, `python3.x.exe` and + their `w` variants). +* `--include-install-json`, `--include-install-embed-json`, + `--include-install-test-json` a PyManager `__install__.json` for the + respective distribution. +* `--include-builddetails-json` a [PEP 739](https://peps.python.org/pep-0739/) + `build-details.json`. + +Layout behavior flags: + +* `-d`, `--debug` lays out the debug build (files with the `_d` suffix). The + debug binaries must already have been built (for example with + `PCbuild/build.bat -d`); the script never builds them. +* `-p`, `--precompile` includes `.pyc` files (at optimization levels 0, 1 and + 2) instead of, or in addition to, `.py` files. The bytecode is compiled + during layout, in-process, using the `py_compile` module of the interpreter + running the script. It does not launch the laid-out runtime and does not check + its version, so it assumes the running interpreter matches the target version; + compiling with a mismatched version produces `.pyc` files the target cannot + use. +* `-z`, `--zip-lib` puts the standard library into `python.zip` rather than + a `Lib` directory. +* `--flat-dlls` places extension modules and DLLs next to the executables + rather than in a `DLLs` directory. +* `--include-cat ` includes an already-built `.cat` catalog file. This + only copies the named file into the layout; it does not build or sign the + catalog and requires no external tooling. Producing the `.cat` from a `.cdf` + (see `--catalog`) is a separate step. + +### Source options + +These options tell the script where to read from and what it is laying out. + +* `-s`, `--source ` the repository root. Defaults to the repository + containing the script. +* `-b`, `--build ` the build directory containing the compiled binaries. + Defaults to the directory containing the running interpreter. +* `--arch ` the target architecture. When omitted, it + is inferred by reading the PE header of a binary in the build directory. +* `--doc-build ` the documentation build directory. Defaults to + `/Doc/build`. + +The following environment variables are read when set: + +* `PYTHON_HEXVERSION` / `PYTHONINCLUDE` override version detection when the + target version cannot be inferred by reading `Include/patchlevel.h` from the + source tree. Set one of these when laying out a version other than the one + running the script (see below). +* `TCL_LIBRARY` locates the Tcl library when `--include-tcltk` is set. If + unset, the script falls back to `TCL_LIBRARY.env` in the build directory. +* `PYTHON_NUSPEC_VERSION`, `PYTHON_PROPS_PLATFORM` fill in the generated + `python.nuspec` and `python.props` files. When unset, the version falls back + to the detected version number and the platform falls back to a value derived + from the target architecture. +* `APPX_DATA_PUBLISHER`, `APPX_DATA_WINVER`, `APPX_DATA_SHA256` fill in the + generated APPX manifest. When unset, they fall back to defaults: a placeholder + publisher certificate name, a `MaxVersionTested` of `10.0.22000.0`, and no + SCCD hash. These defaults are fine for local use but are not suitable for a + signed, Store-ready package. + +## Layouts + +This section lists the common presets, which reflect our supported +configurations. Each is selected with `--preset-` and expands to a fixed +set of `--include-` options. They should help you understand which to use +for your scenario, and they are useful for figuring out where to put a new file +that you've just added to CPython. + +A preset can be combined with additional `--include-` options to add +components on top of it; the options are cumulative. + +### Development Kit (`--preset-default`) + +``` +python PC/layout --copy dist --preset-default +``` + +The development kit layout. This is the closest equivalent to a full install +and contains the interpreter, the standard library in `Lib`, extension modules +in `DLLs`, headers and import libraries (`--include-dev`), symbols, pip, tcltk, +IDLE, venv, the test suite, HTML docs, the stable ABI DLL, aliases and a +`build-details.json`. + +### Python install manager (`--preset-pymanager`, `--preset-pymanager-test`) + +Layouts for the [Python install manager](https://github.com/python/pymanager). +This is now the primary way upstream CPython is distributed on Windows. Both +resemble the development kit but add a PyManager `__install__.json`. + +`pymanager-test` additionally includes the test suite and symbols; +`--preset-pymanager-test` is what produces the `py install PythonTest\` +packages. + +### Embeddable package (`--preset-embed`) + +``` +python PC/layout --zip embed.zip --preset-embed +``` + +The embeddable package: a minimal, self-contained runtime intended to be +bundled inside another application. The standard library is placed in a ZIP +(`--zip-lib`), DLLs are flattened next to the executables (`--flat-dlls`), the +library is precompiled, and a `._pth` file (`--underpth`) is included to fix the +search path and isolate the runtime from user site directories. It omits pip, +tcltk, IDLE, the tests and development files. + +`--preset-embed --include-install-embed-json` is what produces the +`py install PythonEmbed\` packages. + +### NuGet package (`--preset-nuget`) + +The NuGet package layout. Includes development files, pip, the stable ABI, +venv, aliases, a `build-details.json`, and the `python.props` and +`python.nuspec` files that describe the package to MSBuild and NuGet. + +### APPX package (`--preset-appx`) + +The APPX/MSIX package layout for the Windows Store distribution. Includes the +stable ABI, pip, tcltk, IDLE, venv, development files, launchers, aliases and an +APPX manifest. This is no longer used for upstream CPython releases. + +### Windows IoT Core (`--preset-iot`) + +A minimal layout for Windows IoT Core: aliases, the stable ABI and pip. This is +not used for upstream CPython releases. + +## Build source options + +The `-b` and `-s` options let you lay out a build that is separate from the +interpreter running the script, including a different Python version. + +* `-b`/`--build` points at the build tree with the compiled binaries. It does + not need to match the interpreter running the script. +* `-s`/`--source` points at the source tree that supplies `Lib`, `Include`, + `Tools` and version information. + +The target version is normally read from `Include/patchlevel.h` in the source +tree. When laying out a version that differs from the running interpreter and +the source tree is not the matching one, set `PYTHON_HEXVERSION` (a hex version +such as `0x030f00a0`) or `PYTHONINCLUDE` (a directory containing +`patchlevel.h`) so the correct DLL names, suffixes and version numbers are used. +The script validates the inferred version against `patchlevel.h` and stops with +an error if they disagree. + +## Tool structure + +The script is a package under `PC/layout`. `main.py` drives argument parsing, +builds the file list (`get_layout`), generates derived files +(`generate_source_files`) and copies or zips the result (`copy_files`). Support +modules live in `PC/layout/support`: + +* `options.py` defines the `OPTIONS` and `PRESETS` tables and generates the + `--include-*` and `--preset-*` command-line arguments. Add new options and + presets here. +* `constants.py` derives version numbers, DLL names and related constants from + `patchlevel.h` or the version environment variables. +* `filesets.py` provides the file-matching helpers (`FileStemSet`, + `FileNameSet`, `FileSuffixSet`) and the `rglob` globbing helper used + throughout `main.py`. +* `arch.py` infers the target architecture from a binary's PE header. +* `logging.py` configures logging and tracks whether errors occurred. +* `pip.py` extracts pip from the bundled wheels and lists the pip files. +* `catalog.py` generates the `.cdf`/`.cat` catalog definitions for signing. +* `props.py` generates `python.props` (NuGet/MSBuild). +* `nuspec.py` generates `python.nuspec` (NuGet). +* `appxmanifest.py` generates APPX/MSIX manifests. +* `pymanager.py` generates the PyManager `__install__.json`. +* `builddetails.py` generates the PEP 739 `build-details.json`. + +### Classifying new files + +`main.py` collects files by globbing shared directories -- the build output +directory (`-b`) for binaries and the source `Lib`, `Include` and `Tools` +directories -- and then filters them. A new file added to any of these is +usually picked up with no change here: build extension modules (`*.pyd`) land in +`DLLs` (or alongside the executables under `--flat-dlls`), other build DLLs land +next to them, and files under `Lib` are mirrored into the layout's `Lib`. + +Changes are only needed when a new file belongs to an optional component, so it +must be routed to the right `--include-` option rather than always +copied. The routing is driven by a set of file-matching tables near the top of +`main.py` (built from the `FileStemSet`, `FileNameSet` and `FileSuffixSet` +helpers in `support/filesets.py`). To classify a new file, add its name or +pattern to the matching table. + +Tables that gate files on an optional component (the file is only included when +the corresponding option is set): + +* `TEST_PYDS_ONLY`, `TEST_DLLS_ONLY`, `TEST_DIRS_ONLY` -- test-only extension + modules, DLLs and `Lib` directories; gated on `--include-tests`. Extension + module names starting with `_test` are already matched; add any other + test-only build module here (see also the note in `PCbuild/readme.txt`). +* `TCLTK_PYDS_ONLY`, `TCLTK_DLLS_ONLY`, `TCLTK_DIRS_ONLY`, `TCLTK_FILES_ONLY` -- + Tcl/Tk/tkinter extension modules (`_tkinter`), DLLs (`tcl*`, `tk*`, `zlib1`), + `Lib` directories (`tkinter`, `turtledemo`) and files (`turtle.py`); gated on + `--include-tcltk`. +* `IDLE_DIRS_ONLY` -- IDLE's `Lib` directory (`idlelib`); gated on + `--include-idle`. +* `VENV_DIRS_ONLY` -- `venv` and `ensurepip` `Lib` directories; gated on + `--include-venv`. + +Tables that exclude files outright: + +* `EXCLUDE_FROM_DLLS` -- build DLLs that are handled elsewhere and must not be + copied by the generic DLL glob (`python*`, `pyshellext`, `vcruntime*`). +* `EXCLUDE_FROM_LIB` -- never copied into `Lib` (`*.pyc`, `__pycache__`, + `*.pickle`). +* `EXCLUDE_FROM_COMPILE` -- `Lib` files that must not be precompiled + (`badsyntax_*`, `bad_*`). +* `EXCLUDE_FROM_CATALOG` -- suffixes omitted from the signing catalog because + they are signed separately (`.exe`, `.pyd`, `.dll`). + +Special cases in the debug and binary handling: + +* `REQUIRED_DLLS` (`libcrypto*`, `libssl*`, `libffi*`) -- always copied from the + build directory even for a release layout. Most build DLLs are filtered by + their `_d` suffix to match the debug or release build being laid out; these + dependencies do not follow that naming and would otherwise be dropped, so they + are matched here to force inclusion. Add a new external dependency DLL here if + it does not use the `_d` debug-suffix convention. + +When deciding where a new file goes, match it to the component it belongs to and +add it to the corresponding table. If it belongs in every layout and follows the +normal conventions, no change is needed. + + +## Contributing guidelines + +Contributions are welcome. The script supports a broad range of scenarios, and +extending it for a new one is encouraged. Because the same code produces the +official releases across every supported version and architecture, additions +have to respect a few constraints so that existing configurations keep working. + +The script runs in an unusual context, and new code must hold to the following +assumptions: + +* Do not assume the Python being laid out can be launched. The script must run + correctly using only the interpreter running it, which may differ from the + target. +* Do not assume the layout version matches the version running the script. + Derive version-dependent behavior from the detected version rather than from + `sys.version` of the running interpreter. (Precompilation with `--precompile` + is the one deliberate exception, and it assumes a matching interpreter.) +* The script may be used to lay out an older version, so behavior changes have + to be preserved, either behind an option or gated on a version check, rather + than replaced outright. +* The script never builds anything. Everything it emits must already exist in + the build or source tree. + +When adding features, keep the surface area aligned with upstream: + +* New `--include-` options for further customization are fine. +* Do not add presets beyond those used by upstream. Presets describe the + configurations we ship, so a new one implies a new supported release + artifact. +* Route new files through the classification tables (see [Classifying new + files](#classifying-new-files)) rather than adding one-off special cases. diff --git a/PC/layout/support/appxmanifest.py b/PC/layout/support/appxmanifest.py index 53977beb8af8346..ba7f1335c7348d5 100644 --- a/PC/layout/support/appxmanifest.py +++ b/PC/layout/support/appxmanifest.py @@ -151,6 +151,8 @@ """ +# This file is no longer included in our repo, but we keep the logic here for +# building with older releases. We always .is_file() before using it. SCCD_FILENAME = "PC/classicAppCompat.sccd" SPECIAL_LOOKUP = object() diff --git a/PC/pylauncher.rc b/PC/pylauncher.rc deleted file mode 100644 index 11862643aa69893..000000000000000 --- a/PC/pylauncher.rc +++ /dev/null @@ -1,67 +0,0 @@ -#include - -#include "python_ver_rc.h" - -#ifndef RT_MANIFEST -// bpo-45220: Cannot reliably #include RT_MANIFEST from -// anywhere, so we hardcode it -#define RT_MANIFEST 24 -#endif -// Include the manifest file that indicates we support all -// current versions of Windows. -1 RT_MANIFEST "python.manifest" - -#if defined(PY_ICON) -1 ICON DISCARDABLE "icons\python.ico" -#elif defined(PYW_ICON) -1 ICON DISCARDABLE "icons\pythonw.ico" -#else -1 ICON DISCARDABLE "icons\launcher.ico" -2 ICON DISCARDABLE "icons\py.ico" -3 ICON DISCARDABLE "icons\pyc.ico" -4 ICON DISCARDABLE "icons\pyd.ico" -5 ICON DISCARDABLE "icons\python.ico" -6 ICON DISCARDABLE "icons\pythonw.ico" -7 ICON DISCARDABLE "icons\setup.ico" -#endif - -1 USAGE "launcher-usage.txt" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION PYVERSION64 - PRODUCTVERSION PYVERSION64 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName", PYTHON_COMPANY "\0" - VALUE "FileDescription", "Python\0" - VALUE "FileVersion", PYTHON_VERSION - VALUE "InternalName", "Python Launcher\0" - VALUE "LegalCopyright", PYTHON_COPYRIGHT "\0" - VALUE "OriginalFilename", "py" PYTHON_DEBUG_EXT ".exe\0" - VALUE "ProductName", "Python\0" - VALUE "ProductVersion", PYTHON_VERSION - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END \ No newline at end of file diff --git a/PC/pyshellext.cpp b/PC/pyshellext.cpp deleted file mode 100644 index d16de0b717151e5..000000000000000 --- a/PC/pyshellext.cpp +++ /dev/null @@ -1,603 +0,0 @@ -// Support back to Vista -#define _WIN32_WINNT _WIN32_WINNT_VISTA -#include - -// Use WRL to define a classic COM class -#define __WRL_CLASSIC_COM__ -#include - -#include -#include -#include -#include -#include - -#define DDWM_UPDATEWINDOW (WM_USER+3) - -static HINSTANCE hModule; -static CLIPFORMAT cfDropDescription; -static CLIPFORMAT cfDragWindow; - -#define CLASS_GUID "{BEA218D2-6950-497B-9434-61683EC065FE}" -static const LPCWSTR CLASS_SUBKEY = L"Software\\Classes\\CLSID\\" CLASS_GUID; -static const LPCWSTR DRAG_MESSAGE = L"Open with %1"; - -using namespace Microsoft::WRL; - -HRESULT FilenameListCchLengthA(LPCSTR pszSource, size_t cchMax, size_t *pcchLength, size_t *pcchCount) { - HRESULT hr = S_OK; - size_t count = 0; - size_t length = 0; - - while (pszSource && pszSource[0]) { - size_t oneLength; - hr = StringCchLengthA(pszSource, cchMax - length, &oneLength); - if (FAILED(hr)) { - return hr; - } - count += 1; - length += oneLength + (strchr(pszSource, ' ') ? 3 : 1); - pszSource = &pszSource[oneLength + 1]; - } - - *pcchCount = count; - *pcchLength = length; - return hr; -} - -HRESULT FilenameListCchLengthW(LPCWSTR pszSource, size_t cchMax, size_t *pcchLength, size_t *pcchCount) { - HRESULT hr = S_OK; - size_t count = 0; - size_t length = 0; - - while (pszSource && pszSource[0]) { - size_t oneLength; - hr = StringCchLengthW(pszSource, cchMax - length, &oneLength); - if (FAILED(hr)) { - return hr; - } - count += 1; - length += oneLength + (wcschr(pszSource, ' ') ? 3 : 1); - pszSource = &pszSource[oneLength + 1]; - } - - *pcchCount = count; - *pcchLength = length; - return hr; -} - -HRESULT FilenameListCchCopyA(STRSAFE_LPSTR pszDest, size_t cchDest, LPCSTR pszSource, LPCSTR pszSeparator) { - HRESULT hr = S_OK; - - while (pszSource[0]) { - STRSAFE_LPSTR newDest; - - hr = StringCchCopyExA(pszDest, cchDest, pszSource, &newDest, &cchDest, 0); - if (FAILED(hr)) { - return hr; - } - pszSource += (newDest - pszDest) + 1; - pszDest = PathQuoteSpacesA(pszDest) ? newDest + 2 : newDest; - - if (pszSource[0]) { - hr = StringCchCopyExA(pszDest, cchDest, pszSeparator, &newDest, &cchDest, 0); - if (FAILED(hr)) { - return hr; - } - pszDest = newDest; - } - } - - return hr; -} - -HRESULT FilenameListCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, LPCWSTR pszSource, LPCWSTR pszSeparator) { - HRESULT hr = S_OK; - - while (pszSource[0]) { - STRSAFE_LPWSTR newDest; - - hr = StringCchCopyExW(pszDest, cchDest, pszSource, &newDest, &cchDest, 0); - if (FAILED(hr)) { - return hr; - } - pszSource += (newDest - pszDest) + 1; - pszDest = PathQuoteSpacesW(pszDest) ? newDest + 2 : newDest; - - if (pszSource[0]) { - hr = StringCchCopyExW(pszDest, cchDest, pszSeparator, &newDest, &cchDest, 0); - if (FAILED(hr)) { - return hr; - } - pszDest = newDest; - } - } - - return hr; -} - -class DECLSPEC_UUID(CLASS_GUID) PyShellExt : public RuntimeClass< - RuntimeClassFlags, - IDropTarget, - IPersistFile -> -{ - LPOLESTR target, target_dir; - DWORD target_mode; - - IDataObject *data_obj; - -public: - PyShellExt() : target(NULL), target_dir(NULL), target_mode(0), data_obj(NULL) { - OutputDebugString(L"PyShellExt::PyShellExt"); - } - - ~PyShellExt() { - if (target) { - CoTaskMemFree(target); - } - if (target_dir) { - CoTaskMemFree(target_dir); - } - if (data_obj) { - data_obj->Release(); - } - } - -private: - HRESULT UpdateDropDescription(IDataObject *pDataObj) { - STGMEDIUM medium; - FORMATETC fmt = { - cfDropDescription, - NULL, - DVASPECT_CONTENT, - -1, - TYMED_HGLOBAL - }; - - auto hr = pDataObj->GetData(&fmt, &medium); - if (FAILED(hr)) { - OutputDebugString(L"PyShellExt::UpdateDropDescription - failed to get DROPDESCRIPTION format"); - return hr; - } - if (!medium.hGlobal) { - OutputDebugString(L"PyShellExt::UpdateDropDescription - DROPDESCRIPTION format had NULL hGlobal"); - ReleaseStgMedium(&medium); - return E_FAIL; - } - auto dd = (DROPDESCRIPTION*)GlobalLock(medium.hGlobal); - if (!dd) { - OutputDebugString(L"PyShellExt::UpdateDropDescription - failed to lock DROPDESCRIPTION hGlobal"); - ReleaseStgMedium(&medium); - return E_FAIL; - } - StringCchCopy(dd->szMessage, sizeof(dd->szMessage) / sizeof(dd->szMessage[0]), DRAG_MESSAGE); - StringCchCopy(dd->szInsert, sizeof(dd->szInsert) / sizeof(dd->szInsert[0]), PathFindFileNameW(target)); - dd->type = DROPIMAGE_MOVE; - - GlobalUnlock(medium.hGlobal); - ReleaseStgMedium(&medium); - - return S_OK; - } - - HRESULT GetDragWindow(IDataObject *pDataObj, HWND *phWnd) { - HRESULT hr; - HWND *pMem; - STGMEDIUM medium; - FORMATETC fmt = { - cfDragWindow, - NULL, - DVASPECT_CONTENT, - -1, - TYMED_HGLOBAL - }; - - hr = pDataObj->GetData(&fmt, &medium); - if (FAILED(hr)) { - OutputDebugString(L"PyShellExt::GetDragWindow - failed to get DragWindow format"); - return hr; - } - if (!medium.hGlobal) { - OutputDebugString(L"PyShellExt::GetDragWindow - DragWindow format had NULL hGlobal"); - ReleaseStgMedium(&medium); - return E_FAIL; - } - - pMem = (HWND*)GlobalLock(medium.hGlobal); - if (!pMem) { - OutputDebugString(L"PyShellExt::GetDragWindow - failed to lock DragWindow hGlobal"); - ReleaseStgMedium(&medium); - return E_FAIL; - } - - *phWnd = *pMem; - - GlobalUnlock(medium.hGlobal); - ReleaseStgMedium(&medium); - - return S_OK; - } - - HRESULT GetArguments(IDataObject *pDataObj, LPCWSTR *pArguments) { - HRESULT hr; - DROPFILES *pdropfiles; - - STGMEDIUM medium; - FORMATETC fmt = { - CF_HDROP, - NULL, - DVASPECT_CONTENT, - -1, - TYMED_HGLOBAL - }; - - hr = pDataObj->GetData(&fmt, &medium); - if (FAILED(hr)) { - OutputDebugString(L"PyShellExt::GetArguments - failed to get CF_HDROP format"); - return hr; - } - if (!medium.hGlobal) { - OutputDebugString(L"PyShellExt::GetArguments - CF_HDROP format had NULL hGlobal"); - ReleaseStgMedium(&medium); - return E_FAIL; - } - - pdropfiles = (DROPFILES*)GlobalLock(medium.hGlobal); - if (!pdropfiles) { - OutputDebugString(L"PyShellExt::GetArguments - failed to lock CF_HDROP hGlobal"); - ReleaseStgMedium(&medium); - return E_FAIL; - } - - if (pdropfiles->fWide) { - LPCWSTR files = (LPCWSTR)((char*)pdropfiles + pdropfiles->pFiles); - size_t len, count; - hr = FilenameListCchLengthW(files, 32767, &len, &count); - if (SUCCEEDED(hr)) { - LPWSTR args = (LPWSTR)CoTaskMemAlloc(sizeof(WCHAR) * (len + 1)); - if (args) { - hr = FilenameListCchCopyW(args, 32767, files, L" "); - if (SUCCEEDED(hr)) { - *pArguments = args; - } else { - CoTaskMemFree(args); - } - } else { - hr = E_OUTOFMEMORY; - } - } - } else { - LPCSTR files = (LPCSTR)((char*)pdropfiles + pdropfiles->pFiles); - size_t len, count; - hr = FilenameListCchLengthA(files, 32767, &len, &count); - if (SUCCEEDED(hr)) { - LPSTR temp = (LPSTR)CoTaskMemAlloc(sizeof(CHAR) * (len + 1)); - if (temp) { - hr = FilenameListCchCopyA(temp, 32767, files, " "); - if (SUCCEEDED(hr)) { - int wlen = MultiByteToWideChar(CP_ACP, 0, temp, (int)len, NULL, 0); - if (wlen) { - LPWSTR args = (LPWSTR)CoTaskMemAlloc(sizeof(WCHAR) * (wlen + 1)); - if (MultiByteToWideChar(CP_ACP, 0, temp, (int)len, args, wlen + 1)) { - *pArguments = args; - } else { - OutputDebugString(L"PyShellExt::GetArguments - failed to convert multi-byte to wide-char path"); - CoTaskMemFree(args); - hr = E_FAIL; - } - } else { - OutputDebugString(L"PyShellExt::GetArguments - failed to get length of wide-char path"); - hr = E_FAIL; - } - } - CoTaskMemFree(temp); - } else { - hr = E_OUTOFMEMORY; - } - } - } - - GlobalUnlock(medium.hGlobal); - ReleaseStgMedium(&medium); - - return hr; - } - - HRESULT NotifyDragWindow(HWND hwnd) { - LRESULT res; - - if (!hwnd) { - return S_FALSE; - } - - res = SendMessage(hwnd, DDWM_UPDATEWINDOW, 0, NULL); - - if (res) { - OutputDebugString(L"PyShellExt::NotifyDragWindow - failed to post DDWM_UPDATEWINDOW"); - return E_FAIL; - } - - return S_OK; - } - -public: - // IDropTarget implementation - - STDMETHODIMP DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) { - HWND hwnd; - - OutputDebugString(L"PyShellExt::DragEnter"); - - pDataObj->AddRef(); - data_obj = pDataObj; - - *pdwEffect = DROPEFFECT_MOVE; - - if (FAILED(UpdateDropDescription(data_obj))) { - OutputDebugString(L"PyShellExt::DragEnter - failed to update drop description"); - } - if (FAILED(GetDragWindow(data_obj, &hwnd))) { - OutputDebugString(L"PyShellExt::DragEnter - failed to get drag window"); - } - if (FAILED(NotifyDragWindow(hwnd))) { - OutputDebugString(L"PyShellExt::DragEnter - failed to notify drag window"); - } - - return S_OK; - } - - STDMETHODIMP DragLeave() { - return S_OK; - } - - STDMETHODIMP DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) { - return S_OK; - } - - STDMETHODIMP Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) { - LPCWSTR args; - - OutputDebugString(L"PyShellExt::Drop"); - *pdwEffect = DROPEFFECT_NONE; - - if (pDataObj != data_obj) { - OutputDebugString(L"PyShellExt::Drop - unexpected data object"); - return E_FAIL; - } - - data_obj->Release(); - data_obj = NULL; - - if (SUCCEEDED(GetArguments(pDataObj, &args))) { - OutputDebugString(args); - ShellExecute(NULL, NULL, target, args, target_dir, SW_NORMAL); - - CoTaskMemFree((LPVOID)args); - } else { - OutputDebugString(L"PyShellExt::Drop - failed to get launch arguments"); - } - - return S_OK; - } - - // IPersistFile implementation - - STDMETHODIMP GetCurFile(LPOLESTR *ppszFileName) { - HRESULT hr; - size_t len; - - if (!ppszFileName) { - return E_POINTER; - } - - hr = StringCchLength(target, STRSAFE_MAX_CCH - 1, &len); - if (FAILED(hr)) { - return E_FAIL; - } - - *ppszFileName = (LPOLESTR)CoTaskMemAlloc(sizeof(WCHAR) * (len + 1)); - if (!*ppszFileName) { - return E_OUTOFMEMORY; - } - - hr = StringCchCopy(*ppszFileName, len + 1, target); - if (FAILED(hr)) { - CoTaskMemFree(*ppszFileName); - *ppszFileName = NULL; - return E_FAIL; - } - - return S_OK; - } - - STDMETHODIMP IsDirty() { - return S_FALSE; - } - - STDMETHODIMP Load(LPCOLESTR pszFileName, DWORD dwMode) { - HRESULT hr; - size_t len; - - OutputDebugString(L"PyShellExt::Load"); - OutputDebugString(pszFileName); - - hr = StringCchLength(pszFileName, STRSAFE_MAX_CCH - 1, &len); - if (FAILED(hr)) { - OutputDebugString(L"PyShellExt::Load - failed to get string length"); - return hr; - } - - if (target) { - CoTaskMemFree(target); - } - if (target_dir) { - CoTaskMemFree(target_dir); - } - - target = (LPOLESTR)CoTaskMemAlloc(sizeof(WCHAR) * (len + 1)); - if (!target) { - OutputDebugString(L"PyShellExt::Load - E_OUTOFMEMORY"); - return E_OUTOFMEMORY; - } - target_dir = (LPOLESTR)CoTaskMemAlloc(sizeof(WCHAR) * (len + 1)); - if (!target_dir) { - OutputDebugString(L"PyShellExt::Load - E_OUTOFMEMORY"); - return E_OUTOFMEMORY; - } - - hr = StringCchCopy(target, len + 1, pszFileName); - if (FAILED(hr)) { - OutputDebugString(L"PyShellExt::Load - failed to copy string"); - return hr; - } - - hr = StringCchCopy(target_dir, len + 1, pszFileName); - if (FAILED(hr)) { - OutputDebugString(L"PyShellExt::Load - failed to copy string"); - return hr; - } - if (!PathRemoveFileSpecW(target_dir)) { - OutputDebugStringW(L"PyShellExt::Load - failed to remove filespec from target"); - return E_FAIL; - } - - OutputDebugString(target); - target_mode = dwMode; - OutputDebugString(L"PyShellExt::Load - S_OK"); - return S_OK; - } - - STDMETHODIMP Save(LPCOLESTR pszFileName, BOOL fRemember) { - return E_NOTIMPL; - } - - STDMETHODIMP SaveCompleted(LPCOLESTR pszFileName) { - return E_NOTIMPL; - } - - STDMETHODIMP GetClassID(CLSID *pClassID) { - *pClassID = __uuidof(PyShellExt); - return S_OK; - } -}; - -CoCreatableClass(PyShellExt); - -STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, _COM_Outptr_ void** ppv) { - return Module::GetModule().GetClassObject(rclsid, riid, ppv); -} - -STDAPI DllCanUnloadNow() { - return Module::GetModule().Terminate() ? S_OK : S_FALSE; -} - -STDAPI DllRegisterServer() { - LONG res; - LPSECURITY_ATTRIBUTES psecattr = NULL; - HKEY key, ipsKey; - WCHAR modname[MAX_PATH]; - DWORD modname_len; - - OutputDebugString(L"PyShellExt::DllRegisterServer"); - if (!hModule) { - OutputDebugString(L"PyShellExt::DllRegisterServer - module handle was not set"); - return SELFREG_E_CLASS; - } - modname_len = GetModuleFileName(hModule, modname, MAX_PATH); - if (modname_len == 0 || - (modname_len == MAX_PATH && GetLastError() == ERROR_INSUFFICIENT_BUFFER)) { - OutputDebugString(L"PyShellExt::DllRegisterServer - failed to get module file name"); - return SELFREG_E_CLASS; - } - - DWORD disp; - res = RegCreateKeyEx(HKEY_LOCAL_MACHINE, CLASS_SUBKEY, 0, NULL, 0, - KEY_ALL_ACCESS, psecattr, &key, &disp); - if (res == ERROR_ACCESS_DENIED) { - OutputDebugString(L"PyShellExt::DllRegisterServer - failed to write per-machine registration. Attempting per-user instead."); - res = RegCreateKeyEx(HKEY_CURRENT_USER, CLASS_SUBKEY, 0, NULL, 0, - KEY_ALL_ACCESS, psecattr, &key, &disp); - } - if (res != ERROR_SUCCESS) { - OutputDebugString(L"PyShellExt::DllRegisterServer - failed to create class key"); - return SELFREG_E_CLASS; - } - - res = RegCreateKeyEx(key, L"InProcServer32", 0, NULL, 0, - KEY_ALL_ACCESS, psecattr, &ipsKey, NULL); - if (res != ERROR_SUCCESS) { - RegCloseKey(key); - OutputDebugString(L"PyShellExt::DllRegisterServer - failed to create InProcServer32 key"); - return SELFREG_E_CLASS; - } - - res = RegSetValueEx(ipsKey, NULL, 0, - REG_SZ, (LPBYTE)modname, modname_len * sizeof(modname[0])); - - if (res != ERROR_SUCCESS) { - RegCloseKey(ipsKey); - RegCloseKey(key); - OutputDebugString(L"PyShellExt::DllRegisterServer - failed to set server path"); - return SELFREG_E_CLASS; - } - - res = RegSetValueEx(ipsKey, L"ThreadingModel", 0, - REG_SZ, (LPBYTE)(L"Apartment"), sizeof(L"Apartment")); - - RegCloseKey(ipsKey); - RegCloseKey(key); - if (res != ERROR_SUCCESS) { - OutputDebugString(L"PyShellExt::DllRegisterServer - failed to set threading model"); - return SELFREG_E_CLASS; - } - - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); - - OutputDebugString(L"PyShellExt::DllRegisterServer - S_OK"); - return S_OK; -} - -STDAPI DllUnregisterServer() { - LONG res_lm, res_cu; - - res_lm = RegDeleteTree(HKEY_LOCAL_MACHINE, CLASS_SUBKEY); - if (res_lm != ERROR_SUCCESS && res_lm != ERROR_FILE_NOT_FOUND) { - OutputDebugString(L"PyShellExt::DllUnregisterServer - failed to delete per-machine registration"); - return SELFREG_E_CLASS; - } - - res_cu = RegDeleteTree(HKEY_CURRENT_USER, CLASS_SUBKEY); - if (res_cu != ERROR_SUCCESS && res_cu != ERROR_FILE_NOT_FOUND) { - OutputDebugString(L"PyShellExt::DllUnregisterServer - failed to delete per-user registration"); - return SELFREG_E_CLASS; - } - - if (res_lm == ERROR_FILE_NOT_FOUND && res_cu == ERROR_FILE_NOT_FOUND) { - OutputDebugString(L"PyShellExt::DllUnregisterServer - extension was not registered"); - return SELFREG_E_CLASS; - } - - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); - - OutputDebugString(L"PyShellExt::DllUnregisterServer - S_OK"); - return S_OK; -} - -STDAPI_(BOOL) DllMain(_In_opt_ HINSTANCE hinst, DWORD reason, _In_opt_ void*) { - if (reason == DLL_PROCESS_ATTACH) { - hModule = hinst; - - cfDropDescription = RegisterClipboardFormat(CFSTR_DROPDESCRIPTION); - if (!cfDropDescription) { - OutputDebugString(L"PyShellExt::DllMain - failed to get CFSTR_DROPDESCRIPTION format"); - } - cfDragWindow = RegisterClipboardFormat(L"DragWindow"); - if (!cfDragWindow) { - OutputDebugString(L"PyShellExt::DllMain - failed to get DragWindow format"); - } - - DisableThreadLibraryCalls(hinst); - } - return TRUE; -} diff --git a/PC/pyshellext.def b/PC/pyshellext.def deleted file mode 100644 index 288a9adf982f197..000000000000000 --- a/PC/pyshellext.def +++ /dev/null @@ -1,5 +0,0 @@ -EXPORTS - DllRegisterServer PRIVATE - DllUnregisterServer PRIVATE - DllGetClassObject PRIVATE - DllCanUnloadNow PRIVATE diff --git a/PC/pyshellext.rc b/PC/pyshellext.rc deleted file mode 100644 index af797ce95d5077e..000000000000000 --- a/PC/pyshellext.rc +++ /dev/null @@ -1,51 +0,0 @@ -#include - -#include "python_ver_rc.h" - -#ifndef RT_MANIFEST -// bpo-45220: Cannot reliably #include RT_MANIFEST from -// anywhere, so we hardcode it -#define RT_MANIFEST 24 -#endif - -// Include the manifest file that indicates we support all -// current versions of Windows. -1 RT_MANIFEST "python.manifest" - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION PYVERSION64 - PRODUCTVERSION PYVERSION64 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName", PYTHON_COMPANY "\0" - VALUE "FileDescription", "Python\0" - VALUE "FileVersion", PYTHON_VERSION - VALUE "InternalName", "Python Launcher Shell Extension\0" - VALUE "LegalCopyright", PYTHON_COPYRIGHT "\0" - VALUE "OriginalFilename", "pyshellext" PYTHON_DEBUG_EXT ".dll\0" - VALUE "ProductName", "Python\0" - VALUE "ProductVersion", PYTHON_VERSION - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END \ No newline at end of file diff --git a/PC/store_info.txt b/PC/store_info.txt deleted file mode 100644 index d150ba17cbe62dd..000000000000000 --- a/PC/store_info.txt +++ /dev/null @@ -1,156 +0,0 @@ -# Overview - -NOTE: This file requires more content. - -Since Python 3.7.2, releases have been made through the Microsoft Store -to allow easy installation on Windows 10.0.17763.0 and later. - -# Building - -To build the store package, the PC/layout script should be used. -Execute the directory with the build of Python to package, and pass -"-h" for full command-line options. - -To sideload test builds, you will need a local certificate. -Instructions are available at -https://docs.microsoft.com/windows/uwp/packaging/create-certificate-package-signing. - -After exporting your certificate, you will need the subject name and -SHA256 hash. The `certutil -dump ` command will display this -information. - -To build for sideloading, use these commands in PowerShell: - -``` -$env:APPX_DATA_PUBLISHER= -$env:APPX_DATA_SHA256= -$env:SigningCertificateFile= - -python PC/layout --copy --include-appxmanifest -Tools/msi/make_appx.ps1 python.msix -sign - -Add-AppxPackage python.msix -``` - -(Note that only the last command requires PowerShell, and the others -can be used from Command Prompt. You can also double-click to install -the final package.) - -To build for publishing to the Store, use these commands: - -``` -$env:APPX_DATA_PUBLISHER = $null -$env:APPX_DATA_SHA256 = $null - -python PC/layout --copy --preset-appxmanifest --precompile -Tools/msi/make_appx.ps1 python.msix -``` - -Note that this package cannot be installed locally. It may only be -added to a submission for the store. - - -# Submission Metadata - -This file contains the text that we use to fill out the store listing -for the Microsoft Store. It needs to be entered manually when creating -a new submission via the dashboard at -https://partner.microsoft.com/dashboard. - -We keep it here for convenience and to allow it to be updated via pull -requests. - -When submitting a new app, the HeadlessAppBypass waiver will be needed. -To request this, send an email to PartnerOps@microsoft.com with the app -ID (12 character token available from the dashboard). The waiver needs -to be applied *before* uploading the package (as of November 2019). - -Ensure that the new app is named "Python.3.X", where X is the minor -version of the release. If the name provided initially does not match -the name used when building the package, the upload will fail. The -display name shown to users can be set later. - -## Title - -Python 3.9 - -## Short Title - -Python - -## Description - -Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python’s elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms. - -The Python interpreter and the extensive standard library are freely available in source or binary form for all major platforms from the Python web site, https://www.python.org/, and may be freely distributed. The same site also contains distributions of and pointers to many free third party Python modules, programs and tools, and additional documentation. - -The Python interpreter is easily extended with new functions and data types implemented in C or C++ (or other languages callable from C). Python is also suitable as an extension language for customizable applications. - -## ShortDescription - -The Python 3.9 interpreter and runtime. - -## Copyright Trademark Information - -(c) Python Software Foundation - -## Additional License Terms - -Visit https://docs.python.org/3.9/license.html for latest license terms. - -PSF LICENSE AGREEMENT FOR PYTHON 3.9 - -1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and - the Individual or Organization ("Licensee") accessing and otherwise using Python - 3.9 software in source or binary form and its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF hereby - grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, - analyze, test, perform and/or display publicly, prepare derivative works, - distribute, and otherwise use Python 3.9 alone or in any derivative - version, provided, however, that PSF's License Agreement and PSF's notice of - copyright, i.e., "Copyright © 2001 Python Software Foundation; All Rights - Reserved" are retained in Python 3.9 alone or in any derivative version - prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on or - incorporates Python 3.9 or any part thereof, and wants to make the - derivative work available to others as provided herein, then Licensee hereby - agrees to include in any such work a brief summary of the changes made to Python - 3.9. - -4. PSF is making Python 3.9 available to Licensee on an "AS IS" basis. - PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF - EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR - WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE - USE OF PYTHON 3.9 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 3.9 - FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF - MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 3.9, OR ANY DERIVATIVE - THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material breach of - its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any relationship - of agency, partnership, or joint venture between PSF and Licensee. This License - Agreement does not grant permission to use PSF trademarks or trade name in a - trademark sense to endorse or promote products or services of Licensee, or any - third party. - -8. By copying, installing or otherwise using Python 3.9, Licensee agrees - to be bound by the terms and conditions of this License Agreement. - -## Features - -* Easy to install Python runtime -* Supported by core CPython team -* Find Python, Pip and Idle on PATH - -## Search Terms - -* Python -* Scripting -* Interpreter - diff --git a/PCbuild/pcbuild.proj b/PCbuild/pcbuild.proj index 9d077bbd3f0ba27..53aec0276beaee2 100644 --- a/PCbuild/pcbuild.proj +++ b/PCbuild/pcbuild.proj @@ -63,10 +63,6 @@ - - - - diff --git a/PCbuild/pcbuild.sln b/PCbuild/pcbuild.sln index 09a989d38648df4..e2cac3158831eed 100644 --- a/PCbuild/pcbuild.sln +++ b/PCbuild/pcbuild.sln @@ -111,16 +111,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xxlimited", "xxlimited.vcxp EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testbuffer", "_testbuffer.vcxproj", "{A2697BD3-28C1-4AEC-9106-8B748639FD16}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pylauncher", "pylauncher.vcxproj", "{7B2727B5-5A3F-40EE-A866-43A13CD31446}" - ProjectSection(ProjectDependencies) = postProject - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782} = {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pywlauncher", "pywlauncher.vcxproj", "{1D4B18D3-7C12-4ECB-9179-8531FF876CE6}" - ProjectSection(ProjectDependencies) = postProject - {7B2727B5-5A3F-40EE-A866-43A13CD31446} = {7B2727B5-5A3F-40EE-A866-43A13CD31446} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_freeze_module", "_freeze_module.vcxproj", "{19C0C13F-47CA-4432-AFF3-799A296A4DDC}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_overlapped", "_overlapped.vcxproj", "{EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}" @@ -131,8 +121,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testmultiphase", "_testmul EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testsinglephase", "_testsinglephase.vcxproj", "{2097F1C1-597C-4167-93E3-656A7D6339B2}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyshellext", "pyshellext.vcxproj", "{0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testconsole", "_testconsole.vcxproj", "{B244E787-C445-441C-BDF4-5A4F1A3A1E51}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_asyncio", "_asyncio.vcxproj", "{384C224A-7474-476E-A01B-750EA7DE918C}" @@ -1079,70 +1067,6 @@ Global {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|Win32.Build.0 = Release|Win32 {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|x64.ActiveCfg = Release|x64 {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|x64.Build.0 = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|ARM.ActiveCfg = Debug|ARM - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|ARM.Build.0 = Debug|ARM - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|ARM64.Build.0 = Debug|ARM64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|Win32.ActiveCfg = Debug|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|Win32.Build.0 = Debug|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|x64.ActiveCfg = Debug|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|x64.Build.0 = Debug|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|ARM.ActiveCfg = PGInstrument|ARM - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|ARM.Build.0 = PGInstrument|ARM - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|ARM64.ActiveCfg = PGInstrument|ARM64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|ARM64.Build.0 = PGInstrument|ARM64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.Build.0 = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.ActiveCfg = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.Build.0 = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|ARM.ActiveCfg = PGUpdate|ARM - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|ARM.Build.0 = PGUpdate|ARM - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|ARM64.ActiveCfg = PGUpdate|ARM64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|ARM64.Build.0 = PGUpdate|ARM64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.Build.0 = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.ActiveCfg = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.Build.0 = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|ARM.ActiveCfg = Release|ARM - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|ARM.Build.0 = Release|ARM - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|ARM64.ActiveCfg = Release|ARM64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|ARM64.Build.0 = Release|ARM64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|Win32.ActiveCfg = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|Win32.Build.0 = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.ActiveCfg = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.Build.0 = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|ARM.ActiveCfg = Debug|ARM - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|ARM.Build.0 = Debug|ARM - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|ARM64.Build.0 = Debug|ARM64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|Win32.ActiveCfg = Debug|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|Win32.Build.0 = Debug|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|x64.ActiveCfg = Debug|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|x64.Build.0 = Debug|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|ARM.ActiveCfg = PGInstrument|ARM - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|ARM.Build.0 = PGInstrument|ARM - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|ARM64.ActiveCfg = PGInstrument|ARM64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|ARM64.Build.0 = PGInstrument|ARM64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.Build.0 = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.ActiveCfg = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.Build.0 = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|ARM.ActiveCfg = PGUpdate|ARM - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|ARM.Build.0 = PGUpdate|ARM - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|ARM64.ActiveCfg = PGUpdate|ARM64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|ARM64.Build.0 = PGUpdate|ARM64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.Build.0 = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.ActiveCfg = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.Build.0 = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|ARM.ActiveCfg = Release|ARM - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|ARM.Build.0 = Release|ARM - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|ARM64.ActiveCfg = Release|ARM64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|ARM64.Build.0 = Release|ARM64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|Win32.ActiveCfg = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|Win32.Build.0 = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.ActiveCfg = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.Build.0 = Release|x64 {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|ARM.ActiveCfg = Debug|ARM {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|ARM.Build.0 = Debug|ARM {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|ARM64.ActiveCfg = Debug|ARM64 @@ -1293,38 +1217,6 @@ Global {2097F1C1-597C-4167-93E3-656A7D6339B2}.Release|Win32.Build.0 = Release|Win32 {2097F1C1-597C-4167-93E3-656A7D6339B2}.Release|x64.ActiveCfg = Release|x64 {2097F1C1-597C-4167-93E3-656A7D6339B2}.Release|x64.Build.0 = Release|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|ARM.ActiveCfg = Debug|ARM - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|ARM.Build.0 = Debug|ARM - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|ARM64.Build.0 = Debug|ARM64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|Win32.ActiveCfg = Debug|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|Win32.Build.0 = Debug|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|x64.ActiveCfg = Debug|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|x64.Build.0 = Debug|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|ARM.ActiveCfg = PGInstrument|ARM - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|ARM.Build.0 = PGInstrument|ARM - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|ARM64.ActiveCfg = PGInstrument|ARM64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|ARM64.Build.0 = PGInstrument|ARM64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|ARM.ActiveCfg = PGUpdate|ARM - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|ARM.Build.0 = PGUpdate|ARM - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|ARM64.ActiveCfg = PGUpdate|ARM64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|ARM64.Build.0 = PGUpdate|ARM64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|ARM.ActiveCfg = Release|ARM - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|ARM.Build.0 = Release|ARM - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|ARM64.ActiveCfg = Release|ARM64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|ARM64.Build.0 = Release|ARM64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|Win32.ActiveCfg = Release|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|Win32.Build.0 = Release|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|x64.ActiveCfg = Release|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|x64.Build.0 = Release|x64 {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|ARM.ActiveCfg = Debug|ARM {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|ARM.Build.0 = Debug|ARM {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|ARM64.ActiveCfg = Debug|ARM64 diff --git a/PCbuild/pylauncher.vcxproj b/PCbuild/pylauncher.vcxproj deleted file mode 100644 index ca422ef4d02e932..000000000000000 --- a/PCbuild/pylauncher.vcxproj +++ /dev/null @@ -1,114 +0,0 @@ - - - - - Debug - ARM - - - Debug - ARM64 - - - Debug - Win32 - - - Debug - x64 - - - PGInstrument - ARM - - - PGInstrument - ARM64 - - - PGInstrument - Win32 - - - PGInstrument - x64 - - - PGUpdate - ARM - - - PGUpdate - ARM64 - - - PGUpdate - Win32 - - - PGUpdate - x64 - - - Release - ARM - - - Release - ARM64 - - - Release - Win32 - - - Release - x64 - - - - {7B2727B5-5A3F-40EE-A866-43A13CD31446} - pylauncher - py - false - - - - - Application - Unicode - - - - - - ClCompile - - - - - - - - - _CONSOLE;%(PreprocessorDefinitions) - MultiThreaded - - - shell32.lib;pathcch.lib;%(AdditionalDependencies) - Console - - - - - - - - - - - - - - - diff --git a/PCbuild/pylauncher.vcxproj.filters b/PCbuild/pylauncher.vcxproj.filters deleted file mode 100644 index f10f6d5669e283c..000000000000000 --- a/PCbuild/pylauncher.vcxproj.filters +++ /dev/null @@ -1,28 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Resource Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/PCbuild/pyshellext.vcxproj b/PCbuild/pyshellext.vcxproj deleted file mode 100644 index ea432d6bc9a3f33..000000000000000 --- a/PCbuild/pyshellext.vcxproj +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Debug - ARM - - - Debug - ARM64 - - - Debug - Win32 - - - Debug - x64 - - - PGInstrument - ARM - - - PGInstrument - ARM64 - - - PGInstrument - Win32 - - - PGInstrument - x64 - - - PGUpdate - ARM - - - PGUpdate - ARM64 - - - PGUpdate - Win32 - - - PGUpdate - x64 - - - Release - ARM - - - Release - ARM64 - - - Release - Win32 - - - Release - x64 - - - - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782} - pyshellext - pyshellext - false - - - - - DynamicLibrary - Unicode - - - - - - ClCompile - - - - - - - - - _CONSOLE;%(PreprocessorDefinitions) - - - version.lib;shlwapi.lib;%(AdditionalDependencies) - Console - ..\PC\pyshellext.def - - - true - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PCbuild/pyshellext.vcxproj.filters b/PCbuild/pyshellext.vcxproj.filters deleted file mode 100644 index 77cd3060857a80b..000000000000000 --- a/PCbuild/pyshellext.vcxproj.filters +++ /dev/null @@ -1,28 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Resource Files - - - - - Source Files - - - \ No newline at end of file diff --git a/PCbuild/pywlauncher.vcxproj b/PCbuild/pywlauncher.vcxproj deleted file mode 100644 index 1694548935a1653..000000000000000 --- a/PCbuild/pywlauncher.vcxproj +++ /dev/null @@ -1,114 +0,0 @@ - - - - - Debug - ARM - - - Debug - ARM64 - - - Debug - Win32 - - - Debug - x64 - - - PGInstrument - ARM - - - PGInstrument - ARM64 - - - PGInstrument - Win32 - - - PGInstrument - x64 - - - PGUpdate - ARM - - - PGUpdate - ARM64 - - - PGUpdate - Win32 - - - PGUpdate - x64 - - - Release - ARM - - - Release - ARM64 - - - Release - Win32 - - - Release - x64 - - - - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6} - pywlauncher - pyw - false - - - - - Application - Unicode - - - - - - ClCompile - - - - - - - - - _WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - - - shell32.lib;pathcch.lib;%(AdditionalDependencies) - Windows - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PCbuild/pywlauncher.vcxproj.filters b/PCbuild/pywlauncher.vcxproj.filters deleted file mode 100644 index f10f6d5669e283c..000000000000000 --- a/PCbuild/pywlauncher.vcxproj.filters +++ /dev/null @@ -1,28 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Resource Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 7739264f56ccc27..7751bdeb1a3077b 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -23,7 +23,7 @@ external dependencies. To build, simply run the "build.bat" script without any arguments. After this succeeds, you can open the "pcbuild.sln" solution in Visual Studio to continue development. -To build an installer package, refer to the README in the Tools/msi folder. +To build an installer package, refer to PC/layout. The solution currently supports two platforms. The Win32 platform is used to build standard x86-compatible 32-bit binaries, output into the @@ -140,12 +140,6 @@ CPython in different ways: pythonw pythonw.exe, a variant of python.exe that doesn't open a Command Prompt window -pylauncher - py.exe, the Python Launcher for Windows, see - https://docs.python.org/3/using/windows.html#launcher -pywlauncher - pyw.exe, a variant of py.exe that doesn't open a Command Prompt - window _testembed _testembed.exe, a small program that embeds Python for testing purposes, used by test_capi.py @@ -156,8 +150,6 @@ _freeze_module _freeze_module.exe, used to regenerate frozen modules in Python after changes have been made to the corresponding source files (e.g. Lib\importlib\_bootstrap.py). -pyshellext - pyshellext.dll, the shell extension deployed with the launcher python3dll python3.dll, the PEP 384 Stable ABI dll (not installed on free-threaded builds) @@ -420,8 +412,6 @@ _testclinic_limited extension, the file Modules/_testclinic_limited.c: * Save and exit Visual Studio. * Add `;_testclinic_limited` to `` in PCbuild\pcbuild.proj. -* Update "exts" in Tools\msi\lib\lib_files.wxs file or in - Tools\msi\test\test_files.wxs file (for tests). * PC\layout\main.py needs updating if you add a test-only extension whose name doesn't start with "_test". * Add the extension to PCbuild\readme.txt (this file). diff --git a/PCbuild/venvlauncher.vcxproj b/PCbuild/venvlauncher.vcxproj index a2e8ffa82b10eb7..7afe923406b1d18 100644 --- a/PCbuild/venvlauncher.vcxproj +++ b/PCbuild/venvlauncher.vcxproj @@ -110,10 +110,7 @@ - - - - + diff --git a/PCbuild/venvlauncher.vcxproj.filters b/PCbuild/venvlauncher.vcxproj.filters index bc98687a6da0d3e..62839fd6b8e863f 100644 --- a/PCbuild/venvlauncher.vcxproj.filters +++ b/PCbuild/venvlauncher.vcxproj.filters @@ -9,12 +9,7 @@ - - Resource Files - - - - + Resource Files diff --git a/PCbuild/venvwlauncher.vcxproj b/PCbuild/venvwlauncher.vcxproj index f2aaf83fe2b3785..3aa0bb2cdefeaa8 100644 --- a/PCbuild/venvwlauncher.vcxproj +++ b/PCbuild/venvwlauncher.vcxproj @@ -110,10 +110,7 @@ - - - - + diff --git a/PCbuild/venvwlauncher.vcxproj.filters b/PCbuild/venvwlauncher.vcxproj.filters index 5193c38b12d53d5..babded59633f1f1 100644 --- a/PCbuild/venvwlauncher.vcxproj.filters +++ b/PCbuild/venvwlauncher.vcxproj.filters @@ -14,12 +14,7 @@ - - Resource Files - - - - + Resource Files diff --git a/README.rst b/README.rst index 48f86cdb86ed1d2..8505ec0a1e89dc7 100644 --- a/README.rst +++ b/README.rst @@ -76,8 +76,8 @@ to macOS framework and universal builds. Refer to `Mac/README.rst On Windows, see `PCbuild/readme.txt `_. -To build Windows installer, see `Tools/msi/README.txt -`_. +To build Windows packages, see `PC/layout/README.md +`_. If you wish, you can create a subdirectory and invoke configure from there. For example:: diff --git a/Tools/README b/Tools/README index 90acb2614820ee4..3984bce6b9b6768 100644 --- a/Tools/README +++ b/Tools/README @@ -34,10 +34,6 @@ jit Tooling for building the JIT. lockbench Benchmarks for PyMutex and critical sections. -msi Support for packaging Python as an MSI package on Windows. - -nuget Files for the NuGet package manager for .NET. - patchcheck Tools for checking and applying patches to the Python source code and verifying the integrity of patch files. diff --git a/Tools/build/compute-changes.py b/Tools/build/compute-changes.py index 53d7b8fe32f89e6..4d491cc79ad0c8e 100644 --- a/Tools/build/compute-changes.py +++ b/Tools/build/compute-changes.py @@ -117,7 +117,6 @@ class Outputs: run_tests: bool = False run_ubuntu: bool = False run_wasi: bool = False - run_windows_msi: bool = False run_windows_tests: bool = False @@ -160,9 +159,6 @@ def compute_changes() -> None: if outputs.run_docs: print("Build documentation") - if outputs.run_windows_msi: - print("Build Windows MSI") - print(outputs) write_github_output(outputs) @@ -223,7 +219,6 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs: run_ci_fuzz_stdlib = False run_docs = False run_windows_tests = False - run_windows_msi = False platforms_changed = set() has_platform_specific_change = True @@ -245,9 +240,6 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs: run_tests = True run_windows_tests = True continue - if file.name == "reusable-windows-msi.yml": - run_windows_msi = True - continue if file.name == "reusable-macos.yml": run_tests = True platforms_changed.add("macos") @@ -288,10 +280,6 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs: if doc_file: run_docs = True - # Check for changed MSI installer-related files - if file.parts[:2] == ("Tools", "msi"): - run_windows_msi = True - # Check which platform specific tests to run if run_tests: if not has_platform_specific_change or not platforms_changed: @@ -327,7 +315,6 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs: run_tests=run_tests, run_ubuntu=run_ubuntu, run_wasi=run_wasi, - run_windows_msi=run_windows_msi, run_windows_tests=run_windows_tests, ) @@ -342,7 +329,6 @@ def process_target_branch(outputs: Outputs, git_branch: str) -> Outputs: if os.environ.get("GITHUB_EVENT_NAME", "").lower() == "workflow_dispatch": outputs.run_docs = True - outputs.run_windows_msi = True return outputs diff --git a/Tools/buildbot/buildmsi.bat b/Tools/buildbot/buildmsi.bat index 6804d794799509b..b0e196df2649be6 100644 --- a/Tools/buildbot/buildmsi.bat +++ b/Tools/buildbot/buildmsi.bat @@ -3,7 +3,9 @@ setlocal pushd -@rem build both snapshot MSIs -call "%~dp0..\msi\build.bat" -x86 -x64 +@rem The MSI project is gone, so instead we will just +@rem build and then do a default layout. +call "%~dp0..\..\PCbuild\build.bat" -e -k -v %* +call "%~dp0..\..\python.exe" "%~dp0..\..\PC\layout" --preset-default -o "%~dp0..\..\PCbuild\output" popd \ No newline at end of file diff --git a/Tools/msi/README.txt b/Tools/msi/README.txt deleted file mode 100644 index 4b3de9e82f6f1ac..000000000000000 --- a/Tools/msi/README.txt +++ /dev/null @@ -1,530 +0,0 @@ -Quick Build Info -================ - -For testing, the installer should be built with the Tools/msi/build.bat -script: - - build.bat [-x86] [-x64] [-ARM64] [--doc] - -For an official release, the installer should be built with the -Tools/msi/buildrelease.bat script and environment variables: - - set PYTHON= - set SPHINXBUILD= - set PATH=;%PATH% - - buildrelease.bat [-x86] [-x64] [-ARM64] [-D] [-B] - [-o ] [-c ] - -See the Building the Installer section for more information. - -Overview -======== - -Python is distributed on Windows as an installer that will configure the -user's system. This allows users to have a functioning copy of Python -without having to build it themselves. - -The main tasks of the installer are: - -* copy required files into the expected layout -* configure system settings so the installation can be located by - other programs -* add entry points for modifying, repairing and uninstalling Python -* make it easy to launch Python, its documentation, and IDLE - -Each of these is discussed in a later section of this document. - -Structure of the Installer -========================== - -The installer is structured as a 'layout', which consists of a number of -CAB and MSI files and a single EXE. - -The EXE is the main entry point into the installer. It contains the UI -and command-line logic, as well as the ability to locate and optionally -download other parts of the layout. - -Each MSI contains the logic required to install a component or feature -of Python. These MSIs should not be launched directly by users. MSIs can -be embedded into the EXE or automatically downloaded as needed. - -Each CAB contains the files making up a Python installation. CABs are -embedded into their associated MSI and are never seen by users. - -MSIs are only required when the related feature or component is being -installed. When components are not selected for installation, the -associated MSI is not downloaded. This allows the installer to offer -options to install debugging symbols and binaries without increasing -the initial download size by separating them into their own MSIs. - -Building the Installer -====================== - -Before building the installer, download the extra build dependencies -using Tools\msi\get_externals.bat. (Note that this is in addition to the -similarly named file in PCbuild.) - -One of the dependencies used in the build process is WiX, a toolset that -allows developers to create installers for Windows Installer, the -Windows installation engine. If you're not using the copy of WiX -installed by Tools\msi\get_externals.bat, you'll need to set the -"WixInstallPath" environment variable before building. - -Additionally, ensure that "MSVC v14x - VS 20xx C++ ARM64/ARM64EC build tools" -is selected under "Desktop Development with C++" in the "Visual Studio Installer", -even if you're not building on ARM64. This is required because we've upgraded -to WiX 3.14, which requires these tools for Python 3.10 and later versions. - -For testing, the installer should be built with the Tools/msi/build.bat -script: - - build.bat [-x86] [-x64] [-ARM64] [--doc] [--test-marker] [--pack] - -This script will build the required configurations of Python and -generate an installer layout in PCbuild/(win32|amd64)/en-us. - -Specify -x86, -x64 and/or -ARM64 to build for each platform. If none are -specified, both x64 and x86 will be built. Currently, both the debug and -release versions of Python are required for the installer. - -Specify --doc to include the documentation files. Ensure %PYTHON% and -%SPHINXBUILD% are set when passing this option. - -Specify --test-marker to build an installer that works side-by-side with -an official Python release. All registry keys and install locations will -include an extra marker to avoid overwriting files. This marker is -currently an 'x' prefix, but may change at any time. - -Specify --pack to build an installer that does not require all MSIs to -be available alongside. This takes longer, but is easier to share. - - -For an official release, the installer should be built with the -Tools/msi/buildrelease.bat script: - - set PYTHON= - set SPHINXBUILD= - set PATH=;%PATH% - - buildrelease.bat [-x86] [-x64] [-ARM64] [-D] [-B] - [-o ] [-c ] - -Specify -x86, -x64 and/or -ARM64 to build for each platform. If none are -specified, both x64 and x86 will be built. Currently, both the debug and -release versions of Python are required for the installer. - -Specify -D to skip rebuilding the documentation. The documentation is -required for a release and the build will fail if it is not available. -Ensure %PYTHON% and %SPHINXBUILD% are set if you omit this option. - -Specify -B to skip rebuilding Python. This is useful to only rebuild the -installer layout after a previous call to buildrelease.bat. - -Specify -o to set an output directory. The installer layouts will be -copied to platform-specific subdirectories of this path. - -Specify -c to choose a code-signing certificate to be used for all the -signable binaries in Python as well as each file making up the -installer. Official releases of Python must be signed. - - -If WiX is not found on your system, it will be automatically downloaded -and extracted to the externals/ directory. - -To manually build layouts of the installer, build one of the projects in -the bundle folder. - - msbuild bundle\snapshot.wixproj - msbuild bundle\releaseweb.wixproj - msbuild bundle\releaselocal.wixproj - msbuild bundle\full.wixproj - -snapshot.wixproj produces a test installer versioned based on the date. - -releaseweb.wixproj produces a release installer that does not embed any -of the layout. - -releaselocal.wixproj produces a release installer that embeds the files -required for a default installation. - -full.wixproj produces a test installer that embeds the entire layout. - -The following properties may be passed when building these projects. - - /p:BuildForRelease=(true|false) - When true, adds extra verification to ensure a complete installer is - produced. Defaults to false. - - /p:ReleaseUri=(any URI) - Used to generate unique IDs for the installers to allow side-by-side - installation. Forks of Python can use the same installer infrastructure - by providing a unique URI for this property. It does not need to be an - active internet address. Defaults to $(ComputerName). - - Official releases use https://www.python.org/(architecture name) - - /p:DownloadUrlBase=(any URI) - Specifies the base of a URL where missing parts of the installer layout - can be downloaded from. The build version and architecture will be - appended to create the full address. If omitted, missing components will - not be automatically downloaded. - - /p:DownloadUrl=(any URI) - Specifies the full URL where missing parts of the installer layout can - be downloaded from. Should normally include '{2}', which will be - substituted for the filename. If omitted, missing components will not be - automatically downloaded. If specified, this value overrides - DownloadUrlBase. - - /p:SigningCertificate=(certificate name) - Specifies the certificate to sign the installer layout with. If omitted, - the layout will not be signed. - - /p:RebuildAll=(true|false) - When true, rebuilds all of the MSIs making up the layout. Defaults to - true. - -Uploading the Installer -======================= - -For official releases, the uploadrelease.bat script should be used. - -You will require PuTTY so that plink.exe and pscp.exe can be used, and your -SSH key can be activated in pageant.exe. PuTTY should be either on your path -or in %ProgramFiles(x86)%\PuTTY. - -To include signatures for each uploaded file, you will need gpg2.exe on your -path or have run get_externals.bat. You may also need to "gpg2.exe --import" -your key before running the upload script. - - uploadrelease.bat --host --user [--dry-run] [--no-gpg] - -The host is the URL to the server. This can be provided by the Release -Manager. You should be able to SSH to this address. - -The username is your own username, which you have permission to SSH into -the server containing downloads. - -Use --dry-run to display the generated upload commands without executing -them. Signatures for each file will be generated but not uploaded unless ---no-gpg is also passed. - -Use --no-gpg to suppress signature generation and upload. - -The default target directory (which appears in uploadrelease.proj) is -correct for official Python releases, but may be overridden with ---target for other purposes. This path should generally not include -any version specifier, as that will be added automatically. - -Modifying the Installer -======================= - -The code for the installer is divided into three main groups: packages, -the bundle and the bootstrap application. - -Packages --------- - -Packages appear as subdirectories of Tools/msi (other than the bundle/ -directory). The project file is a .wixproj and the build output is a -single MSI. Packages are built with the WiX Toolset. Some project files -share source files and use preprocessor directives to enable particular -features. These are typically used to keep the sources close when the -files are related, but produce multiple independent packages. - -A package is the smallest element that may be independently installed or -uninstalled (as used in this installer). For example, the test suite has -its own package, as users can choose to add or remove it after the -initial installation. - -All the files installed by a single package should be related, though -some packages may not install any files. For example, the pip package -executes the ensurepip package, but does not add or remove any of its -own files. (It is represented as a package because of its -installed/uninstalled nature, as opposed to the "precompile standard -library" option, for example.) Dependencies between packages are handled -by the bundle, but packages should detect when dependencies are missing -and raise an error. - -Packages that include a lot of files may use an InstallFiles element in -the .wixproj file to generate sources. See lib/lib.wixproj for an -example, and msi.targets and csv_to_wxs.py for the implementation. This -element is also responsible for generating the code for cleaning up and -removing __pycache__ folders in any directory containing .py files. - -All packages are built with the Tools/msi/common.wxs file, and so any -directory or property in this file may be referenced. Of particular -interest: - - REGISTRYKEY (property) - The registry key for the current installation. - - InstallDirectory (directory) - The root install directory for the current installation. Subdirectories - are also specified in this file (DLLs, Lib, etc.) - - MenuDir (directory) - The Start Menu folder for the current installation. - - UpgradeTable (property) - Every package should reference this property to include upgrade - information. - - OptionalFeature (Component) - Packages that may be enabled or disabled should reference this component - and have an OPTIONAL_FEATURES entry in the bootstrap application to - properly handle Modify and Upgrade. - -The .wxl_template file is specially handled by the build system for this -project to perform {{substitutions}} as defined in msi.targets. They -should be included in projects as items, where .wxl files -are normally included as items. - -Bundle ------- - -The bundle is compiled to the main EXE entry point that for most users -will represent the Python installer. It is built from Tools/msi/bundle -with packages references in Tools/msi/bundle/packagegroups. - -Build logic for the bundle is in bundle.targets, but should be invoked -through one of the .wixproj files as described in Building the -Installer. - -The UI is separated between Default.thm (UI layout), Default.wxl -(strings), bundle.wxs (properties) and the bootstrap application. -Bundle.wxs also contains the chain, which is the list of packages to -install and the order they should be installed in. These refer to named -package groups in bundle/packagegroups. - -Each package group specifies one or more packages to install. Most -packages require two separate entries to support both per-user and -all-users installations. Because these reuse the same package, it does -not increase the overall size of the package. - -Package groups refer to payload groups, which allow better control over -embedding and downloading files than the default settings. Whether files -are embedded and where they are downloaded from depends on settings -created by the project files. - -Package references can include install conditions that determine when to -install the package. When a package is a dependency for others, the -condition should be crafted to ensure it is installed. - -MSI packages are installed or uninstalled based on their current state -and the install condition. This makes them most suitable for features -that are clearly present or absent from the user's machine. - -EXE packages are executed based on a customisable condition that can be -omitted. This makes them suitable for pre- or post-install tasks that -need to run regardless of whether features have been added or removed. - -Bootstrap Application ---------------------- - -The bootstrap application is a C++ application that controls the UI and -installation. While it does not directly compile into the main EXE of -the installer, it forms the main active component. Most of the -installation functionality is provided by WiX, and so the bootstrap -application is predominantly responsible for the code behind the UI that -is defined in the Default.thm file. The bootstrap application code is in -bundle/bootstrap and is built automatically when building the bundle. - -Installation Layout -=================== - -There are two installation layouts for Python on Windows, with the only -differences being supporting files. A layout is selected implicitly -based on whether the install is for all users of the machine or just for -the user performing the installation. - -The default installation location when installing for all users is -"%ProgramFiles%\Python3X" for the 64-bit interpreter and -"%ProgramFiles(x86)%\Python3X-32" for the 32-bit interpreter. (Note that -the latter path is equivalent to "%ProgramFiles%\Python3X-32" when -running a 32-bit version of Windows.) This location requires -administrative privileges to install or later modify the installation. - -The default installation location when installing for the current user -is "%LocalAppData%\Programs\Python\Python3X" for the 64-bit interpreter -and "%LocalAppData%\Programs\Python\Python3X-32" for the 32-bit -interpreter. Only the current user can access this location. This -provides a suitable level of protection against malicious modification -of Python's files. - -(Default installation locations are set in Tools\msi\bundle\bundle.wxs.) - -Within this install directory is the following approximate layout: - -.\python[w].exe The core executable files -.\python3x.dll The core interpreter -.\python3.dll The stable ABI reference -.\DLLs Stdlib extensions (*.pyd) and dependencies -.\Doc Documentation (*.html) -.\include Development headers (*.h) -.\Lib Standard library -.\Lib\test Test suite -.\libs Development libraries (*.lib) -.\Scripts Launcher scripts (*.exe, *.py) -.\tcl Tcl dependencies (*.dll, *.tcl and others) -.\Tools Tool scripts (*.py) - -When installed for all users, the following files are installed to -"%SystemRoot%" (typically "C:\Windows") to ensure they are always -available on PATH. (See Launching Python below.) For the current user, -they are installed in "%LocalAppData%\Programs\Python\PyLauncher". - -.\py[w].exe PEP 397 launcher - - -System Settings -=============== - -On installation, registry keys are created so that other applications -can locate and identify installations of Python. The locations of these -keys vary based on the install type. - -For 64-bit interpreters installed for all users, the root key is: - HKEY_LOCAL_MACHINE\Software\Python\PythonCore\3.X - -For 32-bit interpreters installed for all users on a 64-bit operating -system, the root key is: - HKEY_LOCAL_MACHINE\Software\Wow6432Node\Python\PythonCore\3.X-32 - -For 32-bit interpreters installed for all users on a 32-bit operating -system, the root key is: - HKEY_LOCAL_MACHINE\Software\Python\PythonCore\3.X-32 - -For 64-bit interpreters installed for the current user: - HKEY_CURRENT_USER\Software\Python\PythonCore\3.X - -For 32-bit interpreters installed for the current user: - HKEY_CURRENT_USER\Software\Python\PythonCore\3.X-32 - -When the core Python executables are installed, a key "InstallPath" is -created within the root key with its default value set to the -executable's install directory. A value named "ExecutablePath" is added -with the full path to the main Python interpreter, and a key -"InstallGroup" is created with its default value set to the product -name "Python 3.X". - -When the Python standard library is installed, a key "PythonPath" is -created within the root key with its default value set to the full path -to the Lib folder followed by the path to the DLLs folder, separated by -a semicolon. - -When the documentation is installed, a key "Help" is created within the -root key, with a subkey "Main Python Documentation" with its default -value set to the full path to the main index.html file. - - -The py.exe launcher is installed as part of a regular Python install, -but using a separate mechanism that allows it to more easily span -versions of Python. As a result, it has different root keys for its -registry entries: - -When installed for all users on a 64-bit operating system, the -launcher's root key is: - HKEY_LOCAL_MACHINE\Software\Wow6432Node\Python\Launcher - -When installed for all users on a 32-bit operating system, the -launcher's root key is: - HKEY_LOCAL_MACHINE\Software\Python\Launcher - -When installed for the current user: - HKEY_CURRENT_USER\Software\Python\Launcher - -When the launcher is installed, a key "InstallPath" is created within -its root key with its default value set to the launcher's install -directory. File associations are also created for .py, .pyw, .pyc and -.pyo files. - -Launching Python -================ - -When a feature offering user entry points in the Start Menu is -installed, a folder "Python 3.X" is created. Every shortcut should be -created within this folder, and each shortcut should include the version -and platform to allow users to identify the shortcut in a search results -page. - -The core Python executables creates a shortcut "Python 3.X (32-bit)" or -"Python 3.X (64-bit)" depending on the interpreter. - -The documentation creates a shortcut "Python 3.X 32-bit Manuals" or -"Python 3.X 64-bit Manuals". The documentation is identical for all -platforms, but the shortcuts need to be separate to avoid uninstallation -conflicts. - -Installing IDLE creates a shortcut "IDLE (Python 3.X 32-bit)" or "IDLE -(Python 3.X 64-bit)" depending on the interpreter. - - -For users who often launch Python from a Command Prompt, an option is -provided to add the directory containing python.exe to the user or -system PATH variable. If the option is selected, the install directory -and the Scripts directory will be added at the start of the system PATH -for an all users install and the user PATH for a per-user install. - -When the user only has one version of Python installed, this will behave -as expected. However, because Windows searches the system PATH before -the user PATH, users cannot override a system-wide installation of -Python on their PATH. Further, because the installer can only prepend to -the path, later installations of Python will take precedence over -earlier installations, regardless of interpreter version. - -Because it is not possible to automatically create a sensible PATH -configuration, users are recommended to use the py.exe launcher and -manually modify their PATH variable to add Scripts directories in their -preferred order. System-wide installations of Python should consider not -modifying PATH, or using an alternative technology to modify their -users' PATH variables. - - -The py.exe launcher is recommended because it uses a consistent and -sensible search order for Python installations. User installations are -preferred over system-wide installs, and later versions are preferred -regardless of installation order (with the exception that py.exe -currently prefers 2.x versions over 3.x versions without the -3 command -line argument). - -For both 32-bit and 64-bit interpreters, the 32-bit version of the -launcher is installed. This ensures that the search order is always -consistent (as the 64-bit launcher is subtly different from the 32-bit -launcher) and also avoids the need to install it multiple times. Future -versions of Python will upgrade the launcher in-place, using Windows -Installer's upgrade functionality to avoid conflicts with earlier -installed versions. - -When installed, file associations are created for .py, .pyc and .pyo -files to launch with py.exe and .pyw files to launch with pyw.exe. This -makes Python files respect shebang lines by default and also avoids -conflicts between multiple Python installations. - - -Repair, Modify and Uninstall -============================ - -After installation, Python may be modified, repaired or uninstalled by -running the original EXE again or via the Programs and Features applet -(formerly known as Add or Remove Programs). - -Modifications allow features to be added or removed. The install -directory and kind (all users/single user) cannot be modified. Because -Windows Installer caches installation packages, removing features will -not require internet access unless the package cache has been corrupted -or deleted. Adding features that were not previously installed and are -not embedded or otherwise available will require internet access. - -Repairing will rerun the installation for all currently installed -features, restoring files and registry keys that have been modified or -removed. This operation generally will not redownload any files unless -the cached packages have been corrupted or deleted. - -Removing Python will clean up all the files and registry keys that were -created by the installer, as well as __pycache__ folders that are -explicitly handled by the installer. Python packages installed later -using a tool like pip will not be removed. Some components may be -installed by other installers and these will not be removed if another -product has a dependency on them. diff --git a/Tools/msi/appendpath/appendpath.wixproj b/Tools/msi/appendpath/appendpath.wixproj deleted file mode 100644 index 897087678c56f63..000000000000000 --- a/Tools/msi/appendpath/appendpath.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {12B59A06-37CC-4558-A9C8-DAE922E64EF3} - 2.0 - appendpath - Package - ICE71 - - - - - - - - - - - diff --git a/Tools/msi/appendpath/appendpath.wxs b/Tools/msi/appendpath/appendpath.wxs deleted file mode 100644 index bba186cf60fd10a..000000000000000 --- a/Tools/msi/appendpath/appendpath.wxs +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - NOT ALLUSERS=1 - - - - - - - - - - - - ALLUSERS=1 - - - - - - - - - - - - - - - - diff --git a/Tools/msi/appendpath/appendpath_en-US.wxl b/Tools/msi/appendpath/appendpath_en-US.wxl deleted file mode 100644 index 19a2e7734f8c31e..000000000000000 --- a/Tools/msi/appendpath/appendpath_en-US.wxl +++ /dev/null @@ -1,6 +0,0 @@ - - - Append to Path - AppendPath - No !(loc.ProductName) installation was detected. - diff --git a/Tools/msi/build.bat b/Tools/msi/build.bat deleted file mode 100644 index 2fe8a475e7e3a30..000000000000000 --- a/Tools/msi/build.bat +++ /dev/null @@ -1,103 +0,0 @@ -@echo off -setlocal -set D=%~dp0 -set PCBUILD=%D%..\..\PCbuild\ - -set BUILDX86= -set BUILDX64= -set BUILDARM64= -set BUILDDOC= -set BUILDTEST= -set BUILDPACK= -set REBUILD= - -:CheckOpts -if "%~1" EQU "-h" goto Help -if /I "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts -if /I "%~1" EQU "-Win32" (set BUILDX86=1) && shift && goto CheckOpts -if /I "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts -if /I "%~1" EQU "-arm64" (set BUILDARM64=1) && shift && goto CheckOpts -if "%~1" EQU "--doc" (set BUILDDOC=1) && shift && goto CheckOpts -if "%~1" EQU "--no-test-marker" (set BUILDTEST=) && shift && goto CheckOpts -if "%~1" EQU "--test-marker" (set BUILDTEST=--test-marker) && shift && goto CheckOpts -if "%~1" EQU "--pack" (set BUILDPACK=1) && shift && goto CheckOpts -if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts -rem %IncludeFreethreaded% is recognised by the MSI build, but not the regular build. -rem We use it to build twice and then build the installer with its extra option -if /I "%~1" EQU "--disable-gil" (set IncludeFreethreaded=true) && shift && goto CheckOpts - -if not defined BUILDX86 if not defined BUILDX64 if not defined BUILDARM64 (set BUILDX86=1) && (set BUILDX64=1) - -call "%D%get_externals.bat" -call "%PCBUILD%find_msbuild.bat" %MSBUILD% -if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2) - -if defined BUILDX86 call "%PCBUILD%build.bat" -p Win32 -d -e %REBUILD% %BUILDTEST% -if errorlevel 1 exit /B %ERRORLEVEL% -if defined BUILDX86 call "%PCBUILD%build.bat" -p Win32 -e %REBUILD% %BUILDTEST% -if errorlevel 1 exit /B %ERRORLEVEL% - -if defined BUILDX64 call "%PCBUILD%build.bat" -p x64 -d -e %REBUILD% %BUILDTEST% -if errorlevel 1 exit /B %ERRORLEVEL% -if defined BUILDX64 call "%PCBUILD%build.bat" -p x64 -e %REBUILD% %BUILDTEST% -if errorlevel 1 exit /B %ERRORLEVEL% - -if defined BUILDARM64 call "%PCBUILD%build.bat" -p ARM64 -d -e %REBUILD% %BUILDTEST% -if errorlevel 1 exit /B %ERRORLEVEL% -if defined BUILDARM64 call "%PCBUILD%build.bat" -p ARM64 -e %REBUILD% %BUILDTEST% -if errorlevel 1 exit /B %ERRORLEVEL% - -if /I "%IncludeFreethreaded%"=="true" ( - rem Cannot "exit /B" inside an if block because %ERRORLEVEL% will be wrong. - rem We just skip everything after the first "errorlevel 1" and then exit after - if defined BUILDX86 call "%PCBUILD%build.bat" -p Win32 -d -e %REBUILD% %BUILDTEST% --disable-gil - if not errorlevel 1 if defined BUILDX86 call "%PCBUILD%build.bat" -p Win32 -e %REBUILD% %BUILDTEST% --disable-gil - - if not errorlevel 1 if defined BUILDX64 call "%PCBUILD%build.bat" -p x64 -d -e %REBUILD% %BUILDTEST% --disable-gil - if not errorlevel 1 if defined BUILDX64 call "%PCBUILD%build.bat" -p x64 -e %REBUILD% %BUILDTEST% --disable-gil - - if not errorlevel 1 if defined BUILDARM64 call "%PCBUILD%build.bat" -p ARM64 -d -e %REBUILD% %BUILDTEST% --disable-gil - if not errorlevel 1 if defined BUILDARM64 call "%PCBUILD%build.bat" -p ARM64 -e %REBUILD% %BUILDTEST% --disable-gil -) -if errorlevel 1 exit /B %ERRORLEVEL% - -if defined BUILDDOC call "%PCBUILD%..\Doc\make.bat" html -if errorlevel 1 exit /B %ERRORLEVEL% - -rem Build the launcher MSI separately -%MSBUILD% "%D%launcher\launcher.wixproj" /p:Platform=x86 -if errorlevel 1 exit /B %ERRORLEVEL% - -set BUILD_CMD="%D%bundle\snapshot.wixproj" -if defined BUILDTEST ( - set BUILD_CMD=%BUILD_CMD% /p:UseTestMarker=true -) -if defined BUILDPACK ( - set BUILD_CMD=%BUILD_CMD% /p:Pack=true -) -if defined REBUILD ( - set BUILD_CMD=%BUILD_CMD% /t:Rebuild -) - -if defined BUILDX86 %MSBUILD% /p:Platform=x86 %BUILD_CMD% -if errorlevel 1 exit /B %ERRORLEVEL% - -if defined BUILDX64 %MSBUILD% /p:Platform=x64 %BUILD_CMD% -if errorlevel 1 exit /B %ERRORLEVEL% - -if defined BUILDARM64 %MSBUILD% /p:Platform=ARM64 %BUILD_CMD% -if errorlevel 1 exit /B %ERRORLEVEL% - -exit /B 0 - -:Help -echo build.bat [-x86] [-x64] [-arm64] [--doc] [-h] [--test-marker] [--pack] [-r] -echo. -echo -x86 Build x86 installers -echo -x64 Build x64 installers -echo -ARM64 Build ARM64 installers -echo --doc Build documentation -echo --test-marker Build with test markers -echo --no-test-marker Build without test markers (default) -echo --pack Embed core MSIs into installer -echo -r Rebuild rather than incremental build diff --git a/Tools/msi/buildrelease.bat b/Tools/msi/buildrelease.bat deleted file mode 100644 index 77fb47792088531..000000000000000 --- a/Tools/msi/buildrelease.bat +++ /dev/null @@ -1,261 +0,0 @@ -@setlocal -@echo off - -rem This script is intended for building official releases of Python. -rem To use it to build alternative releases, you should clone this file -rem and modify the following three URIs. - -rem These two will ensure that your release can be installed -rem alongside an official Python release, by modifying the GUIDs used -rem for all components. -rem -rem The following substitutions will be applied to the release URI: -rem Variable Description Example -rem {arch} architecture amd64, win32 -rem Do not change the scheme to https. Otherwise, releases built with this -rem script will not be upgradable to/from official releases of Python. -set RELEASE_URI=http://www.python.org/{arch} - -rem This is the URL that will be used to download installation files. -rem The files available from the default URL *will* conflict with your -rem installer. Trust me, you don't want them, even if it seems like a -rem good idea. -rem -rem The following substitutions will be applied to the download URL: -rem Variable Description Example -rem {version} version number 3.5.0 -rem {arch} architecture amd64, win32 -rem {releasename} release name a1, b2, rc3 (or blank for final) -rem {msi} MSI filename core.msi -set DOWNLOAD_URL=https://www.python.org/ftp/python/{version}/{arch}{releasename}/{msi} - -set D=%~dp0 -set PCBUILD=%D%..\..\PCbuild\ -if NOT DEFINED Py_OutDir set Py_OutDir=%PCBUILD% -set EXTERNALS=%D%..\..\externals\windows-installer\ - -set BUILDX86= -set BUILDX64= -set BUILDARM64= -set TARGET=Rebuild -set TESTTARGETDIR= -set PGO=-m test -q --pgo -set BUILDMSI=1 -set BUILDNUGET=1 -set BUILDZIP=1 - - -:CheckOpts -if "%1" EQU "-h" goto Help -if "%1" EQU "-c" (set CERTNAME=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--certificate" (set CERTNAME=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-o" (set OUTDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--out" (set OUTDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-D" (set SKIPDOC=1) && shift && goto CheckOpts -if "%1" EQU "--skip-doc" (set SKIPDOC=1) && shift && goto CheckOpts -if "%1" EQU "-B" (set SKIPBUILD=1) && shift && goto CheckOpts -if "%1" EQU "--skip-build" (set SKIPBUILD=1) && shift && goto CheckOpts -if "%1" EQU "--download" (set DOWNLOAD_URL=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--test" (set TESTTARGETDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-b" (set TARGET=Build) && shift && goto CheckOpts -if "%1" EQU "--build" (set TARGET=Build) && shift && goto CheckOpts -if /I "%1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts -if /I "%1" EQU "-Win32" (set BUILDX86=1) && shift && goto CheckOpts -if /I "%1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts -if /I "%1" EQU "-arm64" (set BUILDARM64=1) && shift && goto CheckOpts -if "%1" EQU "--pgo" (set PGO=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--skip-pgo" (set PGO=) && shift && goto CheckOpts -if "%1" EQU "--skip-nuget" (set BUILDNUGET=) && shift && goto CheckOpts -if "%1" EQU "--skip-zip" (set BUILDZIP=) && shift && goto CheckOpts -if "%1" EQU "--skip-msi" (set BUILDMSI=) && shift && goto CheckOpts - -if "%1" NEQ "" echo Invalid option: "%1" && exit /B 1 - -if not defined BUILDX86 if not defined BUILDX64 if not defined BUILDARM64 (set BUILDX86=1) && (set BUILDX64=1) - -if not exist "%GIT%" where git > "%TEMP%\git.loc" 2> nul && set /P GIT= < "%TEMP%\git.loc" & del "%TEMP%\git.loc" -if not exist "%GIT%" echo Cannot find Git on PATH && exit /B 1 - -call "%D%get_externals.bat" -call "%PCBUILD%find_msbuild.bat" %MSBUILD% -if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2) - -:builddoc -if "%SKIPBUILD%" EQU "1" goto skipdoc -if "%SKIPDOC%" EQU "1" goto skipdoc - -call "%D%..\..\doc\make.bat" html -if errorlevel 1 exit /B %ERRORLEVEL% -:skipdoc - -if defined BUILDX86 ( - call :build x86 - if errorlevel 1 exit /B %ERRORLEVEL% -) - -if defined BUILDX64 ( - call :build x64 "%PGO%" - if errorlevel 1 exit /B %ERRORLEVEL% -) - -if defined BUILDARM64 ( - call :build ARM64 - if errorlevel 1 exit /B %ERRORLEVEL% -) - -if defined TESTTARGETDIR ( - call "%D%testrelease.bat" -t "%TESTTARGETDIR%" - if errorlevel 1 exit /B %ERRORLEVEL% -) - -exit /B 0 - -:build -@setlocal -@echo off - -if "%1" EQU "x86" ( - set PGO= - set BUILD=%Py_OutDir%win32\ - set BUILD_PLAT=Win32 - set OUTDIR_PLAT=win32 - set OBJDIR_PLAT=x86 -) else if "%1" EQU "x64" ( - set BUILD=%Py_OutDir%amd64\ - set PGO=%~2 - set BUILD_PLAT=x64 - set OUTDIR_PLAT=amd64 - set OBJDIR_PLAT=x64 -) else if "%1" EQU "ARM64" ( - set BUILD=%Py_OutDir%arm64\ - set PGO=%~2 - set BUILD_PLAT=ARM64 - set OUTDIR_PLAT=arm64 - set OBJDIR_PLAT=arm64 -) else ( - echo Unknown platform %1 - exit /B 1 -) - -if exist "%BUILD%en-us" ( - echo Deleting %BUILD%en-us - rmdir /q/s "%BUILD%en-us" - if errorlevel 1 exit /B %ERRORLEVEL% -) - -if exist "%D%obj\Debug_%OBJDIR_PLAT%" ( - echo Deleting "%D%obj\Debug_%OBJDIR_PLAT%" - rmdir /q/s "%D%obj\Debug_%OBJDIR_PLAT%" - if errorlevel 1 exit /B %ERRORLEVEL% -) - -if exist "%D%obj\Release_%OBJDIR_PLAT%" ( - echo Deleting "%D%obj\Release_%OBJDIR_PLAT%" - rmdir /q/s "%D%obj\Release_%OBJDIR_PLAT%" - if errorlevel 1 exit /B %ERRORLEVEL% -) - -if not "%CERTNAME%" EQU "" ( - set CERTOPTS="/p:SigningCertificate=%CERTNAME%" -) else ( - set CERTOPTS= -) -if not "%PGO%" EQU "" ( - set PGOOPTS=--pgo-job "%PGO%" -) else ( - set PGOOPTS= -) -if not "%SKIPBUILD%" EQU "1" ( - @echo call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -t %TARGET% %PGOOPTS% %CERTOPTS% - @call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -t %TARGET% %PGOOPTS% %CERTOPTS% - @if errorlevel 1 exit /B %ERRORLEVEL% - @rem build.bat turns echo back on, so we disable it again - @echo off - - @echo call "%PCBUILD%build.bat" -d -e -p %BUILD_PLAT% -t %TARGET% - @call "%PCBUILD%build.bat" -d -e -p %BUILD_PLAT% -t %TARGET% - @if errorlevel 1 exit /B %ERRORLEVEL% - @rem build.bat turns echo back on, so we disable it again - @echo off -) - -if "%OUTDIR_PLAT%" EQU "win32" ( - %MSBUILD% "%D%launcher\launcher.wixproj" /p:Platform=x86 %CERTOPTS% /p:ReleaseUri=%RELEASE_URI% - if errorlevel 1 exit /B %ERRORLEVEL% -) else if not exist "%Py_OutDir%win32\en-us\launcher.msi" ( - %MSBUILD% "%D%launcher\launcher.wixproj" /p:Platform=x86 %CERTOPTS% /p:ReleaseUri=%RELEASE_URI% - if errorlevel 1 exit /B %ERRORLEVEL% -) - -set BUILDOPTS=/p:Platform=%1 /p:BuildForRelease=true /p:DownloadUrl=%DOWNLOAD_URL% /p:DownloadUrlBase=%DOWNLOAD_URL_BASE% /p:ReleaseUri=%RELEASE_URI% -if defined BUILDMSI ( - %MSBUILD% "%D%bundle\releaselocal.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=true - if errorlevel 1 exit /B %ERRORLEVEL% -) - -if defined BUILDZIP ( - if "%BUILD_PLAT%" EQU "ARM64" ( - echo Skipping embeddable ZIP generation for ARM64 platform - ) else ( - %MSBUILD% "%D%make_zip.proj" /t:Build %BUILDOPTS% %CERTOPTS% /p:OutputPath="%BUILD%en-us" - if errorlevel 1 exit /B %ERRORLEVEL% - ) -) - -if defined BUILDNUGET ( - if "%BUILD_PLAT%" EQU "ARM64" ( - echo Skipping Nuget package generation for ARM64 platform - ) else ( - %MSBUILD% "%D%..\nuget\make_pkg.proj" /t:Build /p:Configuration=Release /p:Platform=%1 /p:OutputPath="%BUILD%en-us" - if errorlevel 1 exit /B %ERRORLEVEL% - ) -) - -if not "%OUTDIR%" EQU "" ( - mkdir "%OUTDIR%\%OUTDIR_PLAT%" - mkdir "%OUTDIR%\%OUTDIR_PLAT%\binaries" - mkdir "%OUTDIR%\%OUTDIR_PLAT%\symbols" - robocopy "%BUILD%en-us" "%OUTDIR%\%OUTDIR_PLAT%" /XF "*.wixpdb" - robocopy "%BUILD%\" "%OUTDIR%\%OUTDIR_PLAT%\binaries" *.exe *.dll *.pyd /XF "_test*" /XF "*_d.*" /XF "_freeze*" /XF "tcl*" /XF "tk*" /XF "*_test.*" - robocopy "%BUILD%\" "%OUTDIR%\%OUTDIR_PLAT%\symbols" *.pdb /XF "_test*" /XF "*_d.*" /XF "_freeze*" /XF "tcl*" /XF "tk*" /XF "*_test.*" -) - -exit /B 0 - -:Help -echo buildrelease.bat [--out DIR] [-x86] [-x64] [-arm64] [--certificate CERTNAME] [--build] [--pgo COMMAND] -echo [--skip-build] [--skip-doc] [--skip-nuget] [--skip-zip] [--skip-pgo] -echo [--download DOWNLOAD URL] [--test TARGETDIR] -echo [-h] -echo. -echo --out (-o) Specify an additional output directory for installers -echo -x86 Build x86 installers -echo -x64 Build x64 installers -echo -arm64 Build ARM64 installers -echo --build (-b) Incrementally build Python rather than rebuilding -echo --skip-build (-B) Do not build Python (just do the installers) -echo --skip-doc (-D) Do not build documentation -echo --pgo Specify PGO command for x64 installers -echo --skip-pgo Build x64 installers without using PGO -echo --skip-msi Do not build executable/MSI packages -echo --skip-nuget Do not build Nuget packages -echo --skip-zip Do not build embeddable package -echo --download Specify the full download URL for MSIs -echo --test Specify the test directory to run the installer tests -echo -h Display this help information -echo. -echo If no architecture is specified, all architectures will be built. -echo If --test is not specified, the installer tests are not run. -echo. -echo For the --pgo option, any Python command line can be used, or 'default' to -echo use the default task (-m test --pgo). -echo. -echo x86 and ARM64 builds will never use PGO. ARM64 builds will never generate -echo embeddable or Nuget packages. -echo. -echo The following substitutions will be applied to the download URL: -echo Variable Description Example -echo {version} version number 3.5.0 -echo {arch} architecture amd64, win32 -echo {releasename} release name a1, b2, rc3 (or blank for final) -echo {msi} MSI filename core.msi diff --git a/Tools/msi/bundle/Default.ARM64.xsl b/Tools/msi/bundle/Default.ARM64.xsl deleted file mode 100644 index b28b3f264adbc2d..000000000000000 --- a/Tools/msi/bundle/Default.ARM64.xsl +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/Default.thm b/Tools/msi/bundle/Default.thm deleted file mode 100644 index 6e908ac373442d9..000000000000000 --- a/Tools/msi/bundle/Default.thm +++ /dev/null @@ -1,141 +0,0 @@ - - - #(loc.Caption) - Segoe UI - Segoe UI - Segoe UI - Segoe UI - Segoe UI - Segoe UI - Segoe UI - - - #(loc.HelpHeader) - - - #(loc.HelpText) - - - - #(loc.InstallHeader) - - - #(loc.InstallMessage) - - #(loc.DeprecationMessage) - - - - - #(loc.ShortInstallLauncherAllUsersLabel) - #(loc.ShortPrependPathLabel) - - - - - #(loc.InstallUpgradeHeader) - - - #(loc.InstallUpgradeMessage) - - - - - - - - #(loc.InstallHeader) - - - - - - - - #(loc.Custom1Header) - - - #(loc.Include_docLabel) - #(loc.Include_docHelpLabel) - - #(loc.Include_pipLabel) - #(loc.Include_pipHelpLabel) - - #(loc.Include_tcltkLabel) - #(loc.Include_tcltkHelpLabel) - - #(loc.Include_testLabel) - #(loc.Include_testHelpLabel) - - #(loc.Include_launcherLabel) - #(loc.InstallLauncherAllUsersLabel) - - - - - - - - #(loc.Custom2Header) - - - #(loc.InstallAllUsersLabel) - #(loc.AssociateFilesLabel) - #(loc.ShortcutsLabel) - #(loc.PrependPathLabel) - #(loc.PrecompileLabel) - #(loc.Include_symbolsLabel) - #(loc.Include_debugLabel) - #(loc.Include_freethreadedLabel) - - #(loc.CustomLocationLabel) - - - #(loc.CustomLocationHelpLabel) - - - - - - - #(loc.ProgressHeader) - - - #(loc.ProgressLabel) - #(loc.OverallProgressPackageText) - - - - - #(loc.ModifyHeader) - - - - - - - - - - #(loc.SuccessHeader) - - - - - - - #(loc.SuccessRestartText) - - - - - #(loc.FailureHeader) - - - #(loc.FailureHyperlinkLogText) - - #(loc.FailureRestartText) - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/Default.wxl b/Tools/msi/bundle/Default.wxl deleted file mode 100644 index 335c1d922d97b52..000000000000000 --- a/Tools/msi/bundle/Default.wxl +++ /dev/null @@ -1,133 +0,0 @@ - - - [WixBundleName] Setup - Installing - Setup - Updating - Modify - Repairing - Repair - Removing - Uninstall - - You will be prompted for Administrator privileges to install a C Runtime Library update (KB2999226). - - -Continue? - - &Cancel - &Close - Install [WixBundleName] - Select Install Now to install Python with default settings, or choose Customize to enable or disable features. - Version [WixBundleVersion] - Upgrade to [WixBundleName] - Select Upgrade Now to keep your current settings, or choose Customize to enable or disable features. - Are you sure you want to cancel? - Previous version - Setup Help - Visit <a href="http://docs.python.org/[ShortVersion]/using/windows.html">docs.python.org/[ShortVersion]/using/windows.html</a> for the full list of options, including the ability to enable and disable specific features. - -"/passive" to display progress without requiring user interaction - -"/quiet" to install/uninstall without displaying any UI - -"/simple" to prevent user customization - -"/uninstall" to remove Python (without confirmation) - -"/layout [\[]directory[\]]" to pre-download all components - -"/log [\[]filename[\]]" to specify log files location - [WixBundleName] <a href="#">license terms</a>. - I &agree to the license terms and conditions - &Install Now - [TargetDir] - -Includes IDLE, pip and documentation -Creates shortcuts and file associations - C&ustomize installation - Choose location and features - &Install - Use settings preselected by your administrator - -[SimpleInstallDescription] - Up&grade Now - [TargetDir] - -Replaces your existing installation without changing settings. -Select Customize to review current options. - C&ustomize installation - Choose location and features - Optional Features - Advanced Options - Customize install location - You will require write permissions for the selected location. - &Install - &Next - &Back - B&rowse - &Documentation - Installs the Python documentation files. - &pip - Installs pip, which can download and install other Python packages. - Tcl/Tk, turtle and &IDLE - Installs tkinter, turtle and the IDLE development environment. - Python &test suite - Installs the standard library test suite. - py &launcher - Installs the global 'py' launcher to make it easier to start Python. - Use Programs and Features to remove the 'py' launcher. - Upgrades the global 'py' launcher from the previous version. - - Associate &files with Python (requires the 'py' launcher) - Create shortcuts for installed applications - Add Python to &environment variables - Add &python.exe to PATH - Append Python to &environment variables - Append &python.exe to PATH - Install Python [ShortVersion] for &all users - for &all users (requires admin privileges) - Use admin privi&leges when installing py.exe - Python Launcher is already installed - &Precompile standard library - Download debugging &symbols - Download debu&g binaries (requires VS 2017 or later) - Download &free-threaded binaries - - [ActionLikeInstallation] Progress - [ActionLikeInstalling]: - Initializing... - Modify Setup - &Modify - Add or remove individual features. - &Repair - Ensure all current features are correctly installed. - &Uninstall - Remove the entire [WixBundleName] installation. - [ActionLikeInstallation] was successful - &Launch - You may need to restart your computer to finish updating files. - &Restart - New to Python? Start with the <a href="https://docs.python.org/[ShortVersion]/tutorial/index.html">online tutorial</a> and <a href="https://docs.python.org/[ShortVersion]/index.html">documentation</a>. At your terminal, type "py" to launch Python, or search for Python in your Start menu. - -See <a href="https://docs.python.org/[ShortVersion]/whatsnew/[ShortVersion].html">what's new</a> in this release, or find more info about <a href="https://docs.python.org/[ShortVersion]/using/windows.html">using Python on Windows</a>. - Thank you for using [WixBundleName]. - Thank you for using [WixBundleName]. - -Feel free to post at <a href="https://discuss.python.org/c/users/7">discuss.python.org</a> if you continue to encounter issues. - Thank you for using [WixBundleName]. - -Feel free to post at <a href="https://discuss.python.org/c/users/7">discuss.python.org</a> if you encountered problems. - Setup failed - One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>. - You must restart your computer to complete the rollback of the software. - &Restart - Unable to install [WixBundleName] due to an existing install. Use Programs and Features to modify, repair or remove [WixBundleName]. - At least Windows 10 or Windows Server 2016 are required to install [WixBundleName] - -Visit <a href="https://www.python.org/downloads/">python.org</a> to download an earlier version of Python. - Disable path length limit - Changes your machine configuration to allow programs, including Python, to bypass the 260 character "MAX_PATH" limitation. - - NOTE: This installer is being retired and will no longer be available after Python 3.15. <a href="https://docs.python.org/using/windows">More info</a> - diff --git a/Tools/msi/bundle/SideBar.png b/Tools/msi/bundle/SideBar.png deleted file mode 100644 index 52f15dd46c18fe5af1dbb57b91bf4782d763732d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51948 zcmV*2KzF~1P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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�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 diff --git a/Tools/msi/bundle/bootstrap/LICENSE.txt b/Tools/msi/bundle/bootstrap/LICENSE.txt deleted file mode 100644 index 5791a7e81d74ff8..000000000000000 --- a/Tools/msi/bundle/bootstrap/LICENSE.txt +++ /dev/null @@ -1,25 +0,0 @@ -This license applies to the bootstrapper application that is embedded within the installer. It has no impact on the licensing for the rest of the installer or Python itself, as no code covered by this license exists in any other part of the product. - ---- - -Microsoft Reciprocal License (MS-RL) - -This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. - -1. Definitions - The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. - A "contribution" is the original software, or any additions or changes to the software. - A "contributor" is any person that distributes its contribution under this license. - "Licensed patents" are a contributor's patent claims that read directly on its contribution. - -2. Grant of Rights - (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. - (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. - -3. Conditions and Limitations - (A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose. - (B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. - (C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. - (D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. - (E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. - (F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. diff --git a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp deleted file mode 100644 index 1e0df5084ff0795..000000000000000 --- a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp +++ /dev/null @@ -1,3323 +0,0 @@ -//------------------------------------------------------------------------------------------------- -// -// Copyright (c) 2004, Outercurve Foundation. -// This software is released under Microsoft Reciprocal License (MS-RL). -// The license and further copyright text can be found in the file -// LICENSE.TXT at the root directory of the distribution. -// -//------------------------------------------------------------------------------------------------- - - -#include "pch.h" - -static const LPCWSTR PYBA_WINDOW_CLASS = L"PythonBA"; -static const DWORD PYBA_ACQUIRE_PERCENTAGE = 30; -static const LPCWSTR PYBA_VARIABLE_BUNDLE_FILE_VERSION = L"WixBundleFileVersion"; - -enum PYBA_STATE { - PYBA_STATE_INITIALIZING, - PYBA_STATE_INITIALIZED, - PYBA_STATE_HELP, - PYBA_STATE_DETECTING, - PYBA_STATE_DETECTED, - PYBA_STATE_PLANNING, - PYBA_STATE_PLANNED, - PYBA_STATE_APPLYING, - PYBA_STATE_CACHING, - PYBA_STATE_CACHED, - PYBA_STATE_EXECUTING, - PYBA_STATE_EXECUTED, - PYBA_STATE_APPLIED, - PYBA_STATE_FAILED, -}; - -static const int WM_PYBA_SHOW_HELP = WM_APP + 100; -static const int WM_PYBA_DETECT_PACKAGES = WM_APP + 101; -static const int WM_PYBA_PLAN_PACKAGES = WM_APP + 102; -static const int WM_PYBA_APPLY_PACKAGES = WM_APP + 103; -static const int WM_PYBA_CHANGE_STATE = WM_APP + 104; -static const int WM_PYBA_SHOW_FAILURE = WM_APP + 105; - -// This enum must be kept in the same order as the PAGE_NAMES array. -enum PAGE { - PAGE_LOADING, - PAGE_HELP, - PAGE_INSTALL, - PAGE_UPGRADE, - PAGE_SIMPLE_INSTALL, - PAGE_CUSTOM1, - PAGE_CUSTOM2, - PAGE_MODIFY, - PAGE_PROGRESS, - PAGE_PROGRESS_PASSIVE, - PAGE_SUCCESS, - PAGE_FAILURE, - COUNT_PAGE, -}; - -// This array must be kept in the same order as the PAGE enum. -static LPCWSTR PAGE_NAMES[] = { - L"Loading", - L"Help", - L"Install", - L"Upgrade", - L"SimpleInstall", - L"Custom1", - L"Custom2", - L"Modify", - L"Progress", - L"ProgressPassive", - L"Success", - L"Failure", -}; - -enum CONTROL_ID { - // Non-paged controls - ID_CLOSE_BUTTON = THEME_FIRST_ASSIGN_CONTROL_ID, - ID_MINIMIZE_BUTTON, - - // Welcome page - ID_INSTALL_BUTTON, - ID_INSTALL_CUSTOM_BUTTON, - ID_INSTALL_SIMPLE_BUTTON, - ID_INSTALL_UPGRADE_BUTTON, - ID_INSTALL_UPGRADE_CUSTOM_BUTTON, - ID_INSTALL_CANCEL_BUTTON, - ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, - - // Customize Page - ID_TARGETDIR_EDITBOX, - ID_CUSTOM_ASSOCIATE_FILES_CHECKBOX, - ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX, - ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, - ID_CUSTOM_INCLUDE_LAUNCHER_HELP_LABEL, - ID_CUSTOM_COMPILE_ALL_CHECKBOX, - ID_CUSTOM_BROWSE_BUTTON, - ID_CUSTOM_BROWSE_BUTTON_LABEL, - ID_CUSTOM_INSTALL_BUTTON, - ID_CUSTOM_NEXT_BUTTON, - ID_CUSTOM1_BACK_BUTTON, - ID_CUSTOM2_BACK_BUTTON, - ID_CUSTOM1_CANCEL_BUTTON, - ID_CUSTOM2_CANCEL_BUTTON, - - // Modify page - ID_MODIFY_BUTTON, - ID_REPAIR_BUTTON, - ID_UNINSTALL_BUTTON, - ID_MODIFY_CANCEL_BUTTON, - - // Progress page - ID_CACHE_PROGRESS_PACKAGE_TEXT, - ID_CACHE_PROGRESS_BAR, - ID_CACHE_PROGRESS_TEXT, - - ID_EXECUTE_PROGRESS_PACKAGE_TEXT, - ID_EXECUTE_PROGRESS_BAR, - ID_EXECUTE_PROGRESS_TEXT, - ID_EXECUTE_PROGRESS_ACTIONDATA_TEXT, - - ID_OVERALL_PROGRESS_PACKAGE_TEXT, - ID_OVERALL_PROGRESS_BAR, - ID_OVERALL_CALCULATED_PROGRESS_BAR, - ID_OVERALL_PROGRESS_TEXT, - - ID_PROGRESS_CANCEL_BUTTON, - - // Success page - ID_SUCCESS_TEXT, - ID_SUCCESS_RESTART_TEXT, - ID_SUCCESS_RESTART_BUTTON, - ID_SUCCESS_CANCEL_BUTTON, - ID_SUCCESS_MAX_PATH_BUTTON, - - // Failure page - ID_FAILURE_LOGFILE_LINK, - ID_FAILURE_MESSAGE_TEXT, - ID_FAILURE_RESTART_TEXT, - ID_FAILURE_RESTART_BUTTON, - ID_FAILURE_CANCEL_BUTTON -}; - -static THEME_ASSIGN_CONTROL_ID CONTROL_ID_NAMES[] = { - { ID_CLOSE_BUTTON, L"CloseButton" }, - { ID_MINIMIZE_BUTTON, L"MinimizeButton" }, - - { ID_INSTALL_BUTTON, L"InstallButton" }, - { ID_INSTALL_CUSTOM_BUTTON, L"InstallCustomButton" }, - { ID_INSTALL_SIMPLE_BUTTON, L"InstallSimpleButton" }, - { ID_INSTALL_UPGRADE_BUTTON, L"InstallUpgradeButton" }, - { ID_INSTALL_UPGRADE_CUSTOM_BUTTON, L"InstallUpgradeCustomButton" }, - { ID_INSTALL_CANCEL_BUTTON, L"InstallCancelButton" }, - { ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, L"InstallLauncherAllUsers" }, - - { ID_TARGETDIR_EDITBOX, L"TargetDir" }, - { ID_CUSTOM_ASSOCIATE_FILES_CHECKBOX, L"AssociateFiles" }, - { ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX, L"InstallAllUsers" }, - { ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, L"CustomInstallLauncherAllUsers" }, - { ID_CUSTOM_INCLUDE_LAUNCHER_HELP_LABEL, L"Include_launcherHelp" }, - { ID_CUSTOM_COMPILE_ALL_CHECKBOX, L"CompileAll" }, - { ID_CUSTOM_BROWSE_BUTTON, L"CustomBrowseButton" }, - { ID_CUSTOM_BROWSE_BUTTON_LABEL, L"CustomBrowseButtonLabel" }, - { ID_CUSTOM_INSTALL_BUTTON, L"CustomInstallButton" }, - { ID_CUSTOM_NEXT_BUTTON, L"CustomNextButton" }, - { ID_CUSTOM1_BACK_BUTTON, L"Custom1BackButton" }, - { ID_CUSTOM2_BACK_BUTTON, L"Custom2BackButton" }, - { ID_CUSTOM1_CANCEL_BUTTON, L"Custom1CancelButton" }, - { ID_CUSTOM2_CANCEL_BUTTON, L"Custom2CancelButton" }, - - { ID_MODIFY_BUTTON, L"ModifyButton" }, - { ID_REPAIR_BUTTON, L"RepairButton" }, - { ID_UNINSTALL_BUTTON, L"UninstallButton" }, - { ID_MODIFY_CANCEL_BUTTON, L"ModifyCancelButton" }, - - { ID_CACHE_PROGRESS_PACKAGE_TEXT, L"CacheProgressPackageText" }, - { ID_CACHE_PROGRESS_BAR, L"CacheProgressbar" }, - { ID_CACHE_PROGRESS_TEXT, L"CacheProgressText" }, - { ID_EXECUTE_PROGRESS_PACKAGE_TEXT, L"ExecuteProgressPackageText" }, - { ID_EXECUTE_PROGRESS_BAR, L"ExecuteProgressbar" }, - { ID_EXECUTE_PROGRESS_TEXT, L"ExecuteProgressText" }, - { ID_EXECUTE_PROGRESS_ACTIONDATA_TEXT, L"ExecuteProgressActionDataText" }, - { ID_OVERALL_PROGRESS_PACKAGE_TEXT, L"OverallProgressPackageText" }, - { ID_OVERALL_PROGRESS_BAR, L"OverallProgressbar" }, - { ID_OVERALL_CALCULATED_PROGRESS_BAR, L"OverallCalculatedProgressbar" }, - { ID_OVERALL_PROGRESS_TEXT, L"OverallProgressText" }, - { ID_PROGRESS_CANCEL_BUTTON, L"ProgressCancelButton" }, - - { ID_SUCCESS_TEXT, L"SuccessText" }, - { ID_SUCCESS_RESTART_TEXT, L"SuccessRestartText" }, - { ID_SUCCESS_RESTART_BUTTON, L"SuccessRestartButton" }, - { ID_SUCCESS_CANCEL_BUTTON, L"SuccessCancelButton" }, - { ID_SUCCESS_MAX_PATH_BUTTON, L"SuccessMaxPathButton" }, - - { ID_FAILURE_LOGFILE_LINK, L"FailureLogFileLink" }, - { ID_FAILURE_MESSAGE_TEXT, L"FailureMessageText" }, - { ID_FAILURE_RESTART_TEXT, L"FailureRestartText" }, - { ID_FAILURE_RESTART_BUTTON, L"FailureRestartButton" }, - { ID_FAILURE_CANCEL_BUTTON, L"FailureCancelButton" }, -}; - -static struct { LPCWSTR regName; LPCWSTR variableName; } OPTIONAL_FEATURES[] = { - { L"core_d", L"Include_debug" }, - { L"core_pdb", L"Include_symbols" }, - { L"dev", L"Include_dev" }, - { L"doc", L"Include_doc" }, - { L"exe", L"Include_exe" }, - { L"lib", L"Include_lib" }, - { L"path", L"PrependPath" }, - { L"appendpath", L"AppendPath" }, - { L"pip", L"Include_pip" }, - { L"tcltk", L"Include_tcltk" }, - { L"test", L"Include_test" }, - { L"tools", L"Include_tools" }, - { L"Shortcuts", L"Shortcuts" }, - // Include_launcher and AssociateFiles are handled separately and so do - // not need to be included in this list. - { L"freethreaded", L"Include_freethreaded" }, - { nullptr, nullptr } -}; - - - -class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { - void ShowPage(DWORD newPageId) { - // Process each control for special handling in the new page. - ProcessPageControls(ThemeGetPage(_theme, newPageId)); - - // Enable disable controls per-page. - if (_pageIds[PAGE_INSTALL] == newPageId || - _pageIds[PAGE_SIMPLE_INSTALL] == newPageId || - _pageIds[PAGE_UPGRADE] == newPageId) { - InstallPage_Show(); - } else if (_pageIds[PAGE_CUSTOM1] == newPageId) { - Custom1Page_Show(); - } else if (_pageIds[PAGE_CUSTOM2] == newPageId) { - Custom2Page_Show(); - } else if (_pageIds[PAGE_MODIFY] == newPageId) { - ModifyPage_Show(); - } else if (_pageIds[PAGE_SUCCESS] == newPageId) { - SuccessPage_Show(); - } else if (_pageIds[PAGE_FAILURE] == newPageId) { - FailurePage_Show(); - } - - // Prevent repainting while switching page to avoid ugly flickering - _suppressPaint = TRUE; - ThemeShowPage(_theme, newPageId, SW_SHOW); - ThemeShowPage(_theme, _visiblePageId, SW_HIDE); - _suppressPaint = FALSE; - InvalidateRect(_theme->hwndParent, nullptr, TRUE); - _visiblePageId = newPageId; - - // On the install page set the focus to the install button or - // the next enabled control if install is disabled - if (_pageIds[PAGE_INSTALL] == newPageId) { - ThemeSetFocus(_theme, ID_INSTALL_BUTTON); - } else if (_pageIds[PAGE_SIMPLE_INSTALL] == newPageId) { - ThemeSetFocus(_theme, ID_INSTALL_SIMPLE_BUTTON); - } - } - - // - // Handles control clicks - // - void OnCommand(CONTROL_ID id) { - LPWSTR defaultDir = nullptr; - LPWSTR targetDir = nullptr; - LONGLONG elevated, crtInstalled, installAllUsers; - BOOL checked, launcherChecked; - WCHAR wzPath[MAX_PATH] = { }; - BROWSEINFOW browseInfo = { }; - PIDLIST_ABSOLUTE pidl = nullptr; - DWORD pageId; - HRESULT hr = S_OK; - - switch(id) { - case ID_CLOSE_BUTTON: - OnClickCloseButton(); - break; - - // Install commands - case ID_INSTALL_SIMPLE_BUTTON: __fallthrough; - case ID_INSTALL_UPGRADE_BUTTON: __fallthrough; - case ID_INSTALL_BUTTON: - SavePageSettings(); - - hr = BalGetNumericVariable(L"InstallAllUsers", &installAllUsers); - ExitOnFailure(hr, L"Failed to get install scope"); - - hr = _engine->SetVariableNumeric(L"CompileAll", installAllUsers); - ExitOnFailure(hr, L"Failed to update CompileAll"); - - hr = EnsureTargetDir(); - ExitOnFailure(hr, L"Failed to set TargetDir"); - - OnPlan(BOOTSTRAPPER_ACTION_INSTALL); - break; - - case ID_CUSTOM1_BACK_BUTTON: - SavePageSettings(); - if (_modifying) { - GoToPage(PAGE_MODIFY); - } else if (_upgrading) { - GoToPage(PAGE_UPGRADE); - } else { - GoToPage(PAGE_INSTALL); - } - break; - - case ID_INSTALL_CUSTOM_BUTTON: __fallthrough; - case ID_INSTALL_UPGRADE_CUSTOM_BUTTON: __fallthrough; - case ID_CUSTOM2_BACK_BUTTON: - SavePageSettings(); - GoToPage(PAGE_CUSTOM1); - break; - - case ID_CUSTOM_NEXT_BUTTON: - SavePageSettings(); - GoToPage(PAGE_CUSTOM2); - break; - - case ID_CUSTOM_INSTALL_BUTTON: - SavePageSettings(); - - hr = EnsureTargetDir(); - ExitOnFailure(hr, L"Failed to set TargetDir"); - - hr = BalGetStringVariable(L"TargetDir", &targetDir); - if (SUCCEEDED(hr)) { - // TODO: Check whether directory exists and contains another installation - ReleaseStr(targetDir); - } - - OnPlan(_command.action); - break; - - case ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX: - checked = ThemeIsControlChecked(_theme, ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX); - _engine->SetVariableNumeric(L"InstallLauncherAllUsers", checked); - - ThemeControlElevates(_theme, ID_INSTALL_BUTTON, WillElevate()); - break; - - case ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX: - checked = ThemeIsControlChecked(_theme, ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX); - _engine->SetVariableNumeric(L"InstallLauncherAllUsers", checked); - - ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, WillElevate()); - break; - - case ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX: - checked = ThemeIsControlChecked(_theme, ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX); - _engine->SetVariableNumeric(L"InstallAllUsers", checked); - - ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, WillElevate()); - ThemeControlEnable(_theme, ID_CUSTOM_BROWSE_BUTTON_LABEL, !checked); - if (checked) { - _engine->SetVariableNumeric(L"CompileAll", 1); - ThemeSendControlMessage(_theme, ID_CUSTOM_COMPILE_ALL_CHECKBOX, BM_SETCHECK, BST_CHECKED, 0); - } - ThemeGetTextControl(_theme, ID_TARGETDIR_EDITBOX, &targetDir); - if (targetDir) { - // Check the current value against the default to see - // if we should switch it automatically. - hr = BalGetStringVariable( - checked ? L"DefaultJustForMeTargetDir" : L"DefaultAllUsersTargetDir", - &defaultDir - ); - - if (SUCCEEDED(hr) && defaultDir) { - LPWSTR formatted = nullptr; - if (defaultDir[0] && SUCCEEDED(BalFormatString(defaultDir, &formatted))) { - if (wcscmp(formatted, targetDir) == 0) { - ReleaseStr(defaultDir); - defaultDir = nullptr; - ReleaseStr(formatted); - formatted = nullptr; - - hr = BalGetStringVariable( - checked ? L"DefaultAllUsersTargetDir" : L"DefaultJustForMeTargetDir", - &defaultDir - ); - if (SUCCEEDED(hr) && defaultDir && defaultDir[0] && SUCCEEDED(BalFormatString(defaultDir, &formatted))) { - ThemeSetTextControl(_theme, ID_TARGETDIR_EDITBOX, formatted); - ReleaseStr(formatted); - } - } else { - ReleaseStr(formatted); - } - } - - ReleaseStr(defaultDir); - } - } - break; - - case ID_CUSTOM_BROWSE_BUTTON: - browseInfo.hwndOwner = _hWnd; - browseInfo.pszDisplayName = wzPath; - browseInfo.lpszTitle = _theme->sczCaption; - browseInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI; - pidl = ::SHBrowseForFolderW(&browseInfo); - if (pidl && ::SHGetPathFromIDListW(pidl, wzPath)) { - ThemeSetTextControl(_theme, ID_TARGETDIR_EDITBOX, wzPath); - } - - if (pidl) { - ::CoTaskMemFree(pidl); - } - break; - - // Modify commands - case ID_MODIFY_BUTTON: - // Some variables cannot be modified - _engine->SetVariableString(L"InstallAllUsersState", L"disable"); - _engine->SetVariableString(L"InstallLauncherAllUsersState", L"disable"); - _engine->SetVariableString(L"TargetDirState", L"disable"); - _engine->SetVariableString(L"CustomBrowseButtonState", L"disable"); - _modifying = TRUE; - GoToPage(PAGE_CUSTOM1); - break; - - case ID_REPAIR_BUTTON: - OnPlan(BOOTSTRAPPER_ACTION_REPAIR); - break; - - case ID_UNINSTALL_BUTTON: - OnPlan(BOOTSTRAPPER_ACTION_UNINSTALL); - break; - - case ID_SUCCESS_MAX_PATH_BUTTON: - EnableMaxPathSupport(); - ThemeControlEnable(_theme, ID_SUCCESS_MAX_PATH_BUTTON, FALSE); - break; - } - - LExit: - return; - } - - void InstallPage_Show() { - // Ensure the All Users install button has a UAC shield - BOOL elevated = WillElevate(); - ThemeControlElevates(_theme, ID_INSTALL_BUTTON, elevated); - ThemeControlElevates(_theme, ID_INSTALL_SIMPLE_BUTTON, elevated); - ThemeControlElevates(_theme, ID_INSTALL_UPGRADE_BUTTON, elevated); - - LONGLONG blockedLauncher; - if (SUCCEEDED(BalGetNumericVariable(L"BlockedLauncher", &blockedLauncher)) && blockedLauncher) { - LOC_STRING *pLocString = nullptr; - if (SUCCEEDED(LocGetString(_wixLoc, L"#(loc.ShortInstallLauncherBlockedLabel)", &pLocString)) && pLocString) { - ThemeSetTextControl(_theme, ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, pLocString->wzText); - } - } - } - - void Custom1Page_Show() { - LONGLONG installLauncherAllUsers; - - if (FAILED(BalGetNumericVariable(L"InstallLauncherAllUsers", &installLauncherAllUsers))) { - installLauncherAllUsers = 0; - } - - ThemeSendControlMessage(_theme, ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, BM_SETCHECK, - installLauncherAllUsers ? BST_CHECKED : BST_UNCHECKED, 0); - - LOC_STRING *pLocString = nullptr; - LPCWSTR locKey = L"#(loc.Include_launcherHelp)"; - LONGLONG blockedLauncher; - - if (SUCCEEDED(BalGetNumericVariable(L"BlockedLauncher", &blockedLauncher)) && blockedLauncher) { - locKey = L"#(loc.Include_launcherRemove)"; - } else if (SUCCEEDED(BalGetNumericVariable(L"DetectedOldLauncher", &blockedLauncher)) && blockedLauncher) { - locKey = L"#(loc.Include_launcherUpgrade)"; - } - - if (SUCCEEDED(LocGetString(_wixLoc, locKey, &pLocString)) && pLocString) { - ThemeSetTextControl(_theme, ID_CUSTOM_INCLUDE_LAUNCHER_HELP_LABEL, pLocString->wzText); - } - } - - void Custom2Page_Show() { - HRESULT hr; - LONGLONG installAll, includeLauncher; - - if (FAILED(BalGetNumericVariable(L"InstallAllUsers", &installAll))) { - installAll = 0; - } - - if (WillElevate()) { - ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, TRUE); - ThemeShowControl(_theme, ID_CUSTOM_BROWSE_BUTTON_LABEL, SW_HIDE); - } else { - ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, FALSE); - ThemeShowControl(_theme, ID_CUSTOM_BROWSE_BUTTON_LABEL, SW_SHOW); - } - - if (SUCCEEDED(BalGetNumericVariable(L"Include_launcher", &includeLauncher)) && includeLauncher) { - ThemeControlEnable(_theme, ID_CUSTOM_ASSOCIATE_FILES_CHECKBOX, TRUE); - } else { - ThemeSendControlMessage(_theme, ID_CUSTOM_ASSOCIATE_FILES_CHECKBOX, BM_SETCHECK, BST_UNCHECKED, 0); - ThemeControlEnable(_theme, ID_CUSTOM_ASSOCIATE_FILES_CHECKBOX, FALSE); - } - - LPWSTR targetDir = nullptr; - hr = BalGetStringVariable(L"TargetDir", &targetDir); - if (SUCCEEDED(hr) && targetDir && targetDir[0]) { - ThemeSetTextControl(_theme, ID_TARGETDIR_EDITBOX, targetDir); - StrFree(targetDir); - } else if (SUCCEEDED(hr)) { - StrFree(targetDir); - targetDir = nullptr; - - LPWSTR defaultTargetDir = nullptr; - hr = BalGetStringVariable(L"DefaultCustomTargetDir", &defaultTargetDir); - if (SUCCEEDED(hr) && defaultTargetDir && !defaultTargetDir[0]) { - StrFree(defaultTargetDir); - defaultTargetDir = nullptr; - - hr = BalGetStringVariable( - installAll ? L"DefaultAllUsersTargetDir" : L"DefaultJustForMeTargetDir", - &defaultTargetDir - ); - } - if (SUCCEEDED(hr) && defaultTargetDir) { - if (defaultTargetDir[0] && SUCCEEDED(BalFormatString(defaultTargetDir, &targetDir))) { - ThemeSetTextControl(_theme, ID_TARGETDIR_EDITBOX, targetDir); - StrFree(targetDir); - } - StrFree(defaultTargetDir); - } - } - } - - void ModifyPage_Show() { - ThemeControlEnable(_theme, ID_REPAIR_BUTTON, !_suppressRepair); - } - - void SuccessPage_Show() { - // on the "Success" page, check if the restart button should be enabled. - BOOL showRestartButton = FALSE; - LOC_STRING *successText = nullptr; - HRESULT hr = S_OK; - - if (_restartRequired) { - if (BOOTSTRAPPER_RESTART_PROMPT == _command.restart) { - showRestartButton = TRUE; - } - } - - switch (_plannedAction) { - case BOOTSTRAPPER_ACTION_INSTALL: - hr = LocGetString(_wixLoc, L"#(loc.SuccessInstallMessage)", &successText); - break; - case BOOTSTRAPPER_ACTION_MODIFY: - hr = LocGetString(_wixLoc, L"#(loc.SuccessModifyMessage)", &successText); - break; - case BOOTSTRAPPER_ACTION_REPAIR: - hr = LocGetString(_wixLoc, L"#(loc.SuccessRepairMessage)", &successText); - break; - case BOOTSTRAPPER_ACTION_UNINSTALL: - hr = LocGetString(_wixLoc, L"#(loc.SuccessRemoveMessage)", &successText); - break; - } - - if (successText) { - LPWSTR formattedString = nullptr; - BalFormatString(successText->wzText, &formattedString); - if (formattedString) { - ThemeSetTextControl(_theme, ID_SUCCESS_TEXT, formattedString); - StrFree(formattedString); - } - } - - ThemeControlEnable(_theme, ID_SUCCESS_RESTART_TEXT, showRestartButton); - ThemeControlEnable(_theme, ID_SUCCESS_RESTART_BUTTON, showRestartButton); - - if (_command.action != BOOTSTRAPPER_ACTION_INSTALL || - !IsWindowsVersionOrGreater(10, 0, 0)) { - ThemeControlEnable(_theme, ID_SUCCESS_MAX_PATH_BUTTON, FALSE); - } else { - DWORD dataType = 0, buffer = 0, bufferLen = sizeof(buffer); - HKEY hKey; - LRESULT res = RegOpenKeyExW( - HKEY_LOCAL_MACHINE, - L"SYSTEM\\CurrentControlSet\\Control\\FileSystem", - 0, - KEY_READ, - &hKey - ); - if (res == ERROR_SUCCESS) { - res = RegQueryValueExW(hKey, L"LongPathsEnabled", nullptr, &dataType, - (LPBYTE)&buffer, &bufferLen); - RegCloseKey(hKey); - } - else { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Failed to open SYSTEM\\CurrentControlSet\\Control\\FileSystem: error code %d", res); - } - if (res == ERROR_SUCCESS && dataType == REG_DWORD && buffer == 0) { - ThemeControlElevates(_theme, ID_SUCCESS_MAX_PATH_BUTTON, TRUE); - } - else { - if (res == ERROR_SUCCESS) - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Failed to read LongPathsEnabled value: error code %d", res); - else - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Hiding MAX_PATH button because it is already enabled"); - ThemeControlEnable(_theme, ID_SUCCESS_MAX_PATH_BUTTON, FALSE); - } - } - } - - void FailurePage_Show() { - // on the "Failure" page, show error message and check if the restart button should be enabled. - - // if there is a log file variable then we'll assume the log file exists. - BOOL showLogLink = (_bundle.sczLogVariable && *_bundle.sczLogVariable); - BOOL showErrorMessage = FALSE; - BOOL showRestartButton = FALSE; - - if (FAILED(_hrFinal)) { - LPWSTR unformattedText = nullptr; - LPWSTR text = nullptr; - - // If we know the failure message, use that. - if (_failedMessage && *_failedMessage) { - StrAllocString(&unformattedText, _failedMessage, 0); - } else { - // try to get the error message from the error code. - StrAllocFromError(&unformattedText, _hrFinal, nullptr); - if (!unformattedText || !*unformattedText) { - StrAllocFromError(&unformattedText, E_FAIL, nullptr); - } - } - - if (E_WIXSTDBA_CONDITION_FAILED == _hrFinal) { - if (unformattedText) { - StrAllocString(&text, unformattedText, 0); - } - } else { - StrAllocFormatted(&text, L"0x%08x - %ls", _hrFinal, unformattedText); - } - - if (text) { - ThemeSetTextControl(_theme, ID_FAILURE_MESSAGE_TEXT, text); - showErrorMessage = TRUE; - } - - ReleaseStr(text); - ReleaseStr(unformattedText); - } - - if (_restartRequired && BOOTSTRAPPER_RESTART_PROMPT == _command.restart) { - showRestartButton = TRUE; - } - - ThemeControlEnable(_theme, ID_FAILURE_LOGFILE_LINK, showLogLink); - ThemeControlEnable(_theme, ID_FAILURE_MESSAGE_TEXT, showErrorMessage); - ThemeControlEnable(_theme, ID_FAILURE_RESTART_TEXT, showRestartButton); - ThemeControlEnable(_theme, ID_FAILURE_RESTART_BUTTON, showRestartButton); - } - - static void EnableMaxPathSupport() { - LPWSTR targetDir = nullptr, defaultDir = nullptr; - HRESULT hr = BalGetStringVariable(L"TargetDir", &targetDir); - if (FAILED(hr) || !targetDir || !targetDir[0]) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Failed to get TargetDir"); - return; - } - - LPWSTR pythonw = nullptr; - StrAllocFormatted(&pythonw, L"%ls\\pythonw.exe", targetDir); - if (!pythonw || !pythonw[0]) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Failed to construct pythonw.exe path"); - return; - } - - LPCWSTR arguments = L"-c \"import winreg; " - "winreg.SetValueEx(" - "winreg.CreateKey(winreg.HKEY_LOCAL_MACHINE, " - "r'SYSTEM\\CurrentControlSet\\Control\\FileSystem'), " - "'LongPathsEnabled', " - "None, " - "winreg.REG_DWORD, " - "1" - ")\""; - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Executing %ls %ls", pythonw, arguments); - HINSTANCE res = ShellExecuteW(0, L"runas", pythonw, arguments, NULL, SW_HIDE); - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "return code 0x%08x", res); - } - -public: // IBootstrapperApplication - virtual STDMETHODIMP OnStartup() { - HRESULT hr = S_OK; - DWORD dwUIThreadId = 0; - - // create UI thread - _hUiThread = ::CreateThread(nullptr, 0, UiThreadProc, this, 0, &dwUIThreadId); - if (!_hUiThread) { - ExitWithLastError(hr, "Failed to create UI thread."); - } - - LExit: - return hr; - } - - - virtual STDMETHODIMP_(int) OnShutdown() { - int nResult = IDNOACTION; - - // wait for UI thread to terminate - if (_hUiThread) { - ::WaitForSingleObject(_hUiThread, INFINITE); - ReleaseHandle(_hUiThread); - } - - // If a restart was required. - if (_restartRequired && _allowRestart) { - nResult = IDRESTART; - } - - return nResult; - } - - virtual STDMETHODIMP_(int) OnDetectRelatedMsiPackage( - __in_z LPCWSTR wzPackageId, - __in_z LPCWSTR /*wzProductCode*/, - __in BOOL fPerMachine, - __in DWORD64 /*dw64Version*/, - __in BOOTSTRAPPER_RELATED_OPERATION operation - ) { - // Only check launcher_AllUsers because we'll find the same packages - // twice if we check launcher_JustForMe as well. - if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, wzPackageId, -1, L"launcher_AllUsers", -1)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Detected existing launcher install"); - - LONGLONG blockedLauncher, detectedLauncher; - if (FAILED(BalGetNumericVariable(L"BlockedLauncher", &blockedLauncher))) { - blockedLauncher = 0; - } - - // Get the prior DetectedLauncher value so we can see if we've - // detected more than one, and then update the stored variable - // (we use the original value later on via the local). - if (FAILED(BalGetNumericVariable(L"DetectedLauncher", &detectedLauncher))) { - detectedLauncher = 0; - } - if (!detectedLauncher) { - _engine->SetVariableNumeric(L"DetectedLauncher", 1); - } - - if (blockedLauncher) { - // Nothing else to do, we're already blocking - } - else if (BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE == operation) { - // Found a higher version, so we can't install ours. - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Higher version launcher has been detected."); - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Launcher will not be installed"); - _engine->SetVariableNumeric(L"BlockedLauncher", 1); - } - else if (detectedLauncher) { - if (!blockedLauncher) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Multiple launcher installs have been detected."); - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "No launcher will be installed or upgraded until one has been removed."); - _engine->SetVariableNumeric(L"BlockedLauncher", 1); - } - } - else if (BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE == operation) { - // Found an older version, so let's run the equivalent as an upgrade - // This overrides "unknown" all users options, but will leave alone - // any that have already been set/detected. - // User can deselect the option to include the launcher, but cannot - // change it from the current per user/machine setting. - LONGLONG includeLauncher, includeLauncherAllUsers; - if (FAILED(BalGetNumericVariable(L"Include_launcher", &includeLauncher))) { - includeLauncher = -1; - } - if (FAILED(BalGetNumericVariable(L"InstallLauncherAllUsers", &includeLauncherAllUsers))) { - includeLauncherAllUsers = -1; - } - - if (includeLauncher < 0) { - _engine->SetVariableNumeric(L"Include_launcher", 1); - } - if (includeLauncherAllUsers < 0) { - _engine->SetVariableNumeric(L"InstallLauncherAllUsers", fPerMachine ? 1 : 0); - } else if (includeLauncherAllUsers != fPerMachine ? 1 : 0) { - // Requested AllUsers option is inconsistent, so block - _engine->SetVariableNumeric(L"BlockedLauncher", 1); - } - _engine->SetVariableNumeric(L"DetectedOldLauncher", 1); - } - } - return CheckCanceled() ? IDCANCEL : IDNOACTION; - } - - virtual STDMETHODIMP_(int) OnDetectRelatedBundle( - __in LPCWSTR wzBundleId, - __in BOOTSTRAPPER_RELATION_TYPE relationType, - __in LPCWSTR /*wzBundleTag*/, - __in BOOL fPerMachine, - __in DWORD64 /*dw64Version*/, - __in BOOTSTRAPPER_RELATED_OPERATION operation - ) { - BalInfoAddRelatedBundleAsPackage(&_bundle.packages, wzBundleId, relationType, fPerMachine); - - // Remember when our bundle would cause a downgrade. - if (BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE == operation) { - _downgradingOtherVersion = TRUE; - } else if (BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE == operation) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Detected previous version - planning upgrade"); - _upgrading = TRUE; - - LoadOptionalFeatureStates(_engine); - } else if (BOOTSTRAPPER_RELATED_OPERATION_NONE == operation) { - if (_command.action == BOOTSTRAPPER_ACTION_INSTALL) { - LOC_STRING *pLocString = nullptr; - if (SUCCEEDED(LocGetString(_wixLoc, L"#(loc.FailureExistingInstall)", &pLocString)) && pLocString) { - BalFormatString(pLocString->wzText, &_failedMessage); - } else { - BalFormatString(L"Cannot install [WixBundleName] because it is already installed.", &_failedMessage); - } - BalLog( - BOOTSTRAPPER_LOG_LEVEL_ERROR, - "Related bundle %ls is preventing install", - wzBundleId - ); - SetState(PYBA_STATE_FAILED, E_WIXSTDBA_CONDITION_FAILED); - } - } - - return CheckCanceled() ? IDCANCEL : IDOK; - } - - - virtual STDMETHODIMP_(void) OnDetectPackageComplete( - __in LPCWSTR wzPackageId, - __in HRESULT hrStatus, - __in BOOTSTRAPPER_PACKAGE_STATE state - ) { } - - - virtual STDMETHODIMP_(void) OnDetectComplete(__in HRESULT hrStatus) { - if (SUCCEEDED(hrStatus) && _baFunction) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running detect complete BA function"); - _baFunction->OnDetectComplete(); - } - - if (SUCCEEDED(hrStatus)) { - // Update launcher install states - // If we didn't detect any existing installs, Include_launcher and - // InstallLauncherAllUsers will both be -1, so we will set to their - // defaults and leave the options enabled. - // Otherwise, if we detected an existing install, we disable the - // options so they remain fixed. - // The code in OnDetectRelatedMsiPackage is responsible for figuring - // out whether existing installs are compatible with the settings in - // place during detection. - LONGLONG blockedLauncher; - if (SUCCEEDED(BalGetNumericVariable(L"BlockedLauncher", &blockedLauncher)) - && blockedLauncher) { - _engine->SetVariableNumeric(L"Include_launcher", 0); - _engine->SetVariableNumeric(L"InstallLauncherAllUsers", 0); - _engine->SetVariableString(L"InstallLauncherAllUsersState", L"disable"); - _engine->SetVariableString(L"Include_launcherState", L"disable"); - } - else { - LONGLONG includeLauncher, includeLauncherAllUsers, associateFiles; - - if (FAILED(BalGetNumericVariable(L"Include_launcher", &includeLauncher))) { - includeLauncher = -1; - } - if (FAILED(BalGetNumericVariable(L"InstallLauncherAllUsers", &includeLauncherAllUsers))) { - includeLauncherAllUsers = -1; - } - if (FAILED(BalGetNumericVariable(L"AssociateFiles", &associateFiles))) { - associateFiles = -1; - } - - if (includeLauncherAllUsers < 0) { - includeLauncherAllUsers = 0; - _engine->SetVariableNumeric(L"InstallLauncherAllUsers", includeLauncherAllUsers); - } - - if (includeLauncher < 0) { - if (BOOTSTRAPPER_ACTION_LAYOUT == _command.action || - (BOOTSTRAPPER_ACTION_INSTALL == _command.action && !_upgrading)) { - // When installing/downloading, we include the launcher - // (though downloads should ignore this setting anyway) - _engine->SetVariableNumeric(L"Include_launcher", 1); - } else { - // Any other action, we should have detected an existing - // install (e.g. on remove/modify), so if we didn't, we - // assume it's not selected. - _engine->SetVariableNumeric(L"Include_launcher", 0); - _engine->SetVariableNumeric(L"AssociateFiles", 0); - } - } - - if (associateFiles < 0) { - auto hr = LoadAssociateFilesStateFromKey( - _engine, - includeLauncherAllUsers ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER - ); - if (FAILED(hr)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Failed to load AssociateFiles state: error code 0x%08X", hr); - } else if (hr == S_OK) { - associateFiles = 1; - } - _engine->SetVariableNumeric(L"AssociateFiles", associateFiles); - } - } - } - - if (SUCCEEDED(hrStatus)) { - hrStatus = EvaluateConditions(); - } - - if (SUCCEEDED(hrStatus)) { - // Ensure the default path has been set - hrStatus = EnsureTargetDir(); - } - - SetState(PYBA_STATE_DETECTED, hrStatus); - - // If we're not interacting with the user or we're doing a layout or we're just after a force restart - // then automatically start planning. - if (BOOTSTRAPPER_DISPLAY_FULL > _command.display || - BOOTSTRAPPER_ACTION_LAYOUT == _command.action || - BOOTSTRAPPER_ACTION_UNINSTALL == _command.action || - BOOTSTRAPPER_RESUME_TYPE_REBOOT == _command.resumeType) { - if (SUCCEEDED(hrStatus)) { - ::PostMessageW(_hWnd, WM_PYBA_PLAN_PACKAGES, 0, _command.action); - } - } - } - - - virtual STDMETHODIMP_(int) OnPlanRelatedBundle( - __in_z LPCWSTR /*wzBundleId*/, - __inout_z BOOTSTRAPPER_REQUEST_STATE* pRequestedState - ) { - return CheckCanceled() ? IDCANCEL : IDOK; - } - - - virtual STDMETHODIMP_(int) OnPlanPackageBegin( - __in_z LPCWSTR wzPackageId, - __inout BOOTSTRAPPER_REQUEST_STATE *pRequestState - ) { - HRESULT hr = S_OK; - BAL_INFO_PACKAGE* pPackage = nullptr; - - if (_nextPackageAfterRestart) { - // After restart we need to finish the dependency registration for our package so allow the package - // to go present. - if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, wzPackageId, -1, _nextPackageAfterRestart, -1)) { - // Do not allow a repair because that could put us in a perpetual restart loop. - if (BOOTSTRAPPER_REQUEST_STATE_REPAIR == *pRequestState) { - *pRequestState = BOOTSTRAPPER_REQUEST_STATE_PRESENT; - } - - ReleaseNullStr(_nextPackageAfterRestart); // no more skipping now. - } else { - // not the matching package, so skip it. - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Skipping package: %ls, after restart because it was applied before the restart.", wzPackageId); - - *pRequestState = BOOTSTRAPPER_REQUEST_STATE_NONE; - } - } else if ((_plannedAction == BOOTSTRAPPER_ACTION_INSTALL || _plannedAction == BOOTSTRAPPER_ACTION_MODIFY) && - SUCCEEDED(BalInfoFindPackageById(&_bundle.packages, wzPackageId, &pPackage))) { - BOOL f = FALSE; - if (SUCCEEDED(_engine->EvaluateCondition(pPackage->sczInstallCondition, &f)) && f) { - *pRequestState = BOOTSTRAPPER_REQUEST_STATE_PRESENT; - } - } - - return CheckCanceled() ? IDCANCEL : IDOK; - } - - virtual STDMETHODIMP_(int) OnPlanMsiFeature( - __in_z LPCWSTR wzPackageId, - __in_z LPCWSTR wzFeatureId, - __inout BOOTSTRAPPER_FEATURE_STATE* pRequestedState - ) { - LONGLONG install; - - if (wcscmp(wzFeatureId, L"AssociateFiles") == 0 || wcscmp(wzFeatureId, L"Shortcuts") == 0) { - if (SUCCEEDED(_engine->GetVariableNumeric(wzFeatureId, &install)) && install) { - *pRequestedState = BOOTSTRAPPER_FEATURE_STATE_LOCAL; - } else { - *pRequestedState = BOOTSTRAPPER_FEATURE_STATE_ABSENT; - } - } else { - *pRequestedState = BOOTSTRAPPER_FEATURE_STATE_LOCAL; - } - return CheckCanceled() ? IDCANCEL : IDNOACTION; - } - - virtual STDMETHODIMP_(void) OnPlanComplete(__in HRESULT hrStatus) { - if (SUCCEEDED(hrStatus) && _baFunction) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running plan complete BA function"); - _baFunction->OnPlanComplete(); - } - - SetState(PYBA_STATE_PLANNED, hrStatus); - - if (SUCCEEDED(hrStatus)) { - ::PostMessageW(_hWnd, WM_PYBA_APPLY_PACKAGES, 0, 0); - } - - _startedExecution = FALSE; - _calculatedCacheProgress = 0; - _calculatedExecuteProgress = 0; - } - - - virtual STDMETHODIMP_(int) OnCachePackageBegin( - __in_z LPCWSTR wzPackageId, - __in DWORD cCachePayloads, - __in DWORD64 dw64PackageCacheSize - ) { - if (wzPackageId && *wzPackageId) { - BAL_INFO_PACKAGE* pPackage = nullptr; - HRESULT hr = BalInfoFindPackageById(&_bundle.packages, wzPackageId, &pPackage); - LPCWSTR wz = (SUCCEEDED(hr) && pPackage->sczDisplayName) ? pPackage->sczDisplayName : wzPackageId; - - ThemeSetTextControl(_theme, ID_CACHE_PROGRESS_PACKAGE_TEXT, wz); - - // If something started executing, leave it in the overall progress text. - if (!_startedExecution) { - ThemeSetTextControl(_theme, ID_OVERALL_PROGRESS_PACKAGE_TEXT, wz); - } - } - - return __super::OnCachePackageBegin(wzPackageId, cCachePayloads, dw64PackageCacheSize); - } - - - virtual STDMETHODIMP_(int) OnCacheAcquireProgress( - __in_z LPCWSTR wzPackageOrContainerId, - __in_z_opt LPCWSTR wzPayloadId, - __in DWORD64 dw64Progress, - __in DWORD64 dw64Total, - __in DWORD dwOverallPercentage - ) { - WCHAR wzProgress[5] = { }; - -#ifdef DEBUG - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "PYBA: OnCacheAcquireProgress() - container/package: %ls, payload: %ls, progress: %I64u, total: %I64u, overall progress: %u%%", wzPackageOrContainerId, wzPayloadId, dw64Progress, dw64Total, dwOverallPercentage); -#endif - - ::StringCchPrintfW(wzProgress, countof(wzProgress), L"%u%%", dwOverallPercentage); - ThemeSetTextControl(_theme, ID_CACHE_PROGRESS_TEXT, wzProgress); - - ThemeSetProgressControl(_theme, ID_CACHE_PROGRESS_BAR, dwOverallPercentage); - - _calculatedCacheProgress = dwOverallPercentage * PYBA_ACQUIRE_PERCENTAGE / 100; - ThemeSetProgressControl(_theme, ID_OVERALL_CALCULATED_PROGRESS_BAR, _calculatedCacheProgress + _calculatedExecuteProgress); - - SetTaskbarButtonProgress(_calculatedCacheProgress + _calculatedExecuteProgress); - - return __super::OnCacheAcquireProgress(wzPackageOrContainerId, wzPayloadId, dw64Progress, dw64Total, dwOverallPercentage); - } - - - virtual STDMETHODIMP_(int) OnCacheAcquireComplete( - __in_z LPCWSTR wzPackageOrContainerId, - __in_z_opt LPCWSTR wzPayloadId, - __in HRESULT hrStatus, - __in int nRecommendation - ) { - SetProgressState(hrStatus); - return __super::OnCacheAcquireComplete(wzPackageOrContainerId, wzPayloadId, hrStatus, nRecommendation); - } - - - virtual STDMETHODIMP_(int) OnCacheVerifyComplete( - __in_z LPCWSTR wzPackageId, - __in_z LPCWSTR wzPayloadId, - __in HRESULT hrStatus, - __in int nRecommendation - ) { - SetProgressState(hrStatus); - return __super::OnCacheVerifyComplete(wzPackageId, wzPayloadId, hrStatus, nRecommendation); - } - - - virtual STDMETHODIMP_(void) OnCacheComplete(__in HRESULT /*hrStatus*/) { - ThemeSetTextControl(_theme, ID_CACHE_PROGRESS_PACKAGE_TEXT, L""); - SetState(PYBA_STATE_CACHED, S_OK); // we always return success here and let OnApplyComplete() deal with the error. - } - - - virtual STDMETHODIMP_(int) OnError( - __in BOOTSTRAPPER_ERROR_TYPE errorType, - __in LPCWSTR wzPackageId, - __in DWORD dwCode, - __in_z LPCWSTR wzError, - __in DWORD dwUIHint, - __in DWORD /*cData*/, - __in_ecount_z_opt(cData) LPCWSTR* /*rgwzData*/, - __in int nRecommendation - ) { - int nResult = nRecommendation; - LPWSTR sczError = nullptr; - - if (BOOTSTRAPPER_DISPLAY_EMBEDDED == _command.display) { - HRESULT hr = _engine->SendEmbeddedError(dwCode, wzError, dwUIHint, &nResult); - if (FAILED(hr)) { - nResult = IDERROR; - } - } else if (BOOTSTRAPPER_DISPLAY_FULL == _command.display) { - // If this is an authentication failure, let the engine try to handle it for us. - if (BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER == errorType || BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY == errorType) { - nResult = IDTRYAGAIN; - } else // show a generic error message box. - { - BalRetryErrorOccurred(wzPackageId, dwCode); - - if (!_showingInternalUIThisPackage) { - // If no error message was provided, use the error code to try and get an error message. - if (!wzError || !*wzError || BOOTSTRAPPER_ERROR_TYPE_WINDOWS_INSTALLER != errorType) { - HRESULT hr = StrAllocFromError(&sczError, dwCode, nullptr); - if (FAILED(hr) || !sczError || !*sczError) { - StrAllocFormatted(&sczError, L"0x%x", dwCode); - } - } - - nResult = ::MessageBoxW(_hWnd, sczError ? sczError : wzError, _theme->sczCaption, dwUIHint); - } - } - - SetProgressState(HRESULT_FROM_WIN32(dwCode)); - } else { - // just take note of the error code and let things continue. - BalRetryErrorOccurred(wzPackageId, dwCode); - } - - ReleaseStr(sczError); - return nResult; - } - - - virtual STDMETHODIMP_(int) OnExecuteMsiMessage( - __in_z LPCWSTR wzPackageId, - __in INSTALLMESSAGE mt, - __in UINT uiFlags, - __in_z LPCWSTR wzMessage, - __in DWORD cData, - __in_ecount_z_opt(cData) LPCWSTR* rgwzData, - __in int nRecommendation - ) { -#ifdef DEBUG - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "PYBA: OnExecuteMsiMessage() - package: %ls, message: %ls", wzPackageId, wzMessage); -#endif - if (BOOTSTRAPPER_DISPLAY_FULL == _command.display && (INSTALLMESSAGE_WARNING == mt || INSTALLMESSAGE_USER == mt)) { - int nResult = ::MessageBoxW(_hWnd, wzMessage, _theme->sczCaption, uiFlags); - return nResult; - } - - if (INSTALLMESSAGE_ACTIONSTART == mt) { - ThemeSetTextControl(_theme, ID_EXECUTE_PROGRESS_ACTIONDATA_TEXT, wzMessage); - } - - return __super::OnExecuteMsiMessage(wzPackageId, mt, uiFlags, wzMessage, cData, rgwzData, nRecommendation); - } - - - virtual STDMETHODIMP_(int) OnProgress(__in DWORD dwProgressPercentage, __in DWORD dwOverallProgressPercentage) { - WCHAR wzProgress[5] = { }; - -#ifdef DEBUG - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "PYBA: OnProgress() - progress: %u%%, overall progress: %u%%", dwProgressPercentage, dwOverallProgressPercentage); -#endif - - ::StringCchPrintfW(wzProgress, countof(wzProgress), L"%u%%", dwOverallProgressPercentage); - ThemeSetTextControl(_theme, ID_OVERALL_PROGRESS_TEXT, wzProgress); - - ThemeSetProgressControl(_theme, ID_OVERALL_PROGRESS_BAR, dwOverallProgressPercentage); - SetTaskbarButtonProgress(dwOverallProgressPercentage); - - return __super::OnProgress(dwProgressPercentage, dwOverallProgressPercentage); - } - - - virtual STDMETHODIMP_(int) OnExecutePackageBegin(__in_z LPCWSTR wzPackageId, __in BOOL fExecute) { - LPWSTR sczFormattedString = nullptr; - - _startedExecution = TRUE; - - if (wzPackageId && *wzPackageId) { - BAL_INFO_PACKAGE* pPackage = nullptr; - BalInfoFindPackageById(&_bundle.packages, wzPackageId, &pPackage); - - LPCWSTR wz = wzPackageId; - if (pPackage) { - LOC_STRING* pLocString = nullptr; - - switch (pPackage->type) { - case BAL_INFO_PACKAGE_TYPE_BUNDLE_ADDON: - LocGetString(_wixLoc, L"#(loc.ExecuteAddonRelatedBundleMessage)", &pLocString); - break; - - case BAL_INFO_PACKAGE_TYPE_BUNDLE_PATCH: - LocGetString(_wixLoc, L"#(loc.ExecutePatchRelatedBundleMessage)", &pLocString); - break; - - case BAL_INFO_PACKAGE_TYPE_BUNDLE_UPGRADE: - LocGetString(_wixLoc, L"#(loc.ExecuteUpgradeRelatedBundleMessage)", &pLocString); - break; - } - - if (pLocString) { - // If the wix developer is showing a hidden variable in the UI, then obviously they don't care about keeping it safe - // so don't go down the rabbit hole of making sure that this is securely freed. - BalFormatString(pLocString->wzText, &sczFormattedString); - } - - wz = sczFormattedString ? sczFormattedString : pPackage->sczDisplayName ? pPackage->sczDisplayName : wzPackageId; - } - - _showingInternalUIThisPackage = pPackage && pPackage->fDisplayInternalUI; - - ThemeSetTextControl(_theme, ID_EXECUTE_PROGRESS_PACKAGE_TEXT, wz); - ThemeSetTextControl(_theme, ID_OVERALL_PROGRESS_PACKAGE_TEXT, wz); - } else { - _showingInternalUIThisPackage = FALSE; - } - - ReleaseStr(sczFormattedString); - return __super::OnExecutePackageBegin(wzPackageId, fExecute); - } - - - virtual int __stdcall OnExecuteProgress( - __in_z LPCWSTR wzPackageId, - __in DWORD dwProgressPercentage, - __in DWORD dwOverallProgressPercentage - ) { - WCHAR wzProgress[8] = { }; - -#ifdef DEBUG - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "PYBA: OnExecuteProgress() - package: %ls, progress: %u%%, overall progress: %u%%", wzPackageId, dwProgressPercentage, dwOverallProgressPercentage); -#endif - - ::StringCchPrintfW(wzProgress, countof(wzProgress), L"%u%%", dwOverallProgressPercentage); - ThemeSetTextControl(_theme, ID_EXECUTE_PROGRESS_TEXT, wzProgress); - - ThemeSetProgressControl(_theme, ID_EXECUTE_PROGRESS_BAR, dwOverallProgressPercentage); - - _calculatedExecuteProgress = dwOverallProgressPercentage * (100 - PYBA_ACQUIRE_PERCENTAGE) / 100; - ThemeSetProgressControl(_theme, ID_OVERALL_CALCULATED_PROGRESS_BAR, _calculatedCacheProgress + _calculatedExecuteProgress); - - SetTaskbarButtonProgress(_calculatedCacheProgress + _calculatedExecuteProgress); - - return __super::OnExecuteProgress(wzPackageId, dwProgressPercentage, dwOverallProgressPercentage); - } - - - virtual STDMETHODIMP_(int) OnExecutePackageComplete( - __in_z LPCWSTR wzPackageId, - __in HRESULT hrExitCode, - __in BOOTSTRAPPER_APPLY_RESTART restart, - __in int nRecommendation - ) { - SetProgressState(hrExitCode); - - if (_wcsnicmp(wzPackageId, L"path_", 5) == 0 && SUCCEEDED(hrExitCode)) { - SendMessageTimeoutW( - HWND_BROADCAST, - WM_SETTINGCHANGE, - 0, - reinterpret_cast(L"Environment"), - SMTO_ABORTIFHUNG, - 1000, - nullptr - ); - } - - int nResult = __super::OnExecutePackageComplete(wzPackageId, hrExitCode, restart, nRecommendation); - - return nResult; - } - - - virtual STDMETHODIMP_(void) OnExecuteComplete(__in HRESULT hrStatus) { - ThemeSetTextControl(_theme, ID_EXECUTE_PROGRESS_PACKAGE_TEXT, L""); - ThemeSetTextControl(_theme, ID_EXECUTE_PROGRESS_ACTIONDATA_TEXT, L""); - ThemeSetTextControl(_theme, ID_OVERALL_PROGRESS_PACKAGE_TEXT, L""); - ThemeControlEnable(_theme, ID_PROGRESS_CANCEL_BUTTON, FALSE); // no more cancel. - - SetState(PYBA_STATE_EXECUTED, S_OK); // we always return success here and let OnApplyComplete() deal with the error. - SetProgressState(hrStatus); - } - - - virtual STDMETHODIMP_(int) OnResolveSource( - __in_z LPCWSTR wzPackageOrContainerId, - __in_z_opt LPCWSTR wzPayloadId, - __in_z LPCWSTR wzLocalSource, - __in_z_opt LPCWSTR wzDownloadSource - ) { - int nResult = IDERROR; // assume we won't resolve source and that is unexpected. - - if (BOOTSTRAPPER_DISPLAY_FULL == _command.display) { - if (wzDownloadSource) { - nResult = IDDOWNLOAD; - } else { - // prompt to change the source location. - OPENFILENAMEW ofn = { }; - WCHAR wzFile[MAX_PATH] = { }; - - ::StringCchCopyW(wzFile, countof(wzFile), wzLocalSource); - - ofn.lStructSize = sizeof(ofn); - ofn.hwndOwner = _hWnd; - ofn.lpstrFile = wzFile; - ofn.nMaxFile = countof(wzFile); - ofn.lpstrFilter = L"All Files\0*.*\0"; - ofn.nFilterIndex = 1; - ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; - ofn.lpstrTitle = _theme->sczCaption; - - if (::GetOpenFileNameW(&ofn)) { - HRESULT hr = _engine->SetLocalSource(wzPackageOrContainerId, wzPayloadId, ofn.lpstrFile); - nResult = SUCCEEDED(hr) ? IDRETRY : IDERROR; - } else { - nResult = IDCANCEL; - } - } - } else if (wzDownloadSource) { - // If doing a non-interactive install and download source is available, let's try downloading the package silently - nResult = IDDOWNLOAD; - } - // else there's nothing more we can do in non-interactive mode - - return CheckCanceled() ? IDCANCEL : nResult; - } - - - virtual STDMETHODIMP_(int) OnApplyComplete(__in HRESULT hrStatus, __in BOOTSTRAPPER_APPLY_RESTART restart) { - _restartResult = restart; // remember the restart result so we return the correct error code no matter what the user chooses to do in the UI. - - // If a restart was encountered and we are not suppressing restarts, then restart is required. - _restartRequired = (BOOTSTRAPPER_APPLY_RESTART_NONE != restart && BOOTSTRAPPER_RESTART_NEVER < _command.restart); - // If a restart is required and we're not displaying a UI or we are not supposed to prompt for restart then allow the restart. - _allowRestart = _restartRequired && (BOOTSTRAPPER_DISPLAY_FULL > _command.display || BOOTSTRAPPER_RESTART_PROMPT < _command.restart); - - // If we are showing UI, wait a beat before moving to the final screen. - if (BOOTSTRAPPER_DISPLAY_NONE < _command.display) { - ::Sleep(250); - } - - SetState(PYBA_STATE_APPLIED, hrStatus); - SetTaskbarButtonProgress(100); // show full progress bar, green, yellow, or red - - return IDNOACTION; - } - - virtual STDMETHODIMP_(void) OnLaunchApprovedExeComplete(__in HRESULT hrStatus, __in DWORD /*processId*/) { - } - - -private: - // - // UiThreadProc - entrypoint for UI thread. - // - static DWORD WINAPI UiThreadProc(__in LPVOID pvContext) { - HRESULT hr = S_OK; - PythonBootstrapperApplication* pThis = (PythonBootstrapperApplication*)pvContext; - BOOL comInitialized = FALSE; - BOOL ret = FALSE; - MSG msg = { }; - - // Initialize COM and theme. - hr = ::CoInitialize(nullptr); - BalExitOnFailure(hr, "Failed to initialize COM."); - comInitialized = TRUE; - - hr = ThemeInitialize(pThis->_hModule); - BalExitOnFailure(hr, "Failed to initialize theme manager."); - - hr = pThis->InitializeData(); - BalExitOnFailure(hr, "Failed to initialize data in bootstrapper application."); - - // Create main window. - pThis->InitializeTaskbarButton(); - hr = pThis->CreateMainWindow(); - BalExitOnFailure(hr, "Failed to create main window."); - - pThis->ValidateOperatingSystem(); - - if (FAILED(pThis->_hrFinal)) { - pThis->SetState(PYBA_STATE_FAILED, hr); - ::PostMessageW(pThis->_hWnd, WM_PYBA_SHOW_FAILURE, 0, 0); - } else { - // Okay, we're ready for packages now. - pThis->SetState(PYBA_STATE_INITIALIZED, hr); - ::PostMessageW(pThis->_hWnd, BOOTSTRAPPER_ACTION_HELP == pThis->_command.action ? WM_PYBA_SHOW_HELP : WM_PYBA_DETECT_PACKAGES, 0, 0); - } - - // message pump - while (0 != (ret = ::GetMessageW(&msg, nullptr, 0, 0))) { - if (-1 == ret) { - hr = E_UNEXPECTED; - BalExitOnFailure(hr, "Unexpected return value from message pump."); - } else if (!ThemeHandleKeyboardMessage(pThis->_theme, msg.hwnd, &msg)) { - ::TranslateMessage(&msg); - ::DispatchMessageW(&msg); - } - } - - // Succeeded thus far, check to see if anything went wrong while actually - // executing changes. - if (FAILED(pThis->_hrFinal)) { - hr = pThis->_hrFinal; - } else if (pThis->CheckCanceled()) { - hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT); - } - - LExit: - // destroy main window - pThis->DestroyMainWindow(); - - // initiate engine shutdown - DWORD dwQuit = HRESULT_CODE(hr); - if (BOOTSTRAPPER_APPLY_RESTART_INITIATED == pThis->_restartResult) { - dwQuit = ERROR_SUCCESS_REBOOT_INITIATED; - } else if (BOOTSTRAPPER_APPLY_RESTART_REQUIRED == pThis->_restartResult) { - dwQuit = ERROR_SUCCESS_REBOOT_REQUIRED; - } - pThis->_engine->Quit(dwQuit); - - ReleaseTheme(pThis->_theme); - ThemeUninitialize(); - - // uninitialize COM - if (comInitialized) { - ::CoUninitialize(); - } - - return hr; - } - - // - // ParseVariablesFromUnattendXml - reads options from unattend.xml if it - // exists - // - HRESULT ParseVariablesFromUnattendXml() { - HRESULT hr = S_OK; - LPWSTR sczUnattendXmlPath = nullptr; - IXMLDOMDocument *pixdUnattend = nullptr; - IXMLDOMNodeList *pNodes = nullptr; - IXMLDOMNode *pNode = nullptr; - long cNodes; - DWORD dwAttr; - LPWSTR scz = nullptr; - BOOL bValue; - int iValue; - BOOL tryConvert; - BSTR bstrValue = nullptr; - - hr = BalFormatString(L"[WixBundleOriginalSourceFolder]unattend.xml", &sczUnattendXmlPath); - BalExitOnFailure(hr, "Failed to calculate path to unattend.xml"); - - if (!FileExistsEx(sczUnattendXmlPath, &dwAttr)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_VERBOSE, "Did not find %ls", sczUnattendXmlPath); - hr = S_FALSE; - goto LExit; - } - - hr = XmlLoadDocumentFromFile(sczUnattendXmlPath, &pixdUnattend); - BalExitOnFailure1(hr, "Failed to read %ls", sczUnattendXmlPath); - - // get the list of variables users have overridden - hr = XmlSelectNodes(pixdUnattend, L"/Options/Option", &pNodes); - if (S_FALSE == hr) { - ExitFunction1(hr = S_OK); - } - BalExitOnFailure(hr, "Failed to select option nodes."); - - hr = pNodes->get_length((long*)&cNodes); - BalExitOnFailure(hr, "Failed to get option node count."); - - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Reading settings from %ls", sczUnattendXmlPath); - - for (DWORD i = 0; i < cNodes; ++i) { - hr = XmlNextElement(pNodes, &pNode, nullptr); - BalExitOnFailure(hr, "Failed to get next node."); - - // @Name - hr = XmlGetAttributeEx(pNode, L"Name", &scz); - BalExitOnFailure(hr, "Failed to get @Name."); - - tryConvert = TRUE; - hr = XmlGetAttribute(pNode, L"Value", &bstrValue); - if (FAILED(hr) || !bstrValue || !*bstrValue) { - hr = XmlGetText(pNode, &bstrValue); - tryConvert = FALSE; - } - BalExitOnFailure(hr, "Failed to get @Value."); - - if (tryConvert && - CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, bstrValue, -1, L"yes", -1)) { - _engine->SetVariableNumeric(scz, 1); - } else if (tryConvert && - CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, bstrValue, -1, L"no", -1)) { - _engine->SetVariableNumeric(scz, 0); - } else if (tryConvert && ::StrToIntExW(bstrValue, STIF_DEFAULT, &iValue)) { - _engine->SetVariableNumeric(scz, iValue); - } else { - _engine->SetVariableString(scz, bstrValue); - } - - ReleaseNullBSTR(bstrValue); - ReleaseNullStr(scz); - ReleaseNullObject(pNode); - } - - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Finished reading from %ls", sczUnattendXmlPath); - - LExit: - ReleaseObject(pNode); - ReleaseObject(pNodes); - ReleaseObject(pixdUnattend); - ReleaseStr(sczUnattendXmlPath); - - return hr; - } - - - // - // InitializeData - initializes all the package information. - // - HRESULT InitializeData() { - HRESULT hr = S_OK; - LPWSTR sczModulePath = nullptr; - IXMLDOMDocument *pixdManifest = nullptr; - - hr = BalManifestLoad(_hModule, &pixdManifest); - BalExitOnFailure(hr, "Failed to load bootstrapper application manifest."); - - hr = ParseOverridableVariablesFromXml(pixdManifest); - BalExitOnFailure(hr, "Failed to read overridable variables."); - - if (_command.action == BOOTSTRAPPER_ACTION_MODIFY) { - LoadOptionalFeatureStates(_engine); - } - - hr = ParseVariablesFromUnattendXml(); - ExitOnFailure(hr, "Failed to read unattend.ini file."); - - hr = ProcessCommandLine(&_language); - ExitOnFailure(hr, "Unknown commandline parameters."); - - hr = PathRelativeToModule(&sczModulePath, nullptr, _hModule); - BalExitOnFailure(hr, "Failed to get module path."); - - hr = LoadLocalization(sczModulePath, _language); - ExitOnFailure(hr, "Failed to load localization."); - - hr = LoadTheme(sczModulePath, _language); - ExitOnFailure(hr, "Failed to load theme."); - - hr = BalInfoParseFromXml(&_bundle, pixdManifest); - BalExitOnFailure(hr, "Failed to load bundle information."); - - hr = BalConditionsParseFromXml(&_conditions, pixdManifest, _wixLoc); - BalExitOnFailure(hr, "Failed to load conditions from XML."); - - hr = LoadBootstrapperBAFunctions(); - BalExitOnFailure(hr, "Failed to load bootstrapper functions."); - - hr = UpdateUIStrings(_command.action); - BalExitOnFailure(hr, "Failed to load UI strings."); - - GetBundleFileVersion(); - // don't fail if we couldn't get the version info; best-effort only - LExit: - ReleaseObject(pixdManifest); - ReleaseStr(sczModulePath); - - return hr; - } - - - // - // ProcessCommandLine - process the provided command line arguments. - // - HRESULT ProcessCommandLine(__inout LPWSTR* psczLanguage) { - HRESULT hr = S_OK; - int argc = 0; - LPWSTR* argv = nullptr; - LPWSTR sczVariableName = nullptr; - LPWSTR sczVariableValue = nullptr; - - if (_command.wzCommandLine && *_command.wzCommandLine) { - argv = ::CommandLineToArgvW(_command.wzCommandLine, &argc); - ExitOnNullWithLastError(argv, hr, "Failed to get command line."); - - for (int i = 0; i < argc; ++i) { - if (argv[i][0] == L'-' || argv[i][0] == L'/') { - if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, L"lang", -1)) { - if (i + 1 >= argc) { - hr = E_INVALIDARG; - BalExitOnFailure(hr, "Must specify a language."); - } - - ++i; - - hr = StrAllocString(psczLanguage, &argv[i][0], 0); - BalExitOnFailure(hr, "Failed to copy language."); - } else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, L"simple", -1)) { - _engine->SetVariableNumeric(L"SimpleInstall", 1); - } - } else if (_overridableVariables) { - int value; - const wchar_t* pwc = wcschr(argv[i], L'='); - if (pwc) { - hr = StrAllocString(&sczVariableName, argv[i], pwc - argv[i]); - BalExitOnFailure(hr, "Failed to copy variable name."); - - hr = DictKeyExists(_overridableVariables, sczVariableName); - if (E_NOTFOUND == hr) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Ignoring attempt to set non-overridable variable: '%ls'.", sczVariableName); - hr = S_OK; - continue; - } - ExitOnFailure(hr, "Failed to check the dictionary of overridable variables."); - - hr = StrAllocString(&sczVariableValue, ++pwc, 0); - BalExitOnFailure(hr, "Failed to copy variable value."); - - if (::StrToIntEx(sczVariableValue, STIF_DEFAULT, &value)) { - hr = _engine->SetVariableNumeric(sczVariableName, value); - } else { - hr = _engine->SetVariableString(sczVariableName, sczVariableValue); - } - BalExitOnFailure(hr, "Failed to set variable."); - } else { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Ignoring unknown argument: %ls", argv[i]); - } - } - } - } - - LExit: - if (argv) { - ::LocalFree(argv); - } - - ReleaseStr(sczVariableName); - ReleaseStr(sczVariableValue); - - return hr; - } - - HRESULT LoadLocalization(__in_z LPCWSTR wzModulePath, __in_z_opt LPCWSTR wzLanguage) { - HRESULT hr = S_OK; - LPWSTR sczLocPath = nullptr; - LPCWSTR wzLocFileName = L"Default.wxl"; - - hr = LocProbeForFile(wzModulePath, wzLocFileName, wzLanguage, &sczLocPath); - BalExitOnFailure2(hr, "Failed to probe for loc file: %ls in path: %ls", wzLocFileName, wzModulePath); - - hr = LocLoadFromFile(sczLocPath, &_wixLoc); - BalExitOnFailure1(hr, "Failed to load loc file from path: %ls", sczLocPath); - - if (WIX_LOCALIZATION_LANGUAGE_NOT_SET != _wixLoc->dwLangId) { - ::SetThreadLocale(_wixLoc->dwLangId); - } - - hr = StrAllocString(&_confirmCloseMessage, L"#(loc.ConfirmCancelMessage)", 0); - ExitOnFailure(hr, "Failed to initialize confirm message loc identifier."); - - hr = LocLocalizeString(_wixLoc, &_confirmCloseMessage); - BalExitOnFailure1(hr, "Failed to localize confirm close message: %ls", _confirmCloseMessage); - - LExit: - ReleaseStr(sczLocPath); - - return hr; - } - - - HRESULT LoadTheme(__in_z LPCWSTR wzModulePath, __in_z_opt LPCWSTR wzLanguage) { - HRESULT hr = S_OK; - LPWSTR sczThemePath = nullptr; - LPCWSTR wzThemeFileName = L"Default.thm"; - LPWSTR sczCaption = nullptr; - - hr = LocProbeForFile(wzModulePath, wzThemeFileName, wzLanguage, &sczThemePath); - BalExitOnFailure2(hr, "Failed to probe for theme file: %ls in path: %ls", wzThemeFileName, wzModulePath); - - hr = ThemeLoadFromFile(sczThemePath, &_theme); - BalExitOnFailure1(hr, "Failed to load theme from path: %ls", sczThemePath); - - hr = ThemeLocalize(_theme, _wixLoc); - BalExitOnFailure1(hr, "Failed to localize theme: %ls", sczThemePath); - - // Update the caption if there are any formatted strings in it. - // If the wix developer is showing a hidden variable in the UI, then - // obviously they don't care about keeping it safe so don't go down the - // rabbit hole of making sure that this is securely freed. - hr = BalFormatString(_theme->sczCaption, &sczCaption); - if (SUCCEEDED(hr)) { - ThemeUpdateCaption(_theme, sczCaption); - } - - LExit: - ReleaseStr(sczCaption); - ReleaseStr(sczThemePath); - - return hr; - } - - - HRESULT ParseOverridableVariablesFromXml(__in IXMLDOMDocument* pixdManifest) { - HRESULT hr = S_OK; - IXMLDOMNode* pNode = nullptr; - IXMLDOMNodeList* pNodes = nullptr; - DWORD cNodes = 0; - LPWSTR scz = nullptr; - BOOL hidden = FALSE; - - // get the list of variables users can override on the command line - hr = XmlSelectNodes(pixdManifest, L"/BootstrapperApplicationData/WixStdbaOverridableVariable", &pNodes); - if (S_FALSE == hr) { - ExitFunction1(hr = S_OK); - } - ExitOnFailure(hr, "Failed to select overridable variable nodes."); - - hr = pNodes->get_length((long*)&cNodes); - ExitOnFailure(hr, "Failed to get overridable variable node count."); - - if (cNodes) { - hr = DictCreateStringList(&_overridableVariables, 32, DICT_FLAG_NONE); - ExitOnFailure(hr, "Failed to create the string dictionary."); - - for (DWORD i = 0; i < cNodes; ++i) { - hr = XmlNextElement(pNodes, &pNode, nullptr); - ExitOnFailure(hr, "Failed to get next node."); - - // @Name - hr = XmlGetAttributeEx(pNode, L"Name", &scz); - ExitOnFailure(hr, "Failed to get @Name."); - - hr = XmlGetYesNoAttribute(pNode, L"Hidden", &hidden); - - if (!hidden) { - hr = DictAddKey(_overridableVariables, scz); - ExitOnFailure1(hr, "Failed to add \"%ls\" to the string dictionary.", scz); - } - - // prepare next iteration - ReleaseNullObject(pNode); - } - } - - LExit: - ReleaseObject(pNode); - ReleaseObject(pNodes); - ReleaseStr(scz); - return hr; - } - - - // - // Get the file version of the bootstrapper and record in bootstrapper log file - // - HRESULT GetBundleFileVersion() { - HRESULT hr = S_OK; - ULARGE_INTEGER uliVersion = { }; - LPWSTR sczCurrentPath = nullptr; - - hr = PathForCurrentProcess(&sczCurrentPath, nullptr); - BalExitOnFailure(hr, "Failed to get bundle path."); - - hr = FileVersion(sczCurrentPath, &uliVersion.HighPart, &uliVersion.LowPart); - BalExitOnFailure(hr, "Failed to get bundle file version."); - - hr = _engine->SetVariableVersion(PYBA_VARIABLE_BUNDLE_FILE_VERSION, uliVersion.QuadPart); - BalExitOnFailure(hr, "Failed to set WixBundleFileVersion variable."); - - LExit: - ReleaseStr(sczCurrentPath); - - return hr; - } - - - // - // CreateMainWindow - creates the main install window. - // - HRESULT CreateMainWindow() { - HRESULT hr = S_OK; - HICON hIcon = reinterpret_cast(_theme->hIcon); - WNDCLASSW wc = { }; - DWORD dwWindowStyle = 0; - int x = CW_USEDEFAULT; - int y = CW_USEDEFAULT; - POINT ptCursor = { }; - HMONITOR hMonitor = nullptr; - MONITORINFO mi = { }; - COLORREF fg, bg; - HBRUSH bgBrush; - - // If the theme did not provide an icon, try using the icon from the bundle engine. - if (!hIcon) { - HMODULE hBootstrapperEngine = ::GetModuleHandleW(nullptr); - if (hBootstrapperEngine) { - hIcon = ::LoadIconW(hBootstrapperEngine, MAKEINTRESOURCEW(1)); - } - } - - fg = RGB(0, 0, 0); - bg = RGB(255, 255, 255); - bgBrush = (HBRUSH)(COLOR_WINDOW+1); - if (_theme->dwFontId < _theme->cFonts) { - THEME_FONT *font = &_theme->rgFonts[_theme->dwFontId]; - fg = font->crForeground; - bg = font->crBackground; - bgBrush = font->hBackground; - RemapColor(&fg, &bg, &bgBrush); - } - - // Register the window class and create the window. - wc.lpfnWndProc = PythonBootstrapperApplication::WndProc; - wc.hInstance = _hModule; - wc.hIcon = hIcon; - wc.hCursor = ::LoadCursorW(nullptr, (LPCWSTR)IDC_ARROW); - wc.hbrBackground = bgBrush; - wc.lpszMenuName = nullptr; - wc.lpszClassName = PYBA_WINDOW_CLASS; - if (!::RegisterClassW(&wc)) { - ExitWithLastError(hr, "Failed to register window."); - } - - _registered = TRUE; - - // Calculate the window style based on the theme style and command display value. - dwWindowStyle = _theme->dwStyle; - if (BOOTSTRAPPER_DISPLAY_NONE >= _command.display) { - dwWindowStyle &= ~WS_VISIBLE; - } - - // Don't show the window if there is a splash screen (it will be made visible when the splash screen is hidden) - if (::IsWindow(_command.hwndSplashScreen)) { - dwWindowStyle &= ~WS_VISIBLE; - } - - // Center the window on the monitor with the mouse. - if (::GetCursorPos(&ptCursor)) { - hMonitor = ::MonitorFromPoint(ptCursor, MONITOR_DEFAULTTONEAREST); - if (hMonitor) { - mi.cbSize = sizeof(mi); - if (::GetMonitorInfoW(hMonitor, &mi)) { - x = mi.rcWork.left + (mi.rcWork.right - mi.rcWork.left - _theme->nWidth) / 2; - y = mi.rcWork.top + (mi.rcWork.bottom - mi.rcWork.top - _theme->nHeight) / 2; - } - } - } - - _hWnd = ::CreateWindowExW( - 0, - wc.lpszClassName, - _theme->sczCaption, - dwWindowStyle, - x, - y, - _theme->nWidth, - _theme->nHeight, - HWND_DESKTOP, - nullptr, - _hModule, - this - ); - ExitOnNullWithLastError(_hWnd, hr, "Failed to create window."); - - hr = S_OK; - - LExit: - return hr; - } - - - // - // InitializeTaskbarButton - initializes taskbar button for progress. - // - void InitializeTaskbarButton() { - HRESULT hr = S_OK; - - hr = ::CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_ALL, __uuidof(ITaskbarList3), reinterpret_cast(&_taskbarList)); - if (REGDB_E_CLASSNOTREG == hr) { - // not supported before Windows 7 - ExitFunction1(hr = S_OK); - } - BalExitOnFailure(hr, "Failed to create ITaskbarList3. Continuing."); - - _taskbarButtonCreatedMessage = ::RegisterWindowMessageW(L"TaskbarButtonCreated"); - BalExitOnNullWithLastError(_taskbarButtonCreatedMessage, hr, "Failed to get TaskbarButtonCreated message. Continuing."); - - LExit: - return; - } - - // - // DestroyMainWindow - clean up all the window registration. - // - void DestroyMainWindow() { - if (::IsWindow(_hWnd)) { - ::DestroyWindow(_hWnd); - _hWnd = nullptr; - _taskbarButtonOK = FALSE; - } - - if (_registered) { - ::UnregisterClassW(PYBA_WINDOW_CLASS, _hModule); - _registered = FALSE; - } - } - - - // - // WndProc - standard windows message handler. - // - static LRESULT CALLBACK WndProc( - __in HWND hWnd, - __in UINT uMsg, - __in WPARAM wParam, - __in LPARAM lParam - ) { -#pragma warning(suppress:4312) - auto pBA = reinterpret_cast(::GetWindowLongPtrW(hWnd, GWLP_USERDATA)); - - switch (uMsg) { - case WM_NCCREATE: { - LPCREATESTRUCT lpcs = reinterpret_cast(lParam); - pBA = reinterpret_cast(lpcs->lpCreateParams); -#pragma warning(suppress:4244) - ::SetWindowLongPtrW(hWnd, GWLP_USERDATA, reinterpret_cast(pBA)); - break; - } - - case WM_NCDESTROY: { - LRESULT lres = ThemeDefWindowProc(pBA ? pBA->_theme : nullptr, hWnd, uMsg, wParam, lParam); - ::SetWindowLongPtrW(hWnd, GWLP_USERDATA, 0); - return lres; - } - - case WM_CREATE: - if (!pBA->OnCreate(hWnd)) { - return -1; - } - break; - - case WM_QUERYENDSESSION: - return IDCANCEL != pBA->OnSystemShutdown(static_cast(lParam), IDCANCEL); - - case WM_CLOSE: - // If the user chose not to close, do *not* let the default window proc handle the message. - if (!pBA->OnClose()) { - return 0; - } - break; - - case WM_DESTROY: - ::PostQuitMessage(0); - break; - - case WM_PAINT: __fallthrough; - case WM_ERASEBKGND: - if (pBA && pBA->_suppressPaint) { - return TRUE; - } - break; - - case WM_PYBA_SHOW_HELP: - pBA->OnShowHelp(); - return 0; - - case WM_PYBA_DETECT_PACKAGES: - pBA->OnDetect(); - return 0; - - case WM_PYBA_PLAN_PACKAGES: - pBA->OnPlan(static_cast(lParam)); - return 0; - - case WM_PYBA_APPLY_PACKAGES: - pBA->OnApply(); - return 0; - - case WM_PYBA_CHANGE_STATE: - pBA->OnChangeState(static_cast(lParam)); - return 0; - - case WM_PYBA_SHOW_FAILURE: - pBA->OnShowFailure(); - return 0; - - case WM_COMMAND: - switch (LOWORD(wParam)) { - // Customize commands - // Success/failure commands - case ID_SUCCESS_RESTART_BUTTON: __fallthrough; - case ID_FAILURE_RESTART_BUTTON: - pBA->OnClickRestartButton(); - return 0; - - case IDCANCEL: __fallthrough; - case ID_INSTALL_CANCEL_BUTTON: __fallthrough; - case ID_CUSTOM1_CANCEL_BUTTON: __fallthrough; - case ID_CUSTOM2_CANCEL_BUTTON: __fallthrough; - case ID_MODIFY_CANCEL_BUTTON: __fallthrough; - case ID_PROGRESS_CANCEL_BUTTON: __fallthrough; - case ID_SUCCESS_CANCEL_BUTTON: __fallthrough; - case ID_FAILURE_CANCEL_BUTTON: __fallthrough; - case ID_CLOSE_BUTTON: - pBA->OnCommand(ID_CLOSE_BUTTON); - return 0; - - default: - pBA->OnCommand((CONTROL_ID)LOWORD(wParam)); - } - break; - - case WM_NOTIFY: - if (lParam) { - LPNMHDR pnmhdr = reinterpret_cast(lParam); - switch (pnmhdr->code) { - case NM_CLICK: __fallthrough; - case NM_RETURN: - switch (static_cast(pnmhdr->idFrom)) { - case ID_FAILURE_LOGFILE_LINK: - pBA->OnClickLogFileLink(); - return 1; - } - } - } - break; - - case WM_CTLCOLORSTATIC: - case WM_CTLCOLORBTN: - if (pBA) { - HBRUSH brush = nullptr; - if (pBA->SetControlColor((HWND)lParam, (HDC)wParam, &brush)) { - return (LRESULT)brush; - } - } - break; - } - - if (pBA && pBA->_taskbarList && uMsg == pBA->_taskbarButtonCreatedMessage) { - pBA->_taskbarButtonOK = TRUE; - return 0; - } - - return ThemeDefWindowProc(pBA ? pBA->_theme : nullptr, hWnd, uMsg, wParam, lParam); - } - - // - // OnCreate - finishes loading the theme. - // - BOOL OnCreate(__in HWND hWnd) { - HRESULT hr = S_OK; - - hr = ThemeLoadControls(_theme, hWnd, CONTROL_ID_NAMES, countof(CONTROL_ID_NAMES)); - BalExitOnFailure(hr, "Failed to load theme controls."); - - C_ASSERT(COUNT_PAGE == countof(PAGE_NAMES)); - C_ASSERT(countof(_pageIds) == countof(PAGE_NAMES)); - - ThemeGetPageIds(_theme, PAGE_NAMES, _pageIds, countof(_pageIds)); - - // Initialize the text on all "application" (non-page) controls. - for (DWORD i = 0; i < _theme->cControls; ++i) { - THEME_CONTROL* pControl = _theme->rgControls + i; - LPWSTR text = nullptr; - - if (!pControl->wPageId && pControl->sczText && *pControl->sczText) { - HRESULT hrFormat; - - // If the wix developer is showing a hidden variable in the UI, - // then obviously they don't care about keeping it safe so don't - // go down the rabbit hole of making sure that this is securely - // freed. - hrFormat = BalFormatString(pControl->sczText, &text); - if (SUCCEEDED(hrFormat)) { - ThemeSetTextControl(_theme, pControl->wId, text); - ReleaseStr(text); - } - } - } - - LExit: - return SUCCEEDED(hr); - } - - void RemapColor(COLORREF *fg, COLORREF *bg, HBRUSH *bgBrush) { - if (*fg == RGB(0, 0, 0)) { - *fg = GetSysColor(COLOR_WINDOWTEXT); - } else if (*fg == RGB(128, 128, 128)) { - *fg = GetSysColor(COLOR_GRAYTEXT); - } - if (*bgBrush && *bg == RGB(255, 255, 255)) { - *bg = GetSysColor(COLOR_WINDOW); - *bgBrush = GetSysColorBrush(COLOR_WINDOW); - } - } - - BOOL SetControlColor(HWND hWnd, HDC hDC, HBRUSH *brush) { - for (int i = 0; i < _theme->cControls; ++i) { - if (_theme->rgControls[i].hWnd != hWnd) { - continue; - } - - DWORD fontId = _theme->rgControls[i].dwFontId; - if (fontId > _theme->cFonts) { - fontId = 0; - } - THEME_FONT *fnt = &_theme->rgFonts[fontId]; - - COLORREF fg = fnt->crForeground, bg = fnt->crBackground; - *brush = fnt->hBackground; - RemapColor(&fg, &bg, brush); - ::SetTextColor(hDC, fg); - ::SetBkColor(hDC, bg); - - return TRUE; - } - return FALSE; - } - - // - // OnShowFailure - display the failure page. - // - void OnShowFailure() { - SetState(PYBA_STATE_FAILED, S_OK); - - // If the UI should be visible, display it now and hide the splash screen - if (BOOTSTRAPPER_DISPLAY_NONE < _command.display) { - ::ShowWindow(_theme->hwndParent, SW_SHOW); - } - - _engine->CloseSplashScreen(); - - return; - } - - - // - // OnShowHelp - display the help page. - // - void OnShowHelp() { - SetState(PYBA_STATE_HELP, S_OK); - - // If the UI should be visible, display it now and hide the splash screen - if (BOOTSTRAPPER_DISPLAY_NONE < _command.display) { - ::ShowWindow(_theme->hwndParent, SW_SHOW); - } - - _engine->CloseSplashScreen(); - - return; - } - - - // - // OnDetect - start the processing of packages. - // - void OnDetect() { - HRESULT hr = S_OK; - - if (_baFunction) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running detect BA function"); - hr = _baFunction->OnDetect(); - BalExitOnFailure(hr, "Failed calling detect BA function."); - } - - SetState(PYBA_STATE_DETECTING, hr); - - // If the UI should be visible, display it now and hide the splash screen - if (BOOTSTRAPPER_DISPLAY_NONE < _command.display) { - ::ShowWindow(_theme->hwndParent, SW_SHOW); - } - - _engine->CloseSplashScreen(); - - // Tell the core we're ready for the packages to be processed now. - hr = _engine->Detect(); - BalExitOnFailure(hr, "Failed to start detecting chain."); - - LExit: - if (FAILED(hr)) { - SetState(PYBA_STATE_DETECTING, hr); - } - - return; - } - - HRESULT UpdateUIStrings(__in BOOTSTRAPPER_ACTION action) { - HRESULT hr = S_OK; - LPCWSTR likeInstalling = nullptr; - LPCWSTR likeInstallation = nullptr; - switch (action) { - case BOOTSTRAPPER_ACTION_INSTALL: - likeInstalling = L"Installing"; - likeInstallation = L"Installation"; - break; - case BOOTSTRAPPER_ACTION_MODIFY: - // For modify, we actually want to pass INSTALL - action = BOOTSTRAPPER_ACTION_INSTALL; - likeInstalling = L"Modifying"; - likeInstallation = L"Modification"; - break; - case BOOTSTRAPPER_ACTION_REPAIR: - likeInstalling = L"Repairing"; - likeInstallation = L"Repair"; - break; - case BOOTSTRAPPER_ACTION_UNINSTALL: - likeInstalling = L"Uninstalling"; - likeInstallation = L"Uninstallation"; - break; - } - - if (likeInstalling) { - LPWSTR locName = nullptr; - LOC_STRING *locText = nullptr; - hr = StrAllocFormatted(&locName, L"#(loc.%ls)", likeInstalling); - if (SUCCEEDED(hr)) { - hr = LocGetString(_wixLoc, locName, &locText); - ReleaseStr(locName); - } - _engine->SetVariableString( - L"ActionLikeInstalling", - SUCCEEDED(hr) && locText ? locText->wzText : likeInstalling - ); - } - - if (likeInstallation) { - LPWSTR locName = nullptr; - LOC_STRING *locText = nullptr; - hr = StrAllocFormatted(&locName, L"#(loc.%ls)", likeInstallation); - if (SUCCEEDED(hr)) { - hr = LocGetString(_wixLoc, locName, &locText); - ReleaseStr(locName); - } - _engine->SetVariableString( - L"ActionLikeInstallation", - SUCCEEDED(hr) && locText ? locText->wzText : likeInstallation - ); - } - return hr; - } - - // - // OnPlan - plan the detected changes. - // - void OnPlan(__in BOOTSTRAPPER_ACTION action) { - HRESULT hr = S_OK; - - _plannedAction = action; - - hr = UpdateUIStrings(action); - BalExitOnFailure(hr, "Failed to update strings"); - - // If we are going to apply a downgrade, bail. - if (_downgradingOtherVersion && BOOTSTRAPPER_ACTION_UNINSTALL < action) { - if (_suppressDowngradeFailure) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "A newer version of this product is installed but downgrade failure has been suppressed; continuing..."); - } else { - hr = HRESULT_FROM_WIN32(ERROR_PRODUCT_VERSION); - BalExitOnFailure(hr, "Cannot install a product when a newer version is installed."); - } - } - - SetState(PYBA_STATE_PLANNING, hr); - - if (_baFunction) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running plan BA function"); - _baFunction->OnPlan(); - } - - hr = _engine->Plan(action); - BalExitOnFailure(hr, "Failed to start planning packages."); - - LExit: - if (FAILED(hr)) { - SetState(PYBA_STATE_PLANNING, hr); - } - - return; - } - - - // - // OnApply - apply the packages. - // - void OnApply() { - HRESULT hr = S_OK; - - SetState(PYBA_STATE_APPLYING, hr); - SetProgressState(hr); - SetTaskbarButtonProgress(0); - - hr = _engine->Apply(_hWnd); - BalExitOnFailure(hr, "Failed to start applying packages."); - - ThemeControlEnable(_theme, ID_PROGRESS_CANCEL_BUTTON, TRUE); // ensure the cancel button is enabled before starting. - - LExit: - if (FAILED(hr)) { - SetState(PYBA_STATE_APPLYING, hr); - } - - return; - } - - - // - // OnChangeState - change state. - // - void OnChangeState(__in PYBA_STATE state) { - LPWSTR unformattedText = nullptr; - - _state = state; - - // If our install is at the end (success or failure) and we're not showing full UI - // then exit (prompt for restart if required). - if ((PYBA_STATE_APPLIED <= _state && BOOTSTRAPPER_DISPLAY_FULL > _command.display)) { - // If a restart was required but we were not automatically allowed to - // accept the reboot then do the prompt. - if (_restartRequired && !_allowRestart) { - StrAllocFromError(&unformattedText, HRESULT_FROM_WIN32(ERROR_SUCCESS_REBOOT_REQUIRED), nullptr); - - _allowRestart = IDOK == ::MessageBoxW( - _hWnd, - unformattedText ? unformattedText : L"The requested operation is successful. Changes will not be effective until the system is rebooted.", - _theme->sczCaption, - MB_ICONEXCLAMATION | MB_OKCANCEL - ); - } - - // Quietly exit. - ::PostMessageW(_hWnd, WM_CLOSE, 0, 0); - } else { // try to change the pages. - DWORD newPageId = 0; - DeterminePageId(_state, &newPageId); - - if (_visiblePageId != newPageId) { - ShowPage(newPageId); - } - } - - ReleaseStr(unformattedText); - } - - // - // Called before showing a page to handle all controls. - // - void ProcessPageControls(THEME_PAGE *pPage) { - if (!pPage) { - return; - } - - for (DWORD i = 0; i < pPage->cControlIndices; ++i) { - THEME_CONTROL* pControl = _theme->rgControls + pPage->rgdwControlIndices[i]; - BOOL enableControl = TRUE; - - // If this is a named control, try to set its default state. - if (pControl->sczName && *pControl->sczName) { - // If this is a checkable control, try to set its default state - // to the state of a matching named Burn variable. - if (IsCheckable(pControl)) { - LONGLONG llValue = 0; - HRESULT hr = BalGetNumericVariable(pControl->sczName, &llValue); - - // If the control value isn't set then disable it. - if (!SUCCEEDED(hr)) { - enableControl = FALSE; - } else { - ThemeSendControlMessage( - _theme, - pControl->wId, - BM_SETCHECK, - SUCCEEDED(hr) && llValue ? BST_CHECKED : BST_UNCHECKED, - 0 - ); - } - } - - // Hide or disable controls based on the control name with 'State' appended - LPWSTR controlName = nullptr; - HRESULT hr = StrAllocFormatted(&controlName, L"%lsState", pControl->sczName); - if (SUCCEEDED(hr)) { - LPWSTR controlState = nullptr; - hr = BalGetStringVariable(controlName, &controlState); - if (SUCCEEDED(hr) && controlState && *controlState) { - if (controlState[0] == '[') { - LPWSTR formatted = nullptr; - if (SUCCEEDED(BalFormatString(controlState, &formatted))) { - StrFree(controlState); - controlState = formatted; - } - } - - if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, controlState, -1, L"disable", -1)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Disable control %ls", pControl->sczName); - enableControl = FALSE; - } else if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, controlState, -1, L"hide", -1)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Hide control %ls", pControl->sczName); - // TODO: This doesn't work - ThemeShowControl(_theme, pControl->wId, SW_HIDE); - } else { - // An explicit state can override the lack of a - // backing variable. - enableControl = TRUE; - } - } - StrFree(controlState); - } - StrFree(controlName); - controlName = nullptr; - - - // If a command link has a note, then add it. - if ((pControl->dwStyle & BS_TYPEMASK) == BS_COMMANDLINK || - (pControl->dwStyle & BS_TYPEMASK) == BS_DEFCOMMANDLINK) { - hr = StrAllocFormatted(&controlName, L"#(loc.%lsNote)", pControl->sczName); - if (SUCCEEDED(hr)) { - LOC_STRING *locText = nullptr; - hr = LocGetString(_wixLoc, controlName, &locText); - if (SUCCEEDED(hr) && locText && locText->wzText && locText->wzText[0]) { - LPWSTR text = nullptr; - hr = BalFormatString(locText->wzText, &text); - if (SUCCEEDED(hr) && text && text[0]) { - ThemeSendControlMessage(_theme, pControl->wId, BCM_SETNOTE, 0, (LPARAM)text); - ReleaseStr(text); - text = nullptr; - } - } - ReleaseStr(controlName); - controlName = nullptr; - } - hr = S_OK; - } - } - - ThemeControlEnable(_theme, pControl->wId, enableControl); - - // Format the text in each of the new page's controls - if (pControl->sczText && *pControl->sczText) { - // If the wix developer is showing a hidden variable - // in the UI, then obviously they don't care about - // keeping it safe so don't go down the rabbit hole - // of making sure that this is securely freed. - LPWSTR text = nullptr; - HRESULT hr = BalFormatString(pControl->sczText, &text); - if (SUCCEEDED(hr)) { - ThemeSetTextControl(_theme, pControl->wId, text); - } - } - } - } - - // - // OnClose - called when the window is trying to be closed. - // - BOOL OnClose() { - BOOL close = FALSE; - - // If we've already succeeded or failed or showing the help page, just close (prompts are annoying if the bootstrapper is done). - if (PYBA_STATE_APPLIED <= _state || PYBA_STATE_HELP == _state) { - close = TRUE; - } else { - // prompt the user or force the cancel if there is no UI. - close = PromptCancel( - _hWnd, - BOOTSTRAPPER_DISPLAY_FULL != _command.display, - _confirmCloseMessage ? _confirmCloseMessage : L"Are you sure you want to cancel?", - _theme->sczCaption - ); - } - - // If we're doing progress then we never close, we just cancel to let rollback occur. - if (PYBA_STATE_APPLYING <= _state && PYBA_STATE_APPLIED > _state) { - // If we canceled disable cancel button since clicking it again is silly. - if (close) { - ThemeControlEnable(_theme, ID_PROGRESS_CANCEL_BUTTON, FALSE); - } - - close = FALSE; - } - - return close; - } - - // - // OnClickCloseButton - close the application. - // - void OnClickCloseButton() { - ::SendMessageW(_hWnd, WM_CLOSE, 0, 0); - } - - - - // - // OnClickRestartButton - allows the restart and closes the app. - // - void OnClickRestartButton() { - AssertSz(_restartRequired, "Restart must be requested to be able to click on the restart button."); - - _allowRestart = TRUE; - ::SendMessageW(_hWnd, WM_CLOSE, 0, 0); - - return; - } - - - // - // OnClickLogFileLink - show the log file. - // - void OnClickLogFileLink() { - HRESULT hr = S_OK; - LPWSTR sczLogFile = nullptr; - - hr = BalGetStringVariable(_bundle.sczLogVariable, &sczLogFile); - BalExitOnFailure1(hr, "Failed to get log file variable '%ls'.", _bundle.sczLogVariable); - - hr = ShelExec(L"notepad.exe", sczLogFile, L"open", nullptr, SW_SHOWDEFAULT, _hWnd, nullptr); - BalExitOnFailure1(hr, "Failed to open log file target: %ls", sczLogFile); - - LExit: - ReleaseStr(sczLogFile); - - return; - } - - - // - // SetState - // - void SetState(__in PYBA_STATE state, __in HRESULT hrStatus) { - if (FAILED(hrStatus)) { - _hrFinal = hrStatus; - } - - if (FAILED(_hrFinal)) { - state = PYBA_STATE_FAILED; - } - - if (_state != state) { - ::PostMessageW(_hWnd, WM_PYBA_CHANGE_STATE, 0, state); - } - } - - // - // GoToPage - // - void GoToPage(__in PAGE page) { - _installPage = page; - ::PostMessageW(_hWnd, WM_PYBA_CHANGE_STATE, 0, _state); - } - - void DeterminePageId(__in PYBA_STATE state, __out DWORD* pdwPageId) { - LONGLONG simple; - - if (BOOTSTRAPPER_DISPLAY_PASSIVE == _command.display) { - switch (state) { - case PYBA_STATE_INITIALIZED: - *pdwPageId = BOOTSTRAPPER_ACTION_HELP == _command.action - ? _pageIds[PAGE_HELP] - : _pageIds[PAGE_LOADING]; - break; - - case PYBA_STATE_HELP: - *pdwPageId = _pageIds[PAGE_HELP]; - break; - - case PYBA_STATE_DETECTING: - *pdwPageId = _pageIds[PAGE_LOADING] - ? _pageIds[PAGE_LOADING] - : _pageIds[PAGE_PROGRESS_PASSIVE] - ? _pageIds[PAGE_PROGRESS_PASSIVE] - : _pageIds[PAGE_PROGRESS]; - break; - - case PYBA_STATE_DETECTED: __fallthrough; - case PYBA_STATE_PLANNING: __fallthrough; - case PYBA_STATE_PLANNED: __fallthrough; - case PYBA_STATE_APPLYING: __fallthrough; - case PYBA_STATE_CACHING: __fallthrough; - case PYBA_STATE_CACHED: __fallthrough; - case PYBA_STATE_EXECUTING: __fallthrough; - case PYBA_STATE_EXECUTED: - *pdwPageId = _pageIds[PAGE_PROGRESS_PASSIVE] - ? _pageIds[PAGE_PROGRESS_PASSIVE] - : _pageIds[PAGE_PROGRESS]; - break; - - default: - *pdwPageId = 0; - break; - } - } else if (BOOTSTRAPPER_DISPLAY_FULL == _command.display) { - switch (state) { - case PYBA_STATE_INITIALIZING: - *pdwPageId = 0; - break; - - case PYBA_STATE_INITIALIZED: - *pdwPageId = BOOTSTRAPPER_ACTION_HELP == _command.action - ? _pageIds[PAGE_HELP] - : _pageIds[PAGE_LOADING]; - break; - - case PYBA_STATE_HELP: - *pdwPageId = _pageIds[PAGE_HELP]; - break; - - case PYBA_STATE_DETECTING: - *pdwPageId = _pageIds[PAGE_LOADING]; - break; - - case PYBA_STATE_DETECTED: - if (_installPage == PAGE_LOADING) { - switch (_command.action) { - case BOOTSTRAPPER_ACTION_INSTALL: - if (_upgrading) { - _installPage = PAGE_UPGRADE; - } else if (SUCCEEDED(BalGetNumericVariable(L"SimpleInstall", &simple)) && simple) { - _installPage = PAGE_SIMPLE_INSTALL; - } else { - _installPage = PAGE_INSTALL; - } - break; - - case BOOTSTRAPPER_ACTION_MODIFY: __fallthrough; - case BOOTSTRAPPER_ACTION_REPAIR: __fallthrough; - case BOOTSTRAPPER_ACTION_UNINSTALL: - _installPage = PAGE_MODIFY; - break; - } - } - *pdwPageId = _pageIds[_installPage]; - break; - - case PYBA_STATE_PLANNING: __fallthrough; - case PYBA_STATE_PLANNED: __fallthrough; - case PYBA_STATE_APPLYING: __fallthrough; - case PYBA_STATE_CACHING: __fallthrough; - case PYBA_STATE_CACHED: __fallthrough; - case PYBA_STATE_EXECUTING: __fallthrough; - case PYBA_STATE_EXECUTED: - *pdwPageId = _pageIds[PAGE_PROGRESS]; - break; - - case PYBA_STATE_APPLIED: - *pdwPageId = _pageIds[PAGE_SUCCESS]; - break; - - case PYBA_STATE_FAILED: - *pdwPageId = _pageIds[PAGE_FAILURE]; - break; - } - } - } - - BOOL WillElevate() { - static BAL_CONDITION WILL_ELEVATE_CONDITION = { - L"not WixBundleElevated and (" - /*Elevate when installing for all users*/ - L"InstallAllUsers or " - /*Elevate when installing the launcher for all users and it was not detected*/ - L"(Include_launcher and InstallLauncherAllUsers and not BlockedLauncher)" - L")", - L"" - }; - BOOL result; - - return SUCCEEDED(BalConditionEvaluate(&WILL_ELEVATE_CONDITION, _engine, &result, nullptr)) && result; - } - - BOOL IsCrtInstalled() { - if (_crtInstalledToken > 0) { - return TRUE; - } else if (_crtInstalledToken == 0) { - return FALSE; - } - - // Check whether at least CRT v10.0.10137.0 is available. - // It should only be installed as a Windows Update package, which means - // we don't need to worry about 32-bit/64-bit. - LPCWSTR crtFile = L"ucrtbase.dll"; - - DWORD cbVer = GetFileVersionInfoSizeW(crtFile, nullptr); - if (!cbVer) { - _crtInstalledToken = 0; - return FALSE; - } - - void *pData = malloc(cbVer); - if (!pData) { - _crtInstalledToken = 0; - return FALSE; - } - - if (!GetFileVersionInfoW(crtFile, 0, cbVer, pData)) { - free(pData); - _crtInstalledToken = 0; - return FALSE; - } - - VS_FIXEDFILEINFO *ffi; - UINT cb; - BOOL result = FALSE; - - if (VerQueryValueW(pData, L"\\", (LPVOID*)&ffi, &cb) && - ffi->dwFileVersionMS == 0x000A0000 && ffi->dwFileVersionLS >= 0x27990000) { - result = TRUE; - } - - free(pData); - _crtInstalledToken = result ? 1 : 0; - return result; - } - - HRESULT EvaluateConditions() { - HRESULT hr = S_OK; - BOOL result = FALSE; - - for (DWORD i = 0; i < _conditions.cConditions; ++i) { - BAL_CONDITION* pCondition = _conditions.rgConditions + i; - - hr = BalConditionEvaluate(pCondition, _engine, &result, &_failedMessage); - BalExitOnFailure(hr, "Failed to evaluate condition."); - - if (!result) { - // Hope they didn't have hidden variables in their message, because it's going in the log in plaintext. - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "%ls", _failedMessage); - - hr = E_WIXSTDBA_CONDITION_FAILED; - // todo: remove in WiX v4, in case people are relying on v3.x logging behavior - BalExitOnFailure1(hr, "Bundle condition evaluated to false: %ls", pCondition->sczCondition); - } - } - - ReleaseNullStrSecure(_failedMessage); - - LExit: - return hr; - } - - - void SetTaskbarButtonProgress(__in DWORD dwOverallPercentage) { - HRESULT hr = S_OK; - - if (_taskbarButtonOK) { - hr = _taskbarList->SetProgressValue(_hWnd, dwOverallPercentage, 100UL); - BalExitOnFailure1(hr, "Failed to set taskbar button progress to: %d%%.", dwOverallPercentage); - } - - LExit: - return; - } - - - void SetTaskbarButtonState(__in TBPFLAG tbpFlags) { - HRESULT hr = S_OK; - - if (_taskbarButtonOK) { - hr = _taskbarList->SetProgressState(_hWnd, tbpFlags); - BalExitOnFailure1(hr, "Failed to set taskbar button state.", tbpFlags); - } - - LExit: - return; - } - - - void SetProgressState(__in HRESULT hrStatus) { - TBPFLAG flag = TBPF_NORMAL; - - if (IsCanceled() || HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT) == hrStatus) { - flag = TBPF_PAUSED; - } else if (IsRollingBack() || FAILED(hrStatus)) { - flag = TBPF_ERROR; - } - - SetTaskbarButtonState(flag); - } - - - HRESULT LoadBootstrapperBAFunctions() { - HRESULT hr = S_OK; - LPWSTR sczBafPath = nullptr; - - hr = PathRelativeToModule(&sczBafPath, L"bafunctions.dll", _hModule); - BalExitOnFailure(hr, "Failed to get path to BA function DLL."); - -#ifdef DEBUG - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "PYBA: LoadBootstrapperBAFunctions() - BA function DLL %ls", sczBafPath); -#endif - - _hBAFModule = ::LoadLibraryW(sczBafPath); - if (_hBAFModule) { - auto pfnBAFunctionCreate = reinterpret_cast(::GetProcAddress(_hBAFModule, "CreateBootstrapperBAFunction")); - BalExitOnNullWithLastError1(pfnBAFunctionCreate, hr, "Failed to get CreateBootstrapperBAFunction entry-point from: %ls", sczBafPath); - - hr = pfnBAFunctionCreate(_engine, _hBAFModule, &_baFunction); - BalExitOnFailure(hr, "Failed to create BA function."); - } -#ifdef DEBUG - else { - BalLogError(HRESULT_FROM_WIN32(::GetLastError()), "PYBA: LoadBootstrapperBAFunctions() - Failed to load DLL %ls", sczBafPath); - } -#endif - - LExit: - if (_hBAFModule && !_baFunction) { - ::FreeLibrary(_hBAFModule); - _hBAFModule = nullptr; - } - ReleaseStr(sczBafPath); - - return hr; - } - - BOOL IsCheckable(THEME_CONTROL* pControl) { - if (!pControl->sczName || !pControl->sczName[0]) { - return FALSE; - } - - if (pControl->type == THEME_CONTROL_TYPE_CHECKBOX) { - return TRUE; - } - - if (pControl->type == THEME_CONTROL_TYPE_BUTTON) { - if ((pControl->dwStyle & BS_TYPEMASK) == BS_AUTORADIOBUTTON) { - return TRUE; - } - } - - return FALSE; - } - - void SavePageSettings() { - DWORD pageId = 0; - THEME_PAGE* pPage = nullptr; - - DeterminePageId(_state, &pageId); - pPage = ThemeGetPage(_theme, pageId); - if (!pPage) { - return; - } - - for (DWORD i = 0; i < pPage->cControlIndices; ++i) { - // Loop through all the checkable controls and set a Burn variable - // with that name to true or false. - THEME_CONTROL* pControl = _theme->rgControls + pPage->rgdwControlIndices[i]; - if (IsCheckable(pControl) && ThemeControlEnabled(_theme, pControl->wId)) { - BOOL checked = ThemeIsControlChecked(_theme, pControl->wId); - _engine->SetVariableNumeric(pControl->sczName, checked ? 1 : 0); - } - - // Loop through all the editbox controls with names and set a - // Burn variable with that name to the contents. - if (THEME_CONTROL_TYPE_EDITBOX == pControl->type && pControl->sczName && *pControl->sczName) { - LPWSTR sczValue = nullptr; - ThemeGetTextControl(_theme, pControl->wId, &sczValue); - _engine->SetVariableString(pControl->sczName, sczValue); - } - } - } - - static bool IsTargetPlatformx64(__in IBootstrapperEngine* pEngine) { - WCHAR platform[8]; - DWORD platformLen = 8; - - if (FAILED(pEngine->GetVariableString(L"TargetPlatform", platform, &platformLen))) { - return S_FALSE; - } - - return ::CompareStringW(LOCALE_NEUTRAL, 0, platform, -1, L"x64", -1) == CSTR_EQUAL; - } - - static bool IsTargetPlatformARM64(__in IBootstrapperEngine* pEngine) { - WCHAR platform[8]; - DWORD platformLen = 8; - - if (FAILED(pEngine->GetVariableString(L"TargetPlatform", platform, &platformLen))) { - return S_FALSE; - } - - return ::CompareStringW(LOCALE_NEUTRAL, 0, platform, -1, L"ARM64", -1) == CSTR_EQUAL; - } - - static HRESULT LoadOptionalFeatureStatesFromKey( - __in IBootstrapperEngine* pEngine, - __in HKEY hkHive, - __in LPCWSTR subkey - ) { - HKEY hKey; - LRESULT res; - - if (IsTargetPlatformx64(pEngine) || IsTargetPlatformARM64(pEngine)) { - res = RegOpenKeyExW(hkHive, subkey, 0, KEY_READ | KEY_WOW64_64KEY, &hKey); - } else { - res = RegOpenKeyExW(hkHive, subkey, 0, KEY_READ | KEY_WOW64_32KEY, &hKey); - } - if (res == ERROR_FILE_NOT_FOUND) { - return S_FALSE; - } - if (res != ERROR_SUCCESS) { - return HRESULT_FROM_WIN32(res); - } - - for (auto p = OPTIONAL_FEATURES; p->regName; ++p) { - res = RegQueryValueExW(hKey, p->regName, nullptr, nullptr, nullptr, nullptr); - if (res == ERROR_FILE_NOT_FOUND) { - pEngine->SetVariableNumeric(p->variableName, 0); - } else if (res == ERROR_SUCCESS) { - pEngine->SetVariableNumeric(p->variableName, 1); - } else { - RegCloseKey(hKey); - return HRESULT_FROM_WIN32(res); - } - } - - RegCloseKey(hKey); - return S_OK; - } - - static HRESULT LoadTargetDirFromKey( - __in IBootstrapperEngine* pEngine, - __in HKEY hkHive, - __in LPCWSTR subkey - ) { - HKEY hKey; - LRESULT res; - DWORD dataType; - BYTE buffer[1024]; - DWORD bufferLen = sizeof(buffer); - - if (IsTargetPlatformx64(pEngine) || IsTargetPlatformARM64(pEngine)) { - res = RegOpenKeyExW(hkHive, subkey, 0, KEY_READ | KEY_WOW64_64KEY, &hKey); - } else { - res = RegOpenKeyExW(hkHive, subkey, 0, KEY_READ | KEY_WOW64_32KEY, &hKey); - } - if (res == ERROR_FILE_NOT_FOUND) { - return S_FALSE; - } - if (res != ERROR_SUCCESS) { - return HRESULT_FROM_WIN32(res); - } - - res = RegQueryValueExW(hKey, nullptr, nullptr, &dataType, buffer, &bufferLen); - if (res == ERROR_SUCCESS && dataType == REG_SZ && bufferLen < sizeof(buffer)) { - pEngine->SetVariableString(L"TargetDir", reinterpret_cast(buffer)); - } - RegCloseKey(hKey); - return HRESULT_FROM_WIN32(res); - } - - static HRESULT LoadAssociateFilesStateFromKey( - __in IBootstrapperEngine* pEngine, - __in HKEY hkHive - ) { - const LPCWSTR subkey = L"Software\\Python\\PyLauncher"; - HKEY hKey; - LRESULT res; - HRESULT hr; - - res = RegOpenKeyExW(hkHive, subkey, 0, KEY_READ | KEY_WOW64_32KEY, &hKey); - - if (res == ERROR_FILE_NOT_FOUND) { - return S_FALSE; - } - if (res != ERROR_SUCCESS) { - return HRESULT_FROM_WIN32(res); - } - - res = RegQueryValueExW(hKey, L"AssociateFiles", nullptr, nullptr, nullptr, nullptr); - if (res == ERROR_FILE_NOT_FOUND) { - hr = S_FALSE; - } else if (res == ERROR_SUCCESS) { - hr = S_OK; - } else { - hr = HRESULT_FROM_WIN32(res); - } - - RegCloseKey(hKey); - return hr; - } - - static void LoadOptionalFeatureStates(__in IBootstrapperEngine* pEngine) { - WCHAR subkeyFmt[256]; - WCHAR subkey[256]; - DWORD subkeyLen; - HRESULT hr; - HKEY hkHive; - - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Loading state of optional features"); - - // Get the registry key from the bundle, to save having to duplicate it - // in multiple places. - subkeyLen = sizeof(subkeyFmt) / sizeof(subkeyFmt[0]); - hr = pEngine->GetVariableString(L"OptionalFeaturesRegistryKey", subkeyFmt, &subkeyLen); - BalExitOnFailure(hr, "Failed to locate registry key"); - subkeyLen = sizeof(subkey) / sizeof(subkey[0]); - hr = pEngine->FormatString(subkeyFmt, subkey, &subkeyLen); - BalExitOnFailure1(hr, "Failed to format %ls", subkeyFmt); - - // Check the current user's registry for existing features - hkHive = HKEY_CURRENT_USER; - hr = LoadOptionalFeatureStatesFromKey(pEngine, hkHive, subkey); - BalExitOnFailure1(hr, "Failed to read from HKCU\\%ls", subkey); - if (hr == S_FALSE) { - // Now check the local machine registry - hkHive = HKEY_LOCAL_MACHINE; - hr = LoadOptionalFeatureStatesFromKey(pEngine, hkHive, subkey); - BalExitOnFailure1(hr, "Failed to read from HKLM\\%ls", subkey); - if (hr == S_OK) { - // Found a system-wide install, so enable these settings. - pEngine->SetVariableNumeric(L"InstallAllUsers", 1); - pEngine->SetVariableNumeric(L"CompileAll", 1); - } - } - - if (hr == S_OK) { - // Cannot change InstallAllUsersState when upgrading. While there's - // no good reason to not allow installing a per-user and an all-user - // version simultaneously, Burn can't handle the state management - // and will need to uninstall the old one. - pEngine->SetVariableString(L"InstallAllUsersState", L"disable"); - - // Get the previous install directory. This can be changed by the - // user. - subkeyLen = sizeof(subkeyFmt) / sizeof(subkeyFmt[0]); - hr = pEngine->GetVariableString(L"TargetDirRegistryKey", subkeyFmt, &subkeyLen); - BalExitOnFailure(hr, "Failed to locate registry key"); - subkeyLen = sizeof(subkey) / sizeof(subkey[0]); - hr = pEngine->FormatString(subkeyFmt, subkey, &subkeyLen); - BalExitOnFailure1(hr, "Failed to format %ls", subkeyFmt); - LoadTargetDirFromKey(pEngine, hkHive, subkey); - } - - LExit: - return; - } - - HRESULT EnsureTargetDir() { - LONGLONG installAllUsers; - LPWSTR targetDir = nullptr, defaultDir = nullptr; - HRESULT hr = BalGetStringVariable(L"TargetDir", &targetDir); - if (FAILED(hr) || !targetDir || !targetDir[0]) { - ReleaseStr(targetDir); - targetDir = nullptr; - - hr = BalGetNumericVariable(L"InstallAllUsers", &installAllUsers); - ExitOnFailure(hr, L"Failed to get install scope"); - - hr = BalGetStringVariable( - installAllUsers ? L"DefaultAllUsersTargetDir" : L"DefaultJustForMeTargetDir", - &defaultDir - ); - BalExitOnFailure(hr, "Failed to get the default install directory"); - - if (!defaultDir || !defaultDir[0]) { - BalLogError(E_INVALIDARG, "Default install directory is blank"); - } - - hr = BalFormatString(defaultDir, &targetDir); - BalExitOnFailure1(hr, "Failed to format '%ls'", defaultDir); - - hr = _engine->SetVariableString(L"TargetDir", targetDir); - BalExitOnFailure(hr, "Failed to set install target directory"); - } - LExit: - ReleaseStr(defaultDir); - ReleaseStr(targetDir); - return hr; - } - - void ValidateOperatingSystem() { - LOC_STRING *pLocString = nullptr; - - if (IsWindowsServer()) { - if (IsWindowsVersionOrGreater(10, 0, 0)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Target OS is Windows Server 2016 or later"); - return; - } else if (IsWindowsVersionOrGreater(6, 2, 0)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows Server 2012"); - } else if (IsWindowsVersionOrGreater(6, 1, 1)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows Server 2008 R2"); - } else if (IsWindowsVersionOrGreater(6, 1, 0)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows Server 2008 R2"); - } else if (IsWindowsVersionOrGreater(6, 0, 0)) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows Server 2008"); - } else { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows Server 2003 or earlier"); - } - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Windows Server 2016 or later is required to continue installation"); - } else { - if (IsWindows10OrGreater()) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Target OS is Windows 10 or later"); - return; - } else if (IsWindows8Point1OrGreater()) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows 8.1"); - } else if (IsWindows8OrGreater()) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows 8"); - } else if (IsWindows7OrGreater()) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows 7"); - } else if (IsWindowsVistaOrGreater()) { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows Vista"); - } else { - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows XP or earlier"); - } - BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Windows 10 or later is required to continue installation"); - } - - LocGetString(_wixLoc, L"#(loc.FailureOldOS)", &pLocString); - if (pLocString && pLocString->wzText) { - BalFormatString(pLocString->wzText, &_failedMessage); - } - - _hrFinal = E_WIXSTDBA_CONDITION_FAILED; - } - -public: - // - // Constructor - initialize member variables. - // - PythonBootstrapperApplication( - __in HMODULE hModule, - __in BOOL fPrereq, - __in HRESULT hrHostInitialization, - __in IBootstrapperEngine* pEngine, - __in const BOOTSTRAPPER_COMMAND* pCommand - ) : CBalBaseBootstrapperApplication(pEngine, pCommand, 3, 3000) { - _hModule = hModule; - memcpy_s(&_command, sizeof(_command), pCommand, sizeof(BOOTSTRAPPER_COMMAND)); - - LONGLONG llInstalled = 0; - HRESULT hr = BalGetNumericVariable(L"WixBundleInstalled", &llInstalled); - if (SUCCEEDED(hr) && BOOTSTRAPPER_RESUME_TYPE_REBOOT != _command.resumeType && 0 < llInstalled && BOOTSTRAPPER_ACTION_INSTALL == _command.action) { - _command.action = BOOTSTRAPPER_ACTION_MODIFY; - } else if (0 == llInstalled && (BOOTSTRAPPER_ACTION_MODIFY == _command.action || BOOTSTRAPPER_ACTION_REPAIR == _command.action)) { - _command.action = BOOTSTRAPPER_ACTION_INSTALL; - } - - _plannedAction = BOOTSTRAPPER_ACTION_UNKNOWN; - - - // When resuming from restart doing some install-like operation, try to find the package that forced the - // restart. We'll use this information during planning. - _nextPackageAfterRestart = nullptr; - - if (BOOTSTRAPPER_RESUME_TYPE_REBOOT == _command.resumeType && BOOTSTRAPPER_ACTION_UNINSTALL < _command.action) { - // Ensure the forced restart package variable is null when it is an empty string. - HRESULT hr = BalGetStringVariable(L"WixBundleForcedRestartPackage", &_nextPackageAfterRestart); - if (FAILED(hr) || !_nextPackageAfterRestart || !*_nextPackageAfterRestart) { - ReleaseNullStr(_nextPackageAfterRestart); - } - } - - _crtInstalledToken = -1; - pEngine->SetVariableNumeric(L"CRTInstalled", IsCrtInstalled() ? 1 : 0); - - _wixLoc = nullptr; - memset(&_bundle, 0, sizeof(_bundle)); - memset(&_conditions, 0, sizeof(_conditions)); - _confirmCloseMessage = nullptr; - _failedMessage = nullptr; - - _language = nullptr; - _theme = nullptr; - memset(_pageIds, 0, sizeof(_pageIds)); - _hUiThread = nullptr; - _registered = FALSE; - _hWnd = nullptr; - - _state = PYBA_STATE_INITIALIZING; - _visiblePageId = 0; - _installPage = PAGE_LOADING; - _hrFinal = hrHostInitialization; - - _downgradingOtherVersion = FALSE; - _restartResult = BOOTSTRAPPER_APPLY_RESTART_NONE; - _restartRequired = FALSE; - _allowRestart = FALSE; - - _suppressDowngradeFailure = FALSE; - _suppressRepair = FALSE; - _modifying = FALSE; - _upgrading = FALSE; - - _overridableVariables = nullptr; - _taskbarList = nullptr; - _taskbarButtonCreatedMessage = UINT_MAX; - _taskbarButtonOK = FALSE; - _showingInternalUIThisPackage = FALSE; - - _suppressPaint = FALSE; - - pEngine->AddRef(); - _engine = pEngine; - - _hBAFModule = nullptr; - _baFunction = nullptr; - } - - - // - // Destructor - release member variables. - // - ~PythonBootstrapperApplication() { - AssertSz(!::IsWindow(_hWnd), "Window should have been destroyed before destructor."); - AssertSz(!_theme, "Theme should have been released before destructor."); - - ReleaseObject(_taskbarList); - ReleaseDict(_overridableVariables); - ReleaseStr(_failedMessage); - ReleaseStr(_confirmCloseMessage); - BalConditionsUninitialize(&_conditions); - BalInfoUninitialize(&_bundle); - LocFree(_wixLoc); - - ReleaseStr(_language); - ReleaseStr(_nextPackageAfterRestart); - ReleaseNullObject(_engine); - - if (_hBAFModule) { - ::FreeLibrary(_hBAFModule); - _hBAFModule = nullptr; - } - } - -private: - HMODULE _hModule; - BOOTSTRAPPER_COMMAND _command; - IBootstrapperEngine* _engine; - BOOTSTRAPPER_ACTION _plannedAction; - - LPWSTR _nextPackageAfterRestart; - - WIX_LOCALIZATION* _wixLoc; - BAL_INFO_BUNDLE _bundle; - BAL_CONDITIONS _conditions; - LPWSTR _failedMessage; - LPWSTR _confirmCloseMessage; - - LPWSTR _language; - THEME* _theme; - DWORD _pageIds[countof(PAGE_NAMES)]; - HANDLE _hUiThread; - BOOL _registered; - HWND _hWnd; - - PYBA_STATE _state; - HRESULT _hrFinal; - DWORD _visiblePageId; - PAGE _installPage; - - BOOL _startedExecution; - DWORD _calculatedCacheProgress; - DWORD _calculatedExecuteProgress; - - BOOL _downgradingOtherVersion; - BOOTSTRAPPER_APPLY_RESTART _restartResult; - BOOL _restartRequired; - BOOL _allowRestart; - - BOOL _suppressDowngradeFailure; - BOOL _suppressRepair; - BOOL _modifying; - BOOL _upgrading; - - int _crtInstalledToken; - - STRINGDICT_HANDLE _overridableVariables; - - ITaskbarList3* _taskbarList; - UINT _taskbarButtonCreatedMessage; - BOOL _taskbarButtonOK; - BOOL _showingInternalUIThisPackage; - - BOOL _suppressPaint; - - HMODULE _hBAFModule; - IBootstrapperBAFunction* _baFunction; -}; - -// -// CreateBootstrapperApplication - creates a new IBootstrapperApplication object. -// -HRESULT CreateBootstrapperApplication( - __in HMODULE hModule, - __in BOOL fPrereq, - __in HRESULT hrHostInitialization, - __in IBootstrapperEngine* pEngine, - __in const BOOTSTRAPPER_COMMAND* pCommand, - __out IBootstrapperApplication** ppApplication - ) { - HRESULT hr = S_OK; - - if (fPrereq) { - hr = E_INVALIDARG; - ExitWithLastError(hr, "Failed to create UI thread."); - } - - PythonBootstrapperApplication* pApplication = nullptr; - - pApplication = new PythonBootstrapperApplication(hModule, fPrereq, hrHostInitialization, pEngine, pCommand); - ExitOnNull(pApplication, hr, E_OUTOFMEMORY, "Failed to create new standard bootstrapper application object."); - - *ppApplication = pApplication; - pApplication = nullptr; - -LExit: - ReleaseObject(pApplication); - return hr; -} diff --git a/Tools/msi/bundle/bootstrap/pch.cpp b/Tools/msi/bundle/bootstrap/pch.cpp deleted file mode 100644 index 1d9f38c57d63f19..000000000000000 --- a/Tools/msi/bundle/bootstrap/pch.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "pch.h" diff --git a/Tools/msi/bundle/bootstrap/pch.h b/Tools/msi/bundle/bootstrap/pch.h deleted file mode 100644 index 6d0974b34c61e79..000000000000000 --- a/Tools/msi/bundle/bootstrap/pch.h +++ /dev/null @@ -1,60 +0,0 @@ -//------------------------------------------------------------------------------------------------- -// -// Copyright (c) 2004, Outercurve Foundation. -// This software is released under Microsoft Reciprocal License (MS-RL). -// The license and further copyright text can be found in the file -// LICENSE.TXT at the root directory of the distribution. -// -// -// -// Precompiled header for standard bootstrapper application. -// -//------------------------------------------------------------------------------------------------- - -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "dutil.h" -#include "memutil.h" -#include "dictutil.h" -#include "dirutil.h" -#include "fileutil.h" -#include "locutil.h" -#include "logutil.h" -#include "pathutil.h" -#include "resrutil.h" -#include "shelutil.h" -#include "strutil.h" -#include "thmutil.h" -#include "uriutil.h" -#include "xmlutil.h" - -#include "IBootstrapperEngine.h" -#include "IBootstrapperApplication.h" - -#include "BalBaseBootstrapperApplication.h" -#include "balinfo.h" -#include "balcondition.h" - -HRESULT CreateBootstrapperApplication( - __in HMODULE hModule, - __in BOOL fPrereq, - __in HRESULT hrHostInitialization, - __in IBootstrapperEngine* pEngine, - __in const BOOTSTRAPPER_COMMAND* pCommand, - __out IBootstrapperApplication** ppApplication -); - -#include "IBootstrapperBAFunction.h" - diff --git a/Tools/msi/bundle/bootstrap/pythonba.cpp b/Tools/msi/bundle/bootstrap/pythonba.cpp deleted file mode 100644 index 0ce45ad31d958a5..000000000000000 --- a/Tools/msi/bundle/bootstrap/pythonba.cpp +++ /dev/null @@ -1,76 +0,0 @@ -//------------------------------------------------------------------------------------------------- -// -// Copyright (c) 2004, Outercurve Foundation. -// This software is released under Microsoft Reciprocal License (MS-RL). -// The license and further copyright text can be found in the file -// LICENSE.TXT at the root directory of the distribution. -// -// -// -// Setup chainer/bootstrapper standard UI for WiX toolset. -// -//------------------------------------------------------------------------------------------------- - -#include "pch.h" - -static HINSTANCE vhInstance = NULL; - -extern "C" BOOL WINAPI DllMain( - IN HINSTANCE hInstance, - IN DWORD dwReason, - IN LPVOID /* pvReserved */ - ) -{ - switch(dwReason) - { - case DLL_PROCESS_ATTACH: - ::DisableThreadLibraryCalls(hInstance); - vhInstance = hInstance; - break; - - case DLL_PROCESS_DETACH: - vhInstance = NULL; - break; - } - - return TRUE; -} - - -extern "C" HRESULT WINAPI BootstrapperApplicationCreate( - __in IBootstrapperEngine* pEngine, - __in const BOOTSTRAPPER_COMMAND* pCommand, - __out IBootstrapperApplication** ppApplication - ) -{ - HRESULT hr = S_OK; - - BalInitialize(pEngine); - - hr = CreateBootstrapperApplication(vhInstance, FALSE, S_OK, pEngine, pCommand, ppApplication); - BalExitOnFailure(hr, "Failed to create bootstrapper application interface."); - -LExit: - return hr; -} - - -extern "C" void WINAPI BootstrapperApplicationDestroy() -{ - BalUninitialize(); -} - - -extern "C" HRESULT WINAPI MbaPrereqBootstrapperApplicationCreate( - __in HRESULT hrHostInitialization, - __in IBootstrapperEngine* pEngine, - __in const BOOTSTRAPPER_COMMAND* pCommand, - __out IBootstrapperApplication** ppApplication - ) -{ - return E_NOTIMPL; -} - - -extern "C" void WINAPI MbaPrereqBootstrapperApplicationDestroy() -{ } diff --git a/Tools/msi/bundle/bootstrap/pythonba.def b/Tools/msi/bundle/bootstrap/pythonba.def deleted file mode 100644 index 29b3fa50dfa9f70..000000000000000 --- a/Tools/msi/bundle/bootstrap/pythonba.def +++ /dev/null @@ -1,18 +0,0 @@ -;------------------------------------------------------------------------------------------------- -; -; Copyright (c) 2004, Outercurve Foundation. -; This software is released under Microsoft Reciprocal License (MS-RL). -; The license and further copyright text can be found in the file -; LICENSE.TXT at the root directory of the distribution. -; -; -; -; WiX Standard Bootstrapper Application DLL entry points. -; -;------------------------------------------------------------------------------------------------- - -EXPORTS - BootstrapperApplicationCreate - BootstrapperApplicationDestroy - MbaPrereqBootstrapperApplicationCreate - MbaPrereqBootstrapperApplicationDestroy diff --git a/Tools/msi/bundle/bootstrap/pythonba.sln b/Tools/msi/bundle/bootstrap/pythonba.sln deleted file mode 100644 index bf43fed9018e4f3..000000000000000 --- a/Tools/msi/bundle/bootstrap/pythonba.sln +++ /dev/null @@ -1,22 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30501.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonba", "pythonba.vcxproj", "{7A09B132-B3EE-499B-A700-A4B2157FEA3D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7A09B132-B3EE-499B-A700-A4B2157FEA3D}.Debug|Win32.ActiveCfg = Debug|Win32 - {7A09B132-B3EE-499B-A700-A4B2157FEA3D}.Debug|Win32.Build.0 = Debug|Win32 - {7A09B132-B3EE-499B-A700-A4B2157FEA3D}.Release|Win32.ActiveCfg = Release|Win32 - {7A09B132-B3EE-499B-A700-A4B2157FEA3D}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Tools/msi/bundle/bootstrap/pythonba.vcxproj b/Tools/msi/bundle/bootstrap/pythonba.vcxproj deleted file mode 100644 index 4b38582f0d31e51..000000000000000 --- a/Tools/msi/bundle/bootstrap/pythonba.vcxproj +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - Debug - Win32 - - - Release - Win32 - - - - Release - Win32 - v145 - v143 - v142 - v141 - {7A09B132-B3EE-499B-A700-A4B2157FEA3D} - PythonBA - - - - - DynamicLibrary - Unicode - $(PySourcePath)PCbuild\obj\ - $(Py_IntDir)\$(MajorVersionNumber)$(MinorVersionNumber)$(ArchName)_$(Configuration)\msi_$(ProjectName)\ - $(IntDir.Replace(`\\`, `\`)) - $(IntDir) - - - - - ARM64=1;%(PreprocessorDefinitions) - _CRT_STDIO_LEGACY_WIDE_SPECIFIERS=1;%(PreprocessorDefinitions) - $(WixInstallPath)sdk\inc - Use - pch.h - MultiThreaded - - - comctl32.lib;gdiplus.lib;msimg32.lib;shlwapi.lib;wininet.lib;dutil.lib;balutil.lib;version.lib;uxtheme.lib;%(AdditionalDependencies) - $(WixInstallPath)sdk\vs2017\lib\x86 - pythonba.def - true - - - - - - - Create - - - - - - - - - - - diff --git a/Tools/msi/bundle/bootstrap/resource.h b/Tools/msi/bundle/bootstrap/resource.h deleted file mode 100644 index d951e651f6d20d7..000000000000000 --- a/Tools/msi/bundle/bootstrap/resource.h +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------------------------- -// -// Copyright (c) 2004, Outercurve Foundation. -// This software is released under Microsoft Reciprocal License (MS-RL). -// The license and further copyright text can be found in the file -// LICENSE.TXT at the root directory of the distribution. -// -//------------------------------------------------------------------------------------------------- - -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// -#define IDC_STATIC -1 - - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1003 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/Tools/msi/bundle/bundle.targets b/Tools/msi/bundle/bundle.targets deleted file mode 100644 index cb3effb4434843a..000000000000000 --- a/Tools/msi/bundle/bundle.targets +++ /dev/null @@ -1,129 +0,0 @@ - - - - 2.0 - Bundle - - Release - 1132;1135;1140 - $(OutputName)-$(PythonVersion) - $(OutputName)-$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber).$(RevisionNumber) - $(OutputName)-amd64 - $(OutputName)-arm64 - $(OutputName)-$(OutputSuffix) - $(OutputName)-d - $(OutputName) - - $(OutputPath)en-us\ - $(OutputPath) - - - $(DownloadUrlBase.TrimEnd(`/`))/{version}/{arch}{releasename}/{msi} - $(DefineConstants);DownloadUrl=$(DownloadUrl.Replace(`{version}`, `$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)`).Replace(`{arch}`, `$(ArchName)`).Replace(`{releasename}`, `$(ReleaseLevelName)`).Replace(`{msi}`, `{2}`)) - $(DefineConstants);DownloadUrl={2} - - - - - WixUtilExtension - WixUtilExtension - - - WixDependencyExtension - WixDependencyExtension - - - WixBalExtension - WixBalExtension - - - - - - - - - - - - - - - - - - - - - - - BuildForRelease=$(BuildForRelease) - - - - - - - - - - - - - - - - - - - Build - - - - - Rebuild - - - - - - - - - - - - - - - - $(DefineConstants);BootstrapApp=$(BootstrapAppPath) - - - - - - - - - $(DefineConstants);DefaultWxl=Default.wxl - - - - - - - - - $(DefineConstants);DefaultWxl=$(IntermediateOutputPath)Default.wxl - - - - - diff --git a/Tools/msi/bundle/bundle.wxl b/Tools/msi/bundle/bundle.wxl deleted file mode 100644 index d7a65c48dc4dc53..000000000000000 --- a/Tools/msi/bundle/bundle.wxl +++ /dev/null @@ -1,7 +0,0 @@ - - - C Runtime Update (KB2999226) - Precompiling standard library - Precompiling standard library (-O) - Precompiling standard library (-OO) - diff --git a/Tools/msi/bundle/bundle.wxs b/Tools/msi/bundle/bundle.wxs deleted file mode 100644 index 3fcb00553f5edd3..000000000000000 --- a/Tools/msi/bundle/bundle.wxs +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/bundle/full.wixproj b/Tools/msi/bundle/full.wixproj deleted file mode 100644 index bdbdd8e175c0332..000000000000000 --- a/Tools/msi/bundle/full.wixproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - {3E204ADD-238D-4D10-852C-4F859325C839} - python - full - - - - - - - $(DefineConstants); - CompressMSI=yes; - CompressPDB=yes; - CompressMSI_D=yes; - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/core.wxs b/Tools/msi/bundle/packagegroups/core.wxs deleted file mode 100644 index eb3d0b7733cf0fd..000000000000000 --- a/Tools/msi/bundle/packagegroups/core.wxs +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/crt.wxs b/Tools/msi/bundle/packagegroups/crt.wxs deleted file mode 100644 index f931da1403b2278..000000000000000 --- a/Tools/msi/bundle/packagegroups/crt.wxs +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/dev.wxs b/Tools/msi/bundle/packagegroups/dev.wxs deleted file mode 100644 index 4284dba2c205b73..000000000000000 --- a/Tools/msi/bundle/packagegroups/dev.wxs +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/doc.wxs b/Tools/msi/bundle/packagegroups/doc.wxs deleted file mode 100644 index 6639ff5c25b24be..000000000000000 --- a/Tools/msi/bundle/packagegroups/doc.wxs +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/exe.wxs b/Tools/msi/bundle/packagegroups/exe.wxs deleted file mode 100644 index 79464c4aca66222..000000000000000 --- a/Tools/msi/bundle/packagegroups/exe.wxs +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/freethreaded.wxs b/Tools/msi/bundle/packagegroups/freethreaded.wxs deleted file mode 100644 index 121ca34ab661578..000000000000000 --- a/Tools/msi/bundle/packagegroups/freethreaded.wxs +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/launcher.wxs b/Tools/msi/bundle/packagegroups/launcher.wxs deleted file mode 100644 index 080598a0a486ef4..000000000000000 --- a/Tools/msi/bundle/packagegroups/launcher.wxs +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/lib.wxs b/Tools/msi/bundle/packagegroups/lib.wxs deleted file mode 100644 index 0b3fbc00c4a35db..000000000000000 --- a/Tools/msi/bundle/packagegroups/lib.wxs +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/packageinstall.wxs b/Tools/msi/bundle/packagegroups/packageinstall.wxs deleted file mode 100644 index e5e7d4d1a94cd1f..000000000000000 --- a/Tools/msi/bundle/packagegroups/packageinstall.wxs +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/pip.wxs b/Tools/msi/bundle/packagegroups/pip.wxs deleted file mode 100644 index 201a6c445b23691..000000000000000 --- a/Tools/msi/bundle/packagegroups/pip.wxs +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/postinstall.wxs b/Tools/msi/bundle/packagegroups/postinstall.wxs deleted file mode 100644 index 24c72e6357ab082..000000000000000 --- a/Tools/msi/bundle/packagegroups/postinstall.wxs +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/bundle/packagegroups/tcltk.wxs b/Tools/msi/bundle/packagegroups/tcltk.wxs deleted file mode 100644 index 0d029a90cd966ed..000000000000000 --- a/Tools/msi/bundle/packagegroups/tcltk.wxs +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/packagegroups/test.wxs b/Tools/msi/bundle/packagegroups/test.wxs deleted file mode 100644 index 32acaef64efea07..000000000000000 --- a/Tools/msi/bundle/packagegroups/test.wxs +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/releaselocal.wixproj b/Tools/msi/bundle/releaselocal.wixproj deleted file mode 100644 index 0c3dee7ad81ea19..000000000000000 --- a/Tools/msi/bundle/releaselocal.wixproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - {FCD43AC9-969F-49A1-8AC5-EDC27599D1EB} - python - - - - - - - - $(DefineConstants); - CompressMSI=yes; - CompressPDB=no; - CompressMSI_D=no - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/releaseweb.wixproj b/Tools/msi/bundle/releaseweb.wixproj deleted file mode 100644 index 350c735878c0b4a..000000000000000 --- a/Tools/msi/bundle/releaseweb.wixproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - {71CDE213-CB39-4BD9-B89D-BBB878689144} - python - webinstall - - - - - - - $(DefineConstants); - CompressMSI=no; - CompressPDB=no; - CompressMSI_D=no - - - - - \ No newline at end of file diff --git a/Tools/msi/bundle/snapshot.wixproj b/Tools/msi/bundle/snapshot.wixproj deleted file mode 100644 index cc450432990635e..000000000000000 --- a/Tools/msi/bundle/snapshot.wixproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - {8A4A1162-4BF9-4FF6-9A98-315F01E44932} - python - - - - - - - - $(DefineConstants);CompressMSI=no; - - - $(DefineConstants);CompressMSI=yes; - - - $(DefineConstants); - CompressPDB=no; - CompressMSI_D=no; - - - - - \ No newline at end of file diff --git a/Tools/msi/common.wxs b/Tools/msi/common.wxs deleted file mode 100644 index 73da474e4181f11..000000000000000 --- a/Tools/msi/common.wxs +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - OPTIONALFEATURESREGISTRYKEY - - - - - - - - - - - - - - - - - - - - - Installed OR NOT MISSING_CORE - - - - Installed OR NOT DOWNGRADE - Installed OR TARGETDIR OR Suppress_TARGETDIR_Check - - - UPGRADE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/common_en-US.wxl_template b/Tools/msi/common_en-US.wxl_template deleted file mode 100644 index adb8f40be9a8e23..000000000000000 --- a/Tools/msi/common_en-US.wxl_template +++ /dev/null @@ -1,18 +0,0 @@ - - - 1033 - en-us - Python {{ShortVersion}} - Python {{LongVersion}} ({{Bitness}}) - Python {{LongVersion}} !(loc.Descriptor) ({{Bitness}}) - Python {{LongVersion}} !(loc.Descriptor) ({{Bitness}}) - Python {{LongVersion}} !(loc.Descriptor) ({{Bitness}} symbols) - Python {{LongVersion}} !(loc.Descriptor) ({{Bitness}} symbols) - Python {{LongVersion}} !(loc.Descriptor) ({{Bitness}} debug) - Python {{LongVersion}} !(loc.Descriptor) ({{Bitness}} debug) - Python Software Foundation - A newer version of !(loc.ProductName) is already installed. - An incorrect version of a prerequisite package is installed. Please uninstall any other versions of !(loc.ProductName) and try installing this again. - The TARGETDIR variable must be provided when invoking this installer. - https://www.python.org/ - diff --git a/Tools/msi/core/core.wixproj b/Tools/msi/core/core.wixproj deleted file mode 100644 index 68e8bab3109dcce..000000000000000 --- a/Tools/msi/core/core.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {1B4502D5-B627-4F50-ABEA-4CC5A8E88265} - 2.0 - core - Package - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/core/core.wxs b/Tools/msi/core/core.wxs deleted file mode 100644 index 21a8bcdf9710174..000000000000000 --- a/Tools/msi/core/core.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/core/core_d.wixproj b/Tools/msi/core/core_d.wixproj deleted file mode 100644 index 5b296bf35f95807..000000000000000 --- a/Tools/msi/core/core_d.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {D3677DCF-098A-4398-9FA5-8E74AC37E0DF} - 2.0 - core_d - Package - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/core/core_d.wxs b/Tools/msi/core/core_d.wxs deleted file mode 100644 index 1cee0973aac312f..000000000000000 --- a/Tools/msi/core/core_d.wxs +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/Tools/msi/core/core_en-US.wxl b/Tools/msi/core/core_en-US.wxl deleted file mode 100644 index 7977470d7c1c0eb..000000000000000 --- a/Tools/msi/core/core_en-US.wxl +++ /dev/null @@ -1,5 +0,0 @@ - - - Core Interpreter - core - diff --git a/Tools/msi/core/core_files.wxs b/Tools/msi/core/core_files.wxs deleted file mode 100644 index 8b21501078ea2e6..000000000000000 --- a/Tools/msi/core/core_files.wxs +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/core/core_pdb.wixproj b/Tools/msi/core/core_pdb.wixproj deleted file mode 100644 index 9c8838970b6fee9..000000000000000 --- a/Tools/msi/core/core_pdb.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {E98E7539-64E7-4DCE-AACD-01E3ADE40EFD} - 2.0 - core_pdb - Package - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/core/core_pdb.wxs b/Tools/msi/core/core_pdb.wxs deleted file mode 100644 index 1fe7d1e7a944cb9..000000000000000 --- a/Tools/msi/core/core_pdb.wxs +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/Tools/msi/csv_to_wxs.py b/Tools/msi/csv_to_wxs.py deleted file mode 100644 index 235c8f8b0be5812..000000000000000 --- a/Tools/msi/csv_to_wxs.py +++ /dev/null @@ -1,127 +0,0 @@ -''' -Processes a CSV file containing a list of files into a WXS file with -components for each listed file. - -The CSV columns are: - source of file, target for file, group name - -Usage:: - py txt_to_wxs.py [path to file list .csv] [path to destination .wxs] - -This is necessary to handle structures where some directories only -contain other directories. MSBuild is not able to generate the -Directory entries in the WXS file correctly, as it operates on files. -Python, however, can easily fill in the gap. -''' - -__author__ = "Steve Dower " - -import csv -import re -import sys - -from collections import defaultdict -from itertools import chain, zip_longest -from pathlib import PureWindowsPath -from uuid import uuid1 - -ID_CHAR_SUBS = { - '-': '_', - '+': '_P', -} - -def make_id(path): - return re.sub( - r'[^A-Za-z0-9_.]', - lambda m: ID_CHAR_SUBS.get(m.group(0), '_'), - str(path).rstrip('/\\'), - flags=re.I - ) - -DIRECTORIES = set() - -def main(file_source, install_target): - with open(file_source, 'r', newline='') as f: - files = list(csv.reader(f)) - - assert len(files) == len(set(make_id(f[1]) for f in files)), "Duplicate file IDs exist" - - directories = defaultdict(set) - cache_directories = defaultdict(set) - groups = defaultdict(list) - for source, target, group, disk_id, condition in files: - target = PureWindowsPath(target) - groups[group].append((source, target, disk_id, condition)) - - if target.suffix.lower() in {".py", ".pyw"}: - cache_directories[group].add(target.parent) - - for dirname in target.parents: - parent = make_id(dirname.parent) - if parent and parent != '.': - directories[parent].add(dirname.name) - - lines = [ - '', - ' ', - ] - for dir_parent in sorted(directories): - lines.append(' '.format(dir_parent)) - for dir_name in sorted(directories[dir_parent]): - lines.append(' '.format(dir_parent, make_id(dir_name), dir_name)) - lines.append(' ') - for dir_parent in (make_id(d) for group in cache_directories.values() for d in group): - lines.append(' '.format(dir_parent)) - lines.append(' '.format(dir_parent)) - lines.append(' ') - lines.append(' ') - - for group in sorted(groups): - lines.extend([ - ' ', - ' '.format(group), - ]) - for source, target, disk_id, condition in groups[group]: - lines.append(' '.format(make_id(target), make_id(target.parent))) - if condition: - lines.append(' {}'.format(condition)) - - if disk_id: - lines.append(' '.format(make_id(target), target.name, source, disk_id)) - else: - lines.append(' '.format(make_id(target), target.name, source)) - lines.append(' ') - - create_folders = {make_id(p) + "___pycache__" for p in cache_directories[group]} - remove_folders = {make_id(p2) for p1 in cache_directories[group] for p2 in chain((p1,), p1.parents)} - create_folders.discard(".") - remove_folders.discard(".") - if create_folders or remove_folders: - lines.append(' '.format(group, uuid1())) - lines.extend(' '.format(p) for p in create_folders) - lines.extend(' '.format(p) for p in create_folders) - lines.extend(' '.format(p) for p in create_folders | remove_folders) - lines.append(' ') - - lines.extend([ - ' ', - ' ', - ]) - lines.append('') - - # Check if the file matches. If so, we don't want to touch it so - # that we can skip rebuilding. - try: - with open(install_target, 'r') as f: - if all(x.rstrip('\r\n') == y for x, y in zip_longest(f, lines)): - print('File is up to date') - return - except IOError: - pass - - with open(install_target, 'w') as f: - f.writelines(line + '\n' for line in lines) - print('Wrote {} lines to {}'.format(len(lines), install_target)) - -if __name__ == '__main__': - main(sys.argv[1], sys.argv[2]) diff --git a/Tools/msi/dev/dev.wixproj b/Tools/msi/dev/dev.wixproj deleted file mode 100644 index 4052e4b5368273a..000000000000000 --- a/Tools/msi/dev/dev.wixproj +++ /dev/null @@ -1,29 +0,0 @@ - - - - {5F23F608-D74B-4259-A0CE-8DC65CC7FE53} - 2.0 - dev - Package - - - - - - - - - - - - $(PySourcePath) - !(bindpath.src) - $(PySourcePath) - - dev_include - - - - - diff --git a/Tools/msi/dev/dev.wxs b/Tools/msi/dev/dev.wxs deleted file mode 100644 index 15a08364bead043..000000000000000 --- a/Tools/msi/dev/dev.wxs +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/dev/dev_d.wixproj b/Tools/msi/dev/dev_d.wixproj deleted file mode 100644 index b3b05326d41963f..000000000000000 --- a/Tools/msi/dev/dev_d.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {C11B4945-76BD-4137-B2E3-649460117A77} - 2.0 - dev_d - Package - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/dev/dev_d.wxs b/Tools/msi/dev/dev_d.wxs deleted file mode 100644 index 20bf9ee256f2f85..000000000000000 --- a/Tools/msi/dev/dev_d.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/dev/dev_en-US.wxl b/Tools/msi/dev/dev_en-US.wxl deleted file mode 100644 index 2546e13e47a091d..000000000000000 --- a/Tools/msi/dev/dev_en-US.wxl +++ /dev/null @@ -1,5 +0,0 @@ - - - Development Libraries - dev - diff --git a/Tools/msi/dev/dev_files.wxs b/Tools/msi/dev/dev_files.wxs deleted file mode 100644 index a9039d03f5f6fa1..000000000000000 --- a/Tools/msi/dev/dev_files.wxs +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/doc/doc.wixproj b/Tools/msi/doc/doc.wixproj deleted file mode 100644 index 83687968faebea8..000000000000000 --- a/Tools/msi/doc/doc.wixproj +++ /dev/null @@ -1,37 +0,0 @@ - - - - {0D62A2BB-5F71-4447-8C8C-9708407B3674} - 2.0 - doc - Package - - ICE43 - - - - $(PySourcePath)Doc\build\html\ - $(DocHtmlPath)\ - - - - doc_html - - - - - - - - - $(DocHtmlPath) - !(bindpath.doc_html) - $(DocHtmlPath)..\ - Doc_ - doc_html - - - - - \ No newline at end of file diff --git a/Tools/msi/doc/doc.wxs b/Tools/msi/doc/doc.wxs deleted file mode 100644 index 49798c752633fb2..000000000000000 --- a/Tools/msi/doc/doc.wxs +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/doc/doc_en-US.wxl_template b/Tools/msi/doc/doc_en-US.wxl_template deleted file mode 100644 index 809556e29fb9b13..000000000000000 --- a/Tools/msi/doc/doc_en-US.wxl_template +++ /dev/null @@ -1,7 +0,0 @@ - - - doc - Documentation - Python {{ShortVersion}} Manuals ({{Bitness}}) - View the !(loc.ProductName) documentation. - diff --git a/Tools/msi/exe/exe.wixproj b/Tools/msi/exe/exe.wixproj deleted file mode 100644 index 592c8d2f65ae6e0..000000000000000 --- a/Tools/msi/exe/exe.wixproj +++ /dev/null @@ -1,41 +0,0 @@ - - - - {6BD53305-B03E-49DC-85FB-5551B8CCC843} - 2.0 - exe - Package - - - - ICE43 - - - - $(DefineConstants);Include_Vcruntime140_1_dll=1 - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/exe/exe.wxs b/Tools/msi/exe/exe.wxs deleted file mode 100644 index 05a8d775193e38f..000000000000000 --- a/Tools/msi/exe/exe.wxs +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/exe/exe_d.wixproj b/Tools/msi/exe/exe_d.wixproj deleted file mode 100644 index cf085bed4ddcf95..000000000000000 --- a/Tools/msi/exe/exe_d.wixproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - {B1CA739C-8DB0-403B-9010-D79507507CE9} - 2.0 - exe_d - Package - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/exe/exe_d.wxs b/Tools/msi/exe/exe_d.wxs deleted file mode 100644 index 3b327bc26d7893c..000000000000000 --- a/Tools/msi/exe/exe_d.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/exe/exe_en-US.wxl_template b/Tools/msi/exe/exe_en-US.wxl_template deleted file mode 100644 index 4cd9e3e654b2a1e..000000000000000 --- a/Tools/msi/exe/exe_en-US.wxl_template +++ /dev/null @@ -1,8 +0,0 @@ - - - Executables - executable - Python {{ShortVersion}} ({{Bitness}}) - Launches the !(loc.ProductName) interpreter. - https://www.python.org/ - diff --git a/Tools/msi/exe/exe_files.wxs b/Tools/msi/exe/exe_files.wxs deleted file mode 100644 index 15bf6a06634bf20..000000000000000 --- a/Tools/msi/exe/exe_files.wxs +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/exe/exe_pdb.wixproj b/Tools/msi/exe/exe_pdb.wixproj deleted file mode 100644 index bf1213e9d499680..000000000000000 --- a/Tools/msi/exe/exe_pdb.wixproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - {4A1F7045-8EE2-4276-ABB8-5E0C40E5F38B} - 2.0 - exe_pdb - Package - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/exe/exe_pdb.wxs b/Tools/msi/exe/exe_pdb.wxs deleted file mode 100644 index f706cf3b0e0cf3f..000000000000000 --- a/Tools/msi/exe/exe_pdb.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/exe/exe_reg.wxs b/Tools/msi/exe/exe_reg.wxs deleted file mode 100644 index 4443c2155485bec..000000000000000 --- a/Tools/msi/exe/exe_reg.wxs +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/freethreaded/freethreaded.wixproj b/Tools/msi/freethreaded/freethreaded.wixproj deleted file mode 100644 index 0b4bd055d779773..000000000000000 --- a/Tools/msi/freethreaded/freethreaded.wixproj +++ /dev/null @@ -1,20 +0,0 @@ - - - - {1B4502D5-B627-4F50-ABEA-4CC5A8E88265} - 2.0 - freethreaded - Package - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/freethreaded/freethreaded.wxs b/Tools/msi/freethreaded/freethreaded.wxs deleted file mode 100644 index 063aa28bf09fceb..000000000000000 --- a/Tools/msi/freethreaded/freethreaded.wxs +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/freethreaded/freethreaded_d.wixproj b/Tools/msi/freethreaded/freethreaded_d.wixproj deleted file mode 100644 index e1563d4f907126f..000000000000000 --- a/Tools/msi/freethreaded/freethreaded_d.wixproj +++ /dev/null @@ -1,20 +0,0 @@ - - - - {D3677DCF-098A-4398-9FA5-8E74AC37E0DF} - 2.0 - freethreaded_d - Package - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/freethreaded/freethreaded_d.wxs b/Tools/msi/freethreaded/freethreaded_d.wxs deleted file mode 100644 index cddf22a6c803d3e..000000000000000 --- a/Tools/msi/freethreaded/freethreaded_d.wxs +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/Tools/msi/freethreaded/freethreaded_en-US.wxl_template b/Tools/msi/freethreaded/freethreaded_en-US.wxl_template deleted file mode 100644 index b9747eb256d24b1..000000000000000 --- a/Tools/msi/freethreaded/freethreaded_en-US.wxl_template +++ /dev/null @@ -1,8 +0,0 @@ - - - Freethreaded Interpreter - freethreaded - Python {{ShortVersion}} ({{Bitness}}, freethreaded) - Launches the !(loc.ProductName) freethreaded interpreter. - https://www.python.org/ - diff --git a/Tools/msi/freethreaded/freethreaded_files.wxs b/Tools/msi/freethreaded/freethreaded_files.wxs deleted file mode 100644 index fdbcaea38eb3175..000000000000000 --- a/Tools/msi/freethreaded/freethreaded_files.wxs +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/freethreaded/freethreaded_pdb.wixproj b/Tools/msi/freethreaded/freethreaded_pdb.wixproj deleted file mode 100644 index 789a4f55ae51918..000000000000000 --- a/Tools/msi/freethreaded/freethreaded_pdb.wixproj +++ /dev/null @@ -1,20 +0,0 @@ - - - - {E98E7539-64E7-4DCE-AACD-01E3ADE40EFD} - 2.0 - freethreaded_pdb - Package - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/freethreaded/freethreaded_pdb.wxs b/Tools/msi/freethreaded/freethreaded_pdb.wxs deleted file mode 100644 index 302ac416fe92753..000000000000000 --- a/Tools/msi/freethreaded/freethreaded_pdb.wxs +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/Tools/msi/generate_md5.py b/Tools/msi/generate_md5.py deleted file mode 100644 index 9e4c14731bd11db..000000000000000 --- a/Tools/msi/generate_md5.py +++ /dev/null @@ -1,27 +0,0 @@ -import hashlib -import os -import sys - -def main(): - filenames, hashes, sizes = [], [], [] - - for file in sys.argv[1:]: - if not os.path.isfile(file): - continue - - with open(file, 'rb') as f: - data = f.read() - md5 = hashlib.md5() - md5.update(data) - filenames.append(os.path.split(file)[1]) - hashes.append(md5.hexdigest()) - sizes.append(str(len(data))) - - print('{:40s} {:<32s} {:<9s}'.format('File', 'MD5', 'Size')) - for f, h, s in zip(filenames, hashes, sizes): - print('{:40s} {:>32s} {:>9s}'.format(f, h, s)) - - - -if __name__ == "__main__": - sys.exit(int(main() or 0)) diff --git a/Tools/msi/get_externals.bat b/Tools/msi/get_externals.bat deleted file mode 100644 index c7c7e9f470bc250..000000000000000 --- a/Tools/msi/get_externals.bat +++ /dev/null @@ -1,91 +0,0 @@ -@echo off -setlocal -rem Simple script to fetch source for external libraries - -set HERE=%~dp0 -if "%PCBUILD%"=="" (set PCBUILD=%HERE%..\..\PCbuild\) -if "%EXTERNALS_DIR%"=="" (set EXTERNALS_DIR=%HERE%..\..\externals\windows-installer) -if "%NUGET%"=="" (set NUGET=%EXTERNALS_DIR%\..\nuget.exe) -if "%NUGET_URL%"=="" (set NUGET_URL=https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) - -set DO_FETCH=true -set DO_CLEAN=false - -:CheckOpts -if "%~1"=="--python" (set PYTHON=%2) & shift & shift & goto CheckOpts -if "%~1"=="--organization" (set ORG=%2) & shift & shift & goto CheckOpts -if "%~1"=="-c" (set DO_CLEAN=true) & shift & goto CheckOpts -if "%~1"=="--clean" (set DO_CLEAN=true) & shift & goto CheckOpts -if "%~1"=="--clean-only" (set DO_FETCH=false) & goto clean -if "x%~1" NEQ "x" goto usage - -if "%DO_CLEAN%"=="false" goto fetch -:clean -echo.Cleaning up external libraries. -if exist "%EXTERNALS_DIR%" ( - rem Sometimes this fails the first time; try it twice - rmdir /s /q "%EXTERNALS_DIR%" || rmdir /s /q "%EXTERNALS_DIR%" -) - -if "%DO_FETCH%"=="false" goto end -:fetch - -if "%ORG%"=="" (set ORG=python) - -call "%PCBUILD%\find_python.bat" "%PYTHON%" - -echo.Fetching external libraries... - -set libraries= - -for %%e in (%libraries%) do ( - if exist "%EXTERNALS_DIR%\%%e" ( - echo.%%e already exists, skipping. - ) else ( - echo.Fetching %%e... - %PYTHON% "%PCBUILD%get_external.py" -e "%EXTERNALS_DIR%" -O %ORG% %%e - ) -) - -echo.Fetching external tools... - -set binaries= -rem We always use whatever's latest in the repo for these -set binaries=%binaries% binutils -set binaries=%binaries% gpg -set binaries=%binaries% htmlhelp -set binaries=%binaries% nuget -set binaries=%binaries% redist-1 -set binaries=%binaries% wix-314 - -for %%b in (%binaries%) do ( - if exist "%EXTERNALS_DIR%\%%b" ( - echo.%%b already exists, skipping. - ) else ( - echo.Fetching %%b... - %PYTHON% "%PCBUILD%get_external.py" -e "%EXTERNALS_DIR%" -b -O %ORG% %%b - ) -) - -echo Finished. -goto end - -:usage -echo.Valid options: -c, --clean, --clean-only, --organization, --python, -echo.--no-tkinter, --no-openssl -echo. -echo.Pull all sources and binaries necessary for compiling optional extension -echo.modules that rely on external libraries. -echo. -echo.The --organization option determines which github organization to download -echo.from, the --python option determines which Python 3.6+ interpreter to use -echo.with PCbuild\get_external.py. -echo. -echo.Use the -c or --clean option to remove the entire externals directory. -echo. -echo.Use the --clean-only option to do the same cleaning, without pulling in -echo.anything new. -echo. -exit /b -1 - -:end diff --git a/Tools/msi/launcher/launcher.wixproj b/Tools/msi/launcher/launcher.wixproj deleted file mode 100644 index de770bdd3006c22..000000000000000 --- a/Tools/msi/launcher/launcher.wixproj +++ /dev/null @@ -1,46 +0,0 @@ - - - - {921CF0E6-AEBC-4376-BA1D-CD46EBFE6DA5} - 2.0 - launcher - Package - UpgradeCode=1B68A0EC-4DD3-5134-840E-73854B0863F1;SuppressUpgradeTable=1;$(DefineConstants) - true - ICE80 - <_Rebuild>Build - - - - - - - - - - - - - - <_Rebuild>Rebuild - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/launcher/launcher.wxs b/Tools/msi/launcher/launcher.wxs deleted file mode 100644 index 49f1f7b8c1762ee..000000000000000 --- a/Tools/msi/launcher/launcher.wxs +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NOT Installed AND NOT ALLUSERS=1 - NOT Installed AND ALLUSERS=1 - - - UPGRADE or REMOVE_350_LAUNCHER or REMOVE_360A1_LAUNCHER or UPGRADE_3_11_0 or UPGRADE_3_11_1 - - UPGRADE or REMOVE_350_LAUNCHER or REMOVE_360A1_LAUNCHER - - - - - Installed OR NOT DOWNGRADE OR UPGRADE_3_11_0 OR UPGRADE_3_11_1 - - Installed OR NOT DOWNGRADE - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/launcher/launcher_en-US.wxl b/Tools/msi/launcher/launcher_en-US.wxl deleted file mode 100644 index a7e3827c528bb07..000000000000000 --- a/Tools/msi/launcher/launcher_en-US.wxl +++ /dev/null @@ -1,17 +0,0 @@ - - - 1033 - en-us - Python Launcher - Python Launcher - Python Launcher - Python Software Foundation - A newer version of the Python launcher is already installed. - The TARGETDIR variable must be provided when invoking this installer. - Python File - Python File (no console) - Compiled Python File - Python Extension Module - Python Zip Application File - Python Zip Application File (no console) - diff --git a/Tools/msi/launcher/launcher_files.wxs b/Tools/msi/launcher/launcher_files.wxs deleted file mode 100644 index d9a230e2d35ace2..000000000000000 --- a/Tools/msi/launcher/launcher_files.wxs +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - NOT ALLUSERS=1 - - - - - - ALLUSERS=1 - - - - - VersionNT64 AND NOT ARM64_SHELLEXT - - - - - - NOT VersionNT64 AND NOT ARM64_SHELLEXT - - - - - - ARM64_SHELLEXT - - - - - - - diff --git a/Tools/msi/launcher/launcher_reg.wxs b/Tools/msi/launcher/launcher_reg.wxs deleted file mode 100644 index e8d9d24d43fa8ce..000000000000000 --- a/Tools/msi/launcher/launcher_reg.wxs +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/lib/lib.wixproj b/Tools/msi/lib/lib.wixproj deleted file mode 100644 index 3ea46dd40ea4ce9..000000000000000 --- a/Tools/msi/lib/lib.wixproj +++ /dev/null @@ -1,35 +0,0 @@ - - - - {11367E76-3337-4602-8F1E-77DB4F370D7E} - 2.0 - lib - Package - - - - - - - - - - - - - $(PySourcePath)Lib - !(bindpath.src)Lib\ - $(PySourcePath)Lib - Lib\ - lib_py - true - - - - - diff --git a/Tools/msi/lib/lib.wxs b/Tools/msi/lib/lib.wxs deleted file mode 100644 index e417e31b33783ed..000000000000000 --- a/Tools/msi/lib/lib.wxs +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/lib/lib_d.wixproj b/Tools/msi/lib/lib_d.wixproj deleted file mode 100644 index 587a82c1929da7d..000000000000000 --- a/Tools/msi/lib/lib_d.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {6C443CD3-8258-4335-BA03-49DA9C34CE4D} - 2.0 - lib_d - Package - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/lib/lib_d.wxs b/Tools/msi/lib/lib_d.wxs deleted file mode 100644 index 7968d179743a009..000000000000000 --- a/Tools/msi/lib/lib_d.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/lib/lib_en-US.wxl b/Tools/msi/lib/lib_en-US.wxl deleted file mode 100644 index 305bcc73afc8082..000000000000000 --- a/Tools/msi/lib/lib_en-US.wxl +++ /dev/null @@ -1,5 +0,0 @@ - - - Standard Library - lib - diff --git a/Tools/msi/lib/lib_files.wxs b/Tools/msi/lib/lib_files.wxs deleted file mode 100644 index 4d44299f7839099..000000000000000 --- a/Tools/msi/lib/lib_files.wxs +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/lib/lib_pdb.wixproj b/Tools/msi/lib/lib_pdb.wixproj deleted file mode 100644 index db1b5bb316cfead..000000000000000 --- a/Tools/msi/lib/lib_pdb.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {5E0BCE93-D1AC-4591-BBCB-3A2BE5A4B3D1} - 2.0 - lib_pdb - Package - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/lib/lib_pdb.wxs b/Tools/msi/lib/lib_pdb.wxs deleted file mode 100644 index 7918893a9a25050..000000000000000 --- a/Tools/msi/lib/lib_pdb.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/make_appx.ps1 b/Tools/msi/make_appx.ps1 deleted file mode 100644 index e32bd76a37f135a..000000000000000 --- a/Tools/msi/make_appx.ps1 +++ /dev/null @@ -1,71 +0,0 @@ -<# -.Synopsis - Compiles and signs an APPX package -.Description - Given the file listing, ensures all the contents are signed - and builds and signs the final package. -.Parameter mapfile - The location on disk of the text mapping file. -.Parameter msix - The path and name to store the APPX/MSIX. -.Parameter sign - When set, signs the APPX/MSIX. Packages to be published to - the store should not be signed. -.Parameter description - Description to embed in the signature (optional). -.Parameter certname - The name of the certificate to sign with (optional). -.Parameter certsha1 - The SHA1 hash of the certificate to sign with (optional). -#> -param( - [Parameter(Mandatory=$true)][string]$layout, - [Parameter(Mandatory=$true)][string]$msix, - [switch]$sign, - [string]$description, - [string]$certname, - [string]$certsha1, - [string]$certfile -) - -$tools = $script:MyInvocation.MyCommand.Path | Split-Path -parent; -Import-Module $tools\sdktools.psm1 -WarningAction SilentlyContinue -Force - -Set-Alias makeappx (Find-Tool "makeappx.exe") -Scope Script -Set-Alias makepri (Find-Tool "makepri.exe") -Scope Script - -$msixdir = Split-Path $msix -Parent -if ($msixdir) { - $msixdir = (mkdir -Force $msixdir).FullName -} else { - $msixdir = Get-Location -} -$msix = Join-Path $msixdir (Split-Path $msix -Leaf) - -pushd $layout -try { - if (Test-Path resources.pri) { - del resources.pri - } - $name = ([xml](gc AppxManifest.xml)).Package.Identity.Name - makepri new /pr . /mn AppxManifest.xml /in $name /cf _resources.xml /of _resources.pri /mf appx /o - if (-not $? -or -not (Test-Path _resources.map.txt)) { - throw "makepri step failed" - } - $lines = gc _resources.map.txt - $lines | ?{ -not ($_ -match '"_resources[\w\.]+?"') } | Out-File _resources.map.txt -Encoding utf8 - makeappx pack /f _resources.map.txt /m AppxManifest.xml /o /p $msix - if (-not $?) { - throw "makeappx step failed" - } -} finally { - popd -} - -if ($sign) { - Sign-File -certname $certname -certsha1 $certsha1 -certfile $certfile -description $description -files $msix - - if (-not $?) { - throw "Package signing failed" - } -} diff --git a/Tools/msi/make_cat.ps1 b/Tools/msi/make_cat.ps1 deleted file mode 100644 index 9ea3ddd495719e6..000000000000000 --- a/Tools/msi/make_cat.ps1 +++ /dev/null @@ -1,45 +0,0 @@ -<# -.Synopsis - Compiles and signs a catalog file. -.Description - Given the CDF definition file, builds and signs a catalog. -.Parameter catalog - The path to the catalog definition file to compile and - sign. It is assumed that the .cat file will be the same - name with a new extension. -.Parameter outfile - The path to move the built .cat file to (optional). -.Parameter description - The description to add to the signature (optional). -.Parameter certname - The name of the certificate to sign with (optional). -.Parameter certsha1 - The SHA1 hash of the certificate to sign with (optional). -#> -param( - [Parameter(Mandatory=$true)][string]$catalog, - [string]$outfile, - [switch]$sign, - [string]$description, - [string]$certname, - [string]$certsha1, - [string]$certfile -) - -$tools = $script:MyInvocation.MyCommand.Path | Split-Path -parent; -Import-Module $tools\sdktools.psm1 -WarningAction SilentlyContinue -Force - -Set-Alias MakeCat (Find-Tool "makecat.exe") -Scope Script - -MakeCat $catalog -if (-not $?) { - throw "Catalog compilation failed" -} -if ($sign) { - Sign-File -certname $certname -certsha1 $certsha1 -certfile $certfile -description $description -files @($catalog -replace 'cdf$', 'cat') -} - -if ($outfile) { - Split-Path -Parent $outfile | ?{ $_ } | %{ mkdir -Force $_; } - Move-Item ($catalog -replace 'cdf$', 'cat') $outfile -} diff --git a/Tools/msi/make_zip.proj b/Tools/msi/make_zip.proj deleted file mode 100644 index 125a434e51f4147..000000000000000 --- a/Tools/msi/make_zip.proj +++ /dev/null @@ -1,40 +0,0 @@ - - - - {10487945-15D1-4092-A214-338395C4116B} - python - - false - - - - - - false - python-$(PythonVersion)-embed-$(ArchName) - .zip - $(OutputPath)\$(TargetName)$(TargetExt) - rmdir /q/s "$(IntermediateOutputPath)\zip_$(ArchName)" - "$(PythonExe)" "$(PySourcePath)PC\layout" - $(Arguments) -b "$(BuildPath.TrimEnd(`\`))" -s "$(PySourcePath.TrimEnd(`\`))" - $(Arguments) -t "$(IntermediateOutputPath)\zip_$(ArchName)" - $(Arguments) --zip "$(TargetPath)" - $(Arguments) --precompile --zip-lib --include-underpth --include-stable --flat-dlls - $(Environment)%0D%0Aset PYTHONPATH=$(PySourcePath)Lib - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/msi.props b/Tools/msi/msi.props deleted file mode 100644 index 097af60715448f1..000000000000000 --- a/Tools/msi/msi.props +++ /dev/null @@ -1,234 +0,0 @@ - - - - $(OutputName) - false - false - $(SuppressIces);ICE03;ICE57;ICE61 - 1026 - false - true - Release - x86 - perUser - <_MakeCatCommand Condition="'$(_MakeCatCommand)' == ''">makecat - true - - - - - - - - - $(ComputerName)/$(ArchName)/ - $(ReleaseUri)/ - - - - - - - - WixUtilExtension - WixUtilExtension - - - - - $(Py_IntDir)\$(MajorVersionNumber)$(MinorVersionNumber)$(ArchName)_$(Configuration)\msi_$(OutputName) - $(IntermediateOutputPath)_$(OutputSuffix) - $(BuildPath) - $(OutputPath)\ - $(OutputPath) - true - $(ExternalsDir)\windows-installer\redist-1\$(Platform) - $([System.IO.Path]::GetFullPath($(CRTRedist))) - $(tcltkDir)lib - python$(MajorVersionNumber)$(MinorVersionNumber)$(MicroVersionNumber)$(ReleaseLevelName).chm - - $(MajorVersionNumber).$(MinorVersionNumber).$(Field3Value).0 - - - - false - - - - $([System.Math]::Floor($([System.DateTime]::Now.Subtract($([System.DateTime]::new(2001, 1, 1))).TotalDays))) - $(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)dev$(RevisionNumber) - $(MajorVersionNumber).$(MinorVersionNumber).$(RevisionNumber).0 - - - - 32-bit - 64-bit - ARM64 - 32bit - 64bit - ARM64 - - $(DefineConstants); - Version=$(InstallerVersion); - ShortVersion=$(MajorVersionNumber).$(MinorVersionNumber); - LongVersion=$(PythonVersion); - MajorVersionNumber=$(MajorVersionNumber); - MinorVersionNumber=$(MinorVersionNumber); - UpgradeMinimumVersion=$(MajorVersionNumber).$(MinorVersionNumber).0.0; - NextMajorVersionNumber=$(MajorVersionNumber).$([msbuild]::Add($(MinorVersionNumber), 1)).0.0; - Bitness=$(Bitness); - PlatformArchitecture=$(PlatformArchitecture); - PyDebugExt=$(PyDebugExt); - PyArchExt=$(PyArchExt); - PyTestExt=$(PyTestExt); - PydTag=$(PydTag); - FreethreadedPydTag=$(FreethreadedPydTag); - OptionalFeatureName=$(OutputName); - ssltag=$(OpenSSLDLLSuffix); - Suffix32=$(PyArchExt); - IncludeFreethreaded=$(IncludeFreethreaded); - - - $(DefineConstants);CRTRedist=$(CRTRedist); - - - - - - generated_filelist - - - false - - - false - - - - - - - - - build - - - build - - - build - - - build_t - - - build_t - - - build_t - - - - src - - - tcltk - - - redist - - - - build32 - - - build64 - - - buildarm64 - - - build32t - - - build64t - - - buildarm64t - - - - - - - - - <_Uuid Include="CoreUpgradeCode"> - upgradecode - - <_Uuid Include="UpgradeCode"> - upgradecode/$(OutputName) - - <_Uuid Include="InstallDirectoryGuidSeed"> - installdirectoryseed - - <_Uuid Include="PythonExeComponentGuid"> - python.exe - - <_Uuid Include="PythonwExeComponentGuid"> - pythonw.exe - - <_Uuid Include="CommonPythonRegComponentGuid"> - registry - - <_Uuid Include="PythonRegComponentGuid"> - registry/$(OutputName) - - <_Uuid Include="FreethreadedPythonExeComponentGuid" Condition="$(IncludeFreethreaded)"> - freethreaded/python.exe - - <_Uuid Include="FreethreadedPythonwExeComponentGuid" Condition="$(IncludeFreethreaded)"> - freethreaded/pythonw.exe - - - - - <_Uuids>@(_Uuid->'("%(Identity)", "$(MajorVersionNumber).$(MinorVersionNumber)/%(Uri)")',',') - <_GenerateCommand>import uuid; print('\n'.join('{}={}'.format(i, uuid.uuid5(uuid.UUID('c8d9733e-a70c-43ff-ab0c-e26456f11083'), '$(ReleaseUri.Replace(`{arch}`, `$(ArchName)`))' + j)) for i,j in [$(_Uuids.Replace(`"`,`'`))])) - - - - - - - - - - $(DefineConstants);@(_UuidValue,';'); - - - diff --git a/Tools/msi/msi.targets b/Tools/msi/msi.targets deleted file mode 100644 index 99d1de4d9d83f58..000000000000000 --- a/Tools/msi/msi.targets +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - <_FileListTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.csv - <_InstallFilesTarget>$(IntermediateOutputPath)$(MSBuildProjectName).g.wxs - - - - - <_Source>%(Source)$([msbuild]::MakeRelative(%(SourceBase), %(FullPath))) - <_Target>%(Target_)$([msbuild]::MakeRelative(%(TargetBase), %(FullPath))) - - - <_CatalogFiles Include="@(InstallFiles)" Condition="%(InstallFiles.IncludeInCat) and ''!=$([System.IO.File]::ReadAllText(%(InstallFiles.FullPath)))" /> - - - - - - - - - - - - - - <_CatFileSourceTarget>$(IntermediateOutputPath)$(MSBuildProjectName).cdf - <_CatFileTarget>$(IntermediateOutputPath)python_$(MSBuildProjectName).cat - <_CatFile>[CatalogHeader] -Name=$([System.IO.Path]::GetFileName($(_CatFileTarget))) -ResultDir=$([System.IO.Path]::GetDirectoryName($(_CatFileTarget))) -PublicVersion=1 -CatalogVersion=2 -HashAlgorithms=SHA256 -PageHashes=false -EncodingType= - -[CatalogFiles] -@(_CatalogFiles->'<HASH>%(Filename)%(Extension)=%(FullPath)',' -') - - - - - - - - - - - - - - - <_Content>$([System.IO.File]::ReadAllText(%(WxlTemplate.FullPath)).Replace(`{{ShortVersion}}`, `$(MajorVersionNumber).$(MinorVersionNumber)$(PyTestExt)`).Replace(`{{LongVersion}}`, `$(PythonVersion)$(PyTestExt)`).Replace(`{{Bitness}}`, `$(Bitness)`)) - <_ExistingContent Condition="Exists('$(IntermediateOutputPath)%(WxlTemplate.Filename).wxl')">$([System.IO.File]::ReadAllText($(IntermediateOutputPath)%(WxlTemplate.Filename).wxl)) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/path/path.wixproj b/Tools/msi/path/path.wixproj deleted file mode 100644 index 2792e14666d3845..000000000000000 --- a/Tools/msi/path/path.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {91C99298-8E2E-4422-A5AF-CC4FFF9A58D3} - 2.0 - path - Package - ICE71 - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/path/path.wxs b/Tools/msi/path/path.wxs deleted file mode 100644 index 32854392e8bee3f..000000000000000 --- a/Tools/msi/path/path.wxs +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - NOT ALLUSERS=1 - - - - - - - - - - - - ALLUSERS=1 - - - - - - - - - - - - - - - - diff --git a/Tools/msi/path/path_en-US.wxl b/Tools/msi/path/path_en-US.wxl deleted file mode 100644 index 33a7886fe2d6e20..000000000000000 --- a/Tools/msi/path/path_en-US.wxl +++ /dev/null @@ -1,6 +0,0 @@ - - - Add to Path - Path - No !(loc.ProductName) installation was detected. - diff --git a/Tools/msi/pip/pip.wixproj b/Tools/msi/pip/pip.wixproj deleted file mode 100644 index 718c02c032b73b3..000000000000000 --- a/Tools/msi/pip/pip.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {91C99298-8E2E-4422-A5AF-CC4FFF9A58D3} - 2.0 - pip - Package - ICE71 - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/pip/pip.wxs b/Tools/msi/pip/pip.wxs deleted file mode 100644 index 627c4710a9fdfaa..000000000000000 --- a/Tools/msi/pip/pip.wxs +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - PYTHON_EXE - - - - - - - - - - - - - - - - - (&DefaultFeature=3) AND NOT (!DefaultFeature=3) - (&DefaultFeature=2) AND (!DefaultFeature=3) - - UpdatePip - - - - diff --git a/Tools/msi/pip/pip_en-US.wxl b/Tools/msi/pip/pip_en-US.wxl deleted file mode 100644 index cd0d9edf3a6b6fd..000000000000000 --- a/Tools/msi/pip/pip_en-US.wxl +++ /dev/null @@ -1,6 +0,0 @@ - - - pip Bootstrap - pip - No !(loc.ProductName) installation was detected. - diff --git a/Tools/msi/purge.py b/Tools/msi/purge.py deleted file mode 100644 index 4a13d368d7c744e..000000000000000 --- a/Tools/msi/purge.py +++ /dev/null @@ -1,76 +0,0 @@ -# Purges the Fastly cache for Windows download files -# -# Usage: -# py -3 purge.py 3.5.1rc1 -# - -__author__ = 'Steve Dower ' -__version__ = '1.0.0' - -import re -import sys - -from urllib.request import Request, urlopen - -VERSION_RE = re.compile(r'(\d+\.\d+\.\d+)([A-Za-z_]+\d+)?$') - -try: - m = VERSION_RE.match(sys.argv[1]) - if not m: - print('Invalid version:', sys.argv[1]) - print('Expected something like "3.5.1rc1"') - sys.exit(1) -except LookupError: - print('Missing version argument. Expected something like "3.5.1rc1"') - sys.exit(1) - -URL = "https://www.python.org/ftp/python/{}/".format(m.group(1)) -REL = m.group(2) or '' - -FILES = [ - "core.msi", - "core_d.msi", - "core_pdb.msi", - "dev.msi", - "dev_d.msi", - "doc.msi", - "exe.msi", - "exe_d.msi", - "exe_pdb.msi", - "launcher.msi", - "lib.msi", - "lib_d.msi", - "lib_pdb.msi", - "path.msi", - "pip.msi", - "tcltk.msi", - "tcltk_d.msi", - "tcltk_pdb.msi", - "test.msi", - "test_d.msi", - "test_pdb.msi", - "tools.msi", - "ucrt.msi", -] -PATHS = [ - "python-{}.exe".format(m.group(0)), - "python-{}-webinstall.exe".format(m.group(0)), - "python-{}-amd64.exe".format(m.group(0)), - "python-{}-amd64-webinstall.exe".format(m.group(0)), - "python-{}-arm64.exe".format(m.group(0)), - "python-{}-arm64-webinstall.exe".format(m.group(0)), - "python-{}-embed-amd64.zip".format(m.group(0)), - "python-{}-embed-win32.zip".format(m.group(0)), - "python-{}-embed-arm64.zip".format(m.group(0)), - *["win32{}/{}".format(REL, f) for f in FILES], - *["amd64{}/{}".format(REL, f) for f in FILES], - *["arm64{}/{}".format(REL, f) for f in FILES], -] -PATHS = PATHS + [p + ".asc" for p in PATHS] - -print('Purged:') -for n in PATHS: - u = URL + n - with urlopen(Request(u, method='PURGE', headers={'Fastly-Soft-Purge': 1})) as r: - r.read() - print(' ', u) diff --git a/Tools/msi/sdktools.psm1 b/Tools/msi/sdktools.psm1 deleted file mode 100644 index c5973f9abc6abf0..000000000000000 --- a/Tools/msi/sdktools.psm1 +++ /dev/null @@ -1,48 +0,0 @@ -function Find-Tool { - param([string]$toolname) - - $kitroot = (gp 'HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots\').KitsRoot10 - $tool = (gci -r "$kitroot\Bin\*\x64\$toolname" | sort FullName -Desc | select -First 1) - if (-not $tool) { - throw "$toolname is not available" - } - Write-Host "Found $toolname at $($tool.FullName)" - return $tool.FullName -} - -Set-Alias SignTool (Find-Tool "signtool.exe") -Scope Script - -function Sign-File { - param([string]$certname, [string]$certsha1, [string]$certfile, [string]$description, [string[]]$files) - - if (-not $description) { - $description = $env:SigningDescription; - if (-not $description) { - $description = "Python"; - } - } - if (-not $certsha1) { - $certsha1 = $env:SigningCertificateSha1; - } - if (-not $certname) { - $certname = $env:SigningCertificate; - } - if (-not $certfile) { - $certfile = $env:SigningCertificateFile; - } - - if (-not ($certsha1 -or $certname -or $certfile)) { - throw "No signing certificate specified" - } - - foreach ($a in $files) { - if ($certsha1) { - SignTool sign /sha1 $certsha1 /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d $description $a - } elseif ($certname) { - SignTool sign /a /n $certname /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d $description $a - } elseif ($certfile) { - SignTool sign /f $certfile /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d $description $a - } - } -} - diff --git a/Tools/msi/sign_build.ps1 b/Tools/msi/sign_build.ps1 deleted file mode 100644 index d3f750454f522b0..000000000000000 --- a/Tools/msi/sign_build.ps1 +++ /dev/null @@ -1,34 +0,0 @@ -<# -.Synopsis - Recursively signs the contents of a directory. -.Description - Given the file patterns, code signs the contents. -.Parameter root - The root directory to sign. -.Parameter patterns - The file patterns to sign -.Parameter description - The description to add to the signature (optional). -.Parameter certname - The name of the certificate to sign with (optional). -.Parameter certsha1 - The SHA1 hash of the certificate to sign with (optional). -#> -param( - [Parameter(Mandatory=$true)][string]$root, - [string[]]$patterns=@("*.exe", "*.dll", "*.pyd", "*.cat"), - [string]$description, - [string]$certname, - [string]$certsha1, - [string]$certfile -) - -$tools = $script:MyInvocation.MyCommand.Path | Split-Path -parent; -Import-Module $tools\sdktools.psm1 -WarningAction SilentlyContinue -Force - -pushd $root -try { - Sign-File -certname $certname -certsha1 $certsha1 -certfile $certfile -description $description -files (gci -r $patterns) -} finally { - popd -} \ No newline at end of file diff --git a/Tools/msi/tcltk/tcltk.wixproj b/Tools/msi/tcltk/tcltk.wixproj deleted file mode 100644 index c8b7ab77c4dc6b7..000000000000000 --- a/Tools/msi/tcltk/tcltk.wixproj +++ /dev/null @@ -1,42 +0,0 @@ - - - - {DB350600-186C-4E52-BA98-26A7CECB067F} - 2.0 - tcltk - Package - - - - ICE43 - - - - - - - - - - - - - $(TclTkLibraryDir) - !(bindpath.tcltk) - $(TclTkLibraryDir) - tcl\ - tcltk_lib - - - - $(PySourcePath) - !(bindpath.src) - $(PySourcePath) - - tkinter_lib - - - - - diff --git a/Tools/msi/tcltk/tcltk.wxs b/Tools/msi/tcltk/tcltk.wxs deleted file mode 100644 index bad56d55cce3723..000000000000000 --- a/Tools/msi/tcltk/tcltk.wxs +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - PYTHON_EXE and PYTHONW_EXE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/tcltk/tcltk_d.wixproj b/Tools/msi/tcltk/tcltk_d.wixproj deleted file mode 100644 index 3266190da0c9a6a..000000000000000 --- a/Tools/msi/tcltk/tcltk_d.wixproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - {EDA1FA5A-E2AA-4EAF-B49B-87D981CD0F16} - 2.0 - tcltk_d - Package - - - - - - - - - - - - $(tcltkDir) - !(bindpath.tcltk) - $(tcltkDir)bin - DLLs\ - tcltk_dlls_d - - - - - \ No newline at end of file diff --git a/Tools/msi/tcltk/tcltk_d.wxs b/Tools/msi/tcltk/tcltk_d.wxs deleted file mode 100644 index 38aacd929995efa..000000000000000 --- a/Tools/msi/tcltk/tcltk_d.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/tcltk/tcltk_en-US.wxl_template b/Tools/msi/tcltk/tcltk_en-US.wxl_template deleted file mode 100644 index f40fd6239deaa36..000000000000000 --- a/Tools/msi/tcltk/tcltk_en-US.wxl_template +++ /dev/null @@ -1,12 +0,0 @@ - - - Tcl/Tk Support - tcltk - No !(loc.ProductName) installation was detected. - IDLE (Python {{ShortVersion}} {{Bitness}}) - Launches IDLE, the interactive environment for !(loc.ProductName). - Python {{ShortVersion}} Module Docs ({{Bitness}}) - Start the !(loc.ProductName) documentation server. - &Edit with IDLE - Edit with IDLE {{ShortVersion}} ({{Bitness}}) - diff --git a/Tools/msi/tcltk/tcltk_files.wxs b/Tools/msi/tcltk/tcltk_files.wxs deleted file mode 100644 index 7c7784741d9178d..000000000000000 --- a/Tools/msi/tcltk/tcltk_files.wxs +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/tcltk/tcltk_pdb.wixproj b/Tools/msi/tcltk/tcltk_pdb.wixproj deleted file mode 100644 index 3370798a0559dba..000000000000000 --- a/Tools/msi/tcltk/tcltk_pdb.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {02053AFA-1831-499A-B3EA-D8B223D3C40D} - 2.0 - tcltk_pdb - Package - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/tcltk/tcltk_pdb.wxs b/Tools/msi/tcltk/tcltk_pdb.wxs deleted file mode 100644 index 55f209162553eb0..000000000000000 --- a/Tools/msi/tcltk/tcltk_pdb.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/tcltk/tcltk_reg.wxs b/Tools/msi/tcltk/tcltk_reg.wxs deleted file mode 100644 index 2778bcc80669b6d..000000000000000 --- a/Tools/msi/tcltk/tcltk_reg.wxs +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - VersionNT > 600 - - - - - VersionNT > 600 - - - - - - VersionNT > 600 - - - - - - - VersionNT > 600 - - - - - - - - VersionNT = 600 - - - - - - - VersionNT = 600 - - - - - - - - diff --git a/Tools/msi/test/test.wixproj b/Tools/msi/test/test.wixproj deleted file mode 100644 index 8347e3f1d3db65b..000000000000000 --- a/Tools/msi/test/test.wixproj +++ /dev/null @@ -1,29 +0,0 @@ - - - - {DE0B7CC2-4358-4131-B3F4-C31C7F2CD468} - 2.0 - test - Package - - - - - - - - - - - - $(PySourcePath) - !(bindpath.src) - $(PySourcePath) - - test_py - - - - - \ No newline at end of file diff --git a/Tools/msi/test/test.wxs b/Tools/msi/test/test.wxs deleted file mode 100644 index 9e497e73a94f5b5..000000000000000 --- a/Tools/msi/test/test.wxs +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/test/test_d.wixproj b/Tools/msi/test/test_d.wixproj deleted file mode 100644 index 33b04be1fe60d63..000000000000000 --- a/Tools/msi/test/test_d.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {41F5AE8D-24CD-4D03-BE75-AA6F7FAB4097} - 2.0 - test_d - Package - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/test/test_d.wxs b/Tools/msi/test/test_d.wxs deleted file mode 100644 index 9b26ff6a4bf4cc3..000000000000000 --- a/Tools/msi/test/test_d.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/test/test_en-US.wxl b/Tools/msi/test/test_en-US.wxl deleted file mode 100644 index e615c7a6b7f7062..000000000000000 --- a/Tools/msi/test/test_en-US.wxl +++ /dev/null @@ -1,7 +0,0 @@ - - - Test Suite - test - !(loc.FullProductName) native libtest - !(loc.ProductName) Native Test Modules - diff --git a/Tools/msi/test/test_files.wxs b/Tools/msi/test/test_files.wxs deleted file mode 100644 index 6862a5899db2bac..000000000000000 --- a/Tools/msi/test/test_files.wxs +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/test/test_pdb.wixproj b/Tools/msi/test/test_pdb.wixproj deleted file mode 100644 index 965f0edd9b49924..000000000000000 --- a/Tools/msi/test/test_pdb.wixproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - {7CF48ADD-CFAA-499F-9A05-BA18440A3344} - 2.0 - test_pdb - Package - - - - - - - - - - - - \ No newline at end of file diff --git a/Tools/msi/test/test_pdb.wxs b/Tools/msi/test/test_pdb.wxs deleted file mode 100644 index 5a2ef3668400756..000000000000000 --- a/Tools/msi/test/test_pdb.wxs +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Tools/msi/testrelease.bat b/Tools/msi/testrelease.bat deleted file mode 100644 index db98f690151196c..000000000000000 --- a/Tools/msi/testrelease.bat +++ /dev/null @@ -1,115 +0,0 @@ -@setlocal enableextensions -@echo off - -set D=%~dp0 -set PCBUILD=%D%..\..\PCbuild\ - -set TARGETDIR=%TEMP% -set TESTX86= -set TESTX64= -set TESTALLUSER= -set TESTPERUSER= - -:CheckOpts -if "%1" EQU "-h" goto Help -if "%1" EQU "-x86" (set TESTX86=1) && shift && goto CheckOpts -if "%1" EQU "-x64" (set TESTX64=1) && shift && goto CheckOpts -if "%1" EQU "-t" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--target" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-a" (set TESTALLUSER=1) && shift && goto CheckOpts -if "%1" EQU "--alluser" (set TESTALLUSER=1) && shift && goto CheckOpts -if "%1" EQU "-p" (set TESTPERUSER=1) && shift && goto CheckOpts -if "%1" EQU "--peruser" (set TESTPERUSER=1) && shift && goto CheckOpts - -if not defined TESTX86 if not defined TESTX64 (set TESTX86=1) && (set TESTX64=1) -if not defined TESTALLUSER if not defined TESTPERUSER (set TESTALLUSER=1) && (set TESTPERUSER=1) - - -if defined TESTX86 ( - for %%f in ("%PCBUILD%win32\en-us\*.exe") do ( - if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" - if errorlevel 1 exit /B - if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" - if errorlevel 1 exit /B - ) -) - -if defined TESTX64 ( - for %%f in ("%PCBUILD%amd64\en-us\*.exe") do ( - if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" - if errorlevel 1 exit /B - if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" - if errorlevel 1 exit /B - ) -) - -exit /B 0 - -:test -@setlocal -@echo on - -@if not exist "%~1" exit /B 1 - -@set EXE=%~1 -@if not "%EXE:embed=%"=="%EXE%" exit /B 0 - -@set EXITCODE=0 -@echo Installing %1 into %2 -"%~1" /passive /log "%~2\install\log.txt" TargetDir="%~2\Python" Include_debug=1 Include_symbols=1 %~3 - -@if not errorlevel 1 ( - @echo Printing version - "%~2\Python\python.exe" -c "import sys; print(sys.version)" > "%~2\version.txt" 2>&1 -) - -@if not errorlevel 1 ( - @echo Capturing Start Menu - @dir /s/b "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" > "%~2\startmenu.txt" 2>&1 - @dir /s/b "%APPDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" >> "%~2\startmenu.txt" 2>&1 - - @echo Capturing registry - @for /F "usebackq" %%f in (`reg query HKCR /s /f python /k`) do @( - echo %%f >> "%~2\hkcr.txt" - reg query "%%f" /s >> "%~2\hkcr.txt" 2>&1 - ) - @reg query HKCU\Software\Python /s > "%~2\hkcu.txt" 2>&1 - @reg query HKLM\Software\Python /reg:32 /s > "%~2\hklm.txt" 2>&1 - @reg query HKLM\Software\Python /reg:64 /s >> "%~2\hklm.txt" 2>&1 - cmd /k exit 0 -) - -@if not errorlevel 1 ( - @echo Installing package - "%~2\Python\python.exe" -m pip install "azure<0.10" > "%~2\pip.txt" 2>&1 - @if not errorlevel 1 ( - "%~2\Python\python.exe" -m pip uninstall -y azure python-dateutil six >> "%~2\pip.txt" 2>&1 - ) -) -@if not errorlevel 1 ( - @echo Testing Tcl/tk - "%~2\Python\python.exe" -m test -uall -v test_ttk_guionly test_tk test_idle > "%~2\tcltk.txt" 2>&1 -) - -@set EXITCODE=%ERRORLEVEL% - -@echo Result was %EXITCODE% -@echo Removing %1 -"%~1" /passive /uninstall /log "%~2\uninstall\log.txt" - -@echo off -exit /B %EXITCODE% - -:Help -echo testrelease.bat [--target TARGET] [-x86] [-x64] [--alluser] [--peruser] [-h] -echo. -echo --target (-t) Specify the target directory for installs and logs -echo -x86 Run tests for x86 installers -echo -x64 Run tests for x64 installers -echo --alluser (-a) Run tests for all-user installs (requires Administrator) -echo --peruser (-p) Run tests for per-user installs -echo -h Display this help information -echo. -echo If no test architecture is specified, all architectures will be tested. -echo If no install type is selected, all install types will be tested. -echo. diff --git a/Tools/msi/ucrt/ucrt.wixproj b/Tools/msi/ucrt/ucrt.wixproj deleted file mode 100644 index 52a7e0e672b9aff..000000000000000 --- a/Tools/msi/ucrt/ucrt.wixproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - {E233091D-2EE3-49D8-A7F1-6E266CE1B6B1} - 2.0 - ucrt - Package - - - - - - - - - - - $(CRTRedist) - !(bindpath.redist)\ - $(CRTRedist)\ucrt - InstallDirectory\ - ucrt_dll - false - - - - - \ No newline at end of file diff --git a/Tools/msi/ucrt/ucrt.wxs b/Tools/msi/ucrt/ucrt.wxs deleted file mode 100644 index e9e2a9a9045115b..000000000000000 --- a/Tools/msi/ucrt/ucrt.wxs +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/Tools/msi/ucrt/ucrt_en-US.wxl b/Tools/msi/ucrt/ucrt_en-US.wxl deleted file mode 100644 index f42dd5fe44cd590..000000000000000 --- a/Tools/msi/ucrt/ucrt_en-US.wxl +++ /dev/null @@ -1,5 +0,0 @@ - - - C Runtime Library - ucrt - diff --git a/Tools/msi/uploadrelease.bat b/Tools/msi/uploadrelease.bat deleted file mode 100644 index f262489cce60857..000000000000000 --- a/Tools/msi/uploadrelease.bat +++ /dev/null @@ -1,109 +0,0 @@ -@setlocal -@echo off - -set D=%~dp0 -set PCBUILD=%D%..\..\PCbuild\ - -set HOST= -set USER= -set TARGET= -set DRYRUN=false -set NOUPLOAD= -set NOGPG= -set NOPURGE= -set NOTEST= - -:CheckOpts -if "%1" EQU "-h" goto Help -if "%1" EQU "-o" (set HOST=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--host" (set HOST=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-u" (set USER=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--user" (set USER=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-t" (set TARGET=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--target" (set TARGET=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--dry-run" (set DRYRUN=true) && shift && goto CheckOpts -if "%1" EQU "--skip-upload" (set NOUPLOAD=true) && shift && goto CheckOpts -if "%1" EQU "--skip-gpg" (set NOGPG=true) && shift && goto CheckOpts -if "%1" EQU "--skip-purge" (set NOPURGE=true) && shift && goto CheckOpts -if "%1" EQU "--skip-test" (set NOTEST=true) && shift && goto CheckOpts -if "%1" EQU "-T" (set NOTEST=true) && shift && goto CheckOpts -if "%1" NEQ "" echo Unexpected argument "%1" & exit /B 1 - -if not defined PLINK where plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" -if not defined PLINK where /R "%ProgramFiles(x86)%\PuTTY" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" -if not defined PLINK where /R "%ProgramFiles%\PuTTY" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" -if not defined PLINK where /R "%ProgramFiles(x86)%" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" -if not defined PLINK where /R "%ProgramFiles%" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" -if not defined PLINK echo Cannot locate plink.exe & exit /B 1 -echo Found plink.exe at %PLINK% - -if not defined PSCP where pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" -if not defined PSCP where /R "%ProgramFiles(x86)%\PuTTY" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" -if not defined PSCP where /R "%ProgramFiles%\PuTTY" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" -if not defined PSCP where /R "%ProgramFiles(x86)%" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" -if not defined PSCP where /R "%ProgramFiles%" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" -if not defined PSCP echo Cannot locate pscp.exe & exit /B 1 -echo Found pscp.exe at %PSCP% - -if defined NOGPG ( - set GPG= - echo Skipping GPG signature generation because of --skip-gpg -) else ( - if not defined GPG where gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" - if not defined GPG where /R "%PCBUILD%..\externals\windows-installer" gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" - if not defined GPG echo Cannot locate gpg2.exe. Signatures will not be uploaded & pause - echo Found gpg2.exe at %GPG% -) - -call "%PCBUILD%find_msbuild.bat" %MSBUILD% -if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2) -pushd "%D%" -if not defined NOUPLOAD ( - %MSBUILD% /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x86 - if errorlevel 1 goto :failed - %MSBUILD% /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x64 /p:IncludeDoc=false - if errorlevel 1 goto :failed -) -if not defined NOPURGE ( - %MSBUILD% /v:m /nologo uploadrelease.proj /t:Purge -) -if not defined NOTEST ( - call :test x86 - if errorlevel 1 goto :failed - call :test x64 - if errorlevel 1 goto :failed -) -%MSBUILD% /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x86 -if errorlevel 1 goto :failed -%MSBUILD% /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x64 /p:IncludeDoc=false -if errorlevel 1 goto :failed - -popd -exit /B 0 - -:test -%MSBUILD% /v:m /nologo uploadrelease.proj /t:Test /p:Platform=%1 -if errorlevel 1 ( - echo Test failed - purging and retrying - %MSBUILD% /v:m /nologo uploadrelease.proj /t:Purge - if errorlevel 1 exit /B - %MSBUILD% /v:m /nologo uploadrelease.proj /t:Test /p:Platform=%1 -) -exit /B - -:failed -popd -exit /B - -:Help -echo uploadrelease.bat --host HOST --user USERNAME [--target TARGET] [--dry-run] [-h] -echo. -echo --host (-o) Specify the upload host (required) -echo --user (-u) Specify the user on the host (required) -echo --target (-t) Specify the target directory on the host -echo --dry-run Display commands and filenames without executing them -echo --skip-gpg Does not generate GPG signatures before uploading -echo --skip-purge Does not perform CDN purge after uploading -echo --skip-test (-T) Does not perform post-upload tests -echo -h Display this help information -echo. diff --git a/Tools/msi/uploadrelease.proj b/Tools/msi/uploadrelease.proj deleted file mode 100644 index e70ae1de22fa78b..000000000000000 --- a/Tools/msi/uploadrelease.proj +++ /dev/null @@ -1,113 +0,0 @@ - - - - {2D69F2AB-D5D0-4344-84B5-EF6DB34A9BC9} - python - - - $(TARGET) - /srv/www.python.org/ftp/python - true - true - false - - - - - - - $(DownloadUrlBase.TrimEnd(`/`))/$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber) - $(DownloadUrl.Replace(`{version}`, `$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)`).Replace(`{arch}`, `$(ArchName)`).Replace(`{releasename}`, `$(ReleaseLevelName)`).Replace(`{msi}`, ``).TrimEnd(`/`)) - - - - - $(MSITarget) - - - $(EXETarget) - - - $(EXETarget) - - - - - - - - - - - - - - - - - %(File.CopyTo) - - - - - - - - - - - - - - - - - - - - - $(TEMP)\%(Filename)_source - $(TEMP)\%(Filename)_source\%(Filename)%(Extension) - $(TEMP)\%(Filename)_layout - $(OutputPath)\%(Filename)_layoutlog - $(OutputPath)\%(Filename)_layoutlog\%(Filename).log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tools/msi/uploadrelease.ps1 b/Tools/msi/uploadrelease.ps1 deleted file mode 100644 index a8669e5d65ed14b..000000000000000 --- a/Tools/msi/uploadrelease.ps1 +++ /dev/null @@ -1,171 +0,0 @@ -<# -.Synopsis - Uploads from a VSTS release build layout to python.org -.Description - Given the downloaded/extracted build artifact from a release - build run on python.visualstudio.com, this script uploads - the files to the correct locations. -.Parameter build - The location on disk of the extracted build artifact. -.Parameter user - The username to use when logging into the host. -.Parameter server - The host or PuTTY session name. -.Parameter target - The subdirectory on the host to copy files to. -.Parameter tests - The path to run download tests in. -.Parameter doc_htmlhelp - Optional path besides -build to locate CHM files. -.Parameter embed - Optional path besides -build to locate ZIP files. -.Parameter skipupload - Skip uploading -.Parameter skippurge - Skip purging the CDN -.Parameter skiptest - Skip the download tests -.Parameter skiphash - Skip displaying hashes -#> -param( - [Parameter(Mandatory=$true)][string]$build, - [Parameter(Mandatory=$true)][string]$user, - [string]$server="python-downloads", - [string]$target="/srv/www.python.org/ftp/python", - [string]$tests=${env:TEMP}, - [string]$doc_htmlhelp=$null, - [string]$embed=$null, - [switch]$skipupload, - [switch]$skippurge, - [switch]$skiptest, - [switch]$skiphash -) - -if (-not $build) { throw "-build option is required" } -if (-not $user) { throw "-user option is required" } - -$tools = $script:MyInvocation.MyCommand.Path | Split-Path -parent; - -if (-not ((Test-Path "$build\win32\python-*.exe") -or (Test-Path "$build\amd64\python-*.exe"))) { - throw "-build argument does not look like a 'build' directory" -} - -function find-putty-tool { - param ([string]$n) - $t = gcm $n -EA 0 - if (-not $t) { $t = gcm ".\$n" -EA 0 } - if (-not $t) { $t = gcm "${env:ProgramFiles}\PuTTY\$n" -EA 0 } - if (-not $t) { $t = gcm "${env:ProgramFiles(x86)}\PuTTY\$n" -EA 0 } - if (-not $t) { throw "Unable to locate $n.exe. Please put it on $PATH" } - return gi $t.Path -} - -$p = gci -r "$build\python-*.exe" | ` - ?{ $_.Name -match '^python-(\d+\.\d+\.\d+)((a|b|rc)\d+)?-.+' } | ` - select -first 1 | ` - %{ $Matches[1], $Matches[2] } - -"Uploading version $($p[0]) $($p[1])" -" from: $build" -" to: $($server):$target/$($p[0])" -"" - -if (-not $skipupload) { - # Upload files to the server - $pscp = find-putty-tool "pscp" - $plink = find-putty-tool "plink" - - "Upload using $pscp and $plink" - "" - - if ($doc_htmlhelp) { - $chm = gci -EA 0 $doc_htmlhelp\python*.chm, $doc_htmlhelp\python*.chm.asc - } else { - $chm = gci -EA 0 $build\python*.chm, $build\python*.chm.asc - } - - $d = "$target/$($p[0])/" - & $plink -batch $user@$server mkdir $d - & $plink -batch $user@$server chgrp downloads $d - & $plink -batch $user@$server chmod o+rx $d - if ($chm) { - & $pscp -batch $chm.FullName "$user@${server}:$d" - if (-not $?) { throw "Failed to upload $chm" } - } - - $dirs = gci "$build" -Directory - if ($embed) { - $dirs = ($dirs, (gi $embed)) | %{ $_ } - } - - foreach ($a in $dirs) { - "Uploading files from $($a.FullName)" - pushd "$($a.FullName)" - $exe = gci *.exe, *.exe.asc, *.zip, *.zip.asc - $msi = gci *.msi, *.msi.asc, *.msu, *.msu.asc - popd - - if ($exe) { - & $pscp -batch $exe.FullName "$user@${server}:$d" - if (-not $?) { throw "Failed to upload $exe" } - } - - if ($msi) { - $sd = "$d$($a.Name)$($p[1])/" - & $plink -batch $user@$server mkdir $sd - & $plink -batch $user@$server chgrp downloads $sd - & $plink -batch $user@$server chmod o+rx $sd - & $pscp -batch $msi.FullName "$user@${server}:$sd" - if (-not $?) { throw "Failed to upload $msi" } - & $plink -batch $user@$server chgrp downloads $sd* - & $plink -batch $user@$server chmod g-x,o+r $sd* - } - } - - & $plink -batch $user@$server chgrp downloads $d* - & $plink -batch $user@$server chmod g-x,o+r $d* - & $pscp -ls "$user@${server}:$d" -} - -if (-not $skippurge) { - # Run a CDN purge - py $tools\purge.py "$($p[0])$($p[1])" -} - -if (-not $skiptest) { - # Use each web installer to produce a layout. This will download - # each referenced file and validate their signatures/hashes. - gci "$build\*-webinstall.exe" -r -File | %{ - $d = mkdir "$tests\$($_.BaseName)" -Force - gci $d -r -File | del - $ic = copy $_ $d -PassThru - "Checking layout for $($ic.Name)" - Start-Process -wait $ic "/passive", "/layout", "$d\layout", "/log", "$d\log\install.log" - if (-not $?) { - Write-Error "Failed to validate layout of $($inst.Name)" - } - } -} - -if (-not $skiphash) { - # Display MD5 hash and size of each downloadable file - pushd $build - $files = gci python*.chm, *\*.exe, *\*.zip - if ($doc_htmlhelp) { - cd $doc_htmlhelp - $files = ($files, (gci python*.chm)) | %{ $_ } - } - if ($embed) { - cd $embed - $files = ($files, (gci *.zip)) | %{ $_ } - } - popd - - $hashes = $files | ` - Sort-Object Name | ` - Format-Table Name, @{Label="MD5"; Expression={(Get-FileHash $_ -Algorithm MD5).Hash}}, Length -AutoSize | ` - Out-String -Width 4096 - $hashes | clip - $hashes -} diff --git a/Tools/msi/wix.props b/Tools/msi/wix.props deleted file mode 100644 index 707c8aeacb648dc..000000000000000 --- a/Tools/msi/wix.props +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - $(MSBuildThisFileDirectory)\Wix\ - $(ExternalsDir)\windows-installer\wix-314\ - $(WixInstallPath)\Wix.targets - - \ No newline at end of file diff --git a/Tools/nuget/build.bat b/Tools/nuget/build.bat deleted file mode 100644 index b532bd74216831e..000000000000000 --- a/Tools/nuget/build.bat +++ /dev/null @@ -1,70 +0,0 @@ -@echo off -setlocal -set D=%~dp0 -set PCBUILD=%D%..\..\PCbuild\ -if "%Py_OutDir%"=="" set Py_OutDir=%PCBUILD% - -set BUILDX86= -set BUILDX64= -set BUILDARM32= -set REBUILD= -set OUTPUT= -set PACKAGES= -set PYTHON_EXE= - -:CheckOpts -if "%~1" EQU "-h" goto Help -if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts -if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts -if "%~1" EQU "-arm32" (set BUILDARM32=1) && shift && goto CheckOpts -if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts -if "%~1" EQU "-o" (set OUTPUT="/p:OutputPath=%~2") && shift && shift && goto CheckOpts -if "%~1" EQU "--out" (set OUTPUT="/p:OutputPath=%~2") && shift && shift && goto CheckOpts -if "%~1" EQU "-p" (set PACKAGES=%PACKAGES% %~2) && shift && shift && goto CheckOpts -if "%~1" EQU "--python-exe" (set PYTHON_EXE="/p:PythonExe=%~2") && shift && shift && goto CheckOpts - -if not defined BUILDX86 if not defined BUILDX64 if not defined BUILDARM32 (set BUILDX86=1) && (set BUILDX64=1) && (set BUILDARM32=1) - -call "%D%..\msi\get_externals.bat" -call "%PCBUILD%find_msbuild.bat" %MSBUILD% -if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2) - -if defined PACKAGES set PACKAGES="/p:Packages=%PACKAGES%" - -if defined BUILDX86 ( - if defined REBUILD ( call "%PCBUILD%build.bat" -e -r - ) else if not exist "%Py_OutDir%win32\python.exe" call "%PCBUILD%build.bat" -e - if errorlevel 1 goto :eof - - %MSBUILD% "%D%make_pkg.proj" /p:Configuration=Release /p:Platform=x86 %OUTPUT% %PACKAGES% %PYTHON_EXE% - if errorlevel 1 goto :eof -) - -if defined BUILDX64 ( - if defined REBUILD ( call "%PCBUILD%build.bat" -p x64 -e -r - ) else if not exist "%Py_OutDir%amd64\python.exe" call "%PCBUILD%build.bat" -p x64 -e - if errorlevel 1 goto :eof - - %MSBUILD% "%D%make_pkg.proj" /p:Configuration=Release /p:Platform=x64 %OUTPUT% %PACKAGES% %PYTHON_EXE% - if errorlevel 1 goto :eof -) - -if defined BUILDARM32 ( - if defined REBUILD ( call "%PCBUILD%build.bat" -p ARM -e -r --no-tkinter - ) else if not exist "%Py_OutDir%arm32\python.exe" call "%PCBUILD%build.bat" -p ARM -e --no-tkinter - if errorlevel 1 goto :eof - - %MSBUILD% "%D%make_pkg.proj" /p:Configuration=Release /p:Platform=ARM %OUTPUT% %PACKAGES% %PYTHON_EXE% - if errorlevel 1 goto :eof -) - -exit /B 0 - -:Help -echo build.bat [-x86] [-x64] [--out DIR] [-r] [-h] -echo. -echo -x86 Build x86 installers -echo -x64 Build x64 installers -echo -r Rebuild rather than incremental build -echo --out [DIR] Override output directory -echo -h Show usage diff --git a/Tools/nuget/make_pkg.proj b/Tools/nuget/make_pkg.proj deleted file mode 100644 index 710ef3dcb5c01de..000000000000000 --- a/Tools/nuget/make_pkg.proj +++ /dev/null @@ -1,63 +0,0 @@ - - - - {10487945-15D1-4092-A214-338395C4116B} - python - $(OutputName)x86 - $(OutputName)arm32 - $(OutputName)daily - - false - true - - - - - - $(ExternalsDir)\windows-installer\nuget\nuget.exe - $(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber) - $(NuspecVersion)-$(ReleaseLevelName) - $(MajorVersionNumber).$(MinorVersionNumber).$(DailyBuildVersion) - false - $(OutputName).$(NuspecVersion) - .nupkg - $(IntermediateOutputPath)\nuget_$(ArchName)\ - - rmdir /q/s "$(IntermediateOutputPath.TrimEnd(`\`))" - - "$(PythonExe)" "$(PySourcePath)PC\layout" - $(PythonArguments) -b "$(BuildPath.TrimEnd(`\`))" -s "$(PySourcePath.TrimEnd(`\`))" - $(PythonArguments) -t "$(IntermediateOutputPath)obj" - $(PythonArguments) --copy "$(IntermediateOutputPath)pkg" - $(PythonArguments) --preset-nuget - - "$(IntermediateOutputPath)pkg\pip.exe" -B -m pip install -U $(Packages) - - "$(Nuget)" pack "$(IntermediateOutputPath)pkg\python.nuspec" -BasePath "$(IntermediateOutputPath)pkg" - "$(Nuget)" pack "$(MSBuildThisFileDirectory)\$(OutputName).symbols.nuspec" -BasePath "$(BuildPath.TrimEnd(`\`))" - $(NugetArguments) -OutputDirectory "$(OutputPath.Trim(`\`))" - $(NugetArguments) -Version "$(NuspecVersion)" - $(NugetArguments) -NoPackageAnalysis -NonInteractive - - $(Environment)%0D%0Aset PYTHONPATH=$(PySourcePath)Lib - $(Environment)%0D%0Aset PYTHON_NUSPEC_VERSION=$(NuspecVersion) - $(Environment)%0D%0Aset PYTHON_PROPS_PLATFORM=$(Platform) - $(Environment)%0D%0Aset PYTHON_PROPS_PLATFORM=Win32 - $(Environment)%0D%0Amkdir "$(OutputPath.Trim(`\`))" >nul 2>nul - - - - - - - - - - - - - - - - - diff --git a/Tools/nuget/python.nuspec b/Tools/nuget/python.nuspec deleted file mode 100644 index 2da5f2037eb2342..000000000000000 --- a/Tools/nuget/python.nuspec +++ /dev/null @@ -1,18 +0,0 @@ - - - - python - Python - 0.0.0.0 - Python Software Foundation - tools\LICENSE.txt - https://www.python.org/ - Installs 64-bit Python for use in build scenarios. - https://www.python.org/static/favicon.ico - python - - - - - - diff --git a/Tools/nuget/pythonarm32.nuspec b/Tools/nuget/pythonarm32.nuspec deleted file mode 100644 index 2d197931edb32c3..000000000000000 --- a/Tools/nuget/pythonarm32.nuspec +++ /dev/null @@ -1,20 +0,0 @@ - - - - pythonarm32 - Python (ARM32) - Python Software Foundation - 0.0.0.0 - https://docs.python.org/3/license.html - https://www.python.org/ - false - Installs Python ARM32 for use in build scenarios. - https://www.python.org/static/favicon.ico - python - - - - - - - diff --git a/Tools/nuget/pythondaily.nuspec b/Tools/nuget/pythondaily.nuspec deleted file mode 100644 index 7df1983f42a6fe2..000000000000000 --- a/Tools/nuget/pythondaily.nuspec +++ /dev/null @@ -1,19 +0,0 @@ - - - - pythondaily - Python (Daily build) - Python Software Foundation - 0.0.0.0 - tools\LICENSE.txt - https://www.python.org/ - Installs an unsigned, untested build of Python for test purposes only. - https://www.python.org/static/favicon.ico - python - - - - - - - diff --git a/Tools/nuget/pythondaily.symbols.nuspec b/Tools/nuget/pythondaily.symbols.nuspec deleted file mode 100644 index 608e15c50e02d2d..000000000000000 --- a/Tools/nuget/pythondaily.symbols.nuspec +++ /dev/null @@ -1,22 +0,0 @@ - - - - pythondaily.symbols - Python (Daily build) - 0.0.0.0 - Python Software Foundation - https://www.python.org/ - Contains symbols for the daily build of Python. - https://www.python.org/static/favicon.ico - python - - - - - - - - - - - diff --git a/Tools/nuget/pythonx86.nuspec b/Tools/nuget/pythonx86.nuspec deleted file mode 100644 index ea878ba0bf390b6..000000000000000 --- a/Tools/nuget/pythonx86.nuspec +++ /dev/null @@ -1,19 +0,0 @@ - - - - pythonx86 - Python (32-bit) - Python Software Foundation - 0.0.0.0 - tools\LICENSE.txt - https://www.python.org/ - Installs 32-bit Python for use in build scenarios. - https://www.python.org/static/favicon.ico - python - - - - - - - From 63b564fc8728036f165805407f7d2b4e8bfd3ef0 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 01:10:11 +0300 Subject: [PATCH 093/205] gh-154303: Skip test_sqlite3 CLI completion tests on OpenBSD (GH-154304) OpenBSD's readline does not honor "completion-query-items 0", so completing many candidates blocks on a "Display all N?" prompt that hangs the pseudo-terminal opened by run_pty(). Skip the whole Completion class on OpenBSD, like the existing libedit skip. Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/test/test_sqlite3/test_cli.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Lib/test/test_sqlite3/test_cli.py b/Lib/test/test_sqlite3/test_cli.py index 29819cc19d343bc..0d235d90f1101b4 100644 --- a/Lib/test/test_sqlite3/test_cli.py +++ b/Lib/test/test_sqlite3/test_cli.py @@ -223,6 +223,9 @@ def setUpClass(cls): readline = import_module("readline") if readline.backend == "editline": raise unittest.SkipTest("libedit readline is not supported") + if sys.platform.startswith("openbsd"): + # OpenBSD's readline does not honor "completion-query-items 0". + raise unittest.SkipTest("OpenBSD readline hangs on completion") def write_input(self, input_, env=None): script = textwrap.dedent(""" From 1034e07b7d55642c3a46252e6b0a631c2df588d2 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 21 Jul 2026 01:11:04 +0300 Subject: [PATCH 094/205] gh-154275: Do not crash on deeply nested `__parameters__` in `GenericAlias` (#154277) --- Lib/test/test_typing.py | 13 ++++++++ ...-07-20-20-16-08.gh-issue-154275.l961cA.rst | 2 ++ Objects/genericaliasobject.c | 30 +++++++++++-------- 3 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-07-20-20-16-08.gh-issue-154275.l961cA.rst diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index c1f340230159db6..106ffdede6fd4ef 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -52,6 +52,8 @@ from test.support import ( captured_stderr, cpython_only, requires_docstrings, import_helper, run_code, subTests, EqualToForwardRef, + exceeds_recursion_limit, skip_if_huge_c_stack, skip_wasi_stack_overflow, + skip_emscripten_stack_overflow, ) from test.typinganndata import ( ann_module695, mod_generics_cache, _typed_dict_helper, @@ -5094,6 +5096,17 @@ class MM2(collections.abc.MutableMapping, MutableMapping[str, str]): pass self.assertEqual(MM2.__bases__, (collections.abc.MutableMapping, Generic)) + @cpython_only + @skip_if_huge_c_stack() + @skip_wasi_stack_overflow() + @skip_emscripten_stack_overflow() + def test_parameters_deep_recursion(self): + x = [0] + for _ in range(exceeds_recursion_limit()): + x = [x] + with self.assertRaisesRegex(RecursionError, "in __parameter__ calculation"): + list[x].__parameters__ + def test_orig_bases(self): T = TypeVar('T') class C(typing.Dict[str, T]): ... diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-07-20-20-16-08.gh-issue-154275.l961cA.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-20-20-16-08.gh-issue-154275.l961cA.rst new file mode 100644 index 000000000000000..998e91c77098e75 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-20-20-16-08.gh-issue-154275.l961cA.rst @@ -0,0 +1,2 @@ +Fix a crash when getting deeply nested ``__parameters__`` from a +:class:`types.GenericAlias` objects. diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 4e85927def7ea78..5caf5c7086c87a0 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -186,6 +186,10 @@ PyObject * _Py_make_parameters(PyObject *args) { assert(PyTuple_Check(args) || PyList_Check(args)); + if (Py_EnterRecursiveCall(" in __parameter__ calculation")) { + return NULL; + } + const bool is_args_list = PyList_Check(args); PyObject *tuple_args = NULL; if (is_args_list) { @@ -210,9 +214,7 @@ _Py_make_parameters(PyObject *args) } int rc = PyObject_HasAttrWithError(t, &_Py_ID(__typing_subst__)); if (rc < 0) { - Py_DECREF(parameters); - Py_XDECREF(tuple_args); - return NULL; + goto error; } if (rc) { iparam += tuple_add(parameters, iparam, t); @@ -221,18 +223,14 @@ _Py_make_parameters(PyObject *args) PyObject *subparams; if (PyObject_GetOptionalAttr(t, &_Py_ID(__parameters__), &subparams) < 0) { - Py_DECREF(parameters); - Py_XDECREF(tuple_args); - return NULL; + goto error; } if (!subparams && (PyTuple_Check(t) || PyList_Check(t))) { // Recursively call _Py_make_parameters for lists/tuples and // add the results to the current parameters. subparams = _Py_make_parameters(t); if (subparams == NULL) { - Py_DECREF(parameters); - Py_XDECREF(tuple_args); - return NULL; + goto error; } } if (subparams && PyTuple_Check(subparams)) { @@ -243,7 +241,7 @@ _Py_make_parameters(PyObject *args) if (_PyTuple_Resize(¶meters, len) < 0) { Py_DECREF(subparams); Py_XDECREF(tuple_args); - return NULL; + goto cleanup; } } for (Py_ssize_t j = 0; j < len2; j++) { @@ -256,13 +254,19 @@ _Py_make_parameters(PyObject *args) } if (iparam < len) { if (_PyTuple_Resize(¶meters, iparam) < 0) { - Py_XDECREF(parameters); - Py_XDECREF(tuple_args); - return NULL; + goto error; } } Py_XDECREF(tuple_args); + Py_LeaveRecursiveCall(); return parameters; + +error: + Py_XDECREF(parameters); + Py_XDECREF(tuple_args); +cleanup: + Py_LeaveRecursiveCall(); + return NULL; } /* If obj is a generic alias, substitute type variables params From 1c1088b1da5a7484b7b04e90ccc47aa362e709eb Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 01:46:59 +0300 Subject: [PATCH 095/205] gh-154307: Fix TemporaryDirectory cleanup on DragonFly BSD (GH-154309) On DragonFly BSD, removing a file or directory with the UF_NOUNLINK flag fails with EISDIR (IsADirectoryError) instead of EPERM, so the cleanup did not reset the flags. Handle IsADirectoryError the same as PermissionError. Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/tempfile.py | 3 ++- .../Library/2026-07-21-01-13-39.gh-issue-154307.UNFKL4.rst | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-21-01-13-39.gh-issue-154307.UNFKL4.rst diff --git a/Lib/tempfile.py b/Lib/tempfile.py index 485038417c65c66..b5f799f8d685545 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -929,7 +929,8 @@ def __init__(self, suffix=None, prefix=None, dir=None, @classmethod def _rmtree(cls, name, ignore_errors=False, repeated=False): def onexc(func, path, exc): - if isinstance(exc, PermissionError): + # On DragonFly BSD, UF_NOUNLINK removal fails with EISDIR, not EPERM. + if isinstance(exc, (PermissionError, IsADirectoryError)): if repeated and path == name: if ignore_errors: return diff --git a/Misc/NEWS.d/next/Library/2026-07-21-01-13-39.gh-issue-154307.UNFKL4.rst b/Misc/NEWS.d/next/Library/2026-07-21-01-13-39.gh-issue-154307.UNFKL4.rst new file mode 100644 index 000000000000000..fdba0c2940f0050 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-21-01-13-39.gh-issue-154307.UNFKL4.rst @@ -0,0 +1,3 @@ +Fix :meth:`tempfile.TemporaryDirectory.cleanup` on DragonFly BSD, where removing +a file with the ``UF_NOUNLINK`` flag failed with ``EISDIR`` instead of +``EPERM``. From 1f649fecb645d70b9c48268839e4177d8fe4e1d1 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 01:47:43 +0300 Subject: [PATCH 096/205] gh-154308: Clear file flags in os_helper.rmtree() (GH-154310) On BSD systems a test may leave behind files or directories with flags such as UF_IMMUTABLE or UF_NOUNLINK set, which prevent the directory from being modified or removed. Clear the flags before removing, so cleaning up a temporary directory does not fail. Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/test/support/os_helper.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Lib/test/support/os_helper.py b/Lib/test/support/os_helper.py index 2c45fe2369ec36b..daf6060940e97f0 100644 --- a/Lib/test/support/os_helper.py +++ b/Lib/test/support/os_helper.py @@ -467,12 +467,23 @@ def _rmtree(path): def _rmtree_inner(path): from test.support import _force_run + # Clear file flags (e.g. UF_IMMUTABLE, UF_NOUNLINK on BSD). + if hasattr(os, 'chflags'): + try: + os.chflags(path, 0) + except OSError: + pass for name in _force_run(path, os.listdir, path): fullname = os.path.join(path, name) try: mode = os.lstat(fullname).st_mode except OSError: mode = 0 + if hasattr(os, 'lchflags'): + try: + os.lchflags(fullname, 0) + except OSError: + pass if stat.S_ISDIR(mode): _rmtree_inner(fullname) _force_run(path, os.rmdir, fullname) From 20b7e8e50b9a4a92989b36531429f9b51ee0a0bf Mon Sep 17 00:00:00 2001 From: Gyeongjae Choi Date: Tue, 21 Jul 2026 02:46:48 +0200 Subject: [PATCH 097/205] gh-148665: Enable socket.shutdown function for emscripten (#148666) Re-enable the autoconf check for socket.shutdown on Emscripten, as some Emscripten environments are able to provide this call. --- .../Library/2026-04-17-05-58-27.gh-issue-148665.AlUajE.rst | 1 + Platforms/emscripten/config.site-wasm32-emscripten | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-04-17-05-58-27.gh-issue-148665.AlUajE.rst diff --git a/Misc/NEWS.d/next/Library/2026-04-17-05-58-27.gh-issue-148665.AlUajE.rst b/Misc/NEWS.d/next/Library/2026-04-17-05-58-27.gh-issue-148665.AlUajE.rst new file mode 100644 index 000000000000000..db7736f1ae6ef65 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-04-17-05-58-27.gh-issue-148665.AlUajE.rst @@ -0,0 +1 @@ +socket.shutdown function is now enabled for Emscripten builds. However, if the runtime does not implement the shutdown syscall, it will show "Function not implemented" error. diff --git a/Platforms/emscripten/config.site-wasm32-emscripten b/Platforms/emscripten/config.site-wasm32-emscripten index f69dbb8e779a426..3c9a1c2c2568b0e 100644 --- a/Platforms/emscripten/config.site-wasm32-emscripten +++ b/Platforms/emscripten/config.site-wasm32-emscripten @@ -21,9 +21,6 @@ ac_cv_func_eventfd=no ac_cv_func_memfd_create=no ac_cv_func_prlimit=no -# unsupported syscall, https://github.com/emscripten-core/emscripten/issues/13393 -ac_cv_func_shutdown=no - # The rest is based on pyodide # https://github.com/pyodide/pyodide/blob/main/cpython/pyconfig.undefs.h From 70f7c6c0f2ddfd3b447946f1b926776b2a344703 Mon Sep 17 00:00:00 2001 From: Zhou Wei Date: Tue, 21 Jul 2026 13:24:21 +0800 Subject: [PATCH 098/205] gh-103925: Fix csv.Sniffer for a quoted field ending a CRLF line (GH-103926) "$" does not match before "\r" even in the MULTILINE mode, so such a field was not found and the delimiter was guessed from character frequencies instead, which could give a letter. Co-authored-by: Serhiy Storchaka Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/csv.py | 8 ++++---- Lib/test/test_csv.py | 6 ++++++ .../2023-04-27-14-50-03.gh-issue-103925.khC-El.rst | 3 +++ 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2023-04-27-14-50-03.gh-issue-103925.khC-El.rst diff --git a/Lib/csv.py b/Lib/csv.py index b2aaf5fd9fa91e6..6cae34c705777dd 100644 --- a/Lib/csv.py +++ b/Lib/csv.py @@ -281,10 +281,10 @@ def _guess_quote_and_delimiter(self, data, delimiters): import re matches = [] - for restr in (r'(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?P=delim)', # ,".*?", - r'(?:^|\n)(?P["\']).*?(?P=quote)(?P[^\w\n"\'])(?P ?)', # ".*?", - r'(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?:$|\n)', # ,".*?" - r'(?:^|\n)(?P["\']).*?(?P=quote)(?:$|\n)'): # ".*?" (no delim, no space) + for restr in (r'(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?P=delim)', # ,".*?", + r'(?:^|\n)(?P["\']).*?(?P=quote)(?P[^\w\n"\'])(?P ?)', # ".*?", + r'(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?:$|\r|\n)', # ,".*?" + r'(?:^|\n)(?P["\']).*?(?P=quote)(?:$|\r|\n)'): # ".*?" (no delim, no space) regexp = re.compile(restr, re.DOTALL | re.MULTILINE) matches = regexp.findall(data) if matches: diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 7327c1bd5f50530..2ab529b51c207d0 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -1415,6 +1415,9 @@ class TestSniffer(unittest.TestCase): sample18.append("v,twenty_one") # 'u' was not skipped sample18 = '\n'.join(sample18) + sample19 = ('time,title\r\n' + '2020-10-01,"Pocket - Save news, videos, stories and more"\r\n') + def test_issue43625(self): sniffer = csv.Sniffer() self.assertTrue(sniffer.has_header(self.sample12)) @@ -1494,6 +1497,9 @@ def test_delimiters(self): sniffer.sniff, self.sample15) self.assertRaisesRegex(csv.Error, "Could not determine delimiter", sniffer.sniff, self.sample16) + dialect = sniffer.sniff(self.sample19) + self.assertEqual(dialect.delimiter, ',') + self.assertEqual(dialect.quotechar, '"') def test_doublequote(self): sniffer = csv.Sniffer() diff --git a/Misc/NEWS.d/next/Library/2023-04-27-14-50-03.gh-issue-103925.khC-El.rst b/Misc/NEWS.d/next/Library/2023-04-27-14-50-03.gh-issue-103925.khC-El.rst new file mode 100644 index 000000000000000..858ce6e5bd98e70 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-04-27-14-50-03.gh-issue-103925.khC-El.rst @@ -0,0 +1,3 @@ +Fix :meth:`csv.Sniffer.sniff` for a sample with ``\r\n`` line endings in +which a quoted field ends a line: a letter could be detected as the +delimiter. From 63a2709b700d5532b8925caca5bc8b9437e7a1f3 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 09:08:45 +0300 Subject: [PATCH 099/205] gh-154325: Skip test_add_file_after_2107() if the file system rejects the timestamp (GH-154328) Some file systems (UFS and ZFS on illumos) reject timestamps that do not fit in 32 bits with EOVERFLOW instead of raising OverflowError. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_zipfile/test_core.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Lib/test/test_zipfile/test_core.py b/Lib/test/test_zipfile/test_core.py index 4f20209927e7b3d..cd498ba13e6f461 100644 --- a/Lib/test/test_zipfile/test_core.py +++ b/Lib/test/test_zipfile/test_core.py @@ -1,6 +1,7 @@ import _pyio import array import contextlib +import errno import importlib.util import io import itertools @@ -655,6 +656,12 @@ def test_add_file_after_2107(self): os.utime(TESTFN, (ts, ts)) except OverflowError: self.skipTest('Host fs cannot set timestamp to required value.') + except OSError as exc: + # Some file systems (e.g. UFS and ZFS on illumos) do not + # support timestamps that do not fit in 32 bits. + if exc.errno != errno.EOVERFLOW: + raise + self.skipTest('Host fs cannot set timestamp to required value.') mtime_ns = os.stat(TESTFN).st_mtime_ns if mtime_ns != (4386268800 * 10**9): From 25fea6d64e194c8998f5752e74b646354dbd7a57 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 09:22:53 +0300 Subject: [PATCH 100/205] gh-83273: Rewrite csv.Sniffer dialect detection using trial parsing (GH-153694) Guess the dialect by parsing the sample with every plausible combination of delimiter, quotechar and escapechar, using the actual CSV parser in strict mode, and choosing the combination which splits the sample into rows with the most consistent number of fields. The old heuristics, which guessed the delimiter from characters adjacent to quotes and from character frequencies, are removed. A large sample is parsed incrementally: first only its beginning, then, after eliminating the combinations which are clearly worse than the leader, a several times larger part, and so on. * csv.Sniffer can now detect escapechar='\\'. * Explicitly requested delimiters are no longer restricted to ASCII. * A delimiter inside a quoted field no longer wins over the actual delimiter, and sniffing no longer takes quadratic time on quoted samples. * The sample can be cut off at an arbitrary point: in the middle of a row, of a quoted field or of an escaped sequence. * Only '\r', '\n' and '\r\n' are treated as row separators, so characters like '\x1c' can now be detected as a delimiter. * A preamble (title or comment lines) before the data does not prevent detection if the data rows outnumber the preamble lines. * A sample consisting of a single column of quoted fields now raises csv.Error instead of guessing a delimiter from the content of the fields, and Sniffer.has_header() no longer raises ValueError for such samples. * doublequote is detected by comparing the two readings of the sample. Co-authored-by: Claude Fable 5 --- Doc/library/csv.rst | 16 + Doc/whatsnew/3.16.rst | 15 + Lib/csv.py | 485 +++++++++++------- Lib/test/test_csv.py | 204 +++++++- ...6-07-14-12-00-00.gh-issue-83273.SnifQ7.rst | 10 + 5 files changed, 550 insertions(+), 180 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-14-12-00-00.gh-issue-83273.SnifQ7.rst diff --git a/Doc/library/csv.rst b/Doc/library/csv.rst index 87c2d4702e74086..36db964a8bbfe44 100644 --- a/Doc/library/csv.rst +++ b/Doc/library/csv.rst @@ -312,6 +312,22 @@ The :mod:`!csv` module defines the following classes: is given, it is interpreted as a string containing possible valid delimiter characters. + The dialect is deduced by parsing the sample with every plausible + combination of parameters + and choosing the combination which splits the sample into rows + with the most consistent number of fields, + so the returned dialect is consistent with how :func:`reader` + will parse the sample. + Raise :exc:`Error` if no combination fits the sample, + in particular if it is a single column, + so there is no delimiter to find. + + .. versionchanged:: next + The dialect is now deduced by trial parsing + and the results may differ from those of earlier Python versions. + The *escapechar* parameter can now be detected, + and the requested *delimiters* are not restricted to ASCII. + .. method:: has_header(sample) diff --git a/Doc/whatsnew/3.16.rst b/Doc/whatsnew/3.16.rst index c06e6930ac78bff..7aac17fc1c7b433 100644 --- a/Doc/whatsnew/3.16.rst +++ b/Doc/whatsnew/3.16.rst @@ -101,6 +101,21 @@ codecs even when a built-in codec of the same name exists. (Contributed by Serhiy Storchaka in :gh:`152997`.) +csv +--- + +* :meth:`csv.Sniffer.sniff` now deduces the dialect by trial parsing + instead of heuristics based on matching isolated fragments + and on character frequencies, + so the result is consistent with how :func:`csv.reader` will parse the sample. + It can now detect the *escapechar* parameter, + accepts non-ASCII delimiters in the *delimiters* argument, + no longer misdetects the delimiter + when the sample contains delimiter characters inside quoted fields, + and no longer takes quadratic time on quoted samples. + The results may differ from those of earlier Python versions. + (Contributed by Serhiy Storchaka in :gh:`83273`.) + curses ------ diff --git a/Lib/csv.py b/Lib/csv.py index 6cae34c705777dd..505e9e501e6772b 100644 --- a/Lib/csv.py +++ b/Lib/csv.py @@ -233,6 +233,11 @@ class Sniffer: "Sniffs" the format of a CSV file (i.e. delimiter, quotechar) Returns a Dialect object. ''' + # Characters which can be guessed as a delimiter if the delimiters + # argument is not specified. + _delimiter_candidates = [c for c in map(chr, range(128)) + if not c.isalnum()] + def __init__(self): # in case there is more than one possible delimiter self.preferred = [',', '\t', ';', ' ', ':'] @@ -240,214 +245,336 @@ def __init__(self): def sniff(self, sample, delimiters=None): """ - Returns a dialect (or None) corresponding to the sample + Analyze the sample and return a Dialect subclass reflecting the + parameters found. If the optional delimiters parameter is + given, it is interpreted as a string containing possible valid + delimiter characters. Raises Error if the dialect cannot be + determined. + + The dialect is guessed by parsing the sample with every + plausible combination of delimiter, quotechar and escapechar, + and choosing the combination which splits the sample into rows + with the most consistent number of fields. + + A large sample is parsed incrementally: first only its + beginning, then, after eliminating the combinations which are + clearly worse than the leader, a several times larger part, + and so on. """ + import re + from collections import defaultdict - quotechar, doublequote, delimiter, skipinitialspace = \ - self._guess_quote_and_delimiter(sample, delimiters) - if not delimiter: - delimiter, skipinitialspace = self._guess_delimiter(sample, - delimiters) + if self._parses_as_single_column(sample): + # There is no delimiter to find; any combination could + # only find a bogus one inside the quoted fields. + raise Error("Could not determine delimiter") - if not delimiter: + chars = set(sample) + if delimiters is None: + delimiters = self._delimiter_candidates + delimiters = [d for d in delimiters + if d in chars and d not in '\r\n"\'\\'] + # Combinations to try, numbered by preference for breaking + # ties. The unquoted combinations are parsed from the start; + # the rest stay dormant until the quote character occurs at + # the start of a field (see _split_dormant). + groups = defaultdict(list) + order = 0 + # Only '\\' is tried as an escape character: others are not + # seen in the wild. + for escapechar in ('', '\\') if '\\' in chars else ('',): + for quotechar in '"', "'", '': + if quotechar and quotechar not in chars: + continue + for delimiter in delimiters: + groups[quotechar].append( + (order, delimiter, quotechar, escapechar)) + order += 1 + active = groups.pop('', []) + # Only non-empty groups were created; a plain dict cannot + # grow one by accident. + dormant = dict(groups) + + # The initial window should cover the minimal number of rows + # required for elimination (see _eliminate_worse) at a typical + # line length, so that the first round can already eliminate. + window = 2000 + # A line with its line break: '\r', '\n' or '\r\n' (the + # reader treats other line boundary characters as ordinary + # data, but does not support a bare '\r' inside a chunk). + # The \z alternative produces one final empty match. + line_re = re.compile(r'[^\r\n]*(?:\r\n|[\r\n]|\z)') + parsed = [] + lines = [] + first_round = True + while active or dormant: + end = min(window, len(sample)) + part = sample[:end] + lines = line_re.findall(part) + del lines[-1] + cut = not part.endswith(('\r', '\n')) + for quotechar in list(dormant): + activated, still = self._split_dormant( + part, quotechar, dormant[quotechar]) + active += activated + if still: + dormant[quotechar] = still + else: + del dormant[quotechar] + parsed = [(combo, self._try_dialect(lines, cut, *combo[1:])) + for combo in active] + if end == len(sample): + break + active = self._eliminate_worse(parsed, not first_round) + first_round = False + if len(active) <= 3: + # Quoted data most often leaves three survivors: the + # true dialect, its equally consistent unquoted shadow, + # and one accident. Parsing the whole sample with them + # is cheaper than another elimination round. + window = len(sample) + else: + # Too small a factor would increase the total + # re-parsing cost, too large -- the cost of the next + # round if this one did not eliminate enough. + window *= 4 + + best = None + best_score = None + for combo, rows in sorted(parsed): + if rows is None: + continue + _, delimiter, quotechar, escapechar = combo + nfields, share = self._modal_share(rows) + if nfields < 2: + # The delimiter does not delimit anything. + continue + try: + preference = -self.preferred.index(delimiter) + except ValueError: + preference = -len(self.preferred) + # A successful quoted parse is direct evidence; the preferred + # delimiters list is only a nudge. + score = (share, len(rows), bool(quotechar), preference) + if best_score is None or score > best_score: + best_score = score + best = combo[1:] + + if best is None: raise Error("Could not determine delimiter") + delimiter, quotechar, escapechar = best + doublequote = self._detect_doublequote(lines, *best) + skipinitialspace = self._detect_skipinitialspace(lines, *best, + doublequote) class dialect(Dialect): _name = "sniffed" lineterminator = '\r\n' quoting = QUOTE_MINIMAL - # escapechar = '' - dialect.doublequote = doublequote dialect.delimiter = delimiter # _csv.reader won't accept a quotechar of '' dialect.quotechar = quotechar or '"' + dialect.escapechar = escapechar or None + dialect.doublequote = doublequote dialect.skipinitialspace = skipinitialspace return dialect - - def _guess_quote_and_delimiter(self, data, delimiters): + def _parses_as_single_column(self, sample): """ - Looks for text enclosed between two identical quotes - (the probable quotechar) which are preceded and followed - by the same character (the probable delimiter). - For example: - ,'some text', - The quote with the most wins, same with the delimiter. - If there is no quotechar the delimiter can't be determined - this way. + True if the whole sample parses as a single column of quoted + fields (the last one may be cut off in the middle), so there + is no delimiter to find. """ import re - matches = [] - for restr in (r'(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?P=delim)', # ,".*?", - r'(?:^|\n)(?P["\']).*?(?P=quote)(?P[^\w\n"\'])(?P ?)', # ".*?", - r'(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?:$|\r|\n)', # ,".*?" - r'(?:^|\n)(?P["\']).*?(?P=quote)(?:$|\r|\n)'): # ".*?" (no delim, no space) - regexp = re.compile(restr, re.DOTALL | re.MULTILINE) - matches = regexp.findall(data) - if matches: - break - - if not matches: - # (quotechar, doublequote, delimiter, skipinitialspace) - return ('', False, None, 0) - quotes = {} - delims = {} - spaces = 0 - groupindex = regexp.groupindex - for m in matches: - n = groupindex['quote'] - 1 - key = m[n] - if key: - quotes[key] = quotes.get(key, 0) + 1 - try: - n = groupindex['delim'] - 1 - key = m[n] - except KeyError: - continue - if key and (delimiters is None or key in delimiters): - delims[key] = delims.get(key, 0) + 1 - try: - n = groupindex['space'] - 1 - except KeyError: - continue - if m[n]: - spaces += 1 - - quotechar = max(quotes, key=quotes.get) - - if delims: - delim = max(delims, key=delims.get) - skipinitialspace = delims[delim] == spaces - if delim == '\n': # most likely a file with a single column - delim = '' - else: - # there is *no* delimiter, it's a single column of quoted data - delim = '' - skipinitialspace = 0 - - # if we see an extra quote between delimiters, we've got a - # double quoted format - dq_regexp = re.compile( - r"((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$)" % \ - {'delim':re.escape(delim), 'quote':quotechar}, re.MULTILINE) - + for q in '"', "'": + if q in sample: + row_re = (fr' *+{q}(?:[^{q}]|{q}{q})*+' + fr'(?:{q} *+(?:[\r\n]++|\z)|\z)') + if re.fullmatch(fr'(?:{row_re})++', sample): + return True + return False + def _split_dormant(self, part, quotechar, combos): + """ + Split the dormant combinations into those ready for trial + parsing and the rest. + + A combination is ready when its quote character occurs in + *part* at the start of a field, i.e. at the start of a line or + after its delimiter; until then parsing would not differ from + the unquoted variant. Spaces before the quote are allowed even + for the space delimiter: a false activation only costs a trial + parse. + """ + import re - if dq_regexp.search(data): - doublequote = True + remaining = {combo[1] for combo in combos} + found = set() + pos = 0 + while remaining: + # Include only the delimiters not found yet, so that the + # search skips over the found ones; the compiled patterns + # come from the re cache. + cls = re.escape(''.join(sorted(remaining))) + m = re.compile(fr'(?:^|([\r\n{cls}]))' + fr' *{quotechar}').search(part, pos) + if m is None: + break + pre = m[1] + if pre is None or pre in '\r\n': + # A quote at the start of a line starts a field for + # every delimiter. + found |= remaining + break + found.add(pre) + remaining.discard(pre) + pos = m.end() + activated = [combo for combo in combos if combo[1] in found] + still_dormant = [combo for combo in combos if combo[1] not in found] + return activated, still_dormant + + def _make_reader(self, lines, delimiter, quotechar, escapechar, + doublequote=True, skipinitialspace=None): + """ + Create a reader for trial parsing. quotechar '' means no + quoting and escapechar '' means no escape character. + """ + if skipinitialspace is None: + # Be lenient to spaces after a delimiter, unless the + # delimiter is a space itself. + skipinitialspace = delimiter != ' ' + return reader(lines, delimiter=delimiter, + quotechar=quotechar or '"', + quoting=QUOTE_MINIMAL if quotechar else QUOTE_NONE, + escapechar=escapechar or None, + doublequote=doublequote, + skipinitialspace=skipinitialspace, + strict=True) + + def _try_dialect(self, lines, cut, delimiter, quotechar, escapechar): + """ + Parse the sample, pre-split into *lines*, and return the list + of the number of fields in every parsed row, or None if not a + single row was parsed. + + If the sample cannot be parsed to the end (for example it is + cut off in the middle of a quoted field, or the combination + does not fit the sample), the rows parsed so far are counted. + The last row is not counted if *cut* is true: the sample can + be cut off in the middle of it. + """ + rows = [] + try: + rows.extend(map(len, self._make_reader(lines, delimiter, + quotechar, escapechar))) + except Error: + # The row which failed to parse is not counted. + pass else: - doublequote = False + if cut and len(rows) > 1: + rows.pop() + if 0 in rows: + # Blank lines produce empty rows. + rows = [nfields for nfields in rows if nfields] + return rows or None + + def _eliminate_worse(self, parsed, judge_hopeless): + """ + Return the combinations from *parsed* (a list of (combination, + rows) pairs) without those which are clearly worse than the + leader. Combinations with too few parsed rows (e.g. if the + parsed part ends in the middle of a large quoted field) are + not judged yet. + + If *judge_hopeless* is false, keep the combinations whose + delimiter does not delimit anything. Unlike the comparison + with the leader, which self-normalizes when the parsed part is + not representative, this verdict is absolute and irreversible, + so it is not trusted to the first part, which covers the least + representative beginning of the sample (titles, headers, + preamble). + """ + # Judging a combination by fewer rows is too noisy. + min_rows = 16 + hopeless = set() + scores = {} + for combo, rows in parsed: + if rows is not None and len(rows) >= min_rows: + nfields, share = self._modal_share(rows) + if nfields < 2: + if judge_hopeless: + hopeless.add(combo) + else: + scores[combo] = share + threshold = max(scores.values(), default=0.0) - 0.1 + return [combo for combo, _ in parsed + if combo not in hopeless + and scores.get(combo, threshold) >= threshold] - return (quotechar, doublequote, delim, skipinitialspace) + def _modal_share(self, rows): + """ + The most common number of fields in a row and its share of all + rows. Prefer the smaller number of fields in the case of a + tie: a candidate delimiter which delimits only half of the rows + is not convincing. + """ + from collections import Counter + counts = Counter(rows) + nfields = max(counts, key=lambda n: (counts[n], -n)) + return nfields, counts[nfields] / len(rows) - def _guess_delimiter(self, data, delimiters): + def _detect_doublequote(self, lines, delimiter, quotechar, escapechar): """ - The delimiter /should/ occur the same number of times on - each row. However, due to malformed data, it may not. We don't want - an all or nothing approach, so we allow for small variations in this - number. - 1) build a table of the frequency of each character on every line. - 2) build a table of frequencies of this frequency (meta-frequency?), - e.g. 'x occurred 5 times in 10 rows, 6 times in 1000 rows, - 7 times in 2 rows' - 3) use the mode of the meta-frequency to determine the /expected/ - frequency for that character - 4) find out how often the character actually meets that goal - 5) the character that best meets its goal is the delimiter - For performance reasons, the data is evaluated in chunks, so it can - try and evaluate the smallest portion of the data possible, evaluating - additional chunks as necessary. + True if a doubled quote character represents a single quote + character in the sample: interpreting it so changes the result + of parsing. """ - from collections import Counter, defaultdict - - data = list(filter(None, data.split('\n'))) - - # build frequency tables - chunkLength = min(10, len(data)) - iteration = 0 - num_lines = 0 - # {char -> {count_per_line -> num_lines_with_that_count}} - char_frequency = defaultdict(Counter) - modes = {} - delims = {} - start, end = 0, chunkLength - while start < len(data): - iteration += 1 - for line in data[start:end]: - num_lines += 1 - for char, count in Counter(line).items(): - if char.isascii(): - char_frequency[char][count] += 1 - - for char, counts in char_frequency.items(): - items = list(counts.items()) - missed_lines = num_lines - sum(counts.values()) - if missed_lines: - # Store the number of lines 'char' was missing from. - items.append((0, missed_lines)) - if len(items) == 1 and items[0][0] == 0: - continue - # get the mode of the frequencies - if len(items) > 1: - modes[char] = max(items, key=lambda x: x[1]) - # adjust the mode - subtract the sum of all - # other frequencies - items.remove(modes[char]) - modes[char] = (modes[char][0], modes[char][1] - - sum(item[1] for item in items)) - else: - modes[char] = items[0] - - # build a list of possible delimiters - modeList = modes.items() - total = float(min(chunkLength * iteration, len(data))) - # (rows of consistent data) / (number of rows) = 100% - consistency = 1.0 - # minimum consistency threshold - threshold = 0.9 - while len(delims) == 0 and consistency >= threshold: - for k, v in modeList: - if v[0] > 0 and v[1] > 0: - if ((v[1]/total) >= consistency and - (delimiters is None or k in delimiters)): - delims[k] = v - consistency -= 0.01 - - if len(delims) == 1: - delim = list(delims.keys())[0] - skipinitialspace = (data[0].count(delim) == - data[0].count("%c " % delim)) - return (delim, skipinitialspace) - - # analyze another chunkLength lines - start = end - end += chunkLength - - if not delims: - return ('', 0) - - # if there's more than one, fall back to a 'preferred' list - if len(delims) > 1: - for d in self.preferred: - if d in delims.keys(): - skipinitialspace = (data[0].count(d) == - data[0].count("%c " % d)) - return (d, skipinitialspace) - - # nothing else indicates a preference, pick the character that - # dominates(?) - items = [(v,k) for (k,v) in delims.items()] - items.sort() - delim = items[-1][1] - - skipinitialspace = (data[0].count(delim) == - data[0].count("%c " % delim)) - return (delim, skipinitialspace) - + if not quotechar or not any(quotechar * 2 in line + for line in lines): + return False + readers = [self._make_reader( + lines, delimiter, quotechar, escapechar, + doublequote=doublequote) + for doublequote in (False, True)] + while True: + rows = [] + for rdr in readers: + try: + rows.append(next(rdr)) + except (StopIteration, Error): + # Ending cleanly and failing are equivalent here: + # after equal rows both readers are at the same + # position, so they cannot end for different + # reasons. + rows.append(None) + if rows[0] != rows[1]: + return True + if rows == [None, None]: + return False + + def _detect_skipinitialspace(self, lines, delimiter, quotechar, + escapechar, doublequote): + """ + True only if every field following a delimiter starts with + a space. + """ + skipinitialspace = False + try: + for row in self._make_reader(lines, delimiter, quotechar, + escapechar, + doublequote=doublequote, + skipinitialspace=False): + for field in row[1:]: + if not field.startswith(' '): + return False + skipinitialspace = True + except Error: + pass + return skipinitialspace def has_header(self, sample): # Creates a dictionary of types of data in each column. If any diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 2ab529b51c207d0..ded53e936d19632 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -1446,13 +1446,16 @@ def test_has_header_checks_20_rows(self): def test_guess_quote_and_delimiter(self): sniffer = csv.Sniffer() - for header in (";'123;4';", "'123;4';", ";'123;4'", "'123;4'"): + for header in (";'123;4';", "'123;4';", ";'123;4'"): with self.subTest(header): dialect = sniffer.sniff(header, ",;") self.assertEqual(dialect.delimiter, ';') self.assertEqual(dialect.quotechar, "'") self.assertIs(dialect.doublequote, False) self.assertIs(dialect.skipinitialspace, False) + # A single quoted field is a single column without a delimiter. + self.assertRaisesRegex(csv.Error, "Could not determine delimiter", + sniffer.sniff, "'123;4'", ",;") def test_sniff(self): sniffer = csv.Sniffer() @@ -1501,6 +1504,196 @@ def test_delimiters(self): self.assertEqual(dialect.delimiter, ',') self.assertEqual(dialect.quotechar, '"') + def test_sniff_escapechar(self): + # gh-83273: escaped delimiters make the delimiter frequencies + # inconsistent, but the escape character can be detected by trial + # parsing. + sniffer = csv.Sniffer() + sample = 'ab,cd\\,ef\ngh\\,ij,kl\nmn,op\n' + dialect = sniffer.sniff(sample) + self.assertEqual(dialect.delimiter, ',') + self.assertEqual(dialect.escapechar, '\\') + self.assertIs(dialect.doublequote, False) + self.assertEqual(list(csv.reader(StringIO(sample), dialect)), + [['ab', 'cd,ef'], ['gh,ij', 'kl'], ['mn', 'op']]) + # No escape character in the sample -- none is detected. + dialect = sniffer.sniff('ab,cd\ngh,ij\n') + self.assertEqual(dialect.delimiter, ',') + self.assertIsNone(dialect.escapechar) + + def test_sniff_quoted_rows_among_unquoted(self): + # Rows which happen to consist of a single quoted or unquoted + # field must not be mistaken for a single column of quoted fields. + sniffer = csv.Sniffer() + sample = '"header line"\na|b\nc|d\ne|f\n' + self.assertEqual(sniffer.sniff(sample).delimiter, '|') + # Even if an unterminated quote breaks the quoted parse. + sample = '"header"\na|"b c\nd|e\nf|g\n' + self.assertEqual(sniffer.sniff(sample).delimiter, '|') + + def test_sniff_single_column_quoted(self): + # gh-98820: a sample consisting of a single column of quoted fields + # has no delimiter to detect, even if the quoted content contains + # characters which could pass for one. It also used to take + # quadratic time before failing. + sniffer = csv.Sniffer() + sample = '\n'.join('"%02d-%02d-%02d"' % (i, i, i) for i in range(50)) + self.assertRaisesRegex(csv.Error, "Could not determine delimiter", + sniffer.sniff, sample) + # Even if none of the requested delimiters occurs in the sample. + self.assertRaisesRegex(csv.Error, "Could not determine delimiter", + sniffer.sniff, sample, ',:|\t') + # A mix of quoted and unquoted single-field rows. + sample = '"abc"\ndef\n"ghi"\njkl\n' * 10 + self.assertRaisesRegex(csv.Error, "Could not determine delimiter", + sniffer.sniff, sample) + # Even if the quoted fields contain delimiter characters. + sample = '"a,b"\ncd\n' * 20 + self.assertRaisesRegex(csv.Error, "Could not determine delimiter", + sniffer.sniff, sample) + # Even if the content of the quoted fields parses consistently + # with the other quote character. + sample = '''"a-'b'-c"\n"d-'e'-f"\n''' * 10 + self.assertRaisesRegex(csv.Error, "Could not determine delimiter", + sniffer.sniff, sample) + + def test_sniff_non_ascii_delimiter(self): + # gh-111820: an explicitly requested delimiter can be non-ASCII. + sniffer = csv.Sniffer() + sample = 'aaa\xacbbb\xacccc\nddd\xaceee\xacfff\nggg\xachhh\xaciii\n' + dialect = sniffer.sniff(sample, delimiters='\xac') + self.assertEqual(dialect.delimiter, '\xac') + + def test_sniff_preamble(self): + # A preamble (title or comment lines) before the data must not + # prevent detection, even if it is larger than the part of the + # sample which is parsed first. It is enough for the data rows + # to slightly outnumber the preamble lines. + sniffer = csv.Sniffer() + for n in 3, 24, 80, 320: + preamble = ''.join(f'Comment line {i:05}\n' for i in range(n)) + for ndata in n + 2, 2 * n + 5: + with self.subTest(preamble_lines=n, data_lines=ndata): + sample = preamble + 'aaa,bbb,ccc\n' * ndata + self.assertEqual(sniffer.sniff(sample).delimiter, ',') + + def test_sniff_line_boundary_characters(self): + # Only '\r', '\n' and '\r\n' are row separators; characters like + # '\x1c' or '\x85', which str.splitlines() treats as line + # boundaries, are ordinary data for the reader -- '\x1c' can + # even be the delimiter. + sniffer = csv.Sniffer() + sample = 'aa\x1cbb\ncc\x1cdd\nee\x1cff\n' + self.assertEqual(sniffer.sniff(sample).delimiter, '\x1c') + sample = 'a\x85b,c\nd,e\nf,g\n' + dialect = sniffer.sniff(sample) + self.assertEqual(dialect.delimiter, ',') + self.assertEqual(next(csv.reader(StringIO(sample), dialect)), + ['a\x85b', 'c']) + + def test_sniff_delimiter_in_quoted_field(self): + # gh-97611: a delimiter inside a quoted field should not win over + # the delimiter which actually separates the fields. + sniffer = csv.Sniffer() + sample = ( + 'Surname;First Name;Year of birth\n' + '"\tDoe;Jane"\t;1971\n' + ) + dialect = sniffer.sniff(sample, delimiters=',;\t') + self.assertEqual(dialect.delimiter, ';') + sample = ( + 'Surname;First Name;Year of birth\n' + '"\t";"\t";1971\n' + '"Le Trec";"Mary Ann";1486\n' + ) + dialect = sniffer.sniff(sample, delimiters=',;\t') + self.assertEqual(dialect.delimiter, ';') + self.assertEqual(dialect.quotechar, '"') + + def test_sniff_embedded_lists(self): + # gh-119123: commas in bracketed lists adjacent to quotes should + # not be mistaken for the delimiter. + sniffer = csv.Sniffer() + sample = ( + "id;is_sort;cost;group;merge\n" + "1;True;62.25;['345'];UNKNOWN\n" + "2;True;54.00;['235'];UNKNOWN\n" + "3;True;237.00;['567', '568'];UNKNOWN\n" + "4;True;46.50;['112', '112'];UNKNOWN\n" + ) + dialect = sniffer.sniff(sample, delimiters=',;') + self.assertEqual(dialect.delimiter, ';') + + def test_sniff_space_adjacent_to_quotes(self): + # gh-88843: a space adjacent to stray quotes should not be + # detected as the delimiter. + sniffer = csv.Sniffer() + sample = "a|b\nc| 'd\ne|' f" + dialect = sniffer.sniff(sample) + self.assertEqual(dialect.delimiter, '|') + + def test_sniff_crlf_lineterminator(self): + # gh-103925: a quote at the end of a \r\n-terminated line. + sniffer = csv.Sniffer() + sample = ( + 'Timestamp,URL,Title\r\n' + '2020-10-01 17:17:37+08:00,' + 'https://www.mozilla.org/en-US/firefox/welcome/2/,' + '"Pocket - Save news, videos, stories and more"\r\n' + ) + dialect = sniffer.sniff(sample) + self.assertEqual(dialect.delimiter, ',') + self.assertEqual(dialect.quotechar, '"') + + def test_sniff_excel_tab_with_quotes(self): + # gh-62029: tab-delimited data with a quoted field containing + # spaces and doubled quotes. + sniffer = csv.Sniffer() + sample = ('foo\tbar\t"baz ""quoted"" here"\tspam eggs\n' + 'ham\teggs\tx y\tz w\n') + dialect = sniffer.sniff(sample) + self.assertEqual(dialect.delimiter, '\t') + self.assertEqual(dialect.quotechar, '"') + self.assertIs(dialect.doublequote, True) + + def test_sniff_truncated_sample(self): + # A sample cut off in the middle of a quoted field should not + # spoil the detection. + sniffer = csv.Sniffer() + sample = '"a,a";"b"\n"c";"d"\n"e";"f,f\n' + dialect = sniffer.sniff(sample) + self.assertEqual(dialect.delimiter, ';') + self.assertEqual(dialect.quotechar, '"') + # Cut off in the middle of the last row. + sample = 'a,b,c\nd,e,f\ng,h,i\nj,k' + self.assertEqual(sniffer.sniff(sample).delimiter, ',') + # Cut off in the middle of an escaped sequence. + sample = 'ab,cd\\,ef\ngh\\,ij,kl\nmn,op\nqr,st\\' + dialect = sniffer.sniff(sample) + self.assertEqual(dialect.delimiter, ',') + self.assertEqual(dialect.escapechar, '\\') + # Cut off at a line end in the middle of a quoted field. + sample = '"a","b"\n"c","d"\n"e","multi\nline' + self.assertEqual(sniffer.sniff(sample).delimiter, ',') + # An unclosed quote consumes everything to the end of the sample, + # but the rows before it still count. + sample = 'a|b\nc|d\ne|f\ng|"h\ni|j\nk|l' + self.assertEqual(sniffer.sniff(sample).delimiter, '|') + + def test_sniff_skipinitialspace_quoted(self): + sniffer = csv.Sniffer() + sample = "'a': 'b': 'c'\n'd': 'e': 'f'\n" + dialect = sniffer.sniff(sample) + self.assertEqual(dialect.delimiter, ':') + self.assertEqual(dialect.quotechar, "'") + self.assertIs(dialect.skipinitialspace, True) + + def test_sniff_regex_backtracking(self): + # gh-109638: this artificial sample used to take minutes. + sniffer = csv.Sniffer() + sample = '"",' * 100 + '"' * 100 + '0' + '"' * 100 + '0' + self.assertEqual(sniffer.sniff(sample).delimiter, ',') + def test_doublequote(self): sniffer = csv.Sniffer() dialect = sniffer.sniff(self.header1) @@ -1513,6 +1706,15 @@ def test_doublequote(self): self.assertFalse(dialect.doublequote) dialect = sniffer.sniff(self.sample9) self.assertTrue(dialect.doublequote) + # A doubled quote character in an unquoted field or an empty + # quoted field is not evidence of doubling. + dialect = sniffer.sniff('"x",a""b\n"y",c\n') + self.assertIs(dialect.doublequote, False) + dialect = sniffer.sniff('a,"",c\nd,"",f\n') + self.assertIs(dialect.doublequote, False) + # A doubled quote character inside a quoted field is. + dialect = sniffer.sniff('"a""b",c\n"d",e\n') + self.assertIs(dialect.doublequote, True) def test_guess_delimiter_crlf_not_chosen(self): # Ensure that we pick the real delimiter ("|") over "\r" in a tie. diff --git a/Misc/NEWS.d/next/Library/2026-07-14-12-00-00.gh-issue-83273.SnifQ7.rst b/Misc/NEWS.d/next/Library/2026-07-14-12-00-00.gh-issue-83273.SnifQ7.rst new file mode 100644 index 000000000000000..789503913048f94 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-14-12-00-00.gh-issue-83273.SnifQ7.rst @@ -0,0 +1,10 @@ +:meth:`csv.Sniffer.sniff` now deduces the dialect by trial parsing with the +actual CSV parser instead of heuristics based on matching isolated fragments +and on character frequencies. It can now +detect the *escapechar* parameter, accepts non-ASCII delimiters in the +*delimiters* argument, no longer misdetects the delimiter when the sample +contains delimiter characters inside quoted fields, handles samples +truncated at an arbitrary point, and no longer takes quadratic time on +quoted samples. A sample consisting of a single column of quoted fields +now raises :exc:`csv.Error` instead of guessing a delimiter from the +content of the fields. From 202c4c88ed5cb68ba41c54ad91e99c5585debdb4 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 09:39:44 +0300 Subject: [PATCH 101/205] gh-154326: Fix test_fsize_not_too_big() on Solaris (GH-154329) Solaris silently converts resource limits that do not fit in a signed 64-bit integer to RLIM_INFINITY. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_resource.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py index 6ea27c463f31484..97d2ae4e33c548b 100644 --- a/Lib/test/test_resource.py +++ b/Lib/test/test_resource.py @@ -99,6 +99,11 @@ def expected(cur): # silently converted the limit value to RLIM_INFINITY. if sys.maxsize < 2**32 <= cur <= resource.RLIM_INFINITY: return [(resource.RLIM_INFINITY, max), (cur, max)] + # Solaris silently converts limits that do not fit in a signed + # 64-bit integer to RLIM_INFINITY. + if cur >= 2**63-1: + return [(resource.RLIM_INFINITY, max), + (min(cur, resource.RLIM_INFINITY), max)] return [(min(cur, resource.RLIM_INFINITY), max)] resource.setrlimit(resource.RLIMIT_FSIZE, (2**31-5, max)) From daf09e17bf99c544e8ab7a72b11f10f2e382a381 Mon Sep 17 00:00:00 2001 From: Kumar Aditya Date: Tue, 21 Jul 2026 14:11:22 +0530 Subject: [PATCH 102/205] gh-145685: per-type method cache implementation (#150160) --- Doc/c-api/type.rst | 4 + Doc/whatsnew/3.16.rst | 3 +- Include/cpython/object.h | 2 + Include/cpython/pystats.h | 4 +- Include/internal/pycore_interp_structs.h | 23 +- Include/internal/pycore_object.h | 2 - Include/internal/pycore_typecache.h | 47 ++++ Include/internal/pycore_typeobject.h | 1 - Lib/test/test_free_threading/test_type.py | 67 ++++- Lib/test/test_sys.py | 2 +- Lib/test/test_type_cache.py | 159 +++++++++++ Makefile.pre.in | 2 + ...-06-05-09-25-08.gh-issue-145685.afO33b.rst | 1 + Modules/Setup.stdlib.in | 2 +- Modules/_testinternalcapi.c | 3 + Modules/_testinternalcapi/parts.h | 1 + Modules/_testinternalcapi/typecache.c | 95 +++++++ Objects/typeobject.c | 220 +++------------- PCbuild/_freeze_module.vcxproj | 1 + PCbuild/_freeze_module.vcxproj.filters | 3 + PCbuild/_testinternalcapi.vcxproj | 1 + PCbuild/_testinternalcapi.vcxproj.filters | 3 + PCbuild/pythoncore.vcxproj | 2 + PCbuild/pythoncore.vcxproj.filters | 6 + Python/pystate.c | 5 +- Python/pystats.c | 8 +- Python/typecache.c | 246 ++++++++++++++++++ Tools/c-analyzer/cpython/ignored.tsv | 3 + Tools/ftscalingbench/ftscalingbench.py | 13 + 29 files changed, 709 insertions(+), 220 deletions(-) create mode 100644 Include/internal/pycore_typecache.h create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-06-05-09-25-08.gh-issue-145685.afO33b.rst create mode 100644 Modules/_testinternalcapi/typecache.c create mode 100644 Python/typecache.c diff --git a/Doc/c-api/type.rst b/Doc/c-api/type.rst index 99a7ed8b1cb7b8e..2e48c56bd2c5a5b 100644 --- a/Doc/c-api/type.rst +++ b/Doc/c-api/type.rst @@ -37,6 +37,10 @@ Type Objects Clear the internal lookup cache. Return the current version tag. + .. versionchanged:: 3.16 + This function is now a no-op as the type cache is now implemented + per-type. It still returns the current version tag. + .. c:function:: unsigned long PyType_GetFlags(PyTypeObject* type) Return the :c:member:`~PyTypeObject.tp_flags` member of *type*. This function is primarily diff --git a/Doc/whatsnew/3.16.rst b/Doc/whatsnew/3.16.rst index 7aac17fc1c7b433..662defa709a246c 100644 --- a/Doc/whatsnew/3.16.rst +++ b/Doc/whatsnew/3.16.rst @@ -815,7 +815,8 @@ New features Porting to Python 3.16 ---------------------- -* TODO +* :c:func:`PyType_ClearCache` is now a no-op as the type cache is now + implemented per-type. It still returns the current version tag. Deprecated C APIs ----------------- diff --git a/Include/cpython/object.h b/Include/cpython/object.h index 326254c335b4895..4c5a677e5543ece 100644 --- a/Include/cpython/object.h +++ b/Include/cpython/object.h @@ -246,6 +246,8 @@ struct _typeobject { * This function must escape to any code that can result in * the GC being run, such as Py_DECREF. */ _Py_iteritemfunc _tp_iteritem; + + void *_tp_cache; }; #define _Py_ATTR_CACHE_UNUSED (30000) // (see tp_versions_used) diff --git a/Include/cpython/pystats.h b/Include/cpython/pystats.h index 69659c48a3bf882..738e342d1407686 100644 --- a/Include/cpython/pystats.h +++ b/Include/cpython/pystats.h @@ -96,7 +96,9 @@ typedef struct _object_stats { uint64_t type_cache_misses; uint64_t type_cache_dunder_hits; uint64_t type_cache_dunder_misses; - uint64_t type_cache_collisions; + uint64_t type_cache_too_big; + uint64_t type_cache_invalidations; + uint64_t type_cache_resizes; /* Temporary value used during GC */ uint64_t object_visits; } ObjectStats; diff --git a/Include/internal/pycore_interp_structs.h b/Include/internal/pycore_interp_structs.h index d3efac906aeb933..0623adce693d465 100644 --- a/Include/internal/pycore_interp_structs.h +++ b/Include/internal/pycore_interp_structs.h @@ -560,23 +560,6 @@ struct _types_runtime_state { }; -// Type attribute lookup cache: speed up attribute and method lookups, -// see _PyType_Lookup(). -struct type_cache_entry { - unsigned int version; // initialized from type->tp_version_tag -#ifdef Py_GIL_DISABLED - _PySeqLock sequence; -#endif - PyObject *name; // reference to exactly a str or None - PyObject *value; // borrowed reference or NULL -}; - -#define MCACHE_SIZE_EXP 12 - -struct type_cache { - struct type_cache_entry hashtable[1 << MCACHE_SIZE_EXP]; -}; - typedef struct { PyTypeObject *type; int isbuiltin; @@ -591,6 +574,10 @@ typedef struct { are also some diagnostic uses for the list of weakrefs, so we still keep it. */ PyObject *tp_weaklist; + /* Per-interpreter attribute lookup cache (struct type_cache *). + For static builtin types the cache must be per-interpreter + because tp_dict and the values it stores are per-interpreter. */ + void *_tp_cache; } managed_static_type_state; #define TYPE_VERSION_CACHE_SIZE (1<<12) /* Must be a power of 2 */ @@ -601,8 +588,6 @@ struct types_state { where all those lower numbers are used for core static types. */ unsigned int next_version_tag; - struct type_cache type_cache; - /* Every static builtin type is initialized for each interpreter during its own initialization, including for the main interpreter during global runtime initialization. This is done by calling diff --git a/Include/internal/pycore_object.h b/Include/internal/pycore_object.h index 307ecdbaaefcea2..41786cb267c2e96 100644 --- a/Include/internal/pycore_object.h +++ b/Include/internal/pycore_object.h @@ -285,8 +285,6 @@ _PyType_HasFeature(PyTypeObject *type, unsigned long feature) { return ((type->tp_flags) & feature) != 0; } -extern void _PyType_InitCache(PyInterpreterState *interp); - extern PyStatus _PyObject_InitState(PyInterpreterState *interp); extern void _PyObject_FiniState(PyInterpreterState *interp); extern bool _PyRefchain_IsTraced(PyInterpreterState *interp, PyObject *obj); diff --git a/Include/internal/pycore_typecache.h b/Include/internal/pycore_typecache.h new file mode 100644 index 000000000000000..76f87e8548d9c90 --- /dev/null +++ b/Include/internal/pycore_typecache.h @@ -0,0 +1,47 @@ +#ifndef PY_INTERNAL_TYPECACHE_H +#define PY_INTERNAL_TYPECACHE_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "pycore_stackref.h" + + +#define _Py_TYPECACHE_MINSIZE (1 << 3) +#define _Py_TYPECACHE_MAXSIZE (1 << 16) + +struct type_cache_entry { + PyObject *name; // name of the attribute or method, interned string, NULL if the entry is empty + PyObject *value; // borrowed reference or NULL +}; + +// Per-type attribute lookup cache: speed up attribute and method lookups, +// see _PyTypeCache_Lookup(). +struct type_cache { + uint32_t mask; // mask for indexing into hashtable, i.e. size of hashtable is mask + 1 + uint32_t available; // number of available entries in hashtable + uint32_t used; // number of used entries in hashtable + unsigned int version_tag; // initialized from type->tp_version_tag + struct type_cache_entry hashtable[_Py_TYPECACHE_MINSIZE]; // hashtable entries +}; + +struct _PyTypeCacheLookupResult { + _PyStackRef value; // value is a stack reference to the cached attribute or method, or NULL if not found + int cache_hit; // 1 if the cache entry is valid and matches the type's version tag, 0 otherwise + unsigned int version_tag; // version tag of the type when the value was cached +}; + + +extern void _PyTypeCache_InitType(PyTypeObject *type); +extern void _PyTypeCache_Insert(PyTypeObject *type, PyObject *name, PyObject *value); +PyAPI_FUNC(struct _PyTypeCacheLookupResult) _PyTypeCache_Lookup(PyTypeObject *type, PyObject *name); +PyAPI_FUNC(void) _PyTypeCache_Invalidate(PyTypeObject *type); + +#ifdef __cplusplus +} +#endif +#endif /* PY_INTERNAL_TYPECACHE_H */ diff --git a/Include/internal/pycore_typeobject.h b/Include/internal/pycore_typeobject.h index c8b888f1c395483..ecb3c78a35b9165 100644 --- a/Include/internal/pycore_typeobject.h +++ b/Include/internal/pycore_typeobject.h @@ -41,7 +41,6 @@ extern PyStatus _PyTypes_InitTypes(PyInterpreterState *); extern void _PyTypes_FiniTypes(PyInterpreterState *); extern void _PyTypes_FiniExtTypes(PyInterpreterState *interp); extern void _PyTypes_Fini(PyInterpreterState *); -extern void _PyTypes_AfterFork(void); extern void _PyTypes_FiniCachedDescriptors(PyInterpreterState *); static inline PyObject ** diff --git a/Lib/test/test_free_threading/test_type.py b/Lib/test/test_free_threading/test_type.py index 0c99bbc759e672a..f17d12532c63ced 100644 --- a/Lib/test/test_free_threading/test_type.py +++ b/Lib/test/test_free_threading/test_type.py @@ -4,8 +4,10 @@ from concurrent.futures import ThreadPoolExecutor from threading import Barrier, Thread from unittest import TestCase +import sys +from test.support import import_helper, threading_helper -from test.support import threading_helper +_testinternalcapi = import_helper.import_module("_testinternalcapi") @@ -84,6 +86,24 @@ def reader_func(): self.run_one(writer_func, reader_func) + def test_attr_cache_mortal(self): + class C: + x = object() + + class D(C): + pass + + def writer_func(): + for _ in range(3000): + C.x = object() + + def reader_func(): + for _ in range(3000): + C.x + D.x + + self.run_one(writer_func, reader_func) + def test___class___modification(self): loops = 200 @@ -160,6 +180,51 @@ def reader(): self.run_one(writer, reader) + def test_per_type_cache_concurrent_reads(self): + class C: + pass + + names = [sys.intern(f"attr_{i}") for i in range( + _testinternalcapi._Py_TYPECACHE_MINSIZE * 4)] + for name in names: + setattr(C, name, name) + # Prime the cache. + for name in names: + getattr(C, name) + + lookup = _testinternalcapi.type_cache_lookup + + def reader(): + for _ in range(500): + for name in names: + hit, value, _ = lookup(C, name) + self.assertEqual(hit, 1, name) + self.assertEqual(value, name) + + threading_helper.run_concurrently(reader, nthreads=NTHREADS) + + def test_per_type_cache_concurrent_invalidate(self): + class C: + x = "value" + + # Prime the cache. + C.x + hit, value, version = _testinternalcapi.type_cache_lookup(C, "x") + self.assertEqual(hit, 1) + self.assertIs(value, "value") + self.assertGreater(version, 0) + + def reader(): + for _ in range(10_000): + self.assertIs(C.x, "value") + + def invalidator(): + for _ in range(10_000): + _testinternalcapi.type_cache_invalidate(C) + + workers = [invalidator] + [reader] * (NTHREADS - 1) + threading_helper.run_concurrently(workers) + def test_race_type_attr_added(self): NROUNDS = 50 NSTOPPERS = 4 diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 56c5c2aa2025b9a..dab03ef06a8b8e5 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -1809,7 +1809,7 @@ def delx(self): del self.__x check((1,2,3), vsize('') + self.P + 3*self.P) # type # static type: PyTypeObject - fmt = 'P2nPI13Pl4Pn9Pn12PI2Pc' + fmt = 'P2nPI13Pl4Pn9Pn12PI2PcP' s = vsize(fmt) check(int, s) typeid = 'n' if support.Py_GIL_DISABLED else '' diff --git a/Lib/test/test_type_cache.py b/Lib/test/test_type_cache.py index 849a2afd8ed7986..9827f2498554a5b 100644 --- a/Lib/test/test_type_cache.py +++ b/Lib/test/test_type_cache.py @@ -1,6 +1,7 @@ """ Tests for the internal type cache in CPython. """ import collections.abc import dis +import sys import unittest import warnings from test import support @@ -281,5 +282,163 @@ def to_bool_2(instance): self._check_specialization(to_bool_2, H(), "TO_BOOL", should_specialize=False) +@support.cpython_only +class PerTypeLookupCacheTests(unittest.TestCase): + """Tests for the per-type lookup cache.""" + + type_cache_lookup = staticmethod(_testinternalcapi.type_cache_lookup) + type_cache_invalidate = staticmethod(_testinternalcapi.type_cache_invalidate) + + def _make_type(self): + class C: + x = "x-value" + return C + + def test_lookup_miss_on_empty_cache(self): + # A freshly-created type has not cached any names yet; the cache + # should report a miss for an arbitrary name. + C = self._make_type() + hit, value, version = self.type_cache_lookup(C, "x") + self.assertEqual(hit, 0) + self.assertIsNone(value) + self.assertEqual(version, 0) + + def test_lookup_hit_after_access(self): + # Reading an attribute goes through _PyType_Lookup which + # caches the result. Subsequent lookups for the same name + # should hit the cache. + C = self._make_type() + hit, value, version = self.type_cache_lookup(C, "x") + self.assertEqual(hit, 0) + attr = C.x + hit, value, version = self.type_cache_lookup(C, "x") + self.assertEqual(hit, 1) + self.assertIs(value, attr) + self.assertNotEqual(version, 0) + self.assertEqual(version, type_get_version(C)) + + def test_lookup_caches_missing_name(self): + # _PyType_Lookup caches negative results too: a name that is not in + # the MRO should still produce a cache hit with a None value. + C = self._make_type() + with self.assertRaises(AttributeError): + C.does_not_exist + hit, value, _ = self.type_cache_lookup(C, "does_not_exist") + self.assertEqual(hit, 1) + self.assertIsNone(value) + + def test_lookup_on_static_type(self): + # The cache for static types is stored on interpreter for isolation + # between subinterpreters, test that cache works for them as well. + self.type_cache_invalidate(int) + name = sys.intern("bit_length") + self.assertEqual(self.type_cache_lookup(int, name)[0], 0) + attr = getattr(int, name) + hit, value, _ = self.type_cache_lookup(int, name) + self.assertEqual(hit, 1) + self.assertIs(value, attr) + + def test_invalidate_clears_cache(self): + C = self._make_type() + C.x # populate cache + self.assertEqual(self.type_cache_lookup(C, "x")[0], 1) + + self.type_cache_invalidate(C) + hit, value, _ = self.type_cache_lookup(C, "x") + self.assertEqual(hit, 0) + self.assertIsNone(value) + + def test_setattr_invalidates_cache(self): + # Mutating a type's attributes must invalidate any cached entries + # for that type. + C = self._make_type() + C.x + self.assertEqual(self.type_cache_lookup(C, "x")[0], 1) + + C.x = "new-value" + hit, _, _ = self.type_cache_lookup(C, "x") + self.assertEqual(hit, 0) + + # The next access should re-populate the cache with the new value. + self.assertEqual(C.x, "new-value") + hit, value, _ = self.type_cache_lookup(C, "x") + self.assertEqual(hit, 1) + self.assertEqual(value, "new-value") + + def test_setattr_on_subclass_preserves_base(self): + # Adding an attribute to a subclass changes the lookup result for + # the subclass, so its cache must be invalidated, but the base's + # cache for the same name stays valid. + class Base: + x = "base" + class Sub(Base): + pass + + self.assertEqual(Sub.x, "base") + self.assertEqual(Base.x, "base") + self.assertEqual(self.type_cache_lookup(Sub, "x")[0], 1) + self.assertEqual(self.type_cache_lookup(Base, "x")[0], 1) + + Sub.x = "sub" + # Sub's cache should be invalidated. + self.assertEqual(self.type_cache_lookup(Sub, "x")[0], 0) + # Base is untouched. + hit, value, _ = self.type_cache_lookup(Base, "x") + self.assertEqual(hit, 1) + self.assertEqual(value, "base") + + def test_setattr_on_base_invalidates_subclass(self): + class Base: + x = "base" + class Sub(Base): + pass + + Sub.x + self.assertEqual(self.type_cache_lookup(Sub, "x")[0], 1) + + Base.x = "new-base" + # Modifying the base must invalidate the subclass cache too. + self.assertEqual(self.type_cache_lookup(Sub, "x")[0], 0) + + def test_lookup_detects_stale_cache_version(self): + # The cache stores the type's tp_version_tag alongside its entries + # and re-checks it after locating a hit. If the type version moves + # forward without the cache being invalidated (the race window in + # lock-free invalidation), the consistency check must downgrade + # the hit to a miss. + C = self._make_type() + C.x # populate cache + orig_version = type_get_version(C) + self.assertNotEqual(orig_version, 0) + self.assertEqual(self.type_cache_lookup(C, "x")[0], 1) + + # Bump the type version directly without touching the cache slot + # (PyType_Modified would also invalidate, defeating the test). + type_assign_specific_version_unsafe(C, orig_version + 1) + self.assertEqual(type_get_version(C), orig_version + 1) + + hit, value, _ = self.type_cache_lookup(C, "x") + self.assertEqual(hit, 0) + self.assertIsNone(value) + + def test_setattr_on_unrelated_type_preserves_cache(self): + # Modifying one type must not invalidate a sibling's cache. + class A: + x = "a" + class B: + x = "b" + + A.x + B.x + self.assertEqual(self.type_cache_lookup(A, "x")[0], 1) + self.assertEqual(self.type_cache_lookup(B, "x")[0], 1) + + B.x = "b2" + # A's cache is unaffected. + hit, value, _ = self.type_cache_lookup(A, "x") + self.assertEqual(hit, 1) + self.assertEqual(value, "a") + + if __name__ == "__main__": unittest.main() diff --git a/Makefile.pre.in b/Makefile.pre.in index b42a8491733c636..465981f8fd4deda 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -511,6 +511,7 @@ PYTHON_OBJS= \ Python/thread.o \ Python/traceback.o \ Python/tracemalloc.o \ + Python/typecache.o \ Python/uniqueid.o \ Python/getopt.o \ Python/pystrcmp.o \ @@ -1419,6 +1420,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/internal/pycore_tracemalloc.h \ $(srcdir)/Include/internal/pycore_tstate.h \ $(srcdir)/Include/internal/pycore_tuple.h \ + $(srcdir)/Include/internal/pycore_typecache.h \ $(srcdir)/Include/internal/pycore_typedefs.h \ $(srcdir)/Include/internal/pycore_typeobject.h \ $(srcdir)/Include/internal/pycore_typevarobject.h \ diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-06-05-09-25-08.gh-issue-145685.afO33b.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-06-05-09-25-08.gh-issue-145685.afO33b.rst new file mode 100644 index 000000000000000..c95fc34b546aabb --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-06-05-09-25-08.gh-issue-145685.afO33b.rst @@ -0,0 +1 @@ +The internal method cache used for types is now a per-type cache instead of a global per-interpreter one, improving performance and reducing cache misses. Patch by Kumar Aditya. diff --git a/Modules/Setup.stdlib.in b/Modules/Setup.stdlib.in index 524f1466b191f64..0f88dddf03b9f68 100644 --- a/Modules/Setup.stdlib.in +++ b/Modules/Setup.stdlib.in @@ -172,7 +172,7 @@ @MODULE_XXSUBTYPE_TRUE@xxsubtype xxsubtype.c @MODULE__XXTESTFUZZ_TRUE@_xxtestfuzz _xxtestfuzz/_xxtestfuzz.c _xxtestfuzz/fuzzer.c @MODULE__TESTBUFFER_TRUE@_testbuffer _testbuffer.c -@MODULE__TESTINTERNALCAPI_TRUE@_testinternalcapi _testinternalcapi.c _testinternalcapi/test_lock.c _testinternalcapi/pytime.c _testinternalcapi/set.c _testinternalcapi/test_critical_sections.c _testinternalcapi/complex.c _testinternalcapi/interpreter.c _testinternalcapi/tuple.c +@MODULE__TESTINTERNALCAPI_TRUE@_testinternalcapi _testinternalcapi.c _testinternalcapi/test_lock.c _testinternalcapi/pytime.c _testinternalcapi/set.c _testinternalcapi/test_critical_sections.c _testinternalcapi/complex.c _testinternalcapi/interpreter.c _testinternalcapi/tuple.c _testinternalcapi/typecache.c @MODULE__TESTCAPI_TRUE@_testcapi _testcapimodule.c _testcapi/vectorcall.c _testcapi/heaptype.c _testcapi/abstract.c _testcapi/unicode.c _testcapi/dict.c _testcapi/set.c _testcapi/list.c _testcapi/tuple.c _testcapi/getargs.c _testcapi/datetime.c _testcapi/docstring.c _testcapi/mem.c _testcapi/watchers.c _testcapi/long.c _testcapi/float.c _testcapi/complex.c _testcapi/numbers.c _testcapi/structmember.c _testcapi/exceptions.c _testcapi/code.c _testcapi/buffer.c _testcapi/pyatomic.c _testcapi/run.c _testcapi/file.c _testcapi/codec.c _testcapi/immortal.c _testcapi/gc.c _testcapi/hash.c _testcapi/time.c _testcapi/bytes.c _testcapi/object.c _testcapi/modsupport.c _testcapi/monitoring.c _testcapi/config.c _testcapi/import.c _testcapi/frame.c _testcapi/type.c _testcapi/function.c _testcapi/module.c _testcapi/weakref.c @MODULE__TESTLIMITEDCAPI_TRUE@_testlimitedcapi _testlimitedcapi.c _testlimitedcapi/abstract.c _testlimitedcapi/bytearray.c _testlimitedcapi/bytes.c _testlimitedcapi/codec.c _testlimitedcapi/complex.c _testlimitedcapi/dict.c _testlimitedcapi/eval.c _testlimitedcapi/float.c _testlimitedcapi/heaptype_relative.c _testlimitedcapi/import.c _testlimitedcapi/list.c _testlimitedcapi/long.c _testlimitedcapi/object.c _testlimitedcapi/pyos.c _testlimitedcapi/set.c _testlimitedcapi/slots.c _testlimitedcapi/sys.c _testlimitedcapi/threadstate.c _testlimitedcapi/tuple.c _testlimitedcapi/unicode.c _testlimitedcapi/vectorcall_limited.c _testlimitedcapi/version.c _testlimitedcapi/file.c _testlimitedcapi/weakref.c _testlimitedcapi/run.c @MODULE__TESTCLINIC_TRUE@_testclinic _testclinic.c diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c index ea3ad2b81c28668..166397a72da3aa7 100644 --- a/Modules/_testinternalcapi.c +++ b/Modules/_testinternalcapi.c @@ -3423,6 +3423,9 @@ module_exec(PyObject *module) if (_PyTestInternalCapi_Init_Tuple(module) < 0) { return 1; } + if (_PyTestInternalCapi_Init_TypeCache(module) < 0) { + return 1; + } Py_ssize_t sizeof_gc_head = 0; #ifndef Py_GIL_DISABLED diff --git a/Modules/_testinternalcapi/parts.h b/Modules/_testinternalcapi/parts.h index 81f536c3babb18c..3775792b8b87156 100644 --- a/Modules/_testinternalcapi/parts.h +++ b/Modules/_testinternalcapi/parts.h @@ -16,5 +16,6 @@ int _PyTestInternalCapi_Init_Set(PyObject *module); int _PyTestInternalCapi_Init_Complex(PyObject *module); int _PyTestInternalCapi_Init_CriticalSection(PyObject *module); int _PyTestInternalCapi_Init_Tuple(PyObject *module); +int _PyTestInternalCapi_Init_TypeCache(PyObject *module); #endif // Py_TESTINTERNALCAPI_PARTS_H diff --git a/Modules/_testinternalcapi/typecache.c b/Modules/_testinternalcapi/typecache.c new file mode 100644 index 000000000000000..b5fe0cae353801b --- /dev/null +++ b/Modules/_testinternalcapi/typecache.c @@ -0,0 +1,95 @@ +// Test wrappers for the per-type lookup cache (pycore_typecache.h). +// +// Insertion is exercised indirectly through normal attribute access (which +// calls _PyType_Lookup); only Lookup and Invalidate need direct wrappers. + +#include "parts.h" + +#include "pycore_critical_section.h" +#include "pycore_pystate.h" // _PyInterpreterState_GET() +#include "pycore_stackref.h" // PyStackRef_AsPyObjectSteal() +#include "pycore_typecache.h" // _PyTypeCache_Lookup() + + +static int +require_type(PyObject *obj) +{ + if (!PyType_Check(obj)) { + PyErr_SetString(PyExc_TypeError, "expected a type"); + return -1; + } + return 0; +} + +static PyObject * +intern_name(PyObject *name) +{ + if (!PyUnicode_CheckExact(name)) { + PyErr_SetString(PyExc_TypeError, "name must be a str"); + return NULL; + } + Py_INCREF(name); + PyUnicode_InternInPlace(&name); + return name; +} + +// type_cache_lookup(type, name) -> (cache_hit, value_or_None, version_tag) +static PyObject * +type_cache_lookup(PyObject *Py_UNUSED(self), PyObject *args) +{ + PyObject *type_obj, *name; + if (!PyArg_ParseTuple(args, "OU", &type_obj, &name)) { + return NULL; + } + if (require_type(type_obj) < 0) { + return NULL; + } + name = intern_name(name); + if (name == NULL) { + return NULL; + } + struct _PyTypeCacheLookupResult r = + _PyTypeCache_Lookup((PyTypeObject *)type_obj, name); + Py_DECREF(name); + PyObject *value; + if (PyStackRef_IsNull(r.value)) { + value = Py_NewRef(Py_None); + } + else { + value = PyStackRef_AsPyObjectSteal(r.value); + } + return Py_BuildValue("(iNk)", + r.cache_hit, value, + (unsigned long)r.version_tag); +} + +static PyObject * +type_cache_invalidate(PyObject *Py_UNUSED(self), PyObject *type_obj) +{ + if (require_type(type_obj) < 0) { + return NULL; + } + Py_BEGIN_CRITICAL_SECTION_MUTEX(&_PyInterpreterState_GET()->types.mutex); + _PyTypeCache_Invalidate((PyTypeObject *)type_obj); + Py_END_CRITICAL_SECTION(); + Py_RETURN_NONE; +} + + +static PyMethodDef test_methods[] = { + {"type_cache_lookup", type_cache_lookup, METH_VARARGS}, + {"type_cache_invalidate", type_cache_invalidate, METH_O}, + {NULL}, +}; + +int +_PyTestInternalCapi_Init_TypeCache(PyObject *m) +{ + if (PyModule_AddFunctions(m, test_methods) < 0) { + return -1; + } + if (PyModule_AddIntMacro(m, _Py_TYPECACHE_MINSIZE) < 0) { + return -1; + } + return 0; +} diff --git a/Objects/typeobject.c b/Objects/typeobject.c index ffa20ccaf3dfb87..60e26eab069b094 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -21,7 +21,8 @@ #include "pycore_slots.h" // _PySlotIterator_Init #include "pycore_symtable.h" // _Py_Mangle() #include "pycore_tuple.h" // _PyTuple_FromPair -#include "pycore_typeobject.h" // struct type_cache +#include "pycore_typecache.h" // _PyTypeCache_Lookup() +#include "pycore_typeobject.h" // _PyTypes_InitTypes() #include "pycore_unicodeobject.h" // _PyUnicode_Copy #include "pycore_unionobject.h" // _Py_union_type_or #include "pycore_weakref.h" // _PyWeakref_GET_REF() @@ -41,21 +42,7 @@ class object "PyObject *" "&PyBaseObject_Type" /* Support type attribute lookup cache */ -/* The cache can keep references to the names alive for longer than - they normally would. This is why the maximum size is limited to - MCACHE_MAX_ATTR_SIZE, since it might be a problem if very large - strings are used as attribute names. */ -#define MCACHE_MAX_ATTR_SIZE 100 -#define MCACHE_HASH(version, name_hash) \ - (((unsigned int)(version) ^ (unsigned int)(name_hash)) \ - & ((1 << MCACHE_SIZE_EXP) - 1)) - -#define MCACHE_HASH_METHOD(type, name) \ - MCACHE_HASH(FT_ATOMIC_LOAD_UINT_RELAXED((type)->tp_version_tag), \ - ((Py_ssize_t)(name)) >> 3) -#define MCACHE_CACHEABLE_NAME(name) \ - (PyUnicode_CheckExact(name) && \ - (PyUnicode_GET_LENGTH(name) <= MCACHE_MAX_ATTR_SIZE)) +#define MCACHE_CACHEABLE_NAME(name) (PyUnicode_CheckExact(name) && PyUnicode_CHECK_INTERNED(name)) #define NEXT_VERSION_TAG(interp) \ (interp)->types.next_version_tag @@ -969,75 +956,17 @@ _PyType_GetTextSignatureFromInternalDoc(const char *name, const char *internal_d } -static struct type_cache* -get_type_cache(void) -{ - PyInterpreterState *interp = _PyInterpreterState_GET(); - return &interp->types.type_cache; -} - - -static void -type_cache_clear(struct type_cache *cache, PyObject *value) -{ - for (Py_ssize_t i = 0; i < (1 << MCACHE_SIZE_EXP); i++) { - struct type_cache_entry *entry = &cache->hashtable[i]; -#ifdef Py_GIL_DISABLED - _PySeqLock_LockWrite(&entry->sequence); -#endif - entry->version = 0; - Py_XSETREF(entry->name, _Py_XNewRef(value)); - entry->value = NULL; -#ifdef Py_GIL_DISABLED - _PySeqLock_UnlockWrite(&entry->sequence); -#endif - } -} - - -void -_PyType_InitCache(PyInterpreterState *interp) -{ - struct type_cache *cache = &interp->types.type_cache; - for (Py_ssize_t i = 0; i < (1 << MCACHE_SIZE_EXP); i++) { - struct type_cache_entry *entry = &cache->hashtable[i]; - assert(entry->name == NULL); - - entry->version = 0; - // Set to None so _PyType_LookupRef() can use Py_SETREF(), - // rather than using slower Py_XSETREF(). - entry->name = Py_None; - entry->value = NULL; - } -} - - -static unsigned int -_PyType_ClearCache(PyInterpreterState *interp) -{ - struct type_cache *cache = &interp->types.type_cache; - // Set to None, rather than NULL, so _PyType_LookupRef() can - // use Py_SETREF() rather than using slower Py_XSETREF(). - type_cache_clear(cache, Py_None); - - return NEXT_VERSION_TAG(interp) - 1; -} - - unsigned int PyType_ClearCache(void) { PyInterpreterState *interp = _PyInterpreterState_GET(); - return _PyType_ClearCache(interp); + return NEXT_VERSION_TAG(interp) - 1; } void _PyTypes_Fini(PyInterpreterState *interp) { - struct type_cache *cache = &interp->types.type_cache; - type_cache_clear(cache, NULL); - // All the managed static types should have been finalized already. assert(interp->types.for_extensions.num_initialized == 0); for (size_t i = 0; i < _Py_MAX_MANAGED_STATIC_EXT_TYPES; i++) { @@ -1231,6 +1160,7 @@ _PyType_Modified_Unlocked(PyTypeObject *type) } set_version_unlocked(type, 0); /* 0 is not a valid version tag */ + _PyTypeCache_Invalidate(type); if (PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) { // This field *must* be invalidated if the type is modified (see the // comment on struct _specialization_cache): @@ -1314,6 +1244,7 @@ type_mro_modified(PyTypeObject *type, PyObject *bases) clear: assert(!(type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN)); set_version_unlocked(type, 0); /* 0 is not a valid version tag */ + _PyTypeCache_Invalidate(type); type->tp_versions_used = _Py_ATTR_CACHE_UNUSED; if (PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) { // This field *must* be invalidated if the type is modified (see the @@ -6212,69 +6143,6 @@ is_dunder_name(PyObject *name) return 0; } -static PyObject * -update_cache(struct type_cache_entry *entry, PyObject *name, unsigned int version_tag, PyObject *value) -{ - _Py_atomic_store_ptr_relaxed(&entry->value, value); /* borrowed */ - assert(PyUnstable_Unicode_GET_CACHED_HASH(name) != -1); - OBJECT_STAT_INC_COND(type_cache_collisions, entry->name != Py_None && entry->name != name); - // We're releasing this under the lock for simplicity sake because it's always a - // exact unicode object or Py_None so it's safe to do so. - PyObject *old_name = entry->name; - _Py_atomic_store_ptr_relaxed(&entry->name, Py_NewRef(name)); - // We must write the version last to avoid _Py_TryXGetStackRef() - // operating on an invalid (already deallocated) value inside - // _PyType_LookupRefAndVersion(). If we write the version first then a - // reader could pass the "entry_version == type_version" check but could - // be using the old entry value. - _Py_atomic_store_uint32_release(&entry->version, version_tag); - return old_name; -} - -#if Py_GIL_DISABLED - -static void -update_cache_gil_disabled(struct type_cache_entry *entry, PyObject *name, - unsigned int version_tag, PyObject *value) -{ - _PySeqLock_LockWrite(&entry->sequence); - - // update the entry - if (entry->name == name && - entry->value == value && - entry->version == version_tag) { - // We raced with another update, bail and restore previous sequence. - _PySeqLock_AbandonWrite(&entry->sequence); - return; - } - - PyObject *old_value = update_cache(entry, name, version_tag, value); - - // Then update sequence to the next valid value - _PySeqLock_UnlockWrite(&entry->sequence); - - Py_DECREF(old_value); -} - -#endif - -void -_PyTypes_AfterFork(void) -{ -#ifdef Py_GIL_DISABLED - struct type_cache *cache = get_type_cache(); - for (Py_ssize_t i = 0; i < (1 << MCACHE_SIZE_EXP); i++) { - struct type_cache_entry *entry = &cache->hashtable[i]; - if (_PySeqLock_AfterFork(&entry->sequence)) { - // Entry was in the process of updating while forking, clear it... - entry->value = NULL; - Py_SETREF(entry->name, Py_None); - entry->version = 0; - } - } -#endif -} - /* Internal API to look for a name through the MRO. This returns a strong reference, and doesn't set an exception! If nonzero, version is set to the value of type->tp_version at the time of @@ -6305,45 +6173,16 @@ should_assign_version_tag(PyTypeObject *type, PyObject *name, unsigned int versi unsigned int _PyType_LookupStackRefAndVersion(PyTypeObject *type, PyObject *name, _PyStackRef *out) { - unsigned int h = MCACHE_HASH_METHOD(type, name); - struct type_cache *cache = get_type_cache(); - struct type_cache_entry *entry = &cache->hashtable[h]; -#ifdef Py_GIL_DISABLED - // synchronize-with other writing threads by doing an acquire load on the sequence - while (1) { - uint32_t sequence = _PySeqLock_BeginRead(&entry->sequence); - uint32_t entry_version = _Py_atomic_load_uint32_acquire(&entry->version); - uint32_t type_version = _Py_atomic_load_uint32_acquire(&type->tp_version_tag); - if (entry_version == type_version && - _Py_atomic_load_ptr_relaxed(&entry->name) == name) { + int cacheable = MCACHE_CACHEABLE_NAME(name); + if (cacheable) { + struct _PyTypeCacheLookupResult r = _PyTypeCache_Lookup(type, name); + if (r.cache_hit) { OBJECT_STAT_INC_COND(type_cache_hits, !is_dunder_name(name)); OBJECT_STAT_INC_COND(type_cache_dunder_hits, is_dunder_name(name)); - if (_Py_TryXGetStackRef(&entry->value, out)) { - // If the sequence is still valid then we're done - if (_PySeqLock_EndRead(&entry->sequence, sequence)) { - return entry_version; - } - PyStackRef_XCLOSE(*out); - } - else { - // If we can't incref the object we need to fallback to locking - break; - } - } - else { - // cache miss - break; + *out = r.value; + return r.version_tag; } } -#else - if (entry->version == type->tp_version_tag && entry->name == name) { - assert(type->tp_version_tag); - OBJECT_STAT_INC_COND(type_cache_hits, !is_dunder_name(name)); - OBJECT_STAT_INC_COND(type_cache_dunder_hits, is_dunder_name(name)); - *out = entry->value ? PyStackRef_FromPyObjectNew(entry->value) : PyStackRef_NULL; - return entry->version; - } -#endif OBJECT_STAT_INC_COND(type_cache_misses, !is_dunder_name(name)); OBJECT_STAT_INC_COND(type_cache_dunder_misses, is_dunder_name(name)); @@ -6354,14 +6193,25 @@ _PyType_LookupStackRefAndVersion(PyTypeObject *type, PyObject *name, _PyStackRef PyInterpreterState *interp = _PyInterpreterState_GET(); unsigned int version_tag = FT_ATOMIC_LOAD_UINT(type->tp_version_tag); - if (should_assign_version_tag(type, name, version_tag)) { + if (cacheable && + (version_tag != 0 || should_assign_version_tag(type, name, version_tag))) + { BEGIN_TYPE_LOCK(); - assign_version_tag(interp, type); version_tag = type->tp_version_tag; + if (version_tag == 0) { + assign_version_tag(interp, type); + version_tag = type->tp_version_tag; + } res = find_name_in_mro(type, name, out); + // find_name_in_mro can release the type lock and another thread can + // modify the type, so we need to check version tag again before caching the result. + if (res >= 0 && version_tag != 0 && version_tag == type->tp_version_tag) { + _PyTypeCache_Insert(type, name, PyStackRef_AsPyObjectBorrow(*out)); + } END_TYPE_LOCK(); } else { + version_tag = 0; res = find_name_in_mro(type, name, out); } @@ -6371,17 +6221,6 @@ _PyType_LookupStackRefAndVersion(PyTypeObject *type, PyObject *name, _PyStackRef return 0; } - if (version_tag == 0 || !MCACHE_CACHEABLE_NAME(name)) { - return 0; - } - - PyObject *res_obj = PyStackRef_AsPyObjectBorrow(*out); -#if Py_GIL_DISABLED - update_cache_gil_disabled(entry, name, version_tag, res_obj); -#else - PyObject *old_value = update_cache(entry, name, version_tag, res_obj); - Py_DECREF(old_value); -#endif return version_tag; } @@ -6840,7 +6679,10 @@ type_setattro(PyObject *self, PyObject *name, PyObject *value) done: Py_DECREF(name); Py_XDECREF(descr); - Py_XDECREF(old_value); + // delay decref of the old value as lock-free type cache readers may access it + if (old_value != NULL && !_Py_IsImmortal(old_value)) { + _PyObject_XDecRefDelayed(old_value); + } return res; } @@ -6912,6 +6754,7 @@ clear_static_type_objects(PyInterpreterState *interp, PyTypeObject *type, if (final) { Py_CLEAR(type->tp_cache); } + _PyTypeCache_Invalidate(type); clear_tp_dict(type); clear_tp_bases(type, final); clear_tp_mro(type, final); @@ -7022,6 +6865,7 @@ type_dealloc(PyObject *self) Py_XDECREF(type->tp_mro); Py_XDECREF(type->tp_cache); clear_tp_subclasses(type); + _PyTypeCache_Invalidate(type); /* A type's tp_doc is heap allocated, unlike the tp_doc slots * of most other objects. It's okay to cast it to char *. @@ -9536,6 +9380,8 @@ type_ready(PyTypeObject *type, int initial) goto error; } + _PyTypeCache_InitType(type); + #ifdef Py_TRACE_REFS /* PyType_Ready is the closest thing we have to a choke point * for type objects, so is the best place I can think of to try diff --git a/PCbuild/_freeze_module.vcxproj b/PCbuild/_freeze_module.vcxproj index 04bd36404366a57..246a07785168161 100644 --- a/PCbuild/_freeze_module.vcxproj +++ b/PCbuild/_freeze_module.vcxproj @@ -284,6 +284,7 @@ + diff --git a/PCbuild/_freeze_module.vcxproj.filters b/PCbuild/_freeze_module.vcxproj.filters index 7710acf43b5137c..35082f57f54e9d8 100644 --- a/PCbuild/_freeze_module.vcxproj.filters +++ b/PCbuild/_freeze_module.vcxproj.filters @@ -496,6 +496,9 @@ Source Files + + Source Files + Source Files diff --git a/PCbuild/_testinternalcapi.vcxproj b/PCbuild/_testinternalcapi.vcxproj index f3e423fa04668ec..cd58c3523e8c160 100644 --- a/PCbuild/_testinternalcapi.vcxproj +++ b/PCbuild/_testinternalcapi.vcxproj @@ -101,6 +101,7 @@ + diff --git a/PCbuild/_testinternalcapi.vcxproj.filters b/PCbuild/_testinternalcapi.vcxproj.filters index 7ab242c2c230b67..4082c36234bdf0f 100644 --- a/PCbuild/_testinternalcapi.vcxproj.filters +++ b/PCbuild/_testinternalcapi.vcxproj.filters @@ -30,6 +30,9 @@ Source Files + + Source Files + diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index 47296a93424a8f6..7fec674c550e027 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -332,6 +332,7 @@ + @@ -703,6 +704,7 @@ + diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index 124f6c7bb90de6c..cb0f6fce86df51a 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -897,6 +897,9 @@ Include\internal + + Include\internal + Include\internal @@ -1622,6 +1625,9 @@ Python + + Python + Python diff --git a/Python/pystate.c b/Python/pystate.c index e90642fa882db72..d10b38def32911d 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -12,7 +12,7 @@ #include "pycore_freelist.h" // _PyObject_ClearFreeLists() #include "pycore_initconfig.h" // _PyStatus_OK() #include "pycore_interpframe.h" // _PyThreadState_HasStackSpace() -#include "pycore_object.h" // _PyType_InitCache(), _Py_ClearImmortal() +#include "pycore_object.h" // _Py_ClearImmortal() #include "pycore_obmalloc.h" // _PyMem_obmalloc_state_on_heap() #include "pycore_opcode_utils.h" // NUM_COMMON_CONSTANTS #include "pycore_optimizer.h" // JIT_CLEANUP_THRESHOLD @@ -420,8 +420,6 @@ _PyRuntimeState_ReInitThreads(_PyRuntimeState *runtime) } #endif - _PyTypes_AfterFork(); - _PyThread_AfterFork(&runtime->threads); return _PyStatus_OK(); @@ -573,7 +571,6 @@ init_interpreter(PyInterpreterState *interp, _PyEval_InitState(interp); _PyGC_InitState(&interp->gc); PyConfig_InitPythonConfig(&interp->config); - _PyType_InitCache(interp); #ifdef Py_GIL_DISABLED _Py_brc_init_state(interp); #endif diff --git a/Python/pystats.c b/Python/pystats.c index 2fac2db1b738c7e..6862521f659f202 100644 --- a/Python/pystats.c +++ b/Python/pystats.c @@ -230,9 +230,11 @@ print_object_stats(FILE *out, ObjectStats *stats) fprintf(out, "Object materialize dict (str subclass): %" PRIu64 "\n", stats->dict_materialized_str_subclass); fprintf(out, "Object method cache hits: %" PRIu64 "\n", stats->type_cache_hits); fprintf(out, "Object method cache misses: %" PRIu64 "\n", stats->type_cache_misses); - fprintf(out, "Object method cache collisions: %" PRIu64 "\n", stats->type_cache_collisions); + fprintf(out, "Object method cache too big: %" PRIu64 "\n", stats->type_cache_too_big); fprintf(out, "Object method cache dunder hits: %" PRIu64 "\n", stats->type_cache_dunder_hits); fprintf(out, "Object method cache dunder misses: %" PRIu64 "\n", stats->type_cache_dunder_misses); + fprintf(out, "Object method cache invalidations: %" PRIu64 "\n", stats->type_cache_invalidations); + fprintf(out, "Object method cache resizes: %" PRIu64 "\n", stats->type_cache_resizes); } static void @@ -439,7 +441,9 @@ merge_object_stats(ObjectStats *dest, const ObjectStats *src) dest->type_cache_misses += src->type_cache_misses; dest->type_cache_dunder_hits += src->type_cache_dunder_hits; dest->type_cache_dunder_misses += src->type_cache_dunder_misses; - dest->type_cache_collisions += src->type_cache_collisions; + dest->type_cache_too_big += src->type_cache_too_big; + dest->type_cache_invalidations += src->type_cache_invalidations; + dest->type_cache_resizes += src->type_cache_resizes; dest->object_visits += src->object_visits; } diff --git a/Python/typecache.c b/Python/typecache.c new file mode 100644 index 000000000000000..26079de5ce341f7 --- /dev/null +++ b/Python/typecache.c @@ -0,0 +1,246 @@ +// Per-type method cache implementation + +// The cache is used for method and attribute lookups on type objects. +// The stored names are always interned strings, and the +// stored values are borrowed references to the corresponding method or attribute object. +// For static types, the cache is stored on the per-interpreter managed_static_type_state, +// and for heap types the cache is stored in the `PyTypeObject._tp_cache` field. + +#include "Python.h" +#include "pycore_typecache.h" +#include "pycore_interp.h" // PyInterpreterState +#include "pycore_pymem.h" +#include "pycore_pystate.h" // _PyInterpreterState_GET() +#include "pycore_pyatomic_ft_wrappers.h" +#include "pycore_typeobject.h" // _PyStaticType_GetState() +#include "pycore_stats.h" // OBJECT_STAT_INC + + +// The empty cache is statically allocated and shared across all the types, +// when a type is modified, the cache of type is set to the empty cache +// and when a cache entry is inserted to the empty cache, a new cache is +// allocated for the type and the entry is inserted to the new cache. +static struct type_cache empty_cache = { + .mask = _Py_TYPECACHE_MINSIZE - 1, + .version_tag = 0, + .available = 0, + .used = 0, +}; + +static inline uint32_t +cache_size(struct type_cache *cache) +{ + return cache->mask + 1; +} + +static inline size_t +cache_nbytes(struct type_cache *cache) +{ + return offsetof(struct type_cache, hashtable) + + (size_t)cache_size(cache) * sizeof(struct type_cache_entry); +} + +static struct type_cache * +cache_allocate(uint32_t size) +{ + // size must be a power of two + assert((size & (size - 1)) == 0); + size_t nbytes = offsetof(struct type_cache, hashtable) + + (size_t)size * sizeof(struct type_cache_entry); + struct type_cache *cache = PyMem_Calloc(1, nbytes); + if (cache == NULL) { + return NULL; + } + cache->mask = size - 1; + // load factor of 0.75 + cache->available = size - (size >> 2); + cache->used = 0; + return cache; +} + +static void +cache_free_delayed(struct type_cache *cache) +{ + if (cache == NULL || cache == &empty_cache) { + return; + } +#ifndef Py_GIL_DISABLED + // On gil-enabled builds, the cache owns strong references to the interned strings, + // so we need to decref them before freeing the cache memory. + for (uint32_t i = 0; i < cache_size(cache); i++) { + if (cache->hashtable[i].name != NULL) { + Py_DECREF(cache->hashtable[i].name); + } + } +#endif + // Delay the freeing of old cache for concurrent lock-free readers + _PyMem_FreeDelayed(cache, cache_nbytes(cache)); +} + + +static inline void ** +cache_slot(PyTypeObject *type) +{ + if (type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) { + PyInterpreterState *interp = _PyInterpreterState_GET(); + managed_static_type_state *state = _PyStaticType_GetState(interp, type); + assert(state != NULL); + return &state->_tp_cache; + } + return &type->_tp_cache; +} + +static inline struct type_cache * +cache_get(PyTypeObject *type) +{ + return (struct type_cache *)FT_ATOMIC_LOAD_PTR_ACQUIRE(*cache_slot(type)); +} + +static inline void +cache_set(PyTypeObject *type, struct type_cache *cache) +{ + FT_ATOMIC_STORE_PTR_RELEASE(*cache_slot(type), cache); +} + +void +_PyTypeCache_InitType(PyTypeObject *type) +{ + *cache_slot(type) = &empty_cache; +} + +static inline void +cache_insert(struct type_cache *cache, PyObject *name, + PyObject *value) +{ + Py_hash_t hash = PyUnstable_Unicode_GET_CACHED_HASH(name); + assert(hash != -1); + uint32_t index = hash & cache->mask; + for (;;) { + if (cache->hashtable[index].name == NULL) { +#ifndef Py_GIL_DISABLED + // On free-threading, all interned strings are immortal. + Py_INCREF(name); +#endif + cache->hashtable[index].value = value; + FT_ATOMIC_STORE_PTR_RELEASE(cache->hashtable[index].name, name); + cache->used++; + cache->available--; + return; + } + else if (cache->hashtable[index].name == name) { + /* someone else added the entry before us. */ + return; + } + index = (index + 1) & cache->mask; + } +} + +static inline int +cache_resize(PyTypeObject *type, struct type_cache *cache) +{ + uint32_t old_size = cache_size(cache); + uint32_t new_size; + if (cache->used == 0) { + // the cache is the empty cache, we need to allocate a new cache with the minimum size + new_size = _Py_TYPECACHE_MINSIZE; + } + else { + // double the cache size when resizing + new_size = old_size * 2; + } + if (new_size > _Py_TYPECACHE_MAXSIZE) { + // The new size is too big, don't resize and just return. + OBJECT_STAT_INC(type_cache_too_big); + return -1; + } + struct type_cache *new_cache = cache_allocate(new_size); + if (new_cache == NULL) { + return -1; + } + OBJECT_STAT_INC(type_cache_resizes); + for (uint32_t i = 0; i < old_size; i++) { + if (cache->hashtable[i].name != NULL) { + cache_insert(new_cache, cache->hashtable[i].name, cache->hashtable[i].value); + } + } + new_cache->version_tag = type->tp_version_tag; + cache_set(type, new_cache); + cache_free_delayed(cache); + return 0; +} + +// Insert a new entry to the type cache. +// The TYPE_LOCK should be held while calling this function. +void +_PyTypeCache_Insert(PyTypeObject *type, PyObject *name, PyObject *value) +{ + struct type_cache *cache = cache_get(type); + // If the cache is full, resize it before inserting the new entry. + // this also handles the case of empty cache where available is 0 but there are no entries. + if (cache->available == 0) { + if (cache_resize(type, cache) == -1) { + // out of memory, don't cache the value + return; + } + cache = cache_get(type); + assert(cache->available > 0); + } + assert(cache->version_tag == type->tp_version_tag); + cache_insert(cache, name, value); +} + + +// Lookup the given name in the type cache. +// The cache is lock-free so it is possible that cache becomes stale during the lookup, +// to prevent returning stale cache entry, the cache version is compared with the type version tag. +struct _PyTypeCacheLookupResult +_PyTypeCache_Lookup(PyTypeObject *type, PyObject *name) +{ + assert(PyUnicode_CheckExact(name) && PyUnicode_CHECK_INTERNED(name)); + struct _PyTypeCacheLookupResult miss = {PyStackRef_NULL, 0, 0}; + struct type_cache *cache = cache_get(type); + if (cache == NULL) { + return miss; + } + Py_hash_t hash = PyUnstable_Unicode_GET_CACHED_HASH(name); + assert(hash != -1); + uint32_t index = hash & cache->mask; + _PyStackRef out_ref; + for (;;) { + PyObject *entry_name = FT_ATOMIC_LOAD_PTR_ACQUIRE(cache->hashtable[index].name); + if (entry_name == name) { +#ifdef Py_GIL_DISABLED + if (!_Py_TryXGetStackRef(&cache->hashtable[index].value, &out_ref)) { + return miss; + } +#else + PyObject *v = cache->hashtable[index].value; + out_ref = v ? PyStackRef_FromPyObjectNew(v) : PyStackRef_NULL; +#endif + break; + } + else if (entry_name == NULL) { + return miss; + } + index = (index + 1) & cache->mask; + } + // Check the cache version against the type version tag to maintain + // consistency with find_name_in_mro and prevent stale cache reads + if (cache->version_tag != FT_ATOMIC_LOAD_UINT_RELAXED(type->tp_version_tag)) { + PyStackRef_XCLOSE(out_ref); + return miss; + } + return (struct _PyTypeCacheLookupResult){out_ref, 1, cache->version_tag}; +} + +// Invalidate the type cache of the type. +// The cache is set to the empty cache and the old cache is freed with QSBR. +// The TYPE_LOCK should be held while calling this function. +void +_PyTypeCache_Invalidate(PyTypeObject *type) +{ + OBJECT_STAT_INC(type_cache_invalidations); + struct type_cache *cache = cache_get(type); + cache_set(type, &empty_cache); + cache_free_delayed(cache); +} diff --git a/Tools/c-analyzer/cpython/ignored.tsv b/Tools/c-analyzer/cpython/ignored.tsv index 6e18593ad698570..ef314625d507d61 100644 --- a/Tools/c-analyzer/cpython/ignored.tsv +++ b/Tools/c-analyzer/cpython/ignored.tsv @@ -57,6 +57,9 @@ Python/pyhash.c - _Py_HashSecret - ## thread-safe hashtable (internal locks) Python/parking_lot.c - buckets - +## shared empty sentinel for the per-type method cache +Python/typecache.c - empty_cache - + ## data needed for introspecting asyncio state from debuggers and profilers Modules/_asynciomodule.c - _Py_AsyncioDebug - diff --git a/Tools/ftscalingbench/ftscalingbench.py b/Tools/ftscalingbench/ftscalingbench.py index c8a914c22a9e137..a79242e740371ba 100644 --- a/Tools/ftscalingbench/ftscalingbench.py +++ b/Tools/ftscalingbench/ftscalingbench.py @@ -325,6 +325,19 @@ def enum_attr(): MyEnum.Y MyEnum.Z +_MCACHE_NUM_TYPES = 1 << 14 +_MCACHE_PAIRS = [ + (type(f"C{i}", (), {f"m{i}": i % 256})(), sys.intern(f"m{i}")) + for i in range(_MCACHE_NUM_TYPES) +] + +@register_benchmark +def type_lookup(): + pairs = _MCACHE_PAIRS + for _ in range(WORK_SCALE // 10): + for inst, name in pairs: + getattr(inst, name) + def bench_one_thread(func): t0 = time.perf_counter_ns() From 027a8336891cf7dab6a437a5d4f9213a6a7828cd Mon Sep 17 00:00:00 2001 From: Kumar Aditya Date: Tue, 21 Jul 2026 14:23:58 +0530 Subject: [PATCH 103/205] gh-139373: Fix asyncio Process.communicate() losing output when cancelled (#154223) Output already read when communicate() is cancelled (e.g. by a wait_for() timeout) is now retained on the Process and returned by a subsequent communicate() call, matching subprocess.Popen.communicate() behaviour on timeout. Passing input to a communicate() call following a cancelled one now raises ValueError. --- Doc/library/asyncio-subprocess.rst | 24 ++++ Lib/asyncio/subprocess.py | 35 +++++- Lib/test/test_asyncio/test_subprocess.py | 110 ++++++++++++++++++ ...-07-20-12-45-00.gh-issue-139373.qL7xKm.rst | 3 + 4 files changed, 167 insertions(+), 5 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-20-12-45-00.gh-issue-139373.qL7xKm.rst diff --git a/Doc/library/asyncio-subprocess.rst b/Doc/library/asyncio-subprocess.rst index a6514649bf9a0a8..70f711b779edf85 100644 --- a/Doc/library/asyncio-subprocess.rst +++ b/Doc/library/asyncio-subprocess.rst @@ -240,10 +240,34 @@ their completion. Note, that the data read is buffered in memory, so do not use this method if the data size is large or unlimited. + If this coroutine is cancelled (for example, when a timeout is + set with :func:`~asyncio.wait_for`), the output that was already + read is not lost: call :meth:`!communicate` again to read the + remaining output and get the complete data:: + + try: + stdout, stderr = await asyncio.wait_for( + proc.communicate(), timeout=5.0) + except TimeoutError: + proc.kill() + stdout, stderr = await proc.communicate() + + Passing *input* after a previous :meth:`!communicate` call was + cancelled raises :exc:`ValueError`; pass ``input=None`` to + continue the communication, the original *input* is used. + .. versionchanged:: 3.12 *stdin* gets closed when ``input=None`` too. + .. versionchanged:: next + + If :meth:`!communicate` is cancelled, the output that was + already read is now preserved and returned by a subsequent + :meth:`!communicate` call. Passing *input* to a + :meth:`!communicate` call following a cancelled one now raises + :exc:`ValueError`. + .. method:: send_signal(signal) Sends the signal *signal* to the child process. diff --git a/Lib/asyncio/subprocess.py b/Lib/asyncio/subprocess.py index 043359bbd03f8aa..26d7b755105c9d5 100644 --- a/Lib/asyncio/subprocess.py +++ b/Lib/asyncio/subprocess.py @@ -124,6 +124,11 @@ def __init__(self, transport, protocol, loop): self.stdout = protocol.stdout self.stderr = protocol.stderr self.pid = transport.get_pid() + self._communication_started = False + self._input = None + self._input_written = False + self._stdout_buf = bytearray() + self._stderr_buf = bytearray() def __repr__(self): return f'<{self.__class__.__name__} {self.pid}>' @@ -148,8 +153,9 @@ def kill(self): async def _feed_stdin(self, input): debug = self._loop.get_debug() try: - if input is not None: + if input is not None and not self._input_written: self.stdin.write(input) + self._input_written = True if debug: logger.debug( '%r communicate: feed stdin (%s bytes)', self, len(input)) @@ -172,22 +178,33 @@ async def _read_stream(self, fd): transport = self._transport.get_pipe_transport(fd) if fd == 2: stream = self.stderr + buf = self._stderr_buf else: assert fd == 1 stream = self.stdout + buf = self._stdout_buf if self._loop.get_debug(): name = 'stdout' if fd == 1 else 'stderr' logger.debug('%r communicate: read %s', self, name) - output = await stream.read() + # Append each block to the persistent buffer as soon as it is + # read so that no output is lost if this coroutine is cancelled. + while block := await stream.read(stream._limit): + buf += block if self._loop.get_debug(): name = 'stdout' if fd == 1 else 'stderr' logger.debug('%r communicate: close %s', self, name) transport.close() - return output async def communicate(self, input=None): + if self._communication_started: + if input: + raise ValueError( + "Cannot send input after starting communication") + else: + self._input = input + self._communication_started = True if self.stdin is not None: - stdin = self._feed_stdin(input) + stdin = self._feed_stdin(self._input) else: stdin = self._noop() if self.stdout is not None: @@ -198,8 +215,16 @@ async def communicate(self, input=None): stderr = self._read_stream(2) else: stderr = self._noop() - stdin, stdout, stderr = await tasks.gather(stdin, stdout, stderr) + await tasks.gather(stdin, stdout, stderr) await self.wait() + if self.stdout is not None: + stdout = self._stdout_buf.take_bytes() + else: + stdout = None + if self.stderr is not None: + stderr = self._stderr_buf.take_bytes() + else: + stderr = None return (stdout, stderr) diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 848a682dd6899c5..ce127e73f50d8a3 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -177,6 +177,116 @@ async def run(): self.assertEqual(exitcode, 0) self.assertEqual(stdout, b'') + def test_communicate_cancelled_mid_read_retry(self): + # gh-139373: output read before communicate() was cancelled must + # be returned by a subsequent communicate() call. + code = ('import sys, time;' + 'sys.stdout.buffer.write(b"first\\n");' + 'sys.stdout.buffer.flush();' + 'time.sleep(3600)') + + async def run(): + proc = await asyncio.create_subprocess_exec( + sys.executable, '-c', code, + stdout=subprocess.PIPE, + ) + task = asyncio.create_task(proc.communicate()) + # wait until communicate() has read the first line + while not proc._stdout_buf: + await asyncio.sleep(0.01) + task.cancel() + with self.assertRaises(asyncio.CancelledError): + await task + proc.kill() + stdout, stderr = await proc.communicate() + return stdout + + task = asyncio.wait_for(run(), support.LONG_TIMEOUT) + stdout = self.loop.run_until_complete(task) + self.assertEqual(stdout, b'first\n') + + def test_communicate_cancelled_during_wait_retry(self): + # gh-139373: cancellation landing after the output was fully read + # but before wait() completed must not lose the output. + code = ('import os, time;' + 'os.write(1, b"all output\\n");' + 'os.close(1);' + 'time.sleep(3600)') + + async def run(): + proc = await asyncio.create_subprocess_exec( + sys.executable, '-c', code, + stdout=subprocess.PIPE, + ) + task = asyncio.create_task(proc.communicate()) + # wait until the stdout reader has consumed everything up to + # EOF; communicate() is then blocked on wait() + while not proc.stdout.at_eof(): + await asyncio.sleep(0.01) + task.cancel() + with self.assertRaises(asyncio.CancelledError): + await task + proc.kill() + stdout, stderr = await proc.communicate() + return stdout + + task = asyncio.wait_for(run(), support.LONG_TIMEOUT) + stdout = self.loop.run_until_complete(task) + self.assertEqual(stdout, b'all output\n') + + def test_communicate_cancelled_input_not_resendable(self): + # gh-139373: like subprocess.Popen.communicate(), sending new + # input after a cancelled communicate() call is an error. + async def run(): + proc = await asyncio.create_subprocess_exec( + *PROGRAM_CAT, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + ) + task = asyncio.create_task(proc.communicate(b'data')) + await asyncio.sleep(0) + task.cancel() + with self.assertRaises(asyncio.CancelledError): + await task + with self.assertRaises(ValueError): + await proc.communicate(b'more data') + proc.kill() + await proc.communicate() + + self.loop.run_until_complete( + asyncio.wait_for(run(), support.LONG_TIMEOUT)) + + def test_communicate_cancelled_stdin_retry(self): + # gh-139373: input already fed before cancellation is not re-sent + # by the retried communicate() call, and the output is preserved. + code = ('import sys, time;' + 'sys.stdout.buffer.write(sys.stdin.buffer.read());' + 'sys.stdout.buffer.flush();' + 'time.sleep(3600)') + + async def run(): + proc = await asyncio.create_subprocess_exec( + sys.executable, '-c', code, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + ) + task = asyncio.create_task(proc.communicate(b'hello')) + # the child echoes stdin only after it is closed, so once + # output arrives the input was fully written and + # communicate() is blocked on wait() + while not proc._stdout_buf: + await asyncio.sleep(0.01) + task.cancel() + with self.assertRaises(asyncio.CancelledError): + await task + proc.kill() + stdout, stderr = await proc.communicate() + return stdout + + task = asyncio.wait_for(run(), support.LONG_TIMEOUT) + stdout = self.loop.run_until_complete(task) + self.assertEqual(stdout, b'hello') + def test_shell(self): proc = self.loop.run_until_complete( asyncio.create_subprocess_shell('exit 7') diff --git a/Misc/NEWS.d/next/Library/2026-07-20-12-45-00.gh-issue-139373.qL7xKm.rst b/Misc/NEWS.d/next/Library/2026-07-20-12-45-00.gh-issue-139373.qL7xKm.rst new file mode 100644 index 000000000000000..be7d5b79f099e03 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-20-12-45-00.gh-issue-139373.qL7xKm.rst @@ -0,0 +1,3 @@ +Fix :meth:`asyncio.subprocess.Process.communicate` losing already-read +output when it is cancelled; the output is now retained and returned by a +subsequent ``communicate()`` call. Patch by Kumar Aditya. From 196e16d54f9f06f566c52e7bca3b5213a8a64223 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 21 Jul 2026 13:25:37 +0300 Subject: [PATCH 104/205] gh-154275: Fix cleanup code in `_Py_make_parameters` (#154341) --- Objects/genericaliasobject.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 5caf5c7086c87a0..71d946a637df1c9 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -195,15 +195,14 @@ _Py_make_parameters(PyObject *args) if (is_args_list) { args = tuple_args = PySequence_Tuple(args); if (args == NULL) { - return NULL; + goto cleanup; } } Py_ssize_t nargs = PyTuple_GET_SIZE(args); Py_ssize_t len = nargs; PyObject *parameters = PyTuple_New(len); if (parameters == NULL) { - Py_XDECREF(tuple_args); - return NULL; + goto error; } Py_ssize_t iparam = 0; for (Py_ssize_t iarg = 0; iarg < nargs; iarg++) { From 7ebe773160327026ba5393b27e2e2860db4d08b2 Mon Sep 17 00:00:00 2001 From: Brij Kapadia <97006829+brijkapadia@users.noreply.github.com> Date: Tue, 21 Jul 2026 08:07:17 -0400 Subject: [PATCH 105/205] gh-153881: Atomically load `dk_nentries` in `_PyObject_IsInstanceDictEmpty` (#153882) --- Lib/test/test_free_threading/test_dict.py | 20 +++++++++++++++++++ ...-07-17-22-03-39.gh-issue-153881.oDa06s.rst | 2 ++ Objects/dictobject.c | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-07-17-22-03-39.gh-issue-153881.oDa06s.rst diff --git a/Lib/test/test_free_threading/test_dict.py b/Lib/test/test_free_threading/test_dict.py index ad23290a92ab345..4a812275143bc4d 100644 --- a/Lib/test/test_free_threading/test_dict.py +++ b/Lib/test/test_free_threading/test_dict.py @@ -336,5 +336,25 @@ def reader(): with threading_helper.start_threads([t1, t2]): pass + def test_getstate_race_with_shared_keys(self): + box = [None] + enter = Barrier(2) + leave = Barrier(2) + + def reader(): + for _ in range(1000): + enter.wait() + box[0].__getstate__() + leave.wait() + + def writer(): + for i in range(1000): + box[0] = type(f"C{i}", (), {})() + enter.wait() + setattr(box[0], str(i), 1) + leave.wait() + + threading_helper.run_concurrently([reader, writer]) + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-07-17-22-03-39.gh-issue-153881.oDa06s.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-17-22-03-39.gh-issue-153881.oDa06s.rst new file mode 100644 index 000000000000000..8facf88367fda7f --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-17-22-03-39.gh-issue-153881.oDa06s.rst @@ -0,0 +1,2 @@ +Fix potential data race when calling :meth:`~object.__getstate__` +under the :term:`free-threaded build`. diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 246ffe6c18e9b51..c650aa456d2cc9d 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -7722,7 +7722,7 @@ _PyObject_IsInstanceDictEmpty(PyObject *obj) PyDictValues *values = _PyObject_InlineValues(obj); if (FT_ATOMIC_LOAD_UINT8(values->valid)) { PyDictKeysObject *keys = CACHED_KEYS(tp); - for (Py_ssize_t i = 0; i < keys->dk_nentries; i++) { + for (Py_ssize_t i = 0; i < LOAD_KEYS_NENTRIES(keys); i++) { if (FT_ATOMIC_LOAD_PTR_RELAXED(values->values[i]) != NULL) { return 0; } From dc72be1923a37042aee60354059e43d472de7803 Mon Sep 17 00:00:00 2001 From: Solaris-star <67425364+Solaris-star@users.noreply.github.com> Date: Tue, 21 Jul 2026 20:45:42 +0800 Subject: [PATCH 106/205] gh-154320: Fix swapped __defaults__/__kwdefaults__ in annotationlib docs (#154321) The bullet list under "Creating a custom callable annotate function" had the attribute names reversed: positional defaults are __defaults__ (a tuple) and keyword defaults are __kwdefaults__ (a dict). The example code below was already correct. Fixes #154320 --- Doc/library/annotationlib.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doc/library/annotationlib.rst b/Doc/library/annotationlib.rst index af28fe0e2fde2f8..a90754620b59fdf 100644 --- a/Doc/library/annotationlib.rst +++ b/Doc/library/annotationlib.rst @@ -535,9 +535,9 @@ following attributes: :attr:`~Format.VALUE_WITH_FAKE_GLOBALS`. * A :ref:`code object ` ``__code__`` containing the compiled code for the annotate function. -* Optional: A tuple of the function's positional defaults ``__kwdefaults__``, if the +* Optional: A tuple of the function's positional defaults ``__defaults__``, if the function represented by ``__code__`` uses any positional defaults. -* Optional: A dict of the function's keyword defaults ``__defaults__``, if the function +* Optional: A dict of the function's keyword defaults ``__kwdefaults__``, if the function represented by ``__code__`` uses any keyword defaults. * Optional: All other :ref:`function attributes `. From f69f7fd526b6601a74ce0852c75466a183a86cea Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 16:12:20 +0300 Subject: [PATCH 107/205] gh-154345: Fix test_posix_pty_functions() killing the worker on Solaris (GH-154346) Pushing the "ptem" STREAMS module makes a session leader without a controlling terminal acquire the slave as one, so closing the file descriptors sent SIGHUP to the session and killed the regrtest worker. Disown it after the pushes, as os.openpty() does. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_os/test_os.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_os/test_os.py b/Lib/test/test_os/test_os.py index 41928b308c47799..b4310043b60178b 100644 --- a/Lib/test/test_os/test_os.py +++ b/Lib/test/test_os/test_os.py @@ -4728,12 +4728,27 @@ def test_posix_pty_functions(self): son_fd = os.open(son_path, os.O_RDWR|os.O_NOCTTY) self.addCleanup(os.close, son_fd) if sys.platform.startswith('sunos'): - # The slave is not a terminal until these STREAMS modules - # are pushed onto it. import fcntl I_PUSH = 0x5302 + TIOCNOTTY = 0x7471 + # Pushing "ptem" makes the slave a terminal, which a session + # leader without a controlling terminal then acquires as one + # despite O_NOCTTY. Note whether we already had one. + try: + os.close(os.open('/dev/tty', os.O_RDONLY|os.O_NOCTTY)) + had_ctty = True + except OSError: + had_ctty = False fcntl.ioctl(son_fd, I_PUSH, b'ptem\0') fcntl.ioctl(son_fd, I_PUSH, b'ldterm\0') + if not had_ctty and os.getsid(0) == os.getpid(): + # Disown it, otherwise closing the file descriptors sends + # SIGHUP to the session. TIOCNOTTY sends it too. + old_handler = signal.signal(signal.SIGHUP, signal.SIG_IGN) + try: + fcntl.ioctl(son_fd, TIOCNOTTY) + finally: + signal.signal(signal.SIGHUP, old_handler) self.assertEqual(os.ptsname(mother_fd), os.ttyname(son_fd)) @warnings_helper.ignore_fork_in_thread_deprecation_warnings() From bfd774d61eeb384b74380deb1fc5b726decba75e Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 16:22:20 +0300 Subject: [PATCH 108/205] gh-154352: Fix killing a worker process in regrtest on OpenBSD (GH-154353) os.getsid() is only allowed for a process in the same session on OpenBSD. Worker processes are started in their own session, so the failure means that the process group can be killed. Co-authored-by: Claude Opus 4.8 --- Lib/test/libregrtest/run_workers.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Lib/test/libregrtest/run_workers.py b/Lib/test/libregrtest/run_workers.py index befdac7ee77f107..7e6c7fa4cc5507a 100644 --- a/Lib/test/libregrtest/run_workers.py +++ b/Lib/test/libregrtest/run_workers.py @@ -147,9 +147,12 @@ def _kill(self) -> None: use_killpg = USE_PROCESS_GROUP if use_killpg: - parent_sid = os.getsid(0) - sid = os.getsid(popen.pid) - use_killpg = (sid != parent_sid) + try: + use_killpg = (os.getsid(popen.pid) != os.getsid(0)) + except PermissionError: + # On OpenBSD getsid() is only allowed for a process in the + # same session, so the failure means that it is not. + use_killpg = True if use_killpg: what = f"{self} process group" From a6e1b836ec5055cbc8be477ca0c2df0cc12b8cb5 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 18:03:20 +0300 Subject: [PATCH 109/205] gh-154366: Fix test_asyncio.test_sendfile timing out on DragonFly BSD (GH-154367) A 4 KiB receive buffer makes DragonFly defer every window update to the delayed ACK timer, so each buffer worth of data costs 100 ms. Use a larger socket buffer there; it is still small enough to pause the protocol long before all data is sent. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_asyncio/test_sendfile.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_asyncio/test_sendfile.py b/Lib/test/test_asyncio/test_sendfile.py index 69ac9a367f6be02..c8d429c3d1651f0 100644 --- a/Lib/test/test_asyncio/test_sendfile.py +++ b/Lib/test/test_asyncio/test_sendfile.py @@ -98,7 +98,12 @@ class SendfileBase: # 64 KiB page configuration. DATA = b"x" * (1024 * 17 * 64 + 1) # Reduce socket buffer size to test on relative small data sets. - BUF_SIZE = 4 * 1024 # 4 KiB + if sys.platform.startswith('dragonfly'): + # A smaller buffer makes every window update wait 100 ms for the + # delayed ACK timer. + BUF_SIZE = 32 * 1024 # 32 KiB + else: + BUF_SIZE = 4 * 1024 # 4 KiB def create_event_loop(self): raise NotImplementedError From d333e5aa59f6cc20198502f4ff50b14eabde9b8b Mon Sep 17 00:00:00 2001 From: David Date: Tue, 21 Jul 2026 17:08:01 +0200 Subject: [PATCH 110/205] Test `object_hook` and pickleability of some JSON components (GH-154155) --- Lib/test/test_json/test_decode.py | 20 ++++++++++++++++++++ Lib/test/test_json/test_pickleable.py | 14 ++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 Lib/test/test_json/test_pickleable.py diff --git a/Lib/test/test_json/test_decode.py b/Lib/test/test_json/test_decode.py index 33aeefa92f282ae..7bff16ddf2155e9 100644 --- a/Lib/test/test_json/test_decode.py +++ b/Lib/test/test_json/test_decode.py @@ -48,6 +48,26 @@ def test_empty_objects(self): self.assertEqual(self.loads('[]'), []) self.assertEqual(self.loads('""'), "") + def test_object_hook(self): + s = '{"a":{"b":{}}}' + + expected_result = {"a":{"b":{"x":1}, "x":1}, "x":1} + expected_hook_arguments = [ + {}, {"b": {"x":1}}, {"a": {"b": {"x":1}, "x":1}} + ] + + hook_arguments = [] + + def hook(x): + hook_arguments.append(x) + return {**x, "x":1} + + result = self.loads(s, object_hook=hook) + + self.assertEqual(result, expected_result) + self.assertEqual(hook_arguments, expected_hook_arguments) + + def test_object_pairs_hook(self): s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}' p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4), diff --git a/Lib/test/test_json/test_pickleable.py b/Lib/test/test_json/test_pickleable.py new file mode 100644 index 000000000000000..517cfcdd41a3516 --- /dev/null +++ b/Lib/test/test_json/test_pickleable.py @@ -0,0 +1,14 @@ +import json +import pickle +import unittest + +class TestPickleable(unittest.TestCase): + def test_json_decode_error_is_pickleable(self): + e = json.JSONDecodeError(msg="abc", doc="def", pos=7) + + pickled = pickle.dumps(e) + unpickled = pickle.loads(pickled) + + self.assertEqual(unpickled.msg, e.msg) + self.assertEqual(unpickled.doc, e.doc) + self.assertEqual(unpickled.pos, e.pos) From b6abee522f1dbbba36cc306aa99ac22d1df5c454 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 19:02:51 +0300 Subject: [PATCH 111/205] gh-154379: Fix test_epoll on Solaris (GH-154380) A non-blocking connect() can be completed immediately, and unregistering a closed file descriptor succeeds on Solaris. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_epoll.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_epoll.py b/Lib/test/test_epoll.py index 5e6a4ab0166a86f..51405ca7c9e57c3 100644 --- a/Lib/test/test_epoll.py +++ b/Lib/test/test_epoll.py @@ -25,6 +25,7 @@ import os import select import socket +import sys import time import unittest from test import support @@ -52,12 +53,11 @@ def tearDown(self): def _connected_pair(self): client = socket.socket() client.setblocking(False) + # The connection is either established immediately or in progress. try: client.connect(('127.0.0.1', self.serverSocket.getsockname()[1])) except OSError as e: self.assertEqual(e.args[0], errno.EINPROGRESS) - else: - raise AssertionError("Connect should have raised EINPROGRESS") server, addr = self.serverSocket.accept() self.connections.extend((client, server)) @@ -218,6 +218,9 @@ def test_errors(self): self.assertRaises(ValueError, select.epoll().register, -1, select.EPOLLIN) + @unittest.skipIf(sys.platform.startswith('sunos'), + 'unregistering a closed file descriptor succeeds ' + 'on Solaris') def test_unregister_closed(self): server, client = self._connected_pair() fd = server.fileno() From c76fb912070389e0fbad3bf4eab066cd5da931b9 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 21 Jul 2026 21:05:41 +0300 Subject: [PATCH 112/205] gh-154389: Do not use uuid_create() on OpenBSD (GH-154390) Like NetBSD, OpenBSD generates version 4 UUIDs in uuid_create(), so it cannot be used for uuid.uuid1(). Co-authored-by: Claude Opus 4.8 --- .../Library/2026-07-21-20-34-05.gh-issue-154389.DlTiii.rst | 3 +++ configure | 5 +++-- configure.ac | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-21-20-34-05.gh-issue-154389.DlTiii.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-21-20-34-05.gh-issue-154389.DlTiii.rst b/Misc/NEWS.d/next/Library/2026-07-21-20-34-05.gh-issue-154389.DlTiii.rst new file mode 100644 index 000000000000000..eb2e2edc2d720e7 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-21-20-34-05.gh-issue-154389.DlTiii.rst @@ -0,0 +1,3 @@ +Fix :func:`uuid.uuid1` on OpenBSD: +it returned a version 4 UUID, +because ``uuid_create()`` generates random UUIDs on this platform. diff --git a/configure b/configure index 71fa0b435d16505..93bc5545e9de6ed 100755 --- a/configure +++ b/configure @@ -15294,9 +15294,10 @@ then : fi -# gh-124228: While the libuuid library is available on NetBSD, it supports only UUID version 4. +# gh-124228: While the libuuid library is available on NetBSD and OpenBSD, +# it supports only UUID version 4. # This restriction inhibits the proper generation of time-based UUIDs. -if test "$ac_sys_system" = "NetBSD"; then +if test "$ac_sys_system" = "NetBSD" || test "$ac_sys_system" = "OpenBSD"; then have_uuid=missing printf "%s\n" "#define HAVE_UUID_H 0" >>confdefs.h diff --git a/configure.ac b/configure.ac index 5fcf406087cbe5e..a9c706f3c23cb1c 100644 --- a/configure.ac +++ b/configure.ac @@ -4070,9 +4070,10 @@ AS_VAR_IF([ac_cv_have_uuid_generate_time_safe], [yes], [ AC_DEFINE([HAVE_UUID_GENERATE_TIME_SAFE], [1]) ]) -# gh-124228: While the libuuid library is available on NetBSD, it supports only UUID version 4. +# gh-124228: While the libuuid library is available on NetBSD and OpenBSD, +# it supports only UUID version 4. # This restriction inhibits the proper generation of time-based UUIDs. -if test "$ac_sys_system" = "NetBSD"; then +if test "$ac_sys_system" = "NetBSD" || test "$ac_sys_system" = "OpenBSD"; then have_uuid=missing AC_DEFINE([HAVE_UUID_H], [0]) fi From f429fb36a16134a2a0e839d0f385eb8fee280de4 Mon Sep 17 00:00:00 2001 From: Kumar Aditya Date: Tue, 21 Jul 2026 23:45:59 +0530 Subject: [PATCH 113/205] gh-103847: fix some asyncio subprocess cancellation bugs (#146571) --- Lib/asyncio/base_subprocess.py | 18 +++++++++++++++--- Lib/asyncio/unix_events.py | 2 +- Lib/asyncio/windows_events.py | 2 +- Lib/test/test_asyncio/test_subprocess.py | 5 +---- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py index 98e72f212aa203e..0423bc100b2d932 100644 --- a/Lib/asyncio/base_subprocess.py +++ b/Lib/asyncio/base_subprocess.py @@ -22,7 +22,7 @@ def __init__(self, loop, protocol, args, shell, self._proc = None self._pid = None self._returncode = None - self._exit_waiters = [] + self._exit_waiters = set() self._pending_calls = collections.deque() self._pipes = {} self._finished = False @@ -211,6 +211,14 @@ async def _connect_pipes(self, waiter): except (SystemExit, KeyboardInterrupt): raise except BaseException as exc: + # Close any pipes that were already connected before the + # error/cancellation to avoid leaking file descriptors. + for proto in self._pipes.values(): + if proto is not None: + proto.pipe.close() + for raw_pipe in (proc.stdin, proc.stdout, proc.stderr): + if raw_pipe is not None: + raw_pipe.close() if waiter is not None and not waiter.cancelled(): waiter.set_exception(exc) else: @@ -260,8 +268,12 @@ async def _wait(self): return self._returncode waiter = self._loop.create_future() - self._exit_waiters.append(waiter) - return await waiter + self._exit_waiters.add(waiter) + try: + return await waiter + finally: + if self._exit_waiters is not None: + self._exit_waiters.discard(waiter) def _try_finish(self): assert not self._finished diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index d436512d6c45fc5..1a7d534261ed720 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -213,7 +213,7 @@ async def _make_subprocess_transport(self, protocol, args, shell, raise except BaseException: transp.close() - await transp._wait() + await tasks.shield(transp._wait()) raise return transp diff --git a/Lib/asyncio/windows_events.py b/Lib/asyncio/windows_events.py index 8241c10b32d105c..efc7c0c158d3905 100644 --- a/Lib/asyncio/windows_events.py +++ b/Lib/asyncio/windows_events.py @@ -406,7 +406,7 @@ async def _make_subprocess_transport(self, protocol, args, shell, raise except BaseException: transp.close() - await transp._wait() + await tasks.shield(transp._wait()) raise return transp diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index ce127e73f50d8a3..f9b4fe53acb1343 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -12,7 +12,7 @@ from asyncio import subprocess from test.test_asyncio import utils as test_utils from test import support -from test.support import os_helper, warnings_helper, gc_collect +from test.support import os_helper, gc_collect if not support.has_subprocess_support: raise unittest.SkipTest("test module requires subprocess") @@ -1028,7 +1028,6 @@ async def main(): self.loop.run_until_complete(main()) - @warnings_helper.ignore_warnings(category=ResourceWarning) def test_subprocess_read_pipe_cancelled(self): async def main(): loop = asyncio.get_running_loop() @@ -1039,7 +1038,6 @@ async def main(): asyncio.run(main()) gc_collect() - @warnings_helper.ignore_warnings(category=ResourceWarning) def test_subprocess_write_pipe_cancelled(self): async def main(): loop = asyncio.get_running_loop() @@ -1050,7 +1048,6 @@ async def main(): asyncio.run(main()) gc_collect() - @warnings_helper.ignore_warnings(category=ResourceWarning) def test_subprocess_read_write_pipe_cancelled(self): async def main(): loop = asyncio.get_running_loop() From a2581ebc7a93ec573f64d3a5e29cbd9053de7a1f Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 04:16:50 +0300 Subject: [PATCH 114/205] gh-153741: Harden IDLE GUI tests for newer Tk and display scaling (#153742) In test_sidebar.test_mousewheel, only use the X11 / events when testing on x11 Tk before 8.7. Otherwise, use as on other systems. In test_configdialog, assert the 'disabled' state flag alone instead of the exact ttk state tuple (which transient pointer states break), and restore the tests' method masks with addCleanup(). Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/idlelib/idle_test/test_configdialog.py | 63 +++++++++++----------- Lib/idlelib/idle_test/test_sidebar.py | 10 ++-- 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index c68fd304ea4235e..696a3b2f8f1bc23 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -244,6 +244,7 @@ def test_font_set(self): def test_set_samples(self): d = self.page + self.addCleanup(setattr, d, 'set_samples', Func()) # Re-mask for other tests. del d.set_samples # Unmask method for test orig_samples = d.font_sample, d.highlight_sample d.font_sample, d.highlight_sample = {}, {} @@ -257,7 +258,6 @@ def test_set_samples(self): self.assertTrue(d.font_sample == d.highlight_sample == expected) d.font_sample, d.highlight_sample = orig_samples - d.set_samples = Func() # Re-mask for other tests. class HighPageTest(unittest.TestCase): @@ -307,7 +307,7 @@ def test_load_theme_cfg(self): # builtinlist sets variable builtin_name to the CurrentTheme default. eq(d.builtin_name.get(), 'IDLE Classic') eq(d.custom_name.get(), '- no custom themes -') - eq(d.custom_theme_on.state(), ('disabled',)) + self.assertIn('disabled', d.custom_theme_on.state()) eq(d.set_theme_type.called, 1) eq(d.paint_theme_sample.called, 1) eq(d.set_highlight_target.called, 1) @@ -495,6 +495,7 @@ def test_highlight_sample_b1_motion(self): def test_set_theme_type(self): eq = self.assertEqual d = self.page + self.addCleanup(setattr, d, 'set_theme_type', Func()) # Re-mask method. del d.set_theme_type # Builtin theme selected. @@ -502,16 +503,15 @@ def test_set_theme_type(self): d.set_theme_type() eq(d.builtinlist['state'], NORMAL) eq(d.customlist['state'], DISABLED) - eq(d.button_delete_custom.state(), ('disabled',)) + self.assertIn('disabled', d.button_delete_custom.state()) # Custom theme selected. d.theme_source.set(False) d.set_theme_type() eq(d.builtinlist['state'], DISABLED) - eq(d.custom_theme_on.state(), ('selected',)) + self.assertNotIn('disabled', d.custom_theme_on.state()) eq(d.customlist['state'], NORMAL) - eq(d.button_delete_custom.state(), ()) - d.set_theme_type = Func() + self.assertNotIn('disabled', d.button_delete_custom.state()) def test_get_color(self): eq = self.assertEqual @@ -637,24 +637,23 @@ def test_create_new_and_save_new(self): def test_set_highlight_target(self): eq = self.assertEqual d = self.page + self.addCleanup(setattr, d, 'set_highlight_target', Func()) # Re-mask method. del d.set_highlight_target # Target is cursor. d.highlight_target.set('Cursor') - eq(d.fg_on.state(), ('disabled', 'selected')) - eq(d.bg_on.state(), ('disabled',)) + self.assertIn('disabled', d.fg_on.state()) + self.assertIn('disabled', d.bg_on.state()) self.assertTrue(d.fg_bg_toggle) eq(d.set_color_sample.called, 1) # Target is not cursor. d.highlight_target.set('Comment') - eq(d.fg_on.state(), ('selected',)) - eq(d.bg_on.state(), ()) + self.assertNotIn('disabled', d.fg_on.state()) + self.assertNotIn('disabled', d.bg_on.state()) self.assertTrue(d.fg_bg_toggle) eq(d.set_color_sample.called, 2) - d.set_highlight_target = Func() - def test_set_color_sample_binding(self): d = self.page scs = d.set_color_sample @@ -667,6 +666,7 @@ def test_set_color_sample_binding(self): def test_set_color_sample(self): d = self.page + self.addCleanup(setattr, d, 'set_color_sample', Func()) # Re-mask method. del d.set_color_sample d.highlight_target.set('Selected Text') d.fg_bg_toggle.set(True) @@ -674,7 +674,6 @@ def test_set_color_sample(self): self.assertEqual( d.style.lookup(d.frame_color_set['style'], 'background'), d.highlight_sample.tag_cget('hilite', 'foreground')) - d.set_color_sample = Func() def test_paint_theme_sample(self): eq = self.assertEqual @@ -745,7 +744,7 @@ def test_delete_custom(self): eq(yesno.called, 2) self.assertNotIn(theme_name, highpage) eq(idleConf.GetSectionList('user', 'highlight'), [theme_name2]) - eq(d.custom_theme_on.state(), ()) + self.assertNotIn('disabled', d.custom_theme_on.state()) eq(d.custom_name.get(), theme_name2) eq(dialog.deactivate_current_config.called, 1) eq(dialog.activate_config_changes.called, 1) @@ -758,7 +757,7 @@ def test_delete_custom(self): eq(yesno.called, 3) self.assertNotIn(theme_name, highpage) eq(idleConf.GetSectionList('user', 'highlight'), []) - eq(d.custom_theme_on.state(), ('disabled',)) + self.assertIn('disabled', d.custom_theme_on.state()) eq(d.custom_name.get(), '- no custom themes -') eq(dialog.deactivate_current_config.called, 2) eq(dialog.activate_config_changes.called, 2) @@ -809,7 +808,7 @@ def test_load_key_cfg(self): # builtinlist sets variable builtin_name to the CurrentKeys default. eq(d.builtin_name.get(), 'IDLE Classic OSX') eq(d.custom_name.get(), '- no custom keys -') - eq(d.custom_keyset_on.state(), ('disabled',)) + self.assertIn('disabled', d.custom_keyset_on.state()) eq(d.set_keys_type.called, 1) eq(d.load_keys_list.called, 1) eq(d.load_keys_list.args, ('IDLE Classic OSX', )) @@ -930,6 +929,7 @@ def test_keybinding(self): def test_set_keys_type(self): eq = self.assertEqual d = self.page + self.addCleanup(setattr, d, 'set_keys_type', Func()) # Re-mask method. del d.set_keys_type # Builtin keyset selected. @@ -937,16 +937,15 @@ def test_set_keys_type(self): d.set_keys_type() eq(d.builtinlist['state'], NORMAL) eq(d.customlist['state'], DISABLED) - eq(d.button_delete_custom_keys.state(), ('disabled',)) + self.assertIn('disabled', d.button_delete_custom_keys.state()) # Custom keyset selected. d.keyset_source.set(False) d.set_keys_type() eq(d.builtinlist['state'], DISABLED) - eq(d.custom_keyset_on.state(), ('selected',)) + self.assertNotIn('disabled', d.custom_keyset_on.state()) eq(d.customlist['state'], NORMAL) - eq(d.button_delete_custom_keys.state(), ()) - d.set_keys_type = Func() + self.assertNotIn('disabled', d.button_delete_custom_keys.state()) def test_get_new_keys(self): eq = self.assertEqual @@ -1043,7 +1042,7 @@ def test_on_bindingslist_select(self): b.event_generate('', x=x, y=y) b.event_generate('', x=x, y=y) self.assertEqual(b.get('anchor'), 'find') - self.assertEqual(d.button_new_keys.state(), ()) + self.assertNotIn('disabled', d.button_new_keys.state()) def test_create_new_key_set_and_save_new_key_set(self): eq = self.assertEqual @@ -1080,6 +1079,7 @@ def test_load_keys_list(self): eq = self.assertEqual d = self.page gks = idleConf.GetKeySet = Func() + self.addCleanup(setattr, d, 'load_keys_list', Func()) # Re-mask method. del d.load_keys_list b = d.bindingslist @@ -1115,7 +1115,6 @@ def test_load_keys_list(self): eq(b.get(0, 'end'), expected) eq(b.get('anchor'), 'spam - ') eq(b.curselection(), (2, )) - d.load_keys_list = Func() del idleConf.GetKeySet @@ -1156,7 +1155,7 @@ def test_delete_custom_keys(self): eq(yesno.called, 2) self.assertNotIn(keyset_name, keyspage) eq(idleConf.GetSectionList('user', 'keys'), [keyset_name2]) - eq(d.custom_keyset_on.state(), ()) + self.assertNotIn('disabled', d.custom_keyset_on.state()) eq(d.custom_name.get(), keyset_name2) eq(dialog.deactivate_current_config.called, 1) eq(dialog.activate_config_changes.called, 1) @@ -1169,7 +1168,7 @@ def test_delete_custom_keys(self): eq(yesno.called, 3) self.assertNotIn(keyset_name, keyspage) eq(idleConf.GetSectionList('user', 'keys'), []) - eq(d.custom_keyset_on.state(), ('disabled',)) + self.assertIn('disabled', d.custom_keyset_on.state()) eq(d.custom_name.get(), '- no custom keys -') eq(dialog.deactivate_current_config.called, 2) eq(dialog.activate_config_changes.called, 2) @@ -1365,25 +1364,25 @@ def test_set_add_delete_state(self): # Call with 0 items, 1 unselected item, 1 selected item. eq = self.assertEqual fr = self.frame + self.addCleanup(setattr, fr, 'set_add_delete_state', Func()) # Re-mask method. del fr.set_add_delete_state # Unmask method. sad = fr.set_add_delete_state h = fr.helplist h.delete(0, 'end') sad() - eq(fr.button_helplist_edit.state(), ('disabled',)) - eq(fr.button_helplist_remove.state(), ('disabled',)) + self.assertIn('disabled', fr.button_helplist_edit.state()) + self.assertIn('disabled', fr.button_helplist_remove.state()) h.insert(0, 'source') sad() - eq(fr.button_helplist_edit.state(), ('disabled',)) - eq(fr.button_helplist_remove.state(), ('disabled',)) + self.assertIn('disabled', fr.button_helplist_edit.state()) + self.assertIn('disabled', fr.button_helplist_remove.state()) h.selection_set(0) sad() - eq(fr.button_helplist_edit.state(), ()) - eq(fr.button_helplist_remove.state(), ()) - fr.set_add_delete_state = Func() # Mask method. + self.assertNotIn('disabled', fr.button_helplist_edit.state()) + self.assertNotIn('disabled', fr.button_helplist_remove.state()) def test_helplist_item_add(self): # Call without and twice with HelpSource result. @@ -1461,6 +1460,7 @@ def test_helplist_item_remove(self): def test_update_help_changes(self): fr = self.frame + self.addCleanup(setattr, fr, 'update_help_changes', Func()) # Re-mask method. del fr.update_help_changes fr.user_helplist.clear() fr.user_helplist.append(('name1', 'file1')) @@ -1469,7 +1469,6 @@ def test_update_help_changes(self): fr.update_help_changes() self.assertEqual(mainpage['HelpFiles'], {'1': 'name1;file1', '2': 'name2;file2'}) - fr.update_help_changes = Func() class VarTraceTest(unittest.TestCase): diff --git a/Lib/idlelib/idle_test/test_sidebar.py b/Lib/idlelib/idle_test/test_sidebar.py index dc3431d8d8ef887..df84554c4f1a515 100644 --- a/Lib/idlelib/idle_test/test_sidebar.py +++ b/Lib/idlelib/idle_test/test_sidebar.py @@ -689,11 +689,15 @@ def test_mousewheel(self): last_lineno = get_end_linenumber(text) self.assertIsNotNone(text.dlineinfo(text.index(f'{last_lineno}.0'))) - # Delta for , whose meaning is platform-dependent. + # Simulate a mouse wheel notch. Tk 8.7 replaced the X11 + # / wheel events with (whose delta is + # platform-dependent); older Tk on X11 still uses the button events. + x11_buttons = (sidebar.canvas._windowingsystem == 'x11' + and tk.TkVersion < 8.7) delta = 1 if sidebar.canvas._windowingsystem == 'aqua' else 120 # Scroll up. - if sidebar.canvas._windowingsystem == 'x11': + if x11_buttons: sidebar.canvas.event_generate('', x=0, y=0) else: sidebar.canvas.event_generate('', x=0, y=0, delta=delta) @@ -701,7 +705,7 @@ def test_mousewheel(self): self.assertIsNone(text.dlineinfo(text.index(f'{last_lineno}.0'))) # Scroll back down. - if sidebar.canvas._windowingsystem == 'x11': + if x11_buttons: sidebar.canvas.event_generate('', x=0, y=0) else: sidebar.canvas.event_generate('', x=0, y=0, delta=-delta) From cbe4977af3ac4c26cf1186c3cdae1cb8021651b9 Mon Sep 17 00:00:00 2001 From: "hpkfft.com" Date: Tue, 21 Jul 2026 18:25:47 -0700 Subject: [PATCH 115/205] gh-152902: Add Intel `icx` compiler to `configure.ac` (GH-152825) --- ...-07-19-12-06-45.gh-issue-152902.0BXdab.rst | 2 + configure | 126 +++++++++++++++++- configure.ac | 17 ++- 3 files changed, 135 insertions(+), 10 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2026-07-19-12-06-45.gh-issue-152902.0BXdab.rst diff --git a/Misc/NEWS.d/next/Build/2026-07-19-12-06-45.gh-issue-152902.0BXdab.rst b/Misc/NEWS.d/next/Build/2026-07-19-12-06-45.gh-issue-152902.0BXdab.rst new file mode 100644 index 000000000000000..c084d32664a186c --- /dev/null +++ b/Misc/NEWS.d/next/Build/2026-07-19-12-06-45.gh-issue-152902.0BXdab.rst @@ -0,0 +1,2 @@ +Added Intel ``icx`` compiler support to ``configure.ac``. Contributed by +High Performance Kernels LLC. diff --git a/configure b/configure index 93bc5545e9de6ed..58f3dfc119ec13b 100755 --- a/configure +++ b/configure @@ -6402,6 +6402,8 @@ else case e in #( cat > conftest.c <&5 @@ -6981,7 +6983,117 @@ else CXX="$ac_cv_path_CXX" fi ;; - icc) if test -n "$ac_tool_prefix"; then + icx) if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}icpx", so it can be a program name with args. +set dummy ${ac_tool_prefix}icpx; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_CXX="$CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +CXX=$ac_cv_path_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_CXX"; then + ac_pt_CXX=$CXX + # Extract the first word of "icpx", so it can be a program name with args. +set dummy icpx; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_CXX=$ac_cv_path_ac_pt_CXX +if test -n "$ac_pt_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 +printf "%s\n" "$ac_pt_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_CXX" = x; then + CXX="notfound" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_pt_CXX + fi +else + CXX="$ac_cv_path_CXX" +fi + ;; + icc) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}icpc", so it can be a program name with args. set dummy ${ac_tool_prefix}icpc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -9129,7 +9241,7 @@ fi LLVM_PROF_ERR=no case "$ac_cv_cc_name" in - clang) + clang|icx) # Any changes made here should be reflected in the GCC+Darwin case below PGO_PROF_GEN_FLAG="-fprofile-instr-generate" PGO_PROF_USE_FLAG="-fprofile-instr-use=\"\$(shell pwd)/code.profclangd\"" @@ -11415,6 +11527,10 @@ case "$ac_cv_cc_name" in mpicc) CFLAGS_NODIST="$CFLAGS_NODIST" ;; +icx) + # ICX needs fp-model=precise (the default in clang) or floats behave badly + CFLAGS_NODIST="$CFLAGS_NODIST -ffp-model=precise" + ;; icc) # ICC needs -fp-model strict or floats behave badly CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict" @@ -26950,8 +27066,8 @@ esac # rounding precision of 64 bits. For gcc/x86, we can fix this by # using inline assembler to get and set the x87 FPU control word. -# This inline assembler syntax may also work for suncc and icc, -# so we try it on all platforms. +# This inline assembler syntax works for icx and may also work for +# suncc and icc, so we try it on all platforms. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can use gcc inline assembler to get and set x87 control word" >&5 printf %s "checking whether we can use gcc inline assembler to get and set x87 control word... " >&6; } diff --git a/configure.ac b/configure.ac index a9c706f3c23cb1c..273a64814f9a1fd 100644 --- a/configure.ac +++ b/configure.ac @@ -1096,6 +1096,8 @@ AC_CACHE_CHECK([for CC compiler name], [ac_cv_cc_name], [ cat > conftest.c < Date: Wed, 22 Jul 2026 07:05:10 +0300 Subject: [PATCH 116/205] gh-154399: Fix venv activate.csh in a non-interactive shell (GH-154400) activate.csh saved the prompt unconditionally, but the prompt variable only exists in interactive shells, and csh fails on an undefined variable. Co-authored-by: Claude Opus 4.8 --- Lib/venv/scripts/posix/activate.csh | 8 +++++--- .../2026-07-21-21-36-59.gh-issue-154399.VSa6oH.rst | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-21-21-36-59.gh-issue-154399.VSa6oH.rst diff --git a/Lib/venv/scripts/posix/activate.csh b/Lib/venv/scripts/posix/activate.csh index 2a3fa835476ab9b..7226034df0f3941 100644 --- a/Lib/venv/scripts/posix/activate.csh +++ b/Lib/venv/scripts/posix/activate.csh @@ -16,10 +16,12 @@ setenv PATH "$VIRTUAL_ENV/"__VENV_BIN_NAME__":$PATH" setenv VIRTUAL_ENV_PROMPT __VENV_PROMPT__ -set _OLD_VIRTUAL_PROMPT="$prompt" +if ($?prompt) then + set _OLD_VIRTUAL_PROMPT="$prompt" -if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then - set prompt = "("__VENV_PROMPT__") $prompt:q" + if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = "("__VENV_PROMPT__") $prompt:q" + endif endif alias pydoc python -m pydoc diff --git a/Misc/NEWS.d/next/Library/2026-07-21-21-36-59.gh-issue-154399.VSa6oH.rst b/Misc/NEWS.d/next/Library/2026-07-21-21-36-59.gh-issue-154399.VSa6oH.rst new file mode 100644 index 000000000000000..598dd26694c73e4 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-21-21-36-59.gh-issue-154399.VSa6oH.rst @@ -0,0 +1,3 @@ +Fix :mod:`venv` activation in a non-interactive csh: +``activate.csh`` no longer fails +when the ``prompt`` variable is not set. From f1730ddc474d9d103c4f85ecc4bb1e995a268ed9 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 07:09:38 +0300 Subject: [PATCH 117/205] gh-154394: Skip test_tcsendbreak on OpenBSD (GH-154397) tcsendbreak() is not supported for pseudo-terminals on OpenBSD. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_termios.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_termios.py b/Lib/test/test_termios.py index 3dcf5bd13791dc1..84062e464d6caf3 100644 --- a/Lib/test/test_termios.py +++ b/Lib/test/test_termios.py @@ -117,7 +117,7 @@ def test_tcsetattr_errors(self): @support.skip_android_selinux('tcsendbreak') def test_tcsendbreak(self): with skip_enotty_error(self, 'tcsendbreak', - ('freebsd', 'netbsd', 'cygwin')): + ('freebsd', 'netbsd', 'openbsd', 'cygwin')): termios.tcsendbreak(self.fd, 1) termios.tcsendbreak(self.stream, 1) From 0e4940f0c113d8f4522ca3c120e470e9da922a8d Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 07:25:24 +0300 Subject: [PATCH 118/205] gh-154395: Skip test_environment_is_not_modified without rl_change_environment (GH-154396) readline sets LINES and COLUMNS if rl_change_environment is not available, which is the case with readline older than 6.3. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_readline.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Lib/test/test_readline.py b/Lib/test/test_readline.py index b0b9d64cfe6a5f7..97ca93ae09db343 100644 --- a/Lib/test/test_readline.py +++ b/Lib/test/test_readline.py @@ -5,6 +5,7 @@ import locale import os import sys +import sysconfig import tempfile import textwrap import threading @@ -413,6 +414,8 @@ def test_write_read_limited_history(self): # So, we've only tested that the read did not fail. # See TestHistoryManipulation for the full test. + @unittest.skipUnless(sysconfig.get_config_var("HAVE_RL_CHANGE_ENVIRONMENT"), + "readline can modify the environment") def test_environment_is_not_modified(self): # os.environ contains environment at the time "os" module was loaded, so # before the "readline" module is loaded. From 90b6a7992ae0ce6959eaa6b6401105582d866037 Mon Sep 17 00:00:00 2001 From: Harjoth Khara Date: Tue, 21 Jul 2026 21:42:14 -0700 Subject: [PATCH 119/205] gh-153291: Fix data race in readline.get_completer() and get_pre_input_hook() (gh-153362) The setters store these hooks while holding the module critical section (via set_hook's Py_XSETREF), but the getters read and Py_NewRef the same fields without it. Annotate both getters with @critical_section, matching the other readline functions (gh-126895). Co-authored-by: Neil Schemenauer --- Lib/test/test_free_threading/test_readline.py | 59 +++++++++++++++++++ Lib/test/test_readline.py | 24 -------- ...-07-08-00-00-00.gh-issue-153291.rdlnCS.rst | 4 ++ Modules/clinic/readline.c.h | 18 +++++- Modules/readline.c | 6 +- 5 files changed, 82 insertions(+), 29 deletions(-) create mode 100644 Lib/test/test_free_threading/test_readline.py create mode 100644 Misc/NEWS.d/next/Library/2026-07-08-00-00-00.gh-issue-153291.rdlnCS.rst diff --git a/Lib/test/test_free_threading/test_readline.py b/Lib/test/test_free_threading/test_readline.py new file mode 100644 index 000000000000000..f7aa9894031495c --- /dev/null +++ b/Lib/test/test_free_threading/test_readline.py @@ -0,0 +1,59 @@ +import unittest + +from test.support import import_helper +from test.support import threading_helper + +readline = import_helper.import_module("readline") + + +@threading_helper.requires_working_threading() +class TestReadlineRaces(unittest.TestCase): + def test_completer_delims_get_set(self): + def worker(): + for _ in range(100): + readline.get_completer_delims() + readline.set_completer_delims( + ' \t\n`@#%^&*()=+[{]}\\|;:\'",<>?') + readline.set_completer_delims( + ' \t\n`@#%^&*()=+[{]}\\|;:\'",<>?') + readline.get_completer_delims() + + threading_helper.run_concurrently(worker, nthreads=40) + + # get_completer()/get_pre_input_hook() must take the module critical + # section like their setters do; otherwise reading and Py_NewRef-ing the + # stored hook races the setter replacing it (gh-153291). + + def test_completer_get_set(self): + def setter(): + for _ in range(1000): + readline.set_completer(lambda text, state: None) + readline.set_completer(None) + + def getter(): + for _ in range(1000): + readline.get_completer() + + original = readline.get_completer() + self.addCleanup(readline.set_completer, original) + threading_helper.run_concurrently([setter] * 2 + [getter] * 6) + + @unittest.skipUnless(hasattr(readline, "set_pre_input_hook"), + "needs readline.set_pre_input_hook") + def test_pre_input_hook_get_set(self): + def setter(): + for _ in range(1000): + readline.set_pre_input_hook(lambda: None) + readline.set_pre_input_hook(None) + + def getter(): + for _ in range(1000): + readline.get_pre_input_hook() + + original = readline.get_pre_input_hook() + self.addCleanup(readline.set_pre_input_hook, original) + threading_helper.run_concurrently([setter] * 2 + [getter] * 6) + + +if __name__ == "__main__": + unittest.main() diff --git a/Lib/test/test_readline.py b/Lib/test/test_readline.py index 97ca93ae09db343..11ec57a259a9abf 100644 --- a/Lib/test/test_readline.py +++ b/Lib/test/test_readline.py @@ -8,10 +8,7 @@ import sysconfig import tempfile import textwrap -import threading import unittest -from test import support -from test.support import threading_helper from test.support import verbose from test.support.import_helper import import_module from test.support.os_helper import unlink, temp_dir, TESTFN @@ -445,26 +442,5 @@ def my_hook(): self.assertIs(readline.get_pre_input_hook(), my_hook) -@unittest.skipUnless(support.Py_GIL_DISABLED, 'these tests can only possibly fail with GIL disabled') -class FreeThreadingTest(unittest.TestCase): - @threading_helper.reap_threads - @threading_helper.requires_working_threading() - def test_free_threading(self): - def completer_delims(b): - b.wait() - for _ in range(100): - readline.get_completer_delims() - readline.set_completer_delims(' \t\n`@#%^&*()=+[{]}\\|;:\'",<>?') - readline.set_completer_delims(' \t\n`@#%^&*()=+[{]}\\|;:\'",<>?') - readline.get_completer_delims() - - count = 40 - barrier = threading.Barrier(count) - threads = [threading.Thread(target=completer_delims, args=(barrier,)) for _ in range(count)] - - with threading_helper.start_threads(threads): - pass - - if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Library/2026-07-08-00-00-00.gh-issue-153291.rdlnCS.rst b/Misc/NEWS.d/next/Library/2026-07-08-00-00-00.gh-issue-153291.rdlnCS.rst new file mode 100644 index 000000000000000..dbe3cd417e0d607 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-08-00-00-00.gh-issue-153291.rdlnCS.rst @@ -0,0 +1,4 @@ +Fix a data race in :func:`readline.get_completer` and +:func:`readline.get_pre_input_hook` on the :term:`free-threaded ` build: the getters read the stored hook without the critical +section that the corresponding setters hold. diff --git a/Modules/clinic/readline.c.h b/Modules/clinic/readline.c.h index dc9381e4b976acd..a7df757f3f6c85c 100644 --- a/Modules/clinic/readline.c.h +++ b/Modules/clinic/readline.c.h @@ -366,7 +366,13 @@ readline_get_pre_input_hook_impl(PyObject *module); static PyObject * readline_get_pre_input_hook(PyObject *module, PyObject *Py_UNUSED(ignored)) { - return readline_get_pre_input_hook_impl(module); + PyObject *return_value = NULL; + + Py_BEGIN_CRITICAL_SECTION(module); + return_value = readline_get_pre_input_hook_impl(module); + Py_END_CRITICAL_SECTION(); + + return return_value; } #endif /* defined(HAVE_RL_PRE_INPUT_HOOK) */ @@ -651,7 +657,13 @@ readline_get_completer_impl(PyObject *module); static PyObject * readline_get_completer(PyObject *module, PyObject *Py_UNUSED(ignored)) { - return readline_get_completer_impl(module); + PyObject *return_value = NULL; + + Py_BEGIN_CRITICAL_SECTION(module); + return_value = readline_get_completer_impl(module); + Py_END_CRITICAL_SECTION(); + + return return_value; } PyDoc_STRVAR(readline_get_history_item__doc__, @@ -823,4 +835,4 @@ readline_redisplay(PyObject *module, PyObject *Py_UNUSED(ignored)) #ifndef READLINE_CLEAR_HISTORY_METHODDEF #define READLINE_CLEAR_HISTORY_METHODDEF #endif /* !defined(READLINE_CLEAR_HISTORY_METHODDEF) */ -/*[clinic end generated code: output=4bd95070973cd0e2 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=acf4e4c35191cf09 input=a9049054013a1b77]*/ diff --git a/Modules/readline.c b/Modules/readline.c index 4c965e081c9d1a7..fc79a5866dfd38c 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -578,6 +578,7 @@ readline_set_pre_input_hook_impl(PyObject *module, PyObject *function) /* Get pre-input hook */ /*[clinic input] +@critical_section readline.get_pre_input_hook Get the current pre-input hook function. @@ -585,7 +586,7 @@ Get the current pre-input hook function. static PyObject * readline_get_pre_input_hook_impl(PyObject *module) -/*[clinic end generated code: output=ad56b77a8e8981ca input=fb1e1b1fbd94e4e5]*/ +/*[clinic end generated code: output=ad56b77a8e8981ca input=fbbf0106bd015414]*/ { readlinestate *state = get_readline_state(module); if (state->pre_input_hook == NULL) { @@ -886,6 +887,7 @@ readline_set_completer_impl(PyObject *module, PyObject *function) } /*[clinic input] +@critical_section readline.get_completer Get the current completer function. @@ -893,7 +895,7 @@ Get the current completer function. static PyObject * readline_get_completer_impl(PyObject *module) -/*[clinic end generated code: output=6e6bbd8226d14475 input=6457522e56d70d13]*/ +/*[clinic end generated code: output=6e6bbd8226d14475 input=0df9ba4107115c44]*/ { readlinestate *state = get_readline_state(module); if (state->completer == NULL) { From a84e780707d3baa3b9f73981d8b7e293eb10d076 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 08:01:25 +0300 Subject: [PATCH 120/205] gh-154414: Skip test_tcsendbreak on DragonFly BSD (GH-154415) tcsendbreak() is not supported for pseudo-terminals on DragonFly BSD. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_termios.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_termios.py b/Lib/test/test_termios.py index 84062e464d6caf3..ede23ec38860e11 100644 --- a/Lib/test/test_termios.py +++ b/Lib/test/test_termios.py @@ -117,7 +117,7 @@ def test_tcsetattr_errors(self): @support.skip_android_selinux('tcsendbreak') def test_tcsendbreak(self): with skip_enotty_error(self, 'tcsendbreak', - ('freebsd', 'netbsd', 'openbsd', 'cygwin')): + ('freebsd', 'netbsd', 'openbsd', 'dragonfly', 'cygwin')): termios.tcsendbreak(self.fd, 1) termios.tcsendbreak(self.stream, 1) From b0c945a27e708419c6845234ef633ce3f7c4c41e Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 08:07:53 +0300 Subject: [PATCH 121/205] gh-154416: Fix hanging test_tcflow on DragonFly BSD (GH-154417) TCIOFF and TCION transmit STOP and START characters, and closing the pseudo-terminal waits until they are read. Discard them. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_termios.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Lib/test/test_termios.py b/Lib/test/test_termios.py index ede23ec38860e11..2739b990e0906e5 100644 --- a/Lib/test/test_termios.py +++ b/Lib/test/test_termios.py @@ -194,6 +194,9 @@ def test_tcflow(self): termios.tcflow(self.fd, termios.TCOON) termios.tcflow(self.fd, termios.TCIOFF) termios.tcflow(self.fd, termios.TCION) + # Discard the transmitted STOP and START characters, + # otherwise closing the pseudo-terminal can block. + termios.tcflush(self.fd, termios.TCOFLUSH) @support.skip_android_selinux('tcflow') def test_tcflow_errors(self): From 458367e60c14fd1b443af4ed7a3fd5135b6d0c35 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 08:53:27 +0300 Subject: [PATCH 122/205] gh-154419: Find the fish shell in test_venv (GH-154420) shutil.which('fish') can find the unrelated "Go Fish" game, which is shipped on several BSD systems. Search PATH for an executable which behaves like the fish shell instead. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_venv.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index 58ae85fb268042e..e98e52c2ea20453 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -783,8 +783,16 @@ def test_fish_activate_shadowed_builtins(self): shadows one of those builtins (a common pattern for `.`-style directory navigators) must not hijack the prompt or break status restoration. """ - fish = shutil.which('fish') - if fish is None: + # Some systems have an unrelated "fish" game (see fish(6)), which + # can precede the fish shell in PATH. + for dirname in None, *os.get_exec_path(): + fish = shutil.which('fish', path=dirname) + if fish is not None and subprocess.run( + [fish, '-c', 'echo $FISH_VERSION'], + stdin=subprocess.DEVNULL, + capture_output=True).stdout.strip(): + break + else: self.skipTest('fish required for this test') rmtree(self.env_dir) builder = venv.EnvBuilder(clear=True) From 6f8f97fe5246837b93e6c2f3525aa9f623ecd30b Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 10:00:11 +0300 Subject: [PATCH 123/205] gh-154427: Check the access time in UtimeTests only if it is stored (GH-154428) HAMMER2 on DragonFly BSD does not store the access time and os.stat() returns the modification time instead. Probe the file system, like it is already done for the timestamp resolution. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_os/test_os.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_os/test_os.py b/Lib/test/test_os/test_os.py index b4310043b60178b..c62bceb25cabe05 100644 --- a/Lib/test/test_os/test_os.py +++ b/Lib/test/test_os/test_os.py @@ -1058,11 +1058,18 @@ def support_subsecond(self, filename): or (st.st_mtime != st[8]) or (st.st_ctime != st[9])) + def support_atime(self, filename): + # Heuristic to check if the filesystem stores the access time. + # Use whole seconds, to not depend on the timestamp resolution. + os.utime(filename, (1, 2)) + return os.stat(filename).st_atime == 1 + def _test_utime(self, set_time, filename=None): if not filename: filename = self.fname support_subsecond = self.support_subsecond(filename) + support_atime = self.support_atime(filename) if support_subsecond: # Timestamp with a resolution of 1 microsecond (10^-6). # @@ -1089,18 +1096,22 @@ def _test_utime(self, set_time, filename=None): # digits worth of sub-second precision. # Some day it would be good to fix this upstream. delta=1e-5 - self.assertAlmostEqual(st.st_atime, atime_ns * 1e-9, delta=1e-5) + if support_atime: + self.assertAlmostEqual(st.st_atime, atime_ns * 1e-9, delta=1e-5) + self.assertAlmostEqual(st.st_atime_ns, atime_ns, delta=1e9 * 1e-5) self.assertAlmostEqual(st.st_mtime, mtime_ns * 1e-9, delta=1e-5) - self.assertAlmostEqual(st.st_atime_ns, atime_ns, delta=1e9 * 1e-5) self.assertAlmostEqual(st.st_mtime_ns, mtime_ns, delta=1e9 * 1e-5) else: if support_subsecond: - self.assertAlmostEqual(st.st_atime, atime_ns * 1e-9, delta=1e-6) + if support_atime: + self.assertAlmostEqual(st.st_atime, atime_ns * 1e-9, delta=1e-6) self.assertAlmostEqual(st.st_mtime, mtime_ns * 1e-9, delta=1e-6) else: - self.assertEqual(st.st_atime, atime_ns * 1e-9) + if support_atime: + self.assertEqual(st.st_atime, atime_ns * 1e-9) self.assertEqual(st.st_mtime, mtime_ns * 1e-9) - self.assertEqual(st.st_atime_ns, atime_ns) + if support_atime: + self.assertEqual(st.st_atime_ns, atime_ns) self.assertEqual(st.st_mtime_ns, mtime_ns) def test_utime(self): From 0eac28e3637d0ee15f4e8737b5d1a311623e46f9 Mon Sep 17 00:00:00 2001 From: Piotr Kaznowski Date: Wed, 22 Jul 2026 10:08:03 +0200 Subject: [PATCH 124/205] gh-154007: Improve test coverage for the `shlex` module (#154009) --- Lib/test/test_shlex.py | 200 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) diff --git a/Lib/test/test_shlex.py b/Lib/test/test_shlex.py index 2adaee81b063085..4c0cd88bbcda14f 100644 --- a/Lib/test/test_shlex.py +++ b/Lib/test/test_shlex.py @@ -1,8 +1,11 @@ import io import itertools +import os import shlex import string +import tempfile import unittest +from unittest.mock import patch from test.support import cpython_only from test.support import import_helper @@ -376,6 +379,203 @@ def testPunctuationCharsReadOnly(self): with self.assertRaises(AttributeError): shlex_instance.punctuation_chars = False + def testLinenoAfterNewLine(self): + s = shlex.shlex("line 1\nline 2") + self.assertEqual(s.lineno, 1) # before consumption + list(s) + self.assertEqual(s.lineno, 2) + + def testLinenoAfterComment(self): + """Comment handler increments lineno even without a trailing newline.""" + s = shlex.shlex("line 1 # line 2") + list(s) + self.assertEqual(s.lineno, 2) + + def testPushToken(self): + s = shlex.shlex("b c") + s.push_token("a") + self.assertListEqual(list(s), ["a", "b", "c"]) + + def testPushTokenLifo(self): + s = shlex.shlex("") + s.push_token("first") + s.push_token("last") + self.assertListEqual(list(s), ["last", "first"]) + + def testPushTokenDebug(self): + s = shlex.shlex("") + s.debug = 1 + tok = "a" + with patch("builtins.print") as mock_print: + s.push_token(tok) + mock_print.assert_called_once_with(f"shlex: pushing token {tok!r}") + + def testPushSourceString(self): + s = shlex.shlex("world") + s.push_source("hello") + self.assertListEqual(list(s), ["hello", "world"]) + + def testPushSourceStream(self): + s = shlex.shlex("world") + s.push_source(io.StringIO("hello")) + self.assertListEqual(list(s), ["hello", "world"]) + + def testPushSourceStreamDebug(self): + s = shlex.shlex("") + stream = io.StringIO("hello") + s.debug = 1 + with patch("builtins.print") as mock_print: + s.push_source(stream) + mock_print.assert_called_once_with(f"shlex: pushing to stream {stream}") + + def testPushSourceNewfile(self): + """shlex.push_source sets infile to newfile; pop_source restores the original on exhaustion.""" + original_file = "original.sh" + new_file = "new.sh" + s = shlex.shlex("b", infile=original_file) + s.debug = 1 + with patch("builtins.print") as mock_print: + s.push_source("a", newfile=new_file) + mock_print.assert_called_once_with(f"shlex: pushing to file {new_file}") + self.assertEqual(s.infile, new_file) + s.debug = 0 + list(s) + self.assertEqual(s.infile, original_file) + + def testPopSourceDebug(self): + """pop_source emits debug output when debug is set.""" + s = shlex.shlex("b") + original_stream = s.instream + s.push_source("a") + s.debug = 1 + with patch("builtins.print") as mock_print: + list(s) # exhausts pushed source and triggers pop_source internally + mock_print.assert_any_call(f"shlex: popping to {original_stream}, line 1") + + def testErrorLeaderTracksPosition(self): + infile_label = "test.sh" + s = shlex.shlex("line 1\nline 2", infile=infile_label) + list(s) + result = s.error_leader() + self.assertEqual(result, f'"{infile_label}", line 2: ') + + def testErrorLeaderOverrides(self): + s = shlex.shlex("foo", infile="original.sh") + infile_label_override = "override.sh" + lineno_override = 42 + result = s.error_leader(infile=infile_label_override, lineno=lineno_override) + self.assertEqual(result, f'"{infile_label_override}", line {lineno_override}: ') + + def testNoClosingQuotation(self): + s = shlex.shlex('"foo') + with self.assertRaisesRegex(ValueError, "No closing quotation"): + list(s) + + def testNoEscapedCharacter(self): + s = shlex.shlex("\\", posix=True) + with self.assertRaisesRegex(ValueError, "No escaped character"): + list(s) + + def testSourcehookStripsQuotes(self): + with tempfile.NamedTemporaryFile(mode="w", suffix=".sh", delete_on_close=False) as f: + f.write("hello") + f.close() + s = shlex.shlex("") + newfile, stream = s.sourcehook(f'"{f.name}"') + stream.close() + self.assertEqual(newfile, f.name) + + def testSourcehookAbsolutePath(self): + with tempfile.NamedTemporaryFile(mode="w", delete_on_close=False) as f: + f.close() + s = shlex.shlex("", infile="/some/dir/main.sh") + newfile, stream = s.sourcehook(f.name) + stream.close() + self.assertEqual(newfile, f.name) + + def testSourcehookRelativePath(self): + with tempfile.TemporaryDirectory() as d: + fpath = os.path.join(d, "included.sh") + with open(fpath, "w"): + pass + s = shlex.shlex("", infile=os.path.join(d, "main.sh")) + newfile, stream = s.sourcehook("included.sh") + stream.close() + self.assertEqual(newfile, fpath) + + def testSourceInclusion(self): + """shlex.source sets a trigger keyword: when the lexer reads a token equal + to it, the next token is consumed as a filename and passed to + sourcehook, which returns a stream to push onto the input stack. + Tokens flow from that stream first, then resume from the original. + """ + s = shlex.shlex("trigger filename remaining") + s.source = "trigger" + s.sourcehook = lambda f: (f, io.StringIO("included")) + self.assertEqual(list(s), ["included", "remaining"]) + + def testGetTokenPopsPushbackDebug(self): + s = shlex.shlex("") + s.push_token("hello") + s.debug = 1 # set after push_token to isolate the pop-token branch + with patch("builtins.print") as mock_print: + tok = s.get_token() + self.assertEqual(tok, "hello") + mock_print.assert_called_once_with("shlex: popping token 'hello'") + + def testDebugWhitespaceInWhitespaceState(self): + s = shlex.shlex(" a") + s.debug = 2 + with patch("builtins.print") as mock_print: + list(s) + mock_print.assert_any_call("shlex: I see whitespace in whitespace state") + + def testDebugWhitespaceInWordState(self): + s = shlex.shlex("a b") + s.debug = 2 + with patch("builtins.print") as mock_print: + list(s) + mock_print.assert_any_call("shlex: I see whitespace in word state") + + def testDebugPunctuationInWordState(self): + s = shlex.shlex("a(") + s.debug = 2 + with patch("builtins.print") as mock_print: + list(s) + mock_print.assert_any_call("shlex: I see punctuation in word state") + + def testDebugRawToken(self): + s = shlex.shlex("hello") + s.debug = 2 + with patch("builtins.print") as mock_print: + list(s) + mock_print.assert_any_call("shlex: raw token='hello'") + + def testDebugEOFInQuote(self): + s = shlex.shlex('"oops', posix=True) + s.debug = 2 + with patch('builtins.print') as mock_print: + with self.assertRaises(ValueError): + list(s) + msgs = [call.args[0] for call in mock_print.call_args_list] + self.assertTrue(any("EOF in quotes" in m for m in msgs)) + + def testDebugEOFInEscape(self): + s = shlex.shlex("oops\\", posix=True) + s.debug = 2 + with patch("builtins.print") as mock_print: + with self.assertRaises(ValueError): + list(s) + msgs = [call.args[0] for call in mock_print.call_args_list] + self.assertTrue(any("EOF in escape" in m for m in msgs)) + + def testDebugStateTrace(self): + s = shlex.shlex("a") + s.debug = 3 + with patch("builtins.print") as mock_print: + list(s) + mock_print.assert_any_call("shlex: in state ' ' I see character: 'a'") + @cpython_only def test_lazy_imports(self): import_helper.ensure_lazy_imports('shlex', {'collections', 're', 'os'}) From cbd15390e474e254ad2590c57de7e3bf657c0a09 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 11:15:22 +0300 Subject: [PATCH 125/205] gh-154441: Skip the scheduler tests if the API requires privileges (GH-154442) DragonFly BSD requires privileges to use the scheduler API, even for the calling process. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_os/test_posix.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_os/test_posix.py b/Lib/test/test_os/test_posix.py index 79e234cbcd2ae25..299ab9774fc812c 100644 --- a/Lib/test/test_os/test_posix.py +++ b/Lib/test/test_os/test_posix.py @@ -46,7 +46,8 @@ def _supports_sched(): try: posix.sched_getscheduler(0) except OSError as e: - if e.errno == errno.ENOSYS: + # DragonFly BSD requires privileges to use the scheduler API. + if e.errno in (errno.ENOSYS, errno.EPERM): return False return True @@ -1453,6 +1454,7 @@ def test_bug_140634(self): del sched_priority, param # should not crash support.gc_collect() # just to be sure + @requires_sched @unittest.skipUnless(hasattr(posix, "sched_rr_get_interval"), "no function") def test_sched_rr_get_interval(self): try: From 2cf8e59a38251ff6dfbcd326104068be01c95385 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 11:36:49 +0300 Subject: [PATCH 126/205] gh-154443: Fix test_makedev on DragonFly BSD (GH-154444) major() and minor() do not preserve NODEV on DragonFly BSD. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_os/test_posix.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Lib/test/test_os/test_posix.py b/Lib/test/test_os/test_posix.py index 299ab9774fc812c..41a730708974c25 100644 --- a/Lib/test/test_os/test_posix.py +++ b/Lib/test/test_os/test_posix.py @@ -824,8 +824,7 @@ def test_makedev(self): # a special case for NODEV, on others this is just an implementation # artifact. if (hasattr(posix, 'NODEV') and - sys.platform.startswith(('linux', 'macos', 'freebsd', 'dragonfly', - 'sunos'))): + sys.platform.startswith(('linux', 'macos', 'freebsd', 'sunos'))): NODEV = posix.NODEV self.assertEqual(posix.major(NODEV), NODEV) self.assertEqual(posix.minor(NODEV), NODEV) From 08a0d10709f04cf03260e5e852381cecb1c531e1 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 11:39:11 +0300 Subject: [PATCH 127/205] gh-154435: Fix os.posix_fadvise() and os.posix_fallocate() on DragonFly BSD (GH-154436) They return -1 and set errno instead of returning the error number, so OSError was raised with a meaningless error code. Co-authored-by: Claude Opus 4.8 --- .../2026-07-22-10-30-08.gh-issue-154435.xCxm0T.rst | 3 +++ Modules/posixmodule.c | 8 ++++++++ 2 files changed, 11 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2026-07-22-10-30-08.gh-issue-154435.xCxm0T.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-22-10-30-08.gh-issue-154435.xCxm0T.rst b/Misc/NEWS.d/next/Library/2026-07-22-10-30-08.gh-issue-154435.xCxm0T.rst new file mode 100644 index 000000000000000..b468e929b1ca18b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-22-10-30-08.gh-issue-154435.xCxm0T.rst @@ -0,0 +1,3 @@ +Fix :func:`os.posix_fadvise` and :func:`os.posix_fallocate` on DragonFly BSD: +they raised :exc:`OSError` with a meaningless error code, +because these functions return -1 and set ``errno`` there. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 75ee7e260ce9850..de9575781881563 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -13508,6 +13508,10 @@ os_posix_fallocate_impl(PyObject *module, int fd, Py_off_t offset, Py_BEGIN_ALLOW_THREADS result = posix_fallocate(fd, offset, length); Py_END_ALLOW_THREADS + // DragonFly BSD returns -1 and sets errno. + if (result == -1) { + result = errno; + } } while (result == EINTR && !(async_err = PyErr_CheckSignals())); if (result == 0) @@ -13555,6 +13559,10 @@ os_posix_fadvise_impl(PyObject *module, int fd, Py_off_t offset, Py_BEGIN_ALLOW_THREADS result = posix_fadvise(fd, offset, length, advice); Py_END_ALLOW_THREADS + // DragonFly BSD returns -1 and sets errno. + if (result == -1) { + result = errno; + } } while (result == EINTR && !(async_err = PyErr_CheckSignals())); if (result == 0) From 1bf86c134a5260876ad31fb32b832cbea24c21ad Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 12:05:06 +0300 Subject: [PATCH 128/205] gh-154437: Fix test_getcwd_long_path on DragonFly BSD (GH-154438) DragonFly BSD raises EFAULT instead of ENAMETOOLONG when the path exceeds PATH_MAX. Co-authored-by: Claude Opus 4.8 --- Lib/test/test_os/test_os.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_os/test_os.py b/Lib/test/test_os/test_os.py index c62bceb25cabe05..3e5ad52c4ab130d 100644 --- a/Lib/test/test_os/test_os.py +++ b/Lib/test/test_os/test_os.py @@ -156,7 +156,8 @@ def test_getcwd_long_path(self): # ("The filename or extension is too long") break except OSError as exc: - if exc.errno == errno.ENAMETOOLONG: + # DragonFly BSD raises EFAULT for a too long path. + if exc.errno in (errno.ENAMETOOLONG, errno.EFAULT): break else: raise From d1174a48ea8fda8bd0057f10e9776ec148276100 Mon Sep 17 00:00:00 2001 From: Bhuvansh Date: Wed, 22 Jul 2026 14:47:47 +0530 Subject: [PATCH 129/205] gh-154014: Initialize cold executor vm_data fields (GH-154142) --- Lib/test/test_capi/test_opt.py | 10 ++++++++++ .../2026-07-19-16-18-25.gh-issue-154014.CJsjVL.rst | 2 ++ Python/optimizer.c | 7 ++++++- 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-07-19-16-18-25.gh-issue-154014.CJsjVL.rst diff --git a/Lib/test/test_capi/test_opt.py b/Lib/test/test_capi/test_opt.py index 25b2c393e6773de..5806216d46e7eb6 100644 --- a/Lib/test/test_capi/test_opt.py +++ b/Lib/test/test_capi/test_opt.py @@ -5127,6 +5127,16 @@ def f(): f" {executor} at offset {idx} rather" f" than expected _EXIT_TRACE") + def test_jit_shutdown_after_cold_executor_creation(self): + script_helper.assert_python_ok("-c", textwrap.dedent(f""" + def f(): + for x in range({TIER2_THRESHOLD + 3}): + for y in range({TIER2_THRESHOLD + 3}): + z = x + y + + f() + """), PYTHON_JIT="1") + def test_enter_executor_valid_op_arg(self): script_helper.assert_python_ok("-c", textwrap.dedent(""" import sys diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-07-19-16-18-25.gh-issue-154014.CJsjVL.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-19-16-18-25.gh-issue-154014.CJsjVL.rst new file mode 100644 index 000000000000000..6bdcf83725168a2 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-07-19-16-18-25.gh-issue-154014.CJsjVL.rst @@ -0,0 +1,2 @@ +Fix a JIT assertion during interpreter shutdown by initializing ``vm_data`` +fields for cold executors that bypass ``_Py_ExecutorInit()``. diff --git a/Python/optimizer.c b/Python/optimizer.c index c9f6ebdb62f07b2..e05adb344c8d06d 100644 --- a/Python/optimizer.c +++ b/Python/optimizer.c @@ -1797,6 +1797,11 @@ make_cold_executor(uint16_t opcode) Py_FatalError("Cannot allocate core JIT code"); } ((_PyUOpInstruction *)cold->trace)->opcode = opcode; + // Cold executors bypass _Py_ExecutorInit(). + cold->vm_data.valid = true; + cold->vm_data.pending_deletion = 0; + cold->vm_data.code = NULL; + // This is initialized to false so we can prevent the executor // from being immediately detected as cold and invalidated. cold->vm_data.cold = false; @@ -1804,7 +1809,7 @@ make_cold_executor(uint16_t opcode) cold->jit_code = NULL; cold->jit_size = 0; if (_PyJIT_Compile(cold, cold->trace, 1)) { - Py_DECREF(cold); + _PyExecutor_Free(cold); Py_FatalError("Cannot allocate core JIT code"); } #endif From 7dc920a5da4d519b2ce47d2598846762e78f979f Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 13:35:42 +0300 Subject: [PATCH 130/205] gh-84649: Fix unstable test_rollover_at_midnight (GH-154463) Create the log file in a fresh directory under a name which has never been used. On Windows, NTFS file tunneling restored the original creation time of a file recreated with the same name, which made the rollover time earlier than the current time and caused an unwanted rollover. Also check that the rollover does not happen before the specified time. Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/test/test_logging.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index a7ea128d64055a1..06b3aa66fc47a31 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -6704,7 +6704,14 @@ def add_record(message: str) -> None: self.assertTrue(found, msg=msg) def test_rollover_at_midnight(self, weekly=False): + # Create the log file in a fresh directory under a never used name: + # on Windows, NTFS file tunneling restores the original creation time + # of a file recreated with the same name. os_helper.unlink(self.fn) + dirname = tempfile.mkdtemp() + self.addCleanup(os_helper.rmtree, dirname) + self.fn = os.path.join(dirname, 'test_rollover.log') + # Emit the first records a little after the beginning of a whole # second, so that their file times fall inside that second and not the # previous one, which would cause an unwanted rollover. @@ -6730,7 +6737,24 @@ def test_rollover_at_midnight(self, weekly=False): # changed, so the rollover cannot be forced by back-dating the file. # Wait until the clock reaches a rollover time set one second ahead. rollover = int(time.time()) + 1 + if rollover - time.time() < 0.1: + # Leave time to emit a record before the rollover time. + rollover += 1 atTime = datetime.datetime.fromtimestamp(rollover).time() + rolloverDate = (datetime.datetime.fromtimestamp(rollover) + - datetime.timedelta(days=7 if weekly else 1)) + otherfn = f'{self.fn}.{rolloverDate:%Y-%m-%d}' + + # A record emitted before the rollover time is not rolled over. + fh = logging.handlers.TimedRotatingFileHandler( + self.fn, encoding="utf-8", when=when, atTime=atTime) + fh.setFormatter(fmt) + r2 = logging.makeLogRecord({'msg': 'testing1 3'}) + fh.emit(r2) + fh.close() + self.assertFalse(os.path.exists(otherfn), + msg=f'{otherfn} was rolled over too early') + while time.time() < rollover: time.sleep(rollover - time.time()) for i in range(2): @@ -6740,9 +6764,6 @@ def test_rollover_at_midnight(self, weekly=False): r2 = logging.makeLogRecord({'msg': f'testing2 {i}'}) fh.emit(r2) fh.close() - rolloverDate = (datetime.datetime.fromtimestamp(rollover) - - datetime.timedelta(days=7 if weekly else 1)) - otherfn = f'{self.fn}.{rolloverDate:%Y-%m-%d}' self.assertLogFile(otherfn) with open(self.fn, encoding="utf-8") as f: for i, line in enumerate(f): From 13e3f8aa839d71285f3408241b0518da499eac39 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 14:15:41 +0300 Subject: [PATCH 131/205] gh-154272: Skip forkserver tests when the start method is unavailable (GH-154274) Co-authored-by: Claude Opus 4.8 (1M context) --- Lib/test/test_concurrent_futures/util.py | 2 ++ Lib/test/test_multiprocessing_forkserver/__init__.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/Lib/test/test_concurrent_futures/util.py b/Lib/test/test_concurrent_futures/util.py index 006360c8d941c9d..9dc1d057e75b4bc 100644 --- a/Lib/test/test_concurrent_futures/util.py +++ b/Lib/test/test_concurrent_futures/util.py @@ -139,6 +139,8 @@ def get_context(self): self.skipTest("require unix system") if support.check_sanitizer(thread=True): self.skipTest("TSAN doesn't support threads after fork") + if "forkserver" not in multiprocessing.get_all_start_methods(): + self.skipTest("forkserver start method is not available") return super().get_context() def create_event(self): diff --git a/Lib/test/test_multiprocessing_forkserver/__init__.py b/Lib/test/test_multiprocessing_forkserver/__init__.py index c58375e2861c62e..600285cbf613003 100644 --- a/Lib/test/test_multiprocessing_forkserver/__init__.py +++ b/Lib/test/test_multiprocessing_forkserver/__init__.py @@ -1,3 +1,4 @@ +import multiprocessing import os.path import sys import unittest @@ -12,5 +13,10 @@ if not support.has_fork_support: raise unittest.SkipTest("requires working os.fork()") +# The forkserver start method requires passing file descriptors over a Unix +# socket, which is not available on every platform (e.g. Solaris/illumos). +if "forkserver" not in multiprocessing.get_all_start_methods(): + raise unittest.SkipTest("forkserver start method is not available") + def load_tests(*args): return support.load_package_tests(os.path.dirname(__file__), *args) From 119edb3edee41ef9c7d78da1a3a792aa83eec47c Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 22 Jul 2026 14:06:00 +0200 Subject: [PATCH 132/205] gh-154465: Add configure flag to exclude emscripten_syscalls.c (#154466) Pyodide doesn't want to include emscripten_syscalls.c in the build since it links a different version of it. This adds a configure flag to drop it. --- configure | 37 ++++++++++++++++++++++++++++++++++++- configure.ac | 19 ++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 58f3dfc119ec13b..08b493311a3f92e 100755 --- a/configure +++ b/configure @@ -1102,6 +1102,7 @@ enable_framework with_app_store_compliance enable_wasm_dynamic_linking enable_wasm_pthreads +enable_emscripten_syscalls with_suffix enable_shared with_static_libpython @@ -1843,6 +1844,10 @@ Optional Features: loader to handle imports --enable-wasm-pthreads Enable pthread emulation for WebAssembly (default is no) + --disable-emscripten-syscalls + Disable the Emscripten syscall overrides in + Python/emscripten_syscalls.c (default is enabled for + Emscripten) --enable-shared enable building a shared Python library (default is no) --enable-static-libpython-for-interpreter @@ -7620,6 +7625,30 @@ fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_wasm_pthreads" >&5 printf "%s\n" "$enable_wasm_pthreads" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-emscripten-syscalls" >&5 +printf %s "checking for --enable-emscripten-syscalls... " >&6; } +# Check whether --enable-emscripten-syscalls was given. +if test ${enable_emscripten_syscalls+y} +then : + enableval=$enable_emscripten_syscalls; + case $ac_sys_system in #( + Emscripten) : + ;; #( + *) : + as_fn_error $? "--enable-emscripten-syscalls only applies to Emscripten" "$LINENO" 5 + ;; +esac + +else case e in #( + e) + enable_emscripten_syscalls=yes + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_emscripten_syscalls" >&5 +printf "%s\n" "$enable_emscripten_syscalls" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-suffix" >&5 printf %s "checking for --with-suffix... " >&6; } @@ -20159,7 +20188,13 @@ PLATFORM_OBJS= case $ac_sys_system in #( Emscripten) : - as_fn_append PLATFORM_OBJS ' Python/emscripten_signal.o Python/emscripten_trampoline.o Python/emscripten_trampoline_wasm.o Python/emscripten_syscalls.o' + as_fn_append PLATFORM_OBJS ' Python/emscripten_signal.o Python/emscripten_trampoline.o Python/emscripten_trampoline_wasm.o' + if test "x$enable_emscripten_syscalls" = xyes +then : + + as_fn_append PLATFORM_OBJS ' Python/emscripten_syscalls.o' + +fi as_fn_append PLATFORM_HEADERS ' $(srcdir)/Include/internal/pycore_emscripten_signal.h $(srcdir)/Include/internal/pycore_emscripten_trampoline.h' ;; #( *) : diff --git a/configure.ac b/configure.ac index 273a64814f9a1fd..f40db5bc82e24a8 100644 --- a/configure.ac +++ b/configure.ac @@ -1365,6 +1365,20 @@ AC_ARG_ENABLE([wasm-pthreads], ]) AC_MSG_RESULT([$enable_wasm_pthreads]) +AC_MSG_CHECKING([for --enable-emscripten-syscalls]) +AC_ARG_ENABLE([emscripten-syscalls], + [AS_HELP_STRING([--disable-emscripten-syscalls], + [Disable the Emscripten syscall overrides in Python/emscripten_syscalls.c (default is enabled for Emscripten)])], +[ + AS_CASE([$ac_sys_system], + [Emscripten], [], + [AC_MSG_ERROR([--enable-emscripten-syscalls only applies to Emscripten])] + ) +], [ + enable_emscripten_syscalls=yes +]) +AC_MSG_RESULT([$enable_emscripten_syscalls]) + AC_MSG_CHECKING([for --with-suffix]) AC_ARG_WITH([suffix], [AS_HELP_STRING([--with-suffix=SUFFIX], [set executable suffix to SUFFIX (default is empty, yes is mapped to '.exe')])], @@ -5380,7 +5394,10 @@ PLATFORM_OBJS= AS_CASE([$ac_sys_system], [Emscripten], [ - AS_VAR_APPEND([PLATFORM_OBJS], [' Python/emscripten_signal.o Python/emscripten_trampoline.o Python/emscripten_trampoline_wasm.o Python/emscripten_syscalls.o']) + AS_VAR_APPEND([PLATFORM_OBJS], [' Python/emscripten_signal.o Python/emscripten_trampoline.o Python/emscripten_trampoline_wasm.o']) + AS_VAR_IF([enable_emscripten_syscalls], [yes], [ + AS_VAR_APPEND([PLATFORM_OBJS], [' Python/emscripten_syscalls.o']) + ]) AS_VAR_APPEND([PLATFORM_HEADERS], [' $(srcdir)/Include/internal/pycore_emscripten_signal.h $(srcdir)/Include/internal/pycore_emscripten_trampoline.h']) ], ) From f195b2e3edec8f770abdd013906379bf49176a5b Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 22 Jul 2026 15:07:08 +0300 Subject: [PATCH 133/205] gh-154460: Do not use wcsftime() on OpenBSD (#154461) Co-authored-by: Claude Opus 4.8 Co-authored-by: Stan Ulbrych --- .../Library/2026-07-22-13-00-00.gh-issue-154460.wCsFtM.rst | 2 ++ Modules/timemodule.c | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2026-07-22-13-00-00.gh-issue-154460.wCsFtM.rst diff --git a/Misc/NEWS.d/next/Library/2026-07-22-13-00-00.gh-issue-154460.wCsFtM.rst b/Misc/NEWS.d/next/Library/2026-07-22-13-00-00.gh-issue-154460.wCsFtM.rst new file mode 100644 index 000000000000000..b0a7058f0519ff0 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-22-13-00-00.gh-issue-154460.wCsFtM.rst @@ -0,0 +1,2 @@ +Fix :func:`time.strftime` and :meth:`datetime.datetime.strftime` returning a +wrong ISO 8601 week number (``%V``) on OpenBSD. diff --git a/Modules/timemodule.c b/Modules/timemodule.c index d90bf1f2ef90ed9..70d7e1b3713687a 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -763,6 +763,13 @@ Other codes may be available on your platform. See documentation for\n\ the C library strftime function.\n" #ifdef HAVE_STRFTIME +// gh-154460: OpenBSD's wcsftime() computes %V incorrectly: it returns 53 +// whenever the ISO 8601 week belongs to a different year than tm_year. +// strftime() is not affected. +#ifdef __OpenBSD__ +# undef HAVE_WCSFTIME +#endif + #ifdef HAVE_WCSFTIME #define time_char wchar_t #define format_time wcsftime From 596cd5c5d7b6ada3e50c6499447eb90a065769ad Mon Sep 17 00:00:00 2001 From: sobolevn Date: Wed, 22 Jul 2026 15:09:20 +0300 Subject: [PATCH 134/205] gh-154431: Fix data race in `sys.audithook` (#154462) --- Include/internal/pycore_interp_structs.h | 1 + Lib/test/test_free_threading/test_sys.py | 14 ++++++++++ ...-07-22-12-42-53.gh-issue-154431.U2kXXZ.rst | 1 + Python/pystate.c | 1 + Python/sysmodule.c | 26 +++++++++++++------ 5 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-07-22-12-42-53.gh-issue-154431.U2kXXZ.rst diff --git a/Include/internal/pycore_interp_structs.h b/Include/internal/pycore_interp_structs.h index 0623adce693d465..3d577ff717cc6e1 100644 --- a/Include/internal/pycore_interp_structs.h +++ b/Include/internal/pycore_interp_structs.h @@ -977,6 +977,7 @@ struct _is { struct _obmalloc_state *obmalloc; PyObject *audit_hooks; + PyMutex audit_hooks_mutex; PyType_WatchCallback type_watchers[TYPE_MAX_WATCHERS]; PyCode_WatchCallback code_watchers[CODE_MAX_WATCHERS]; PyContext_WatchCallback context_watchers[CONTEXT_MAX_WATCHERS]; diff --git a/Lib/test/test_free_threading/test_sys.py b/Lib/test/test_free_threading/test_sys.py index 271fdd13c62b668..b8ba933cb01adc0 100644 --- a/Lib/test/test_free_threading/test_sys.py +++ b/Lib/test/test_free_threading/test_sys.py @@ -44,6 +44,20 @@ def worker(worker_id): workers = [lambda: worker(i) for i in range(5)] threading_helper.run_concurrently(workers) + def test_sys_audit_hooks(self): + def _hook(*args): + return None + + def adder(): + for _ in range(100): + sys.addaudithook(_hook) + + def auditor(): + for _ in range(2000): + sys.audit("fusil.tsan.test") + + threading_helper.run_concurrently([adder, auditor]) + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Library/2026-07-22-12-42-53.gh-issue-154431.U2kXXZ.rst b/Misc/NEWS.d/next/Library/2026-07-22-12-42-53.gh-issue-154431.U2kXXZ.rst new file mode 100644 index 000000000000000..a56c3b3a6f21f3a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-22-12-42-53.gh-issue-154431.U2kXXZ.rst @@ -0,0 +1 @@ +Fixes a data race in free-threading build in :func:`sys.addaudithook`. diff --git a/Python/pystate.c b/Python/pystate.c index d10b38def32911d..b6c34552e94337b 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -578,6 +578,7 @@ init_interpreter(PyInterpreterState *interp, llist_init(&interp->mem_free_queue.head); llist_init(&interp->asyncio_tasks_head); interp->asyncio_tasks_lock = (PyMutex){0}; + interp->audit_hooks_mutex = (PyMutex){0}; for (int i = 0; i < _PY_MONITORING_UNGROUPED_EVENTS; i++) { interp->monitors.tools[i] = 0; } diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 9442472b53abbe1..207ccbce41d71db 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -236,7 +236,7 @@ should_audit(PyInterpreterState *interp) return 0; } return (interp->runtime->audit_hooks.head - || interp->audit_hooks + || FT_ATOMIC_LOAD_PTR_ACQUIRE(interp->audit_hooks) || PyDTrace_AUDIT_ENABLED()); } @@ -306,13 +306,14 @@ sys_audit_tstate(PyThreadState *ts, const char *event, } /* Call interpreter hooks */ - if (is->audit_hooks) { + PyObject *audit_hooks = FT_ATOMIC_LOAD_PTR_ACQUIRE(is->audit_hooks); + if (audit_hooks) { eventName = PyUnicode_FromString(event); if (!eventName) { goto exit; } - hooks = PyObject_GetIter(is->audit_hooks); + hooks = PyObject_GetIter(audit_hooks); if (!hooks) { goto exit; } @@ -536,20 +537,29 @@ sys_addaudithook_impl(PyObject *module, PyObject *hook) } PyInterpreterState *interp = tstate->interp; + PyMutex mutex = interp->audit_hooks_mutex; + PyMutex_Lock(&mutex); + if (interp->audit_hooks == NULL) { - interp->audit_hooks = PyList_New(0); - if (interp->audit_hooks == NULL) { - return NULL; + PyObject *new_list = PyList_New(0); + if (new_list == NULL) { + goto error; } /* Avoid having our list of hooks show up in the GC module */ - PyObject_GC_UnTrack(interp->audit_hooks); + PyObject_GC_UnTrack(new_list); + FT_ATOMIC_STORE_PTR_RELEASE(interp->audit_hooks, new_list); } if (PyList_Append(interp->audit_hooks, hook) < 0) { - return NULL; + goto error; } + PyMutex_Unlock(&mutex); Py_RETURN_NONE; + +error: + PyMutex_Unlock(&mutex); + return NULL; } /*[clinic input] From 771abfe06f1f04abf1065d3525d2a1c84566058a Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 22 Jul 2026 15:09:55 +0300 Subject: [PATCH 135/205] gh-153872: macOS: free-threading support is installed by default on Python 3.15 (#154103) Co-authored-by: Petr Viktorin --- Doc/using/mac.rst | 58 ++++++++++-------- Doc/using/mac_installer_01_introduction.png | Bin 190852 -> 157280 bytes Doc/using/mac_installer_02_readme.png | Bin 204902 -> 212896 bytes Doc/using/mac_installer_03_license.png | Bin 120419 -> 141311 bytes .../mac_installer_04_installation_type.png | Bin 125352 -> 120084 bytes Doc/using/mac_installer_05_custom_install.png | Bin 169369 -> 169504 bytes Doc/using/mac_installer_06_summary.png | Bin 157956 -> 155251 bytes Doc/using/mac_installer_07_applications.png | Bin 104859 -> 91254 bytes .../mac_installer_08_install_certificates.png | Bin 174152 -> 169299 bytes ...taller_09_custom_install_free_threaded.png | Bin 192812 -> 187689 bytes 10 files changed, 31 insertions(+), 27 deletions(-) diff --git a/Doc/using/mac.rst b/Doc/using/mac.rst index 6cf945de5b3f3b4..a01dabbf2475aa4 100644 --- a/Doc/using/mac.rst +++ b/Doc/using/mac.rst @@ -29,8 +29,8 @@ Installation steps For `current Python versions `_ (other than those in ``security`` status), the release team produces a **Python for macOS** installer package for each new release. -A list of available installers -is available `here `_. +A list of available installers is provided on the +`macOS downloads page `__. We recommend using the most recent supported Python version where possible. Current installers provide a `universal2 binary `_ build @@ -39,14 +39,14 @@ supported by a wide range of macOS versions, currently typically from at least **macOS 10.15 Catalina** on. The downloaded file is a standard macOS installer package file (``.pkg``). -File integrity information (checksum, size, sigstore signature, etc) for each file is included +File integrity information (such as checksum, size, and Sigstore signature) for each file is included on the release download page. Installer packages and their contents are signed and notarized with ``Python Software Foundation`` Apple Developer ID certificates to meet `macOS Gatekeeper requirements `_. For a default installation, double-click on the downloaded installer package file. This should launch the standard macOS Installer app and display the first of several -installer windows steps. +installer steps. .. image:: mac_installer_01_introduction.png @@ -73,8 +73,8 @@ display. For most uses, the standard set of installation operations is appropria By pressing the **Customize** button, you can choose to omit or select certain package components of the installer. Click on each package name to see a description of what it installs. -To also install support for the optional free-threaded feature, -see :ref:`install-freethreaded-macos`. +For details of the optional free-threaded feature, which is installed +by default, see :ref:`install-freethreaded-macos`. .. image:: mac_installer_05_custom_install.png @@ -98,7 +98,7 @@ for its use. .. image:: mac_installer_08_install_certificates.png -If ``Successfully installed certifi`` and ``update complete`` appears +If ``Successfully installed certifi`` and ``update complete`` appear in the terminal window, the installation is complete. Close this terminal window and the installer window. @@ -171,7 +171,7 @@ be certain of what you are about to run. .. _alternative_bundles: -Alternative Distributions +Alternative distributions ========================= Besides the standard ``python.org`` for macOS installer, there are third-party @@ -199,7 +199,7 @@ other libraries, and are not maintained or supported by the core Python team. .. _mac-package-manager: -Installing Additional Python Packages +Installing additional Python packages ===================================== Refer to the `Python Packaging User Guide`_ for more information. @@ -211,7 +211,7 @@ Refer to the `Python Packaging User Guide`_ for more information. .. _gui-programming-on-the-mac: -GUI Programming +GUI programming =============== There are several options for building GUI applications on the Mac with Python. @@ -241,19 +241,22 @@ A number of alternative macOS GUI toolkits are available including: supports desktop operating systems. -Advanced Topics +Advanced topics =============== .. _install-freethreaded-macos: -Installing Free-threaded Binaries +Installing free-threaded binaries --------------------------------- .. versionadded:: 3.13 +.. versionchanged:: 3.15 + Free-threading support is now installed by default. + The ``python.org`` :ref:`Python for macOS ` -installer package can optionally install an additional build of -Python |version| that supports :pep:`703`, the free-threading feature +installer package installs, by default, an additional build of +Python |version| that supports :term:`free threading` (running with the :term:`global interpreter lock` disabled). Check the release page on ``python.org`` for possible updated information. @@ -262,14 +265,15 @@ there is some additional overhead in single-threaded workloads compared to the regular build. Additionally, third-party packages, in particular ones with an :term:`extension module`, may not be ready for use in a free-threaded build, and will re-enable the :term:`GIL`. -Therefore, the support for free-threading -is not installed by default. It is packaged as a separate install option, -available by clicking the **Customize** button on the **Installation Type** +As of Python 3.15, free-threading support is installed by default. +It is packaged as a separate install option, which can be deselected +by clicking the **Customize** button on the **Installation Type** step of the installer as described above. .. image:: mac_installer_09_custom_install_free_threaded.png -If the box next to the **Free-threaded Python** package name is checked, +If the box next to the **Free-threaded Python** package name is checked +(as it is by default), a separate :file:`PythonT.framework` will also be installed alongside the normal :file:`Python.framework` in :file:`/Library/Frameworks`. This configuration allows a free-threaded Python |version| build to co-exist @@ -284,7 +288,7 @@ Known cautions and limitations: the free-threaded interpreter, and |python_x_dot_y_t_literal_config|, a configuration utility which may be useful for package builders. Since :file:`/usr/local/bin` is typically included in your shell ``PATH``, - in most cases no changes to your ``PATH`` environment variables should + in most cases no changes to your ``PATH`` environment variable should be needed to use |python_x_dot_y_t_literal|. - For this release, the **Shell profile updater** package and the @@ -367,8 +371,8 @@ the macOS command line :command:`installer` utility lets you select non-default options, too. If you are not familiar with :command:`installer`, it can be somewhat cryptic (see :command:`man installer` for more information). As an example, the following shell snippet shows one way to do it, -using the |x_dot_y_b2_literal| release and selecting the free-threaded interpreter -option: +using the |x_dot_y_b2_literal| release and deselecting the free-threaded +interpreter option: .. parsed-literal:: @@ -378,7 +382,7 @@ option: curl -O \https://www.python.org/ftp/python/\ |version|\ .0/${RELEASE} # create installer choicechanges to customize the install: - # enable the PythonTFramework-\ |version|\ package + # disable the PythonTFramework-\ |version|\ package # while accepting the other defaults (install all other packages) cat > ./choicechanges.plist < @@ -387,7 +391,7 @@ option: attributeSetting - 1 + 0 choiceAttribute selected choiceIdentifier @@ -400,7 +404,7 @@ option: sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges.plist -target / -You can then test that both installer builds are now available with something like: +After a default install, you can test that both builds are available with something like: .. parsed-literal:: @@ -425,7 +429,7 @@ You can then test that both installer builds are now available with something li .. _distributing-python-applications-on-the-mac: -Distributing Python Applications +Distributing Python applications -------------------------------- A range of tools exist for converting your Python code into a standalone @@ -442,7 +446,7 @@ distributable application: * `PyInstaller `_: A cross-platform packaging tool that creates a single file or folder as a distributable artifact. -App Store Compliance +App Store compliance -------------------- Apps submitted for distribution through the macOS App Store must pass Apple's @@ -464,7 +468,7 @@ This patch is not normally required to use CPython on a Mac; nor is it required if you are distributing an app *outside* the macOS App Store. It is *only* required if you are using the macOS App Store as a distribution channel. -Other Resources +Other resources =============== The `python.org Help page `_ has links to many useful resources. diff --git a/Doc/using/mac_installer_01_introduction.png b/Doc/using/mac_installer_01_introduction.png index 1999f3a37590933a4ca77774d51bfc06e9322010..81e1f4e5ac5c32e6c33cb5ebb8e36bd07d780a83 100644 GIT binary patch literal 157280 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 b|IdcOB#D-qelGa(e^uvD7tXx3#NhuA{#;`4 literal 190852 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 z

    >nGx-|N-b>n6dwG|65BM~%_mnZBPq0FGhP*sKZ5={QAz_^AGYEj|aGGCkk1nT73Hgid(-URYOZ3h-{%PsHL7(lKU# zs7Ooxw~f{Lu3^yDL_4p$WKBkLEr!r^+r^mcLK<>@!!uX8F78)$bM4v{%DHJ997sHo z0HEBu)@r8Q4*T=314xey-Rm#q7_OO4{iBra+soG1UM$0x50&A@?{KBsOb3?}XgYYC zoFNs@a)CO&{n0-6C+lO_#0q5+u2>F`T!L&bn4WpVuDMc zGg?dc0O-nyfcQmf0Aiq2GWp8G8UR3cj)2fQ0%E|m37ss|4S+&~)HMlt3ZO+Y5Rh0y zvj6hSFRKr&tg<6o0Lw-<5g^nAPd=V49XWEO04|3QA1+Tk@dS_yoC;{xb(I4`fDfP& zNCuS1TRDI#fD?E}oU$+&VB6;LPvg3fbKLkNH+1cbJgtUZe>o@;E%NoLwD zz+7K&4;i{1kgdxOeA<9SfDsS`a*zX{to{yWiCj=T903t&! z>VS$sI8CxOGx|*cCh!StlOqC78w|WVPuoo!jW{96B1>yy`!BupQXxMi18GzCBrJu-#Ap1yqq?vU}l$7mEI!2>g;U;27Ze z=8akJ1miAa$Gz&It!u(zUmw#))UDSZ*7=dw|Kul_zv#5sus&n%%T>+!)x342pZ4S{ zSe>Y7`E4H3jeW|XNt5O_7|aF9jS`lG3I}6OL2#ao7MUgwS#?|{R6gXzuHQ3 zthm;GezU*rTEFtlwY6*4`ggtAPkH?2x^XMl)vjC(QL-gD#gfAZcUhLhlB-tMz&OTj z%kTO+5-~B_lCA6fZ$(KJ3?08wr`0=Cb?z-&Uq4=!cmAjhw|)=#2=UuIv}}Ot_Knl^ z_fKwFKb`o?ugY-k{bjXtW&&cnUxN+|nXqa5O|T}y#4O+<1H92FNFxe2Ut49(bauM?jF502&h{Qe+}!Rj?sGKuv(F6xRgLM39sRpm1NF-%B|k z!XnW|lLt^~f(6)s`J}jexG#067li|hz%d}B{2@-t7VULwu^_7uKPeWOxIrb cuW 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 z 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�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 Tvf2&dU?1&g22U&1>>~aj9`2kU literal 204902 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

    a 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¥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 z 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

    >#iNAZ1Z+*Xy7b<)y!j5|F|6Hp`J=z_Zcm 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 diff --git a/Doc/using/mac_installer_04_installation_type.png b/Doc/using/mac_installer_04_installation_type.png index 9498fd06240a4ed3821a31ca4f194a0fdcd647f2..1fc597c2427ab7663647f3daa3ed71242fe99911 100644 GIT binary patch literal 120084 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

    !4(!IA^3X8@f3_@5EoYn=En6o(NRfWNX}Es>4B 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�hiDxb@pl^5A2B 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 P00000NkvXXu0mjf@02jX literal 125352 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 ?UD7 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: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 T6L7+u00000NkvXXu0mjf2iTc+ literal 169369 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�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%0D4Xi2* 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 literal 157956 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 diff --git a/Doc/using/mac_installer_07_applications.png b/Doc/using/mac_installer_07_applications.png index c8b3aa1099adfc95fc2cc12c336942ee6b9ebd9f..c39741f33ac807f9ca5cebed692b5f024d3295fc 100644 GIT binary patch literal 91254 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 %{Z=I)LF9oni(F-+E17dmc7ZOa*bboa9Qooh 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%0DVl9^4;3@Q(s4UYyl!5=pj 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 k$o-X7&E3@FVP1sw*UYD literal 174152 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

      y(uC$J9{K|TwGKr7rDXQs1zUcBiWQ7zB@Yy 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 AK>z>% diff --git a/Doc/using/mac_installer_09_custom_install_free_threaded.png b/Doc/using/mac_installer_09_custom_install_free_threaded.png index 0f69c55eddb228bac62345bded45b539003af6ea..e867e422e42e4850091f82373e123d1da817c3de 100644 GIT binary patch literal 187689 zcmZU4b8uzP6Yq^}ZES3E`4P>%&5Wp4jWb)B?cQucbtVR9#okd%?f} z07wAIXAV1rYOg1#!T)~=VtX9rpOqqu%%Yp`bX#mET|W`s(gGX(ZS` zls%SHsiac(y2oEl%z@r!_sl`-yDd5y&|oXpVan9ib{Evm5Q9BIp6QbK;F3O-;hT8giPxivozkFjDS@b;|pmf+?+B9i(iqC z%VNnzh0;ln)&$3Jvea*s4Z_s5jfUTog*1v;>wH6t2xE%|m*|p>lPwUjHxC7YD*Q4! zj4t{X6UuPP7bGh<0^SNHpThz#2+K3KM8NoI0|Vm0zA|-AEQGa3vsvCX+gl%$#S3|0 zdibE(&H?}U^OJjw*b*JKz(=cUc_ONu)<$XK;6DKH^6#L%b@F0Vk-8>-#NgPNkp<(# zoU@_DV7#-BmCJ+Kj@2u$W|_z%NL9gO4o{coJ^`{@K4|pn*IG_dR$$SC@u;~dE|5M$ z%<-fLoIiX}KMmU00>*UbA}dBr4H%4~vlvIYN9q2MF>Rl$3P)=fg7b~%!$T4)7dO-6 zhj92o2arCj=mn^ZJ>AmrL57!OB5kN7&`~|y=lr3OK8U`(>Q_|MP)peG{OM8mV@-m8 zd?Bakj2O9dH8@FJ+CJW#B!1IGNC5096e^Hi8GE+!rTd<_j98`KDu=SrFwMo#0-}C` zC?XMS{5=JD7Y$747yfivU!u<_QctCeE9!)m;bBF9RCMe_g!wi^46(|-?_B=M<5)hB zBV)uihX1v&Be&Rj!;@sIfIXWyo$t<-`~mY1;+<)hQmI2?vh=5BTZWrMV5yQF(0Fweo zm{f4x`O(}46LIr)1W|9!#R~d76Sm%9A8oRsn^JOPPq2pb`R(LskN+7JF}Zj5pk>KV zlH2#hn>pk8vaP2X8v?0cfnq5>CB9Lw8q1$$!17HXeN+(FA&!{^wQ<^8eQkIV1Om;@ zDjz_mE|ovqsm6v+gXK}CmXH1AipTDS=t9-itZ+_f_&gWliZ?tH+;0f@;<^{s^geiN zN`Ds+C=NUh(9pz=PzpX^>h7uI;U2FiANNF0h6axJYOMAE9qM{+KhzJSfs@@OJ6#vU zyIW^o$%Y!v#ug;z_`-mMYp1G0upzo$oZ?Hj?1dn)Ya@7U^>b+w+@T}Px5yunqAaMqMJimX}{uIs$M;NvV{SMMvQiT&kk>JI-P z*O_FY@8;ju9x{phIBo!XoTm_~YquMQRXifBWn~?tEtQHUdxDL#0A%>hKHah=`kXx) z1O*G{oR+hT)(-RsW~Ks?f3m2o?U5)7@SSxce&uXbKogh_&inSq_vSmV0PnVe;|Usv zX7!i|9Q)Av8sU@yK@cJVP|KBD#lR)%`Ux20w1}XXf2}|`A$*sO45`iWhtHggeDm`C z$YeUVy)!7(6YF#5!=4dY4cWQ~ZuWJkSI+lU51y^F~Q$Q&^7Ygc<(k*&SrdKsKj;jwEZ?6X) znWDV_WhAf}7?XE21Z$%w?axNgHJYD?(bYwv$9Eef)28j&G^{_HGBngrfGr8N+975; zzAn+w40Sb@uK}_m_-WmVgJ6yy6Dli6w;Z?R z^J-Ra4W+4KDZ^Y&I@>S;aKIKc4fN>QNi!)Pm!)3y>VSsY7{j_#NAPjHo1NNF?c{%E zN>LNL#7C9vsE{1;ws_vV{(311Zbqnkt{EDGW&S7yDB2j4^4Dl6?9a?~G@I9PysFly zKL!kuu76mlJu`;5*y1tT7!y2MCHoS-& zVcab4;hmbAY%e17T7HDVC|uQFkgQh3D9&(y9I97v4?Ch&LpkkNJzBfX5`+NVsy8dj z_;N||cL}2Li+y0rjmF$miWYUUlUXvBdVZIUQ7zKX1o}7U?`KP2OvdA^kx4|=}@z9P}v5uz?`xVi*c%}C4L+}E3WN0XfW6Kg{?F6Ib^tk+*eOo zZ;1=cw@kK@NWO>#`nl(?CI$Jl9OgLsK=GKf`dy5H$-bY!b-V>JcHkGBaG*!#PF-B$ zNX_eog;Wh+{$$cef+FQmxT*^7v8vqhh8%goGX!P`P3&_-YegnQdq3Pqk>wZ1z6G2cO<6aZNimUoDI^E<( z&rC%LAnlZp)nNIaqk3-Z`{f_Y>{p;U27)7MeCDadF{pS6| z2Sw^vLfS9|6P%L@jsm92i0gTs>;L(UXmum}ueuectKj~GlE?eu8{Bw*{6n|#3QiLK z>vA0Bw!|Xav)=)ESP(9ZfdN)TUO}yAeSilQgl zm0NdD`SSId8h^2I>4%c^9CyKY&A7%1AJM5tl!z5U^e5-wED)%dYgS)cug-skP7DXs zn>OBg072!r8T$BAm#wSAk`%ztwcS6VdeEzWHcsGgS%YI4T@_|f|-qV~wyA7>3 z$9{H>kQ_8?;mN>3n}xeQ>a9rfM<@%_d!yc~9zRF1Gj|O?)g%PUv)i`9;mK2|&7_`V z7L4;>J?~@hoq=K4cUgPjrJKHzwdw5EQN#9&dF}CyC^pxkNP{nmei$=#t)Tx!+F9?5 z9&oS^_}SF1z93N-*=N7Q9=mFX59>qMSVXi=?d0(#up7KpxRgSyUon1lM$7Zu*2Dg= zx!kiA3kI9z_!{6B0s(zf;%2p6S_9`Fd*z>r07=LF4}LU>_$k8U^28RuV)a`dBd|DtQd%2Y9}Vzp@vvu4>?`m+EEI6YSn*vcFt%>{7btL_6c)rCSv3y3@lWMQ zg!85_f3klZ9rCV1e|A&{#q8Ld?-;rN^KYc42iwHif6IefbEpbByJtTv!2W1hY}$Sk zkfdK`w*Xsati&e3SEHvvsDN_%nDMVi)r<{K<~QH@IBLf(q@tI!(u_qGMriKMZL%c_ zTtZ*JV)_I3*u~WFQf1a1;YFYOW`4aiJo7Cue)pBo3BSDK;-DFVWc14v&aL@!TJri=p0n)(YU^vQerkF(LA zf9hIDHO~uzYjeBFP3g0DGTl91?JVK20ta$#BFzSxEm!Ju)q(Mg(QaDvCMV>tq2XSu z4PFA@#ApC@jek(6cpYYPj~?ue){2dGX@#RMmg@@U`L2|H>AD>lsXD$7V90asJgd?+ z*^kDH$?V?j=clp|ga(EZITKCaVGr!tofeNc5Z=P5Fc^`OS;ufrt8v0iNsP53UzD<| zbF@UUoXd15l+5?$1>PF7ywu*kuFW)Uf1{6KR~NV?`V*Ot&F|7exVcp-HXrj|*?7$* ztJxam{YOYQX`Wmg;fZkew%b_{SgyGoor}$0fn6;_fsXkTp#@(YVPXrX|99`1&_{05 z@x}GkNN&^hli%H)8iKM239d9kPK%!A^SVQsSi5N+fAJeQlkxjeqs0l)uouCFZH9MU zxiy#*ch$-0=;(=Q!^!^L%iJW#R>#xopBh4?c2!Kc1Baoc>60`F_&@yTcD2`kcx!zi zW%0+D4Rh>GvYne0skc?>Y6(P)X|x*6XA?f(j|63L&zU+~^Gs}XGmVuLB_ur%2vPiPD?Txw4g&twFWa7T zF$a%-WlS-A^`kOBB|mOcx;<<5I1{pul%5a*a{D13+@t)-VEsw{yU!Jzy~f!+<(8bNd_K(Bt$&DYpv|KYavN{x+M8%Q3!t|L4Es>WJ%tJSoTLL{MOt>>Y$?Fi?9SS)t{x}o%9{-%V;#3xVa zZX+FEpCLL}u?{W-%6NK=2_g(}E9L4zik`PLLkgW?v~H2|rR4B2u|J6_+wU&{&|pU- zVf+z%FZwSLavV%e)8T`((Yk0nmDj6rghEYzK$cliP`uNG$_Fm`r|JdrJp&$(JV}rQ zF5oLUU-lEwEQ%K^HST1{;^SiY$zahPRRLVp6{(P_F4~pMJdFzUyS<^H!9xMXGb62u!TfYPrO@mfFd%2jst0^ZP8a5RP{-P*}i;T7L3?C{EB337Y3@o7WiD zHp(cbCxO#~()YwNt@G^6QR8qGm4ws`GvbdPoHET5<-?23EEobk5grq0H%x}B)gn>B6-HrW z9%87F+88q-f1FariaLMryVGGc`((kRbY%^>bOeOAZ%GXD<>a38-^)jDp4NZfl0~p2jX&u;Ukcn|~~k^4lo5zl3yeSd)sS zk-+x#1fW0?CtBxmVs7m01JoUz4@0U-)P9+I3ex zCml}<&GkyS#P-s361T4D#;V>ZiflZH z4=!KH4q865X!p3(1aN6!4J4rC1*sB>33;05gOTu$dqapQ9`@x{TWpBc=&(2eAF#rZ zLbj)>cpDOF^h?SXN54uNcP3TWo~3_V`>@Gfx%0KHZ3!pw5f>j;x6CYDF2y#y$R+CC ziH%vehK(KHMHTnnFsQI+ua1qT$z~atG$RT`n)VlubwWl=P6&ALCI2;n5ilz zY`Hu^C|AbzIxQ=yhMZv$7EA~Gu@WY^AhaPZJXb(MTCEd@+S$Fb{4Nd5@&Co#onHzR zrD}Yb<~6#RTZ(gcya;s99zIL--0(E~7CfU#x17tS${w-VtD*@Uyk|4qz5rLS2SL0I(hbu=rL~8RB_}eFVX)!&uBJZY`M__L%9rdIJyNE4xM6# zRGTrVT8tHqp#y<_iq+iWF?Omse-{G(Ex6V|1jl`GLd53_AY201wn)HT3>53S2M<2t z_w)P5nn!?g$T7`EOZR6c9IN8`F6WDYI>!^<-Q#WhFN4q7H;sN*$lOUbL|LMk!wz-@ z%NV<-4Hu)ATdYcqzr{Mm=7d1<41(5=M;_Z@LKjd#r?-;oKjMtzI1n%>`mt)%tg`043# z7mu;y8k|7lA7O=+Y*Xlz$_2BKKO|iK_Nt)9@1e+(R9*`*WS(ESQ4G8pK9c|D`Yqoq33^c_ns|9#{!eNfv#7msGVs}r+Bw{ z`A1ZPq~y&vReIgoZe@mboQIQva1xSY(?%$L-7k1Q$OW4VAj;JPRcQQ&wI!(2^LDoE zs}el`vAEK`RVr$MKSsJ9g>5lY1)R@{T8A$ z7A0f>(&LtT;HBKgG1@INCsQaY^13Ba(HP)wdvbxxhyC$R6Ah*cYz06WiUzAp?Ym?l zf2C%VCgfvNEDq*##?;Z>$ib~-$vh1v{B;MW>yPd~REKPAYwUuqdDV|gbRVP=7PvT<*=S@;>Z_-xW^_-d2?Ufi5bo4N)4=SrWa=+&KDer-=DDI1G>h-_~Wj74}ye3;!xD!w8YL(!}_B=X# z)I|1N8x@?t9QXQiE{qF>0ke&R&9D{xxtRI>yik_#gVksHf+G`A9GeuHA!kBWhgB_` z!K~A~2pk)Ztj~RW?mf4L3_)i#-C!j--q2G#SDw5#0~ibFwpO`A{`f4%=jQ|6UmrH1 zQdq52ii$aW9>}F?`dK)7o^S(=zE0vzaLs3uTZFb*q+GesM`Ls~Jr*Td;Z@D6@HL%} zc)IQw_~$jEOamagi&$;p z3%?`f`-R=+&j}Oljut(BmEF8j4HH(0Q+nJD=8ioF8#L!8+~#Vj1zEYd4sr z|8_p!w4@6Y{ZZY1X^21iKTG(#oj&p4cgDiO*jmhFCo=M&U7aBt#m+ooszl_w77D4} zNDzn-fXc~i;$kxTE7>g5CB=8SMq<1^(FEObqW zp?ENsRrh`hG&|n?B;k{s`F*a9nS0vn@zQE<#1}(&AuLNcMYe?gLW-b?iM;J<36p>G zz6s!s&FQ*H<0khJ+q3KI!q~bgD6{}fUS$gu&y#S%=7$i_V*5Y;b`9z7%|ka8aQzN# z${U)W;m_ep^2#A6oLla@6_8s`BxHf1s_1VIp^7ylpx86!W~Kh40-uNt)c}AWDTTU* zj&C#z%}XQv(n&7-kwgJU#;Jz@KkbR8tR<{M4S$1x4FufzJhg8{*m{3gpC*st6$bCC z7Y5fg_VR=axBaqt2QeqeoC3Fb2ozpG^UZaCj3Pp>nFN;v{K5b_46!Fuv3wTz=FuhT zndkki#EQ@COf}@_*j$lJknuWrJeA!XWXwWgZ8u~0d;I;;PF$0GKso|?8i>J6vs6p; zcBm-uVO0jC$D8GN{k;7YR$H*A;S$zQD*@QFWln^;)&Z_ zIF?Nv*FkV3IZ@Nv%%I&0Thnn{ZfU6v{BxrgOCqsNHQWb<&~_t~pj2J;Q$yxEIxYu9 zPaI3sJ0k(A^JHk2_VQH-TAIdMFu|zGRWn?2`Mk!4pjd&Cg6y7DvqG~NJ(k;$9h7hN z)sxWMX_qc%MRNc6VQ#>T>dz1fum$bb6<}u4_zOXf8K2XsTpsswP-8cIbc)|1sbfG` zzLXkmg5SIVia`@N%`ok|?b3|XI@(L0gz ziq#*KSXK>9O-UDqAV@4cgcv4pKy-N(^I*nT-BW?6wLg$PZ@=nlz5M&fB;?EfKN@_% zin(q#N{J)V)iqxKeEO?9c$}dfGy6z5bE9s{`)xx(E9loWy9)#u8G zoBf6q={Dct=5X@W+Z4fQdj9vUdf69C@+Lax`COLhjF}hT!~&1gvsa^FhoA@b}Oq^vCAY7{Fe=cMsNP%1qi12=jYF(>evL*)UDH2D z9IHmEtMI|A2y{$LRiFCvX~$M+s~vbi3dxs|+kr{>7zeGoVZf4e;J+ycD?`bz=W;CV z221ND*c5X#lNStj7QI+0At|GN8H`;1GrtFi{Gu|cU}6NIlLP!-+n(+pT=z>9G~i7< z>U%hz%OE%jPZ+Oqr0>+eM@h_GwLHO#S3zpy%FB(vY1tW8p#NQl%^U!I;k8>Jmz0h* zuX&+4oO|U4$w|epKc9yMqIH~CG+;+&F|W&z#L86t2NKNq<-%<*+m3|Ec6Tsxo&(K= zyk)vkWivVb{5gU=BXL=w6Q~t-xb)JWFKm27h*=~X1z)vdDfDe^W6vUQWlC_5da2L}k=A4faYE_x_%n7V$a{+STKH)1Q ze6etnvLYNc5i}f2eoW~PzEn;VI!CUH=cTXgkOJ-ZtAnHKW3R6s0b*U0?iySoVbuqK z_L2nEfx$yML!}7y~~DGRd#$bt27#wbPUccF-Fa;G;`S)W3ZUTtkef?Wf zF=jb-!99<7wy?H>8;U$hOlZlc;=_gcCjYj|guGq(_~JpQ>nMo`?ixCOX*e%vk~NE6 zAb#+-!r3nygzP+Ze-Va3Heu!;EN2Y(dxMgFOzFf!(S$PKeK)b0k*T@gpS_a`dn(Pe zA*50zJ5pQE%p2PmbZhzcN|E8hMsFn3s2;;!iji@B(&cY671Gua$F<~YK<+cP2Nw># zPY$D+k1edYAl{P(Yq~H3MkC>On4giII7etQrK9W@3SnFHo`?TaEZk2|lo$0QW-={} zA4IdB3-Ph;^2h$-s+bJqI!!KQg$V@(x%h*q&IEyv#{m;f~GQ@*5OoI%>wIa_y;8Qthl6j#e7_^YB|##|JvO_#u0s-C%y{D z>~-jv&`p?XJiK z*1wGiu6-i{#dG^(*V8+jvusP2ML19E^^S4nLC@EdfA}`ocf`qW>f-)odmN+td2pK9 zYW2rED74ORPV^TLhcU@lgnQu|d>{&FcDNbUmVq*|d$Dp9I?JN`w6oe{6!;*f!&PvNvPUPSkI{UGX91 zy3?rNtmlD{$)i@^pb%!p4v`8^=9Mh{Hw|!9$4xl1wYpP^4W>nsihuE3l1;NE^wkrQ zXxeP|(?yD~bz@}B3Q38AJvb5L+48~kC(+JyF%mE$nOijoaF9|;Ot4`7P#wq~Kei=# zA#(YcSy26-=aQxo{G+--7NqNl4K9nPpi+u?y8?uMeY@`db+~(CX13Gz>xirr(O?`K zMT1(9ZNVHsuDwnU_41bH+^MW`Yez@md zO83`>_qUe;3U< z%?=;YB!R%k{e0_H*PH8B3ayQUg+uHLa#dP~S8%b{mvL!I!sNR>UhS-)g#nX1d{qc*i77U! z#@I2F4v;KSiDh(AZuftDME-^mIVl0cjpsEwl*hfE0{&<(fe)>htT)(FLMH;qJaOh6 zFsPkIyrIHJ%=cSV=sOj~)KzCW7(()zEz5OTK?07b^~a_vfRhDQzP^gVE2C8N(6N_ac1%mA7V7Q z4c7V1R@oSAUS(@83DfSW6My?v->NWHh`Qeo7-#0@42L9G8}Tlr zIPGoz%PUCg-wp1W!pP~jp=oE#S!kw}rrIaZHHi+y6Tli;ey&A7`YII!K+l`@^wSui zJ)fb5esdb228N;qPt?U>g2f>B6a<6v>4f6$=bZc9k2?3-Zls#89zqR3E8TR>fbYj= zA~o7LMcSt8*tvJyKw-$M1W99V7vJv5r&@y>O7lNueGm3CwmXrsIl@@pZW!!Ig&&}hdUa-6kU_J6Z4zg= z*kRrJq+A_V80xm>hNCxtD?6l8Y}b^9I>!GAyXG=bEkPW?hw@pQiW?j=qfoHJu#`);n;6N%3#A&Z}yWvs3bm6KbHWLE5+;3CP`zEKp_=J`)iVNk}2Qm({ z)k5cH7cQ*J$ZV+RJYl|J>n67aMhEVqNJzuvUT?XvQS_36%g{~Dj))~g{)ZaM3^4KW zdocpp>FCuyRFGT+USX`SX!=`HWT`H5Qq%^U9WVMnfa25ndo+_Z$DvbPZQK5LE7A9L zK^LsT-@2*$W_r(6(3zP)!M9Qs)TCtD_vEPT6s4+o^9Apm$vtk`PwSAS^kB_>PK4fC ziTHnUS3c$yC#pu>F}20nOmo?7rgO}kz7YHv#Gah|l?klw;CUByQF0&HeFiQgb>1+d znFL9JX23B7r&W*!o8z(?X3&;Bg)%*fiYOzPp0_t_lYxSNPeta5R^)o0cp=v=efx&_ z1J>EsNcZJ6fKHvkxAruhH?;32E@V0yk%?M~mY#k4o zT=Rg-Ow3v6J9*?9^Kh-PD3q7&l-jJ3Vo}oE@p8&_RyObQT57?Rb5P(QX6OV;kOgdk z8$4^H2e3|Y>gZms^@?tmUoeJ+oS?i-4S2Jl6-TxW*PAjRN+w3yz`dCdnGflYWjOx_ z{3L&0WLW10BXD{vqck&kBU6WQ>ar|NTXjEds)NAc(sv|B?kTmbnjV-V4xUa79_uD_V3RJ}V{_pIhYzF8oS~dt`rsITSTtmUh?kZf6-cX;# zLCQzJ&3$0yi?OWlR139Qf`wrT5!XgT__BXI+aF93`Cz`IT?bh%_-mdSb1(||y8sMO zb7vMJgAfk)lD=g7r``yoFI-lU7GhP$C{-cgd*my(^3l%Qw8g5cOd1zun;0j|wTfjs z|4yrFxU7=Ug-fk^?bYN3f+RdLDi(TEL93bfpA>Tj+0v zMzOnFd5qX^x_3&C#_^q*M)U6KlEGPy>agMOd&*v0jg~8O)Km)1=7Oie2T-cq5U>8R zwz0A1KHuD14f{wUPuszAuXju-id^Nx#H>*gTqCPDC4YQ7pt%+h;Z6mu<@J=`AF*(r z+Y^LK zV{!JQg|XBmMrh=o_G_Bxu6?6Q-V4y9G5GL0z0E76&yjX==YtLaFq3ra@Q`GHy%@2Q zfQo5HWslwdT?ZT4;0$CSUigQ?a27%2QyD)&I+%$Q)$W%U<2bhIbmPX>;l_U1$kckT zBKcXDot=Bdv$B0X1HD@~eT~ z`YIhR-hsqjzMbwj_d+31^aM4f!aWTqwJDRK;udwEsx~Huz$~%@bmrn;zb?KD2HQ&zlXul0Es2QS+2< zf;<2Gafxzf5_av3yeCRosofU(Ph{Kjuhy9kjsi`aJYq!V^vWNxX*zm|&JYnKNsZwI z9aZG4qaxiTiIKHG9!9wT2>|qb%f-%qu~BqAs?FOad2gw>PrRUr)d&pu?prxlos8(j zv-=ob$!NS&+}EuyY_PS-{U_zyQ0Ang<0A5BRUV>EgurlxS-->Hd(G!46j`#pu^nz~ zA2}S-Y-0SF3BfqY?Bt|D`ReLw@9k-8cx`R%`DX7f5LFnKG;pQ~x^ppKOKx?C_;LRB zdrmL514-{=@-*p}0aAqZtd@kMU}KM-3nGQ;SZZMWwDq=ryGPua$LHobVopxZ*~3H0 z&F$^q6DZREy312oIBWf{H}0Cn?|*oOkAyLU1IBN<6kqY2x82oY3T54OkwmX7R~%hK z(f(4H=r(7?S5MowX%EfM&p$t2tUZMO-$5OjmkXtsl%aaS_BR(rv->$3Fe`-H)nn)TWj~rjl|KAxYsy$SRvjz7fKOi^UaWm%JW|J%& zd9#l~r073H>r`d#SeH}b($6= zCc#FtB0d_4dB3&5IWX4CWk_egsQ#yXKzVygyFI~X<8hseL$4?Sx)nFcu&l6x3U<_6 z{iv72)RD}4dP@Xc!%|@lyT4ztZcQwSn1%#!ULTl);BH;8KBDYNe_+bG$0H3gblHFv_iA9?&$78KRO+xr3V|kNQ%i@Iojl@>c-vvYwxSlrp=()f4H;m-K7(j&n5NH z9wA?N;ZOVz%;Lg%;N~(LnVt+s|CeU9R-dXP0Prjg0MtU#MP;_m4p};;YZI|7B=HbD z>Q;VtTPNvziy91cEBkawAw=mma-nZ`Mh0}jTXsL=c$fj~=jQ`&O7H=><>jhM%95yn zTud548WK#!aCp)3P-$A!c#2pu00|Zp0QSFuy}qiclw8Pfb$!^>++Hp?PpxcZWu%RB*|f(awqn6U#)sp(<`3)5`neZLCn=|~m>3W6 zt=$Zk3GBhy9jx4L+#ro3kU+SnFzBSeb+i1cK6-5Fh@&c6I4* zYU#wx80jS1GWUnma?K{%UuqRUk+y#_xDEulV@Y%c0(%i34bFL)M;-Mly4BiT*VeypAk;g z`hP5=FO1+k@&ug6#>V;Vl}wG)^Ms+^CS%WA0+8RGg)`=|>vFSh7{EZvxfLNJKw@+p z)2Mx#R?*_4Zj?bICXMX5g5rb#FMw6}{z|W22pckV3Jr~P3T>51ckmd_+D;{%NP}Jq z!ha=+Xo6W^FbLIdZ!f3Ibqxd@hJ_SHJ;XrG+h64YYEMkWOrN`h2!AjZsoUN~vULT- z_d&09hocGS6Tho~LMLiK!M~@q*A6#mNeEN0Qfn_QKA1oToxiF9Fet?~UZ3w88|^Mj zAWx@OB#m_{`aqa0#C*$Y4N}iyCYM931}K9+^Ky3t*30d996J<=TY%4DtxxT0lEu#F z@fc}uwNejNYgv!IV!a&pM#SfCJ`zjHn?bMRz2Nrs$%hX2~U2k(pXEN~D?Q{>aYIJ}2ZCQjyE^fYDYmm-qm%mu8 z6M=j$mqV-7TuH?1nhRRBvw<*-$e?6Kz38eW8l`+6Z58@Y@8f1Of#Bw^Zgum@f;}m{IA=`r_=2YT5$;8x|Md4)kMP#tX9n9mY!FP?e{`Y-t6^G|H<^KBC_6T zg5@yfK8kM%!Db?U4;AB;wf`vC_7L3j>jT}xwgmAyL`TC^5=nc!4L6Cvh4;s65vVBc z_k6M3aRO2am}I)=P|O#pFHk<>WXu{iTC!CJe-&kWj1BVe-pDymp!(X0u-5DC(cl5oXx&^KNYH}Y&Ppk)>m`s z#wt_TTM3k5)r4o#d}-jVQh=h`xmHXO_nBQJw;y0YSydsFzX+qKo& zZOR}M!tSVl-DxBxMrJcvYqr8@cE3N4yWH%o=np~pbG}@6x=@xNpT$ji8VfoiA<4w@ zR*1l+pUdKLVVTkaxslHsk>j>da@5ai=%?72v<*~xm=ceWbsb`o!oJSnr4g=m^qY^^ z<$xoD_8AhcTLKN1fa9z1_pjJEkPFgy9%=fs^aGSPW3ygYFHy+BrfX<-zL?wW^ceho z0Xo5hRCND%Z35^thfgM{>GxFmNdZ!N*-r>zP`H z!e=FV5q2{V;FpLYQfn}s6xG=;*J`Pb&G0y_#fLCIT)8(pGB{hT^0#~-=Bwr5Q9lkN zXcRhBbasZVg>k0N`BZ-)=CUvRMwczZXS;BW0G?}PWEq8I`M#szF_g(3iR3Vt3Gw>& zc#*-N+cDDGw>6d~a|qj$!e#TSob57*o+ULR(@lZz;9y943988>we-5)7Gkz>zFhzA zIIuH>eJxb1+4Q^2bTa+AcgIZj>m%SM44o2Y;EgET$C}(TT0ouXOURCqcf9wCbPK#I zm?K*@G?Wl+I4txPz5Of<%01`+%}fxTQrfs;gU9(Cm2MA|I>6rH0#Nyq(zV_lP2 zIIUIDIvHBtB+(S#`-dHlK~cqEt}@;UrE*T-{35v^0H%p%RFF;%f< zxBH`g@)xU3DhX6_ffxpP{3{OdobE8l1d5=CO>TFlJA#Ta_CxsDzOI=_w_t#UTEPS{SuRm7elHQ{UdEh-ykm2go^s z>47LOm$njxhjWK35(Evi-R1 ze43ibWNkQm%W{~~z9XX;oxNOdE9h`v3qrtgC6z|+Bf2>>-}0MjU82tONHH5Hy@ziT z+;55*X_y6Vual^O?=>-<9F}8=-@n-5sHy~JI`Niok|GZS?&pkdZfwiBoeYl>W`;4Q zJRlZLxP$(XDJ?0X2uI5g{Y)&DP5Z(GQ=%Jsd%Cirmd^ydq8BG}K0oe{V)%x+^u1Yq z_igWoziM~6@|E1g*o21^Uyf0`dEDuTS+d&d@)9&^x7&lhhDrP_QyL2qYY9?Q3w(~6 z=_Wvbo>6h-a-;o7yENjO%olqWj`??zF(ol7ughg76U7S}!1e9+AfhAk@%}_bHwR=` zjMH(Hg6UqzP?6yePaRcNRc1pZ#R1|=oGx+d}t6xSm4QZ2PVHkt0HU)_;}pzh4{i}wFVUs8;xMIl@^@bA4S<;>Cn9iaS!=PmyCzY%0R3Ko7Uj@b7$yk| znfj~9>*FX>Yc1dUnRj|O9v|ZNsw;zer>Irz4-D2=m>oTtNzj^T<1_; zU8VRu+B^V#DcW*r&A_yKO~I8o+PwTu{_hdbUnHBHpl)54>Yv6u8jld|rdVEfiI%qd zW^vzDiYa7ajv)>M(c5$Zv^#3ZSKRAsn2u;9%ythT+F}86p3vfc&iYxy{cb!SkHGqQ z@6Y$|1JIIC@q~ia9@${gyl@>zJ)AZ{ka{1nIep}Fpj|ygN0Rw_JP76itn25Io3ng2 zFB}ayPG2~lkZ1f|kAuD%VXD&=2%k^&>5c@8y5N@LRoA151)?)cQEUm315~JYpFpIC zi%PJ=9Stp4&0AaoOoqZt;ekFBZ_b&={hnqnoi|%tx#TZJ zFvO|L)#d>%)8l!l`gfzs#u7c)pqJkE9tg78wRJJ^g%jR3%JbuoV*;KQ97f$##*5Q` z6(cw`bH!ZW;HKxGcLPSaP)!TVRtJHvlrJAMc_JO&mQ{?7V#RKTvGqE&>g*#k%Sw;Etlq3PNhk}4Q{VCKf=av?<0*~`1T{MFO?h?(0^w4 zf>r^WD@4s(=}X}krgK-0kcr@tAY_NeyKsl})EI^Cxs5{8$2V^Rud))m zvBZGh<3bIKe3oOW#qtg$%Z?#sDnT*44paO6Ks_7)IE96rsb=(TbzTwj2xM4|@bXnP z4ju;d$WDAYH^W1B1-Zc?DKpN&w6-U66x7UKfoRfeU$mo3_tF;EMr6eGsIQD%|^ zFc4}`rAK9Ovu`!|PKf6MWW}N6d~TBUBATz!s3##^+_B7}Wz!C@+b~lnWkk-#2wsmF zcI;hI*K?%ml6h@?d;NEYz)7rqxRad?Nn$tiiJE198!z!Ho}mf?x_vP#^e0F~C+kqJ@6riMv@(p}@5j z4QX54WujyMtFl>3t%Qg0eJ-SHvY}To^Syc>F)`K`*~RyqU@8Z6xMIh^ui^9T*pCDdR%~|rbW@C5I7so1xf$}JDFuel zK-raVy6p2g5W}Herm&}kowW;reD~Z(OtnLH)~{Isy07{Td=jQJzP4pD9FNXVXGuA3 z=RjZ8{a)r)ovYuzlUNfrZrz`f(n)c8_aHi#%qJOApnwnQhz4% zB~*^L`(ch;0Kmam>#qBJ07ro>fVudHpgqZ3>{BvPsasCCScqLT>_8FA&P;GJG@{bR zboqs~nsdf}x7+9fK)b_YCY z=UYRLm?2!!IQjVG^O`$s8ijq4O}lp0_NJYwegK7!Ra=uEv^)pduJ+ptoN$ zISf<5+KUs!?;MQNEXBOpThhYKhCR^_jDf1D(~M*kw7VJ%8R~384=zD5+F{B}#QqJ@ z(NBENswXw%K=q`p+vDnAVi``~7NgN(?Ud)n-8(;i=_pJ;pI&srE67gcwZBDI>8z;~ z%SwHV#%zU@i?E^zQ_#!j#lc)@^ANcm%<(K(?So#W} zIJ&Os#ogWALhwLv77Y-b;1Jv)$Oa2;!QI{6-JRg>F2NzV`#;b7{Z-UbMeST>uAO`O zboYcfAI~xE(ZQABXu{<~S$&5$L1=;cm2n+QDde2)s7SPhV~|9T*13jqllj$*%f*Bo8`D68>grqFcS4jAwe5r2eyiYqUpRi+hnx-BbswgEM*jUT4r-j5}|gPaAw?TgQLsUd)F~J$(f~& z3K}}#;i@^=eC1Qtp;7rR&NP&aiO4JGWZq;iJQ2x3+OL9}AkSwO7cTUpGMAg-%|HkQ zRrw3`UipyubYd;gdCLvhYpokQ3#5Nu&sy)K!!du~9o7Xbqfsv@9F_F%@AiES+?g67sbIz+N!y!9Gi#GOkEfzY}Z? zS=;e^imj1a)%`t-pm--Wx?*t4W`ohsfzXb4L(MyES>0;OEv)nBN{kmI+#S`_Gt$Zr zt$8~tuz`_`THL@nnPy19bPiLio}Yx&jTi;%x~JdqYi~*<YrU=UBoBH7&ho8|4eX9Y*ath2f_lrc>J+znS*Nn5 zVFo$Y{|s!F$+VOf9Z|(4T$2uaMiX1;+tGqGx*Ya1W)R*tu@I;_>IxD#vmNGRO~#GgIS!Y@rQB&4&F0w&?1p4e`fA@LRQ)809*`_a`MFSc@5 zz^=RoH#%K}A))Qk)jx?hz*WfDWSnJyGX$|_t%-bBDvx1E`vOSvP?4S#}Y`zv) znX8Gmvl0M`$PvG}O*3(dt%`56lU(;aZ9{K9FjUUsIXvN)83cU*x26zCbX_H!&%sCw zw6C6IzFE*bp}C4)O$(bQKr&jFDSguP4!=Y#nWkh{w7cxUP21h6OKnEj1%Dq%9v5W3 z4VGV?ZQ#pCb1EROB_(mDIaZ^GM4=tk{Ufo{7@30t)3<2cm^t#VQ3y?AwBn#xxdkw{}B%26= z((=kCCFYbhsUPQKg#|v@nF~a4R8h?O_6e1cdBs1TZV!ellAX0Rq2C8~=9iXvZ`{AS zrQIDEb3GD1dGQO+o>19B+~|{{%*FO6nRzMeerGB_t<4a8q5a(|^G1VKL zTt_+r%A=%SP|stAM?+su(1SS&*_e*dCG-WdHVi(=sOC!tNA`wwbezd1fCQM~NE z?bmvFu%4Xm^M|yYYF%@qolL-Nc%Zql^HbP7($nJl#rT0ilg6lm4hjwLC8?-U6u~sGxP&T zsC&?9()aU7@C@=itj&c>e;DPWY2zZrG?sJx5Y90`2+4%GYTJB0YYK85T83)jvj->N zU-Jl%z_6T9o*yh@WVlqtmMhI>EBi7lhu4cRo#g%ls6BvOoMX|%^q`N>INSks$f2wx zyn=b>if~?Wue`p=6!X`&*}AZ>ZEip$IDIx$NSGncc>!(k-~Tg~ldx}*m%x_9wj)>b zS6ptazxj|&HIbbo>q+mQi@tZoN>(xH2cdp*)V1B6VKpP%N?YHuYrdo-nEVqeY4HiL;{>`#6NJ0@#T=C3)$B%-VBZZlR=dJoO z{!$9>h%lw2`Gumd(hBIRL#zSaz* z`yHhFj(3ksg&L#&{0R$#WyA#4DZY=XmBo)c$$$w42HGjc-x6Si4t2BAd%TFB!(Pz0Zvab%1H<9czstX$UIG@`cta+h8}uv)Pf*9y>nr_y zTf*=o1;BZwgHg^7)5%k0ak~)xh|+f`e;UKmR(nfCyLS9H5w+a?5N+Uw1$j&jGl*`5 z5z$au-c*F#CWb$iqaZ~3WUfz5z{A@PjfLl;9Y84);($s2chy2-^lqFju2DX-@&1!6 zHPNU;KH3VZa$_Y7wZPN`Q;VSHB$3KbxnpJBfd3Y2I0v4zjU*{1Qa4}ne70-^l~=F` z9?>D|KY>Xotc(F}Gd60tB-QlIzcs08s$J@ z%Po@hH@v07tD>~X1o-pP?uL^?_`Uz#85`N>A8XxST|t-k4PARm78ZgwRFPyL z$)VJa$HnAWT_r|Azx@D<4W~nk=2SciUN3CFXpi`{Fo086A@Vt#E47bna{x)oNeGrXQVGu!g^PjI@#f0_RWBwouc1FY zSE6dGTEqVx%};N~;`aUJTCwG%vMs-|Qh~B9(Mhqm!|2Q(D9F%=yj=8o-##zud&_ir zz0MqPaSJ<-pN>|LkgMiP$1E+1yuUz*cx;kggjHt_Q0O>1S3HybSPoy`SJ40Sl^>#F7To)&(}3Y(pH+!;4E1;broYW`QRc7Gbe9b` z$5q>=VK@R^O5it{986m156S^dLPnXgmDAMuz_-T(ilc=Jl1iCSVAG;Rt(iEcvuYv_{ro=z!1<}hTQ~JZBT~)$WHul?oReo3 zCP~jZMeue`)e#tgQ7!WfIzVIwjYh`*O)7$z?!QieyQ(@$fXft06l*EBP$$P!CY>a` zyKa1b0ry8?IMO+b-RH5HcmMrq0ZNWauZHp>IcvdM+7)_iK== zn_0zCK<2=lr0W=BCD#1A{-kNsD-MA5tY7O(J^%KH%(S`K5efaO|E8vf)L*05=4^!e zXLmSmI&?|s_~#=qdet#4r$+;~&*xptu0)@Iq&H#!RR1PB{e;4+^)KO%Ghf*fpkUya zl4lI0Qh97YU=qi?y*{r>SrFrTZqyhL9`mAluzQ8ZL?m%sy%chX;xff@l;v8F#llTwkSM-u|VbzarZ zhuk_SAWCUWC5%!U!&^#6`)T?{<$4UFv2lNYHT36INtUCmbRI) z+3$mFTa#EQKcA&4ERa5V2>an$Kr zSCSIrjt%6JzG;WBoDfEp8z@6#Lx?%D^S>qK|AYbSLxzW)KHL5D)XV6+iB z9nDBS^8#~bZ^<|+0T3rC{Uv_Mfp}>DcJ5aHbLt@vioR#Ip0mo4>0;mtmCc9q+ z&YJU5tF%NQ{F0$w6d=E*jbC36P_wuEF@)Kr;`oZM!&~YOGTk{Rn=wN8>2p40^8#~7 z>#M=fl(Hux=y3MWQT)e@%ce=!VM~p1Y2doLeoIxy= z+nRm~(8_%TG;*os)xF5j8QyP?rSd_QoljPJ0#PDwuJiFWosav-AE^Sq3!Jytk$PP8 z)B>w5Z!Z@^wm{G>*&Mx1@WFMXJt&A(N+;$%Y8*vd*3?fDNwqtw55+=|@#D8FZ1lmC zg@ZoSpspBdNeWCF2rhSYH#`?`%cF`Sue4vt-SRyy{}9Y{xVyMLYzL`@1{Q7ssydTv zr2%NXmvxs-767$N0*ag`uhLy02B5!c{WWsKTc5Q+!AgGCiM; zifWh5(uO~8dgSf+8A##ldpLB!?1J9UCxk59 z_dMA~6vRO5w5SU~QxT%A8Chz7+)r}^hHVs}q*hKUWH48?W7|Xb!S47kz=0&Zu>!^} zaf#IS3A8c5Z&D<-w38z5?Y>YM2jw_+?U(Rx(AxJY=9!|7k(go))yWP3Fx;x$P;9}U z99K?KjyL8FhCe~FRY`I($#7aQl!p#BcnVafOEpelWrGJpgNBJK=-U95S?Czh>oX;) z3_9X!5V-Z9v+_PlaExIeYlD&NGzaxPZ`A_6YHNxdq}d6#yj+bk5636eJba>*C6^B% zKy}4-MW_Zda;hhn|IkXG3cGi_H#fOSmUZ)y3GS6aeH4UbOwmY&S~-2flg?8Rel#(~ zpOVcMGU($wYu+&_NKh9OfU;n(V~>PYBH9h$F0g<6^Ey1+-k{sSqlt zy^UD~0eO5K8;*LqV{^a#z`Lb@=xnOx{0@I~e(42GW3-MaG&D#tkL?OOx|3{RO16kb zs|*D@^Yx^NNLm&??T_RDq8wjQv8ThlsL~F;@X=r_8ae-5dJ3Dw`kLL?uhgb{WIan4 z9<=Cvivb)4y#?9f9B;tR?-8XP9Y8G!g5J_JOEJZiU_XGmLWUo+!O9T>BCKgiK_awV z@i`HMVwnGWNsew@4j0cKbKUaSOm<6{q|}KWDsg1}yJ#=5o4vNpHIJI4qxP z1sKw4C7STohreM^5f*KF5DhPy0A-M7T|JCSF0Gf_y{Q9FGU8zEfT+D%l~7ei+U48qE$6W=L3Hc#(9>m>X#{ zlz+qr(vbNdZKv?YQ4oG?DG)+MOwi&vKP=S9+S#OBOZKzS;+b`DLk~ZlU#nsaH5ajtu@Ws7S^KBhckxz^% z0=_5-60{G%Byu!mJ-G$nRIjenyjn8)(t!E> z4EmpEGA7E+s^-7QW7X`-e~Ant_gxDaRKmSXwPp9o=v8@H^H>_(5SO|?20fz1jR=}_ z_-IB=8F4PI2~s||V6l?g_jDxx=y{6%? z!ikwpgtDQp*z0_q4zKy5>wel$e(-?gfF7Y)P@WaeeQ-5QUPje*E=kx;xCb4%|8}Uo zy+*lbFNX0P2)n}k02Wi4{o9T@X-?7XusQ_yi4xdrKkVFqJ}Hf@4gakLxI5%JHvbx8 z6by3%ORxd9lzz_$6ar~B`fm$41K4JSYi8PP%y0x@d>@?T$lFDI3Kqod0Gd?fbYe@4 zwjX0DxQMS$Csnm~E7sQfQvi14&qNSeRQ$$~V>DK231{HnX^W$J;YUM@iuMXlMgf(N zO=omAW8{j|lStJE&don<3v}Det7*)eYuR<&x_ZfpEt#y3^Q+|Zg^vBE_~HP5!~Xiw z*HdJS9*UN|&7^a?xZD~>nBqZ^Dj9qMRRNf6J?I*KHzmg2CxswGq!*C=MA*HxzVLER zrZkOB{yZbEuUZ+nQKp?m7Jq?9w9|Z^j@}7^30?yNt-QF=G|IFvO@8m9|7|9SA=$QO zAgzV@grS$@<@Cb`1JLAX&tRX5n5+-=3lB0?=JH?{LY_UIjM|?AD5Rjjj!LQ<1hq-l znO^^dFXsYZ7JG?ffn)3=qs9{&TrFlhujw@(Ssd9Bl@)}v(-6d7Kxsp7$W2A7lPsE3 zVt@l3V2=^Yn(Va#`iZ$h072!!|HQblu1FKPm3) z4G+4a?2X9}2DNY%4GY@*MO3uAW_RLqw6KV2HnkyOiB9o2qia$M?uBBv{S*c(y075I ziCWej>4}vfrJ&8QhRrcWEcFyOR&BP*oIM^}fi4W~>Ope%aGnP;sGNs=wY78HDIc(C zjz>545ThM2T9W?#jq$BsSgzn8QIFMbsL+9^soTBBQ(e(+#xo?7=8sF}q&#+7w{CBE zy*$t57Xo?47$e*(j_fy5IpyhTS~gD0(xF+36Bi-@uh5VDiVBfShOEP%Erq|DO`u_c zVCi8knX*CIJ$&6L^eQ&Gp!~n9=!?vmz+pRJAg%?;hcR*NzAV}8xWxFtZ0{cN8l62Y zVe#j^$D{Y4Sj10n>--y{Z){|%J37?0i}2KB+F^5e#B6oUwDF*Ik64N8bJ#iZ_={p3 z9P)-tDkCb3`Eq;ViB*2H;V1X zu&$o0nRQPhuPIT7?>{tQp!YmiFlQ~A4^Gp|&>XlaL-Y>wLbTbez-ER_&O}UB;QfhV zECKc3@U(B|lA*XrI83zn7U06DzwYVQl`V2G*d=10C}r5=yJ8J!5Z=q6n0$(K<>3!J zv@zQD(;;0452RCmOEp^%m3z;-7Snh!nAm%I!b=REb8)qJBM%-y?WFASw80ze#85wO z1{pOuZ9L0D;vDVb-^;JwaEiX4NEm}1^-sJZ1R?2SnEkj3Bw(hFk)8OAkCB>Y82gPm0v2;EtR?slNmcQM z>mEQcU}-m`QymKsK8Xt)&(}1&8v$}Dl>ej{w2(c}D7sZ5Jgm1D zb){!@VHm@|6ZXYtWhSXg6t%ENU(l1~2QU(lpP-uBM3-XEVBnE#k|Y>}918VwDw4)4 z2|>J4pD-Fu-_M#x8E&?0o7Sa<`YtqIUZ3WoCCVrR$frFK!=$~_?>EoSX@I8$w((Hh z5{Y=`E+y9P!CwKdqM6Gj1jmy}sDh-nqdBqrP)t0A*$gI0Uptou`J(RVUT6XbRd{Mq z$4mt2=S4!ofYUn(NMc%<1jG_RLr1#>I9x>?&&f%SF(u|^RS4G%Bk8Y{X|Rn$k8ls2 z`GRo})?WIR;Pg?cG3TRQ__J#`s*)Xl$*C@EHoJph8B_Z9q zbE&hsg6CjdrvJO!RJc!9rntCB3@-I}EwD{8d zA-5VW)txn`)l=8@5h9n3jH^ZWJey=1_mFu zwilfOup%@P##<8?S~1j3{}Pr%`KJ@8pG2<@@?|3Bq8&p5%JpE>&RTww;HLyT%(87l z5w|n=5TB}Kc_0DKJAO88r;Y8OSEdiL~Bv?@GIv+LBtIf^!Y1my2(g(O>bi{IU$ zG>4u>oH$wYgs6ODGih)R0hFOYPRPds$UKVBOdl*)>pz9Z2oJ+|tUIqBdH!b{bx?2r z{$Jwce%|qUh0OGU58)w4o>P+x{dk7;G*135m?m(SmmS(I<0a7Yd*^m|t7ghEj13i>zf z=)2VKh7j=32bJXe@$P*nhK3~woalxh{`m8@=k+1L;IHI@3870ZUDw;wNovbuv^ctQ zVcM=0L#8Wrw*)s5h35^H8wLo<2MY{CB$2Q!vJ=iVcm8)fh$1oVN9!;t1d3;5>AYr; z-0^CdVN}PiLy}$#4g>QP`WHY)Fan2}{74tKh6YXDk^efRTA8|h0dfrx{3*qS*n$NZ z{xr^aVTE>w2?PU%j4%~h^fm*Djbh#Ucjsl(c9=@lC=RIaH_K7NPZqZnP#;r>G%j&7 zPOn^lE>u#w2+Y0S_hIkVaTg zKLyN^2x!O-de3sU^I5*Bml75^kYhA~tGp@|{6ggZ z!ZoF`%& z)+e=2z}AY2k95)3po|2TpA@V<`nrX(l2zTI#;^VkgyIT$_Env$4&K5$1PKnE`_;h{i#V z4?esG)E?PVJF_MS{L3{-7^|W{@T=Y+H z-@q1hjPRkwQNLjgd>3G@nd&i6K34nq`G(*yjPRe7=Q%;4*N-3EF6cyA&*kWYp-+hq zFZcssB%bcit8M|lEfml77*~{)jk>lao$X+500(O(8gu}N6ogqXnrH>Wz2~BbVFx(x z3wKZ-1xXeyAscQ74bFK)%EqcS*tC?7`nKz>c$8fKf4KLDdWDz%>Wj>CUPWcndPi>> z4K3mW9oEJku~?jbLD`V!h(nIscx4{c6`+T?a8VG-2qq#>5GW}Ajgb! z?x-<26~*uPuufsTWwEF$f?cWlPnf3c7~wAPyD|w@gDi&d-uvt;UW6&79{?96hgTb| z#F&BW$YYuHx&DWHE~!v!ls_(=Dnoe46QL#x=x1Dn)$HVbaM~Vs-|t_3{IE31 z#;tT;WhKX*NG4sFHFQk4e)4``iD2{^m&AH~9#A0%{hi$GnSSq{RR}Z!q3j-I{nceY z|BW)+eq35+w2|*cl+3yv2e6M&xU|B4U<}$^lljKvE%kFkm#^h-~Qd?|~iUzPHdp*Gz9C876 zQFzC=UV8}|BY9E6r67bl7N4;m1PZyf6{*Eay?I3#&~yvL+>?Me2}a6d=OD|w(fyWq zZ%Q2Fk734hJqGE_rM}_XoGGc9msuF<Gr+TiIP6N zqjQp~e-NJ0Fn~nF%u!3GzJ_q0rS-F6QH_>Mvma|E0^Slzt~|#?Q?(}^jUd4bD(8+h zYdL(Szb@=Xa(^P|KKFghhFSR1QVx;48f#I)zWB$}d#WX{2TzGc)rB7ED{5Ap?3X2O z?C?BEDE>$X$G*f|UhM}R1K^MNzrQn>bC|U7tLxZu!=d;@7bI!}4z#u${{c28HGlAp z9W6y92F1jEV0goz?{hD!U&!WQPyx)(Q~MkURBDB94?9swvx*`ajSX8q3g4J2v4%t0 zo7vwi#9i_0$u;yn8ydZV!URr7=+iZ_25}OK+>WD$Iph%a4AROPF#CYYK%wYl{PbNV z3FxG^q*;&e+uk93{_1F;RLK`MoDt&aUbBIBSV%>Uid((I?m>zuD&p4qzyy{E{l>UW z+3nW7nDNLvIA6NJESSnsip>3AO(Xh}TkJdaOKox7K90o#6e*W{{=d|{idyR<2P8v%OT0Pa-_k&$Q>|`1-f5|39Wy;VF)lqe3Q^?Be|01< zyXBnW-|sH#PW--07f1dw1O3L-juaF70VRP*e+5!u^2d_{uuPGqCazqQ_qzwcupfJG zYC#U`_+Po0bpZ53jjP8qk@6zhIMVQ6VafENHbc6-ADw`lzW>p;aU^0wo%k&GGrkIA zls>aG+X1di58eO{FOs4?u^PCj>r@m|plGq@#-~B-X(8UMZv1OResnpV%uI+=l^+=+ zdejx!>mUmU(v40gP^v!e<)RTPg=h|qaUs&r_lEG8r30+aBBo|>K$TQdmC9!v4Fxym z?-&!|d2=`o`bkn`d5n1MQ?mQs`uW5?+so7@UyuToQY=V1W(3L+0fSgBlUX5uvQ7h9 z40WrnOFk?lz73&m@n5?8Muz`D{i+ie$9@~faCpew2irF@A&ke?Y84+l_F3~xCM}UK zMoc*;gzD&sYOJ!Zzkzzh(6V_}#q%X_^og8OdBp7oy@34s@*?>|?+wmJeP}kZWM|xa z?dHA?Dr9gD_S=oxVI)JXb(2hypT}SRSF)%gsWLFzykNNCxRH$HM11Q%%UFJ&^(|JD zGJHQ)iZ88>LfSkz_28|wZQ;uKyn#O!s$3}@kf@cUvU|PzFSu{A+~9|yT!W?HSUBB! zW=i!EUzpDyH^`f88dCugrB68Bza2;``aRLqHWw<%siXc%<0fZ3M8Y~I(TkA1_S}aI zh9cTD)V!R%?5^FTQTU&mT$z}sd(oPrr^d0uD<-!RF(aBbviidh5;>L9*aJK5+xG&u zS^Am3BC-kfHtKX0?<}@!e|2{(0-u{j^ejZyDPBKww5fR|{mx(Feb2j)lS(juwmDxJ z5~iUd;kVJeN|SGR+Gz0^CfDY;S_64KdLJ%UQ6zDly2&38V^#OO>+^@#bI{XMjZ?y` zr5sRQ8zW<(A{uYn_n{Gqbf-q}ttZNSJ6(6!fHOII;&Co}7a26NZ8;!DMysqVrXgZ& z?!_yMbIa=Z%H?2xzDM*`G=|!c%15ck3BA%vg|0%o$;hj&DZ57lKAwiyO)hYq@`Huy z)RM@}mUwB4`$Z4Jtv5v>@%1*a1Hqp_!~QTskGLT#gNpbUTv9!*6}g+&8|q_C%P3_( zzzrio3*C8`i^3i70zk5wG5ewWbq?pA_t2!D;zg>)32%G+gAVz_LwHVz5|N&14M1V= z!7jb-1EIba$%ybW6c^61;3YV>sSCsZ6@T)-tK6xMkD!P6Omj6#fCVs~gKo{O8P0Kh zali~@D9lp;4%aka(lp~)g2W$`k9>TZFS8jdA;uym+jz`mM_G=A;2G5wH!-ShaFGPNt+STj9O!Nc5 zU&0F~Sd4PlTc_LoYepcTHlbT2!D5sQ2d`zhvyaHcY#WD3(P z&wKg(3%k+^(Z5ms8w0AAb9*_grANhThC}bx$Wy|`y|$@(3$P1>V?`g$mj#fPx?}qS zD7+c0N5n$Ti-oLzjaOBaB_Iv+`&;6Mgk`ziX|*YywD=7G#F1h65HNz0v=05n)-&)P z1t!R}-SJz=ylRF1Lb1vCDGiBT?Qnh9J!h)b9yap9)zH36#djshjH_{|7$r`dKq7Xk zL15qC&U7b6Lq70uq8XD11Pvcl#X@n- zypu{=HX#>--(D3f?LBTahgEER{qMl4n@Ja0|Kv*w0v&15)X!Acyo@1tB-lPNan3BI z^{k$t;FSie%F}w=FLGCjr9_rG332K&edA?UG8y#9`TVrE{Ee0&^nnCsK3}77bEd3* z{C@LK(Sju*@RFr>`b3Z4MgK{+2hpKYN;!i#j)w}2YNl=T%SOU@pm?V(lfjoB6{PjT zam^`@63&%I!)HI_4TISIF&ZtQ(I7P@)qx_*`(YcQo=`Bz@=UrgL;?pahRe%i$_CKRNJ0sGHMIl+$qKhQd7% zsP7AUE_xd%w;!>|Y_n@V#mRy(M42A+T%9Mdl>9HDe!0SLFiiHHk1kyd|0OzHjLn`w zcy&bE(xisONjschIS961q$UQu>zhhnx(76_JL}YwvA==h1ExKH)3#W(qV~K%=a*qB z7z&q~@iY7#H4uZr-uZAnPFniaXT++kl3t%~%WIHU`3yMwd>CXf6C$7|#yPy}f8Rdf+y z2%u`81YDkF!=>qm&gE7?B~VBp!%e=sWaAIqMg|kxDJNX6J96YM+8OgO1_P&~!`Yd( zZ))%$BbX5>UEgadD$tG(maH=)2MoFIUH`G!D`DN_J^@ojGb}CR;m}bate~7cSjrZf z^Vq})nwowtEIdV*M*NFnbdE9oNN`Qu%~SF5uaXKJB8@ERF=Xn~H13#3ZH6(AGP9XV z(~|%hTdHwvG;z;bY1Y-+mY+XXb&0$X;k(=%E5ubODkOfXj&VP%^DCW4rKyO&%dGqP z=1nU-T6nK< z!B=v|U4HLcxBHmlDker5{qOJDS#?`8>&LURM!y$)eEcSg)@By+HKZS5tY@%dx2kXL4$3KtTH+KW&dfU$DEXyiO&lc63x)w{l&wp?h>nk2rf(z0z&kHA& zt4h)uThfG4{Q1wr4h+&Hy4JQvV4-$Ufj82DThaTzf}y|d@f=;*X!UbLBtFN1lYb`L z9RBCQ$Y~g0xZ?2A-;)tCNw0G4#0d%z33+719P+&aA?@an`*9oGna&7*dj^qMv&ji% zgQ%%VwS!w4$d1T!s%-x@f^Z6J`Uv36;QxB}%7yW}ns?l|jag>!KtygYJuvSbFbt4$ zJ$+zML_kP856d?p7`1p%* z>PJh>TYz}X8u3kJRYg0AAL~%b1hfVeGU#?lbWCpkNtofTTrDzN9O@K>Yia1obbP6} zIo4&+yKU}l)IPSFV%*xy(MfhCg}5UIK6fsxVB4NPOLei9dc8ZM(5 zkX1D-|HJ^NRZAZO6{>`Pz95sRmzz}H`cq%4R-3h-mS*DpnkEfi3^pjz5%0n@Xr4EK^zo9b}CHuG>Z|7rT!(i^% zBT(^@Z_xr|H!@vZ}CxNFvmqnPfgx^mOtFGi2QE7cIhe;WRY%n>8EY7SLD^$ zNtE{(+_Tm^iBSie(g;nDT!BuY{U(XaUrA7y+9E83KwrG!Ak&?feFLG`f)o%VFM;W)aY!Qy_Hp$3jp z5^_3B|@ zYFvTd=*HvLRbBK&S6|&G9w@o!=n*`)(W{#PUvk#czOv}Zzw2H4OP!kStp#bOQ)7b&yl zGTboZAww4P79J0Mu8+UQa36m;#-ZBDnJ9EpHq=OWtq>or7L?g66)F63DN$7|AO;6O zM-rP3Ogn!2N&rWpwl6{>Ym+hDH#hkYGI5US_6eCTIYv7LcTn9Ge*%BfLAPhu&)Ik4NdOjxfLz<-E$zZ6+)Pi;I`1R~q7ILk2n(v_K}!(F&ZV7mG(iLUf5LEb#BTmnM2E{n>%>B2d|J#_uM&I&lp~LyL1| z2q$W19$=w1GEDq^-30z|fib{WUu(gLxYxG%_B^~DM8=9)_zj1Fr+N-7h08g8uS>&4 zVm`8eJP3917{))cxG)Fx0TdIih#ou^qG*u|V&`FvbAfvFS$ZH!7`jN4NrVNd464x_SAtlcJru~K2|tS_lFiWd1irM|CnQuqe zbA>B$Vl@sd6>urYh$%Uxp4?m{+?K83DY^7t<4E@E*yx95#TiN#isD{=EDP6;TUkLD zSUcjz5@+g`HsZ9O8@Q=E!Oi%EmDX~w}$oKz5(3U$Us+capLXU;V3_ ztQN*9jJXQo?7~k#pOtmdi&ndsKVE<{cY+gT9`P1=sY+#0Q1EQOc&Drv^z0|JEOs!X zA$d`>H)0sUd6hZw#K%z*8*w>oC_B85n-`pY;y1joW2waYEkj(GrYL+FkX}AHnB1c& z_w8eV%L^MU)RvHAL_?qJj~6T6C`Dpx2*8Mb~>&cLNfa;dbH&qOF>HTX;NuronzgOe6vr%e90zV6GvgnFrJg=#bUDN?NQFY z>8txFe+3Jtq^FD*sfZf41kPUDrRr{nvg&Rb64!1`)!=aJ>$CLviduo)WTh$IRlXq; zoe{Pea^QmhMM&yXKE_chc7n9%@5S^{Jz{nPP z=QDx)jzol@_w3!NUQZe_xG@9x0pWM~zz^RdmF^|##OmO2!V+yO8WxRe1SV48qd5?> zVEw2tLn5MUk#!?63AG8;2556XL)}0@$N%9KeZ0ZLKY|+)$N#hgu;+2ps~EWDW-jW@ zv9Z|T{ynf{kGsAF9++Nwg`pT)Y^uC-aMko~1~jygPctflJZay8$ekHq!>m|ZZI)5kBgbbM+Y1W?nXhQ}evY@!Ry)$Im8xbFS9OyYWzDHkOJVSw?b7kjD z7_J47)m3t{8er2$Jv*C}IJ?fScZ8FX4%p(qce-2)LPs;2#Nt((hjC2|{(Bz2`n71h z%KywadXVW7)!^SB`nS#ETeACY9!2p?w^%tXS>lImnxND7bhDoJ#GkDco#TJmA{htxtRmv)pAEGVLq6U|UK=ebcsP{bi8zTNa43^rQ? z#B{x-oz-y(SlUqUzZ$>bGv%&NpzVJedi1asH8ZR&hlhePCruKC}SvP79Ennwz(?PRWX*INO>FQE^ff2X6X; z5fJH#>QK@#xkjtuP;KRrjXTG2{f39>HMzL|l8*^A?^nKV?>miNhg_Q(pT+T|LbAFR z5DGQ!golj7l4>U1tfMMmc2jwhqr$p`Bl-Te?XKI!>c4C8M&ZVL2!?g3hZzLl0jPW%!;K^?}2_to24)}Sbl{-4T|mC=?J{z?fjyW^YY5B zzP`lfYp$i4mPKM)(5Im(4!5IaGH;$3q0jirL|OItD|XtdN-AJ{W?u42C^ht%8n0Hb zIC^YTo$87@MXSBH?pr_i^{;>RlH{gDk%Qn8vGE1vRxrRG2Fm>GNVc|{^05x-c?yji ze5+AHO0jju1o6#_x04Y!lc(BHlqfyj@NuPaLkBeU!!%h@i7rxdF_VMx1SxUS5vi&b z&6*lo?qEADhmgz}jq!@sQh3-YECL!PyfLj_ecx3^Xd!zJ@g*NVrNsS&mo@Vy*o+ud z%!k9CuCqjAEZvu}0+$)Tve*z(TNI`r%xy#>SlpAu^X&4%M8fLAPnNZEmfzZTS2Um0 z1|9p=VfONc5-~%pO}-D~_x>a}s|$)+bMen}mXDYuO_F18l75JpqIs2AQQHrh8YyG{ zMHc+w8F-mle-i zY_%&;|GcN2_ODg{x4Vdm?b(pYIdo5u0PB*#J&fa0!^d3IwzGDE$n|U}h$q`y$Mz1R zb&mFP7e6dW8Pc##{Amxor%dA1`O(#f+U|K{LB!nc4-D0tTid>WkeES-5Jj>?L276M zjE@8n+#pm|m_6)AeHf$o95|%(x?K>?fosm3&o{&|@J&e;y<7}ICozMfmw@sH(E{a6 zET*5VR~d1XQus0^rp^K4bPE=?xfEx3+PSJKtb;3MLYd=0T}tV$3!MkXZVO)E-w4HQly* zUw0lXnzSx8W=LP5ddhPlRLHc?p_uNwI?1^x8J5qt-V^$(z2f1k^ZTITEw;h3y5!7? z&;m%&2dxfowq=u)w^|Qxy%Vulf!v{Z(t`e|yU7-zsmS%;t{tO<_cxieBzi&ZJ%YBu z#%FjIF41duu;SwmHh3)^L>1C~bM$VHulPhlS_Bm&6+GhtEX?NTUGZi;9G=q!zycM+ z<2)@d>v*8!#>OiJVWLfO=z7L@pamE7Bhb)UhBQ!3;l>v$)p}qmNWPxQ`*vygw*q(?NR1z1p#8MT1?jS+=n;%rH^5xpvr@} z3O(baN2YRubkP&>@=qm^Wsep*(~{2h)xWg_{fuL-ZHOxZi623K&FZg{f8u5IoO14- zx1q@*@48f(3si_FPJY6DW5oQj;pyw@-tMqMJga_Jq5GNQ|1ot|VR1C=79HH(-3NDf zcXyWr_XL6kw*bN20|X21?(Py?LV)1zI>_nozdD!jaMN^G)%3h;ukB$l^b{hbw> z3o#cEd1_5*4LyZ_8Y11)tdqh6J~Bxe2@`m?f@S`@af*pr8leeP>~{|^Cs(U{_7T~# z*nFi-*3LLdA?%(+Y{d*eNr#{_$63yUi`{nJD-?uS}9l|L|EFN2Za zXv1>8F1+@Bm|sfTYzSY3eA$%|yclxbU8E>cAk|l7sU$R|J3%*4;WL-iFFv0)MMjGL zg|z)CQKYCWe6TzH+6gDg%=UyV`I`1!h*9y@AbF2n;E6R}TdyHC(`(%GLIJ2~8u4`-rm z3*#_ZeQ_FP6ahg?F~h^oARIr$NQ}csP>TnSVGsputq>DQ`F+?uXc@W=4~|TlRPX<` zpbmxntyagK^Fy)P959nt)4}KsZoqbX8r91H+lXsQtITiXI8zsW_*N9@4yc*CWKOo< zk}!`Sc1lLuW&&9+Q1ifHj(e-fpIMl1PZ+by_Y1w^t4GiLITA|r_@54VT;2OV?3&j8 zJA+sZAAdAf=oA^gg%RLsG8z}UIOXqnYSfrMP_%FJ#5jmPVCfOfOHFT$s)tfFiB?#` zZ&sUgq%C#crf47f3%%akBHP`vE) zjvp7_TmTPCa|=aK7*t3DMYRC3;Yipq>LQkdvW5Mlf_;FJMbsb+%rvwN$H`zRAFu0} z1Skky;2c7<})kR1l$-HhG6v^us z)9)Vecj-f4JqetnIQNGWO2-i3iu5S*y@^BjQ8A^UNms6NI>8m8&NkHI#uTFlJ`1vL z>uCz^oKUa=;I=b`b)}!E=MC*nC|k8BjZKS;FqBeC@unPu4-y++<6){*8j@2qU$O91 zN8LCXGe-5fSWg|F9;2D2)m2Y_DgcY(5MuM=Na2jOl6T!4tIZDqLTBFMnB#?gp!AA< z8qjRG=h0Y)^>@4u7o$dtd@EWSG`#6`ar2N|=^XoMK{Muf)(yhAooD!l6387eA& z{1=m)SLHXX^fz7yB)y%1KcNlnM5-G=8CA7T%d87z`&zr(Ld2NZ(Qt4?^!Vf-3mX4x z(E(AX$dZTw(Ko%^VpNnqd9nrdmq3)*(uc{d?<(1=v=46w!ag34U&dPSU#Yxh+Z57H z*0s|Nf5t21Xu}JGe&ZCdWE^}siwTLky+eQIi{fj3eYxYV7dw@Sxu*M$^oy;-KcF9^kt)YmKWRo5F~AsQ71x0VM` z-tW4CnyUIN#+3;-1opS|c>Ik&tC+EG)vu=!{8FH&%Wh^^!d{;~o=m?{D*<;wF@TJ$ zICpZQhi@dnxN%lI-DiWOXC-M3LiYI3u$j2bQb4vk|Fwjq0`^7X#aUq;8}4`_E@-Iv zb_jc-8tQ6MvY2J!{6JM9;PnkA;+T2c$Us`lhHFe*0_HOKKEzV_OCv?#OX6ZIS*+v{ zF`k~anQg8|*c}?W$fblN*3#=SKAl<%*lk5cPyLny3nugq1~!!2+=ciEkt&(3CM@9nx~^Jk8mhi_g!KHJfH zK5sXjIS`p>ky7Jmmo#2Y0UUgYpF7>qyw@}&pKf$8VO+%y3+n9NBnCxg)Y^9RFuO9e z_LpWjQx-;K0JqZ$$GZrMH#MS+z%tdEB1PxF@64FwLI(t?*@GvT328mL={{!|9{&eV>JzNi^>zXxpBygYm#6WZUxq*~jSWQca# z&J@Z|0PkY3_T3P5&jojW#*ZicMejIRwJA)IC1(sIreje3-SBToz3zq=pYvo#D zYqg0BB@bU~c3|g1$T zsvUeR0Du~Lu6#gPOM6b~gq(N$SH%?dEh`zY!;U$(Y_i$@c;YAG{#-5sS!E#N?phsu zFPoQmXeU0>F%0WZP>=yow|@4bvH*#w(TJWOLvp9u``2w z_SUhkuUiK8;6xu5Y{f_2^UzW;x+xgNWAmt!NwTd<%5^Pge{+5Lend zH%cK<2>35nU}LzMMkWt4b)L^+^;~!4r7FyMB10$B-CZOd%PO5Ymh|k3gI5@zRckq7 zv-!DHXD_3oKs-DS1q;iOU&`=~j7Svyb4!dwmz-7AtfnLdiB=*mWOt+Dp?cy3(_q9h zid@?E@K*t>*&4{BCIN*g~pykFjk@ua!=xpr~rnM{XfW=Y1URqk=np}CzgM%{uM%+b;29RIT7|G zm5gNSv6otZHB3@?_Jvo$C0jWFJlf+WsTIzIf+2Q2O5>K1^=u?wdlQ2M+zR&BzG=w5 z0Ihk$@%hYM`?7iG$?BeJCYNlj9wE0)OkfQeJJahJ&y>(oH_auY{vqL)qvCYridh(* zR=E)KRUnwY2ZX2o!`Mtc|9qAQ89kE|dKnf3^t|3Dzdo#+uk-*})A{%L4Rj(dnR}pu z8oyKZLLSriuplA}B&XlhW8}H+&o6km6}lVrijnWKpAZL+oa}@KQzj#}+SVeorN#7) zE*k*BhXq9`%`#YJsy6rnsQYZru?W|O9LjHy~Q2iFB7AXTAvb`;on-#uJ zIN3&lhM3={(ptYJEx&137;BYjorZP3LmIRfPGE)!4+oD^RHN|AhyB0!yi@b4O=BXI z{DqH>*xMyc+e6gB?&>yoF$cm~Lz%MMuG(&;dlQe(PdE4zV}?D(lG7^=KC8Y>bXMW#i`O^1W!KlsG`qz$ z5o17wT^bfn$*2x5RQ7yU>8TF$cB#l+2{ByKMd)@2lJXBv+Rs{jQ#-|BxW$kvJ+rJ zJI#9YlFpM(vTiR2VppPMpC7S+~CtP?Y^qF$sc9kx^A6PyJJjP8O3q#UQhQsJEbmsvTzc< z8ceo+MdM4**P)EkaLaaXPW&&`yF~_qyQD=F`yB_86Yy#X;qhfRa0W?j*_!zs$?8>% zJS?zqa6Pg6ZX%}t@ZTr;&qg7mPe6d!aO2$kSI*4)4UXvgALdhf+?hBUL=jk#?buKX zQYGd}FxU-fj&v`M+k5OGot{W9zEN)!nom%X7|_tuY}><-$Z2+(7}zfVgRg|KaN~>} z_+e0BneCI+`}05U7hMk@yNhz4Wdx6klC5s0_|s9?J2f~grFh4-?k@*0Py(o0HaxRA zw%o{(X5obpgKm!w0VWY^*`ApUn;TOn2?XCr&*Ab|w&j{sF5~aUOOgTsQt*gb7#WPc zh%i%H%B*lfieyJ09xd7_dnOK*W9}E13p3W{8lYHd>&*!dI;cB!ekkoJy6cw{@Ec7+I zc@Pu?1J2LoRwt(Kg7C9vCZsr^ea0Kj zM#LBs)AX=(-NvrgbrhXbNBJ#zVeT5nW^aEZn9W5U{)L?5bh|&p*Ic}0rb2?o(JR= z=xqgKh&@s!scfSDl)^LO5TndWQg~rzEL5V9*@?G6!?9G!u56iC-$ zph6#KG0ZApOs1SRNM6s-(aH3D_b>HKn)ADY+8%%(YjDl|9ZL-eKsMj!w;YlTR4O@E zd#^}9QX~EBut*$acxBKqKRIz18USm+JbDI};L~n05h94-i;cTpsT2IfLU67xW2mL& z*ZNV=BwNR6NEn`toSvzN?qpZ3N3rNqStiJv0LT~#7-8&_z!`py^{`S=Ww&2)Lkv#w zR!#usVM^8Q@HRrGtT}vYIY0C5CxJ=ni;R7inD&xsd&_Cly~L_#6IA_hzF3m%#^T#S z%WM0@J~Jzoam`Pa)lwSk%ZP!!JFH`ZIRS03ifhW=^Fwk#moJ01iKW_cUol#8P=PhB zAjQ}Hv;8pVx0^o$ysmYzo~} zOA2J0;lJ3`s3Tl8>6jnl_vSU>+8%QC;Ha_AF6kVc_M%285S%#d2R@ZfzUb)#^Sf+~hY>RjKX-45cf0aS_6K23AP?F~3Lqqy_~u%H(B`167_L5(zlgZ?h1u zwWf1U$&MzI;|PN(yhDOFWg%$N_U?QvWUt1j+nT=iB(A-5VkT@TAvkCpDS` zXUWVp?OM-{9i?iSOfWhcz5W?y*D4^^VZ<uZ@24YPTKHjwKnZ}>V(37)-`h3%;JRrt9J$~> zB?(>^rr^O&FxwZr&NY#mOi;YfgkzKSwj(GJZ-Oh1X?x z406;2P3~Q8ENn`RK6B`V1_oHT-W-w>R5+-I(Oj=Tj0wT~JJOFBkMXFr1xFJ3NPWu| znx7|F`7QTZxl{8jSo-7fD$oKu3s8rtR7QY30=w-sPWabM$T_a0dE9#fVqQ$oCDUW% zWlviGBbhx_zgBws=)Wq<^Shc=!NOXY_SD2NedYX|`Wl!d17sdrWPvVND0#|GgR(;= z@8us^l9Sb$GA%k>ir{@UU|$lQ#1ADWMxPZC!!wcpNsS?L z2?86fj9I=T4uqv-Oh@TJBf+AgfI|7oby^YT5XM6!sl>C;UgRg!xLf6rENpbW^=Mjs_=!2VH_CRqOgju^xQS%CF@6Eb7L?n79+B_Aw8#3O?c;r*2a_tXh)&$yEiVwSY)=)4?Pt z*F>gTMIGB9qo=X;c?-PArA+eL!`^uKpaU!6Loq2EuEpb*j5c1Q^ zpT5i0-Qh&%R`db#le<8Hcl`ZpKn6S_?ogt^T}td&5mY(%jDR#y-|T}&+8JH~byoDp z(=mG~2?xD&I4c*#p3{?daSTKSjS+P!9Ief-I1HHu=V04L?^^Zofx{%;>m$?1H_(Ai@a zgDuShWFKg}JR&|xk{c?}Ka9Xf7@HBqn?oF@qX~z4KVdNxM9B9bT1C|sp~a=&Ub{fV z5z4}DwQjn_%ds6t+o~7UopE|tt&}mZI`ojMnEP?9&(Lo5d@W0nTZE}xs@o7lJ zeH#_xk%{Vwl=37bD53O+-}kFX&hXFJ+fl*jLFVJPG?Zt5%D9OWd9LZf1|X~#>A3lK z*zKt&p#xaEy!a6>u0}4lJ~JjZfW=BceirC7aM%CCk6wiV06# zx{9SU=uZS~`$I)#$uy1L8cxlvq>QLb%kcwqC%L%Pn&EdARtL8xhxc>0rTdEUI7hU> zzdwxW*wAT9f@=pk58Bka+mCacx{g7DwgrCEXg-W^i%5-;Usm&s^lFzNRE&mKc3g&tfNObHm#qzZoABmBQvEiLc z)73Y|%R}k*0CNIy5Pw{|P8y90YW>Cn4sJ~Us4+bFa3P0ISs7NNTrNsG8J!6qYGR3~ z!i={_MW~10@w?vEo|v?sTow*BV^EHYFfuO(JPaZtK@E@pUM;=~$U_K~FI^Qc%q{PD z6G+{}OPI1sYXq-( z0YEtT{!rVL5^%%bsk-`!4m{;UZ}UyY{9(?g+4p!=$nJU5J;J{qpe`mKxa1D>5XFLC zXdi>c{GW?nvF24_aXQN7(w`vTnX4D-Dw5%53=W|XMKHp^NH{z{G!Oj9LjOt+q&#=l z%2xEPz`BBJdK)bJ{qvBu1Q9F-vB=JldgJVj-VD%ZI5jsJ#b{z0VjMe_ag+?L8d+P` zlDHxlqM{i0%j^aTXDTP*EJJjmDM&Ey)5p1uyDj{S5{fnRQQtdLe902#2vBdQ^8ZxH zdrm!IG2)%Aiqie8e@q8aDIgrls8u>zj<4_O_rKC+pn&~pd1MwPkd+RGyAN6fV*ITTCr1yCOfv|_Wco5tfA`E>A8wc3kl7(S}R+$65Fwz^shzP^8 zJUY-YZ$qs`xu{{h?4H=D#HM65JG?&eNPePFP^?I+Bp$o)&3<9QUW?x$=2oM`tvQX; zNOD2IgPMScJ=byfcC(5l(7@lGH*@@Tv#Zm9Q2oTfGwO%i3qG?0ZuRQ*>kK#U)>Klw zd`uFfs=HM&l(Ld~s)H^KT=cq1=)Z+8<0n2jw#Hkd+=b%?lQc>s|2%PA`TtD=>VqF{ zejc>TXQb9pwO_Pntsq1@Q9pJFgiS+j8^WnFzf8zxm}^EeW$uR18}9}_)Fc)*SL%)2 zC@j6JW*;s3yS6ADI0PyEeh=HdV9sP>*2=;hE>r39Nac;KSk`dz&*vqcx9yi#zr1J@(<*Cd?d8_YIYmY$&8!g z&f8&XPJ8eR)QXt0bD^w0%4h76CIass|ejrC(zngBNJH6(@=$`W->1?jp z5t(mv-gNy>kuz5^d%FNJ`%HnzZ4cpUl?7I?-qEqMCFe2V<;8B-^N-Z!cVY|CS zPN0YGKXSb#*e8Dx&d5&qN+9WDJd02*IjK4IHSROq&A`zd23_EMjF2V`z7W}{I2yM zYnOjLo+tGW9U%^}b?Dmxm7*XjMA;1x>0R!Ly}poHp2w0Qq6q-%cTkRS9;@zS@AFaA zD~)euq7d!T7T3!`-BfAe;aDS3N=DqO(BkqneQ%hsBH?Qo|NBi(e`dOnXH#F4SFy_1 z1X$k)WEtp6rIHZI2%b_QA(9wm6$~|x45<$|(;z?rKzMtJCz%w~7!eo4NHAUAI0Y|D zivYqB;(rp1SPFYKF~`3bj9|pmqFa+PJ7x2cTN{&zZ$v^cqNPe1qwKW^Ehj!`-2bI_ z{^pm|dDEAXf<)jI8XuMRIy7oC*|3)3Fu0@8(6}L7y%Sa;>6fv?SZ9zfNN1_4<{)3aeD>Q~Crf)Ocr1YRl$Vl4KO>mfslmq4)8j zAg~?pA&lL1k!H^wn`{r}0;B{hKkoxMyhUFP4D{^Iqgplt`@w>%#Sg_af1cD^s>m^{ zGxW8gY}a<8DCz(`Xey3g{h>%V)vXVCBwIvA)~UL{VSr|ohCAz*k3AOPKx~sASJi__ zm}F6XWd_KK3dU9gBF=dGre||noJnoeCKUx@=h;7j zBI-tBnOl5c;@k1U*^i?a8z9m7`}Y)bd43QIB{qjG;q^%tj^DgB*&9nq~A z%V=PD4B~L%isLlnHk0U#XS*}y3E5VH{!s6q2ansP{5qPZ`{DZ)^-Dxhi@#3mmnZA= z@c_uhjIZ<-vU#YY7raLAX%mh_*gGkX4zKe%d@wzh09?HV88{}Sr$9BswGSs1_GO=a z^HA+7JOLwo1_7ZOZhWj$UkU{qUhgA2ENk|-MaUk3P3oG@Rs29S&bLI}sBJ&Gg)|A0 zec^Er(wVc?jWt|&6`|su6=E2Q+*tJRG$=gwNpux_GPG~QJeVochgw3!Bfs)gH|)u< zx1f?gqR@XM-7iDAg!wGKZeJTC|fZ*F3ORa zp-+hj4XiUs+PI*d{yg=gke8KRG%tly!=#^iez4+1k7TUyVs|eq-N^diq)c@{oox4G zS^oYfKZ@Nw_-4k#kVz!6ScGI=VsS8=&Y^&BIr2MdQDTtkGZLjfeYbIj9|s+*pQUG* zC%UR>ohcj~M(mpqA+#vq(8NCYxP+D8V<8rmrml+TmC&*1neF>40_oJQi4h^CR{+xm zTN`RLNazC%lHim~Ow^9qc%?K4O>C_F0!dIO^c}c2O0CmZn_SG)P6U%@E3n^Jqx1@j zI1b|9h^bP~!FOaXOA(P7()RVWX_@s8``#S+i{`CQnyf)^CYV^=M}lm@habNrsc5&+ z@mrNGG)<5W))6(5{ZH=CBU%N>uToZ)&{+~5f4a%v=_li^N_&e8(hhrIq1or}sZykk zL&k8$NQhOo!7pqXg@^8I2M812NSqO+%l8MR@d$H9<(+S6q{NmRQS1dl5uD*)k$h^z zP@Scu5Z^HxX?NF+3WcGbRS6OLQn&+MiXAmSy(cnhgw@%Qn`Sgc;p3C`=#X9_Y4r)O z`9)6|R)jwEb5nOhar8%zmJw%pz1}U+w<7L0#u#Q)mTBBxTzlcgP#bJG-ArLpZ&%I; z9Q4qfYobISfxUxgX0PsrhNXrTIHhQ$j6pvi=M1wkM^kS9wuuGuQYwNp!X9nCPVz$k zfo5{{+55IdkT0+QwKM<~nn8u%M;;*~!M;B!v&OsepY~16AZ`m&OEaz`Md6yoiU;Gz zg!otAtsJZ;PL#Q({*1?sIYMZeXJQk@081cShs~V!`ixVHbM~*o1bzBlaOU3}49nfY z=EMr3#J7#(UH)i~GWmewpT5bI+ zch>xdGR))It@RCcUb2;}_aZRS+eVj1*xf);!1ZGGcNwln3MVe$*j>DbSzsOwY9!_k%|t+~);1aE=3QNbi&fBjcA9+Dz+ zIX<6QGGTOZt|JFU36W;RoH%v?vbNMT&0ZlY*eIxZP1roRtNson!(C-CayLXzqqu^8 z90@rkKj2xkssbTHDxgHYE=pA_Xan z@RqWQ#<l;A`|F%)IkW}M{j{+d(#-`Uo}UE{h@(%gnLb`r;!{CN(7@N6 zI*Rb*!D;+)pXHaGl@9h&3e(E+?&|No7n<%7!Q+Iu|HeBo*bTwVKf*AE-ZR9UHwB!S+d<;6{uBY&St{@iTl6%DEUVh{jB zE5)MDMOjCQb=4K<%eAjn&9AC!*$5%E`awxluG@|r-Ys^)Ga#=fY^Z%jU&1PV%QrUZ9;Pv7HceT%IWNy~T@iEbg*O9IXy4&~@=IhNHls@!#ZV6$9ZM z&GRNjKU5^D>c_mkFQscxrSjOyGjLO2E7H2`fio^$d4v{1i9M$2P+Vh^1-4zHiWW7$ z5%{ui-vCILlV2EQ}aIpD*<2R&?3@&h73YpK3_oBmhO}iSUptM-2MFuW?(P+^G^hD#*XXHKzPQ_nS%Y=V z+H5}V(bbUAo~tv2>ilql4w(P)(yZ&YD9P*A@448%nWna(*b-Q4d4KmOu6=1RF$lxh zRKWP3B7|k`I~nBZR1np#R^6;H1|qe5+G&r@xlWmsnmu#cp~^KvOl~LEI>SCMj&9!2 z?7O^@)Y%Exjn}y@4m$IeYu4{yeVKI%;y&K*#5u?5p)2x(voahFAN8BTWu@$e+ZxXQ z#xh7hriG8uZVklK9>mMK_%G?d@YUVbtiQUDpBomv6ZpzKDu&GEwxNy#=_I?i~HySz??cDdk?Oy8j=5Je04c*m) zA|Bdk$a2sZJ+#rCa(jWjD|M^6oE08QqS`udC^Q9@M_YxO>G5AKZ9hrxI&_O%ThwkU zp*Ta@0v~e=+_rD>#`JMYluhuIgJ(i;>+s5=+~+!~)lSa9{$KABp4-*zSIlX=IEO|z zN(iY3q1Wb&% z>e^N9wnqM{0&}gbh4gOU+u|Um{7@xAZN0yf5 zaY_@1`_2%y^pYWO>(-OgN~(5P zEZ%5dh9I>D1&w^ZMp+yjCD8~HHrvvnnsh7KlO;A*deWwTph)j@DV=l}wk>q(5@k}8 z5PuahEtz(aJJEc3wir~E#!^nLO`wX#ZXO>z;>NAyaU|RlS`1q#Yg0vw8_)_*7V5Ec zkqco1aehiL`;zJE!0n8%9`h5`pti|f_M&O@3Z?F=$brW+$z>l>E>Z^R(a!`;!S|av zG+tq`C*q9DJ2-U!rW{djN<^$81o=OiTco~oLGq<2yr zlmz=K)PL`=?IF|;`9Qh5Kv5fNETKaMDYW@%7qncnZ?a-M8WmLhu(y}|JK35q>pK@y zvk~4b&#xmaZyJ3vL7Ly565R31}cClCkunsw<3cyz6h)bhUj#UdR1-(y5dtg5Q!e)ckCi7J=leE~^0RJh4V zJIqJQ)a`z3PO1(=87k>vc>cWd8Mm#%Xno|ugH`x?;2u2P6jR%w`So||9L_g_8;)}Z zp_{hox%9Ep!Z0_|o-}ie|2SuW1!fYH7t1pWk)vUxdU45kf%sJ^88G9(Gv1&DrMRHr z3o;&xQh?9{{%R0?X2j}rS{#E@!NdJGycH|L&(NwDVaccFm*yb;_rcNjTJwcSkisdJV2Q~!(lUs}c}o^&d2Hlvu>S-)g)2V?_a>@^FN!2&nX$+ldsY(S zF@c3(OOGls4Nh-)$a;w5LQA+6ifk_s{!%;3toq`~y}`Fdq6qv=0=09Qz`V!FpKATEDU=k?!lFm93&b0T=l=*S z5^?(b)QTud2Yr;UI5)wghp>qqjTTrdMG|lc(B2=IzfQ_}1uGs%jt*>1SSSgPeSCW9 z{FnLJ@C%F7lN$|4X(narkIP}0%-fwqbWFw|E%d;ar@Eu#dV_1L6N|jFChHyVcDOCf zv7`8Lif{L=FVoh5>0yNq#HYjdjXT>qANkVYaV%r*lHaf(9Lw)9K=AzO^8IX+;`Ab| zW#QY@jH@8>sxTN8sks}j0b_%;iA<_HL55`Fn-2(Yp z$OY0ol=WM`paoxMXcj$dd8_ke5dWBPG74;wmS){Vbv`fJJ$>k3;M=duwUNXrnM@Hj zdpDY@v8mwpNp1YpN0tC08Pd`Hfgx^Z_AktdE8n)Yj~#IB;^V#6kW)k=FU z{7X*%=25yC-ie3-6s`_IEM2a$o9=9Z^wF7l>`Vcg#6I9nxw^&Je`~w)c9S}x=aHfU zYu&2<`#bo`ElLD`CeLvGRI;*m=hV8$h;%o15)-X+cp4Rr8Dja!H2& zG+QQaV|4w{iGYMw{I-e>*>^_t;j()kLKOP;5csa&3SZZ{3xHk>%cj0npWc94mE;2H zh@_UnObf*lad(T@&fcb9w@sHJC|L08|5{2rL9{_`&FJdnLoumAt77MQ|CDuurxyr{L#HxRI_jJj z5zncc&IkTFGA_l{5Z#~@sn3ahOaIbtg77mgm+(n<@EUm-?d+3?Km>5CMfR}`R^=h- zj9FlN*qX5{@UhZAw05$Ze5;TWxhZw(b^?!Sl-09BF#UC*gGBqHtS8%9d!l>e1rQge zc&3Q-d(`gJvr~uqRwecpANV5ua`6Ub8v8Oz6OVfcz`tpxUaR5ZgBE)8vi9$$0g$STY)BjK)0sb|`x2|I5d&c|0BwwrUJgt{Wx|i`CJGMelJU+fZnB-AB15s93aDk@e6)s#?1gTqXC*a70 zhWg7;v-^N+feI*B9sf&T$Cjb|p?HgDnfVU_1bQ!2jpFiJq{t|OIsq)w4X6)68WEFz zp1FBv^ovi(+^%ifg+YC2Ka+lYb=tsd-0*$5zJzI9T)5wvQcWa3_odh3>q*V~C5DwWT1@oTSI{5=99<#X zg~QqA3nJy9X3@-FB%n*S%d>dG?Nu?Z zNU-5qHRr$Kxx7%uT^`|=UBh6bX3$ekevbpB53_-wf2I3n#7;mA<5+GcH}ye zEpnwwJN8RWRU+dtABE4?%~#M4!F3)>OKP^Kw1rN24Ycd&#j692U&g#Nh?XiR|Ssr zATZOs#d?x@qgsX?p$KD1B&(`k0_`gi` zvN>9;BZQ`PZ&KDdA7YM#`RWpEwWLEOSa1aZtU9yADE~joWXZ%*Rq(ZOK70tKEus?` zA~v5kue;O(cB^94(8NsW#N{N{xji#(VVj36-yTjHmjIgoJz?liXV>c~{u{nvy$GA0 zifY#v0QLBsZciKrE;|{R9zQuzlM1 z47?PtKgm5g`QXxjQ6)u|b$onWR2twL6UBD*dVjh&|19oLrct&tV&DT%^QnEWhJRec z{h!|;<2lrV^cR5ac#wf9hLJ`t22(wp5_n3Gw|VRo`^zZt?;o7J2pU z{p3HW->hA4o+e%-2^#b7)3opzt(_RT&Neo5Detn0_Ic}T96DB8!n?RJCIycd(}w!m zsw@3FTW~Whw0J5)(4&gq(raRT0`yu^(I5d%c(CG_jpc9lDk)e}4$S(ds2Wl0;A2(f z(@+ff380{fLbpLU-_!fMmMsDdg)^#wsaoa_2M|JUp;B@Prs@U(zrc=YfQjHQ4H z4?02Ua=+kroB6vFv(4Y6#3+7KvLdT7EUD}8fBg5wXY0&$uXE&`c_u(i>Fd(+*j(4K z^>Yq>ra*`6HIMv6&7zyIzP<0ioCSMJM<~j#S_u0QpP4?#Jr`x@3oP$1tSf(&J+$aDJott=4eidy?{~`TIRTZQRkI)Q|G4 z<1e)lb^F9ea}#Xgs~S=7aQ#>2Z`b-C+=Kv>v%VK$5Qm!jbJ8 z(kKwYV6)Bn46h<*1V4#9#}8iq&kOR)60k8!kzZ2)gcfu%Y(YUAfPKTo_5-y$jQ`oJ zUmkki@g}j<1ovODZ+jQ1Dq>{1eT=5Z8YQJ>-k_X&eFX(=vV0Aop#G=^{r1n|NY~7_r$At zz*Dj4e9hm3n7U6DRn6F@R3?WzIh%@o105Hg1Hzu(Wb_7dSAU{}eo$MqAN=**O2mvQ z^7+HBylUG1rB3ieFeGU99y^3vk%7s{KyvFe!ju9TYD?Q;tF-73aYE8$1GF_fg-HG| zW8Z-IY&BdhI$|g}4rell3iAE0FVNHP=J0yG6Ge*2VZq4X!ctRBNjy#K^AwYVQ={+mC+6mcyR9PGst;HFD2sds;J*vkP4~`9zUG7LnaveTG zg)N+LmH;73ex+nJG3EQpbQ?G_>25;0mY(}26X9L%rxxg>h`&Tk7>>j*(+_Ux&psx1 zr}S=n++zpPT_Y)K8?N|EsMV1sr1z|jt5bqB5VE#QWFQFS;dZ`UDsQ)?)EuQ5j*(d z9yh6_fu8?KpFb_cJr9N@q58u(RD((&WILk3?P)K)ba}NsMo4SQ|6x@>fb_nwvh!Mr z%YaBP1BZuc7Lbgy=$m{Ff4OhzNrhi*w?GeqrI14QEjHVEo`XR^jv4vSNgfEq(5z?k zgG1EeRFEiP`UcLt{;&lRKEIzDHUKJObT|{xuP@kVB`WiEA&kf~NbX-+|E?FxV;rrw z)O^}x<=>>9h2>Qr*gXXF<9k9lwQ*!4qsr`EgI&ibSE;>Us1{8Fp7!>DkGg3<#w}e@ z=x~q%@0}zAc32cNgdzS$ISVKh*+F!K$RIM6zD-=hwRi6&L)$T+o`#*dsxiqAvf;(? zm8t4&%zA0=J>ve_A7jBwE*rDm;%h|aF!DqVB_M&#?LO#&W#oOZv}pl!`(=D5^oBsp z+A+JuKY9MX5^CT;Up6dYQKH zK7DG3hVMmsy#dxzg;UQf`gI&v>+ZJkN78Mx41?#7fGZYmRx0lw33TPWEf(URntaHW zJjD=hB%dbv(^2{{&RvFvxD@<&$RWhe`d2&za2I<>G9>8yJV$Drgb^YG4Oc}#VULXgNh@Yx(Ps%RQm^VVeqzVQX)?}(A^?BE z_L(ZlxfUFuR4hFRXclX&^`jMPl$T?=wr&}UxxloXus zHAvATHJ_?%e#gGN?$PswC-c{jDP{+SzfA~tiDh5W^Wp%>j+%?#lXBbh(9GU3RhHR{ zluO`=u*Wx-gtv_o>-ALl(K-Ki8U1Ks4)v- zY1L-v?c*6Qs#jW!s>N#MgqCHG1CvJiDt31TKS&8mo$#4Z2Vn>MR{R5No#8wn4~%~teo>{J(SQZXIRhqbh@V#qE^o2*R0tsCqNLoZirsp8hSt^}>c4@|*~{`^EslYj z#U%*34(4Tu#NC}UnDW1(O%42*cc5I7p1pI{^A(^a6Y0`Tw8(u=IpG)&@{9XOlWft2 z3Oe|{b=nTc5<52_SptiUtbi@!8Rg98TXYI3_L@A>%h2r z@aTTFE1U2|J@*dQg>jw_UT_=4U_^J4<+10J9J#=!1e3slyMBKV!}V35+l)mO3Z}v< zyxm#UUp;`)-xgn(IgIJag`(Uh^SZP%#8a|5k4A0lhZ%-#BmorHKRM{HSbqvarGN|^ zPaN+4m_NaT27)vvb>}bQ1H3yOgg8cavrABU9DwqNrU2%evDUhsV&C|4Xz!7f=(aqe z|N7{TfW)1H<$FjF$7|Xnx;{X!zhupZ)yGqYh<)&QD<{~Irun{a`5@|5|`}k0W zYjnvfi@|YX5C|I5n`)I!ZBnMORN+f@@K{JV{3#Qr%F zq=x;~X99D;e$HDenn5qbmZV3>M97+fbj)!H1tYgA;KN1vY1-Ad`fx=f_a-R9LCB$k zXV2og0vFU+EYvKBogd~dSfGl=oxOL$slC_nd7d`Tt^VBgdHlWtEhRSHSW3^dJifA3 zhMmf}RV8rsb5pT(#3I5NF$@8Yit@MPkZ+rgS$``h*|RWIx*Zl4P|l)DzBVuF1(F<6 zE+)-}4Pq(A^A5>wCGO|>fq?2k9I!=~$Fil?i1bsdO0~PYwfNAe!zJq@at9mCI zG>`5*>nPAWGFRw}fyXeZmYLYJWX9})9#J6q&vi}ye5eu82ym2tu(C)?xGeMBku7kQ zVx6i&gafgZc_!UwZH3fr0YGr5L=H?)RsAtj40}n{tgn8mD&MM%H(v(NuOQE{^pD4a zFrL5&R*x79F=#+|SC9~6EV|@qD-<2OQOKN0`ri6#1ESW&ZNpQqO0z+^V5qtdrLEvA z*aCR$kS{W?@Wp?S=|~Lt#QBhCOuQdwWH_Kldz@AVqddASExPW9?Wkj(Zvg2$p;no8 zsas!Il#Dq;8AeF6pzUi!cRV|26MZ>zMChn<&}5`VTiN~u#v}SE!U=#3^DKRj z@ATJ9Cd@=*iC|=96(GE#8e07HPF3wjRaMUXw)k&-{!5+AZ<0$?!-4PwZMN$J$bYu! zrkkpO;s%5*Dm;2ZFrPbHg&!&?F2PJbS`ZqLq(q+BITrv0B}9k~=MPX=E7SgUKnz%v z2pkF_q-Fb=FE3nYWak2a#IAc~_<71t_VJ?qVCw@01~(WLuCK7d3je2xEh|i)feB0- zuxZ7i3M~kL00}4N8ZiDyLNPly@x&8hM7WNs7s(6*BOrnVGX+>dg-JO8CFXBwf_8yjPb_!p%HKYhIZU zov5a1?AP%c{c7yAS<=urOK`-lp)Tqr(w4Jwd6g#iBUja*Xku5G*xHycPO{Al$0Bgt zaq%3!4tXsDa}R#p$u<`9`W=A$cEm+$Neh)It=n~~XUjD!i3^^liDOz!z0TzVm)QEu z_5%6XE#*VRkRi=C-p{0TATY>q;fDdFOwie!vVAl`s`qL?G8xPKhy!cWjZz zFqzV^sjshjU_VW?oo~KM+rhhVwIv+8d69Cvj0M-Z&wU>d3=SFcF}2|v0Z0^ubh9xFOaV3^0SP-n69Dkc%l!WUScrbp z>S#axpa}>W9vVCt?OUoTV;*dp(*pC4i!(4s<}WmL$pvK)Wh@%Yvua6mIX*R?>-B{Z^qLc-b>@7^F)wG)XIN{>txHpBAs zm5A_Suf8~>mU7FTpZ1GLHhd)Qb}X)!v$HbbGH3xt2tkTX>ITX<0SJ)Vfb#;_%ENXXyJ|oLYGkw>`|Pui+NTc^7&$-(123H$a|Tq~01xc9 znXri*gpDQ7%l$BR>#x7QP<~5mK4py2exT97tO<<1IlSDFTGV z62rJ5=_)9=(Cye63Mytb30jN#+G?rOZ7#=u0r)7W)3Z9RD_Ciq)3#bU3`lKFmDST` zE=9d8{6~s4rOw+V%3`r3X3{01HozF@+XM9v)CBG(^W zEdzQ+GGcN;u7AE2(>L;d-fa{;RKdbRKlC=12`EezuWM3~(vQzmCG5T^SGMoeSJ_i(F@ZD?FEwc*ns~If-?S7fCkzJod<7`C6s~1zks{|1++pTTp9qE&4L^Yry6ZiF5b6QM zur;F3BP1C1(=efIv>1R4d=|L2$;O+=|7aau^%~zL^Py=lA=U&zFh^VXcJH|34upxA zBr*s8YQHxdUwN1K!Qm?dZ-PlAV;LGF-it33uyvix8iW5A5XyG}n1n~-oub(!G8y>* z9aw1$8aN0OI1@xI$Y+lNp>*w9p~ThCeE^YlUmRHIFa$LGV+kCWX(7UJMG|;%DV5N; zxb&!5cCJL*Gw*t$G@k~>Uv%|dGi{*L!35E%7k z(Q2U4K$^@zi=>nLAtF)OLT#9}U~A4`ji~|}4Hz^gd89d917KkWLMJD|3?TV|NuYeQ zyRLybbTl8;F$q5k*7?wVO*nj$YSS&}@X27Gdr7J_spdQkTqMnfg8G5XkxE2{5xPHN`YZ(>EwJ>|qb6U~Bz#Lq3Wlml02fU;O_Uu=bycxF)Q7K!9mlab zrCZYLoGZ3VuTxL8W1eLZv}{#%i&6zhiIO6!_WVKYJb8r_cE~bq2?-FSiEZ|@t`X0R#vTL7TO2ewRu+=}Smp z>7S-$n5aOCer$c(OhasK6WZin!x`NOW{JKD?YQGkf}=Tg@4Mf=+Rxw8`kDo5)-rfE zu2VJ48A*wIXoEh}Hp1kO;GkLCYEGYKPG-s4#Nv<*6B{f@0Cl9MBvU3&0W>(#!J2i9 znuzl+0u2QRhspsu-W;v}=RV5#yH4V6*kWikWfJ%g(bm5E-n+7ynp14A&cyp@FaXTK z7=vgNl2Y!)$(Z-D?H{%!+8BZtzM)iN-8iE$1v|V$qF=$Vpz#He?5FKAtqR);bsTbo zM=-z9@A%*Ne=&vR8?gSC6vOfoaq4#U3Hy_NXY?)1gaIFXD*y!i1^@&^yE^wD=L-Er ziqR$kD{PI~1u!%ITy)_@vY%=j0XkbK7_vMUUvjYkEEqq|QeQ8=&2`pYhw;Pu8VLrQ z02P1_m}bVDUp3e@%MpZ_7hQaj0Mh=X|0z})|NQ4a@p*NDLOLJvKk^@$;HJ8!S^yWA zT>%auuA}K_t$_LlD@e?Ufsi}VGFjD_x{ zqXHHffYDrVA05-8`H)8$xPCAR+)KLw3QXj#gqCt(L||5sGQq%62KS-*WB|aKj`GpE zu(k3r_X3zWTrYbTzBbmR`^EJ?*rpEMoQp|PBp6wqz35|+k6Aff6WRw-Bzd-RK{!rq zA-{;WXnCSrVSz(UB7lLmXCqNhy3cu%1+`@hnHI#>*3f;n{I_U4;;49@`il;<$W=4>^IfXVPrIl)allK#>m-y?)X{JqvU1&L zo#z$rm+Td(SzIJzCnwUSRzYV?Bp?5fXlf>xf; zE|F~b#$h^;CR)GZTZ3`Nzrvl+kb<)h7)hPA&p+>c>8bton{UUfw&P3~5As^%8<-U| z3Vh>CP+YUN5G@J2Z^GOHWN=_r#^z5#s9=c65_{wS{O3O!C2M5`Av-C<{Tr)W9nk+r zFeQL`>h?TcG;M%7V4EKo+83fm@m-#;*UXH7cEMP=ng~D+&kdb--ak~Dw~DTT@~Qkm znI8OKZ1FBM4KO)qIE~N@8DWBO|NZyzOpIZeFfd`$x3ktGvVEPzSHPiO$B%m99NGi4 zqY%J=@xqAbIQN`$Ew}~mL7BM?g!ikeeMc%JhHxs zaE(9%%uNWp_|BccD9j-MV*XFGUjSt5FA)73frAPW{+KRw%D93vGvzS9VY=*okEFk9 zsO}R_IFWD2BE_Y3(zoxv`)&c)c2Q7KT~$SyZW%DaoTIO?hK1L!D*x+IM;;{yY7h;g zh|;IchlcB}DJ+DL$L-tX8#rhnLQxasFfK7paepwX-vWH@ObtjNuu^D+b6;apC;?=| zVgKr|IaTTYCt(y*>be@C28Z_jZS0+kz3VwIpQYG4m$UP>_4i52WXCFD>#7cy_Y73h z&R>X?%H@O(Q^W#jFx-a5Ehafk5*mk6B4IIs!ib

      yw#Y(8C7B-JC!_YFrw0=Jn^YcLi39NrR_PoB$@OJ0%BH3od935Zh+SE|TP5tSv zviHh>?Cku;V489z3!vTjlk|427V3@dvSf1OSZbm&!uhw>=XZ?V-Q-Uh5(#NABBKlV zNSbDlR5pMhTRDJwEZyKAAOIT{<~Zj`sux>B2f2dn9Hum92RWw8W@PZP1SjtSLa~Y4 zUq^7;#*2+2s%b{;Eq^N`QZ8CQrpIp42cy#hX0gR^TP!G~4pAg7;busN^raAG@>#5a z*FS8XL~fn>SnwnjZ}~9D6c|^Lv=|6cDY~`_p{z_-jY&O+W z(riS>?;th+Sh~CB*fCJpDjQ6Mg~N&qr{Aj$6QW;P7E6G5Vi=oA_ky$su;;h(?`)#HxHPm>37<=Va)LXz z^S3<))-hq0qIwC$6Ct6uhpRp1JwmxsXe`foX*G?z})=Q6LP(-6Nxzb~Ez z06?4r=qzjk1v+yCqXkk0XB-o^BiIhtRYl((Uj5*kk@1SLv_Aat#Zb>8)U9BfF!OQs zCx@F3Bpx;;L)(;>&|?)Bg>){nA>>X3YBgVn(W{lb(tT?#ubp0eG>F?OnUML3M}(Gj zGi7ad8KaR?+YBgoQ!e#GtVXwEQ5e1CBE#CiwTY&WqE$C_C{PXRo()Vo| zyL-4-S1eLRoW3^LRu!f7BOM)GmIe>j1m7Q*mFh>DMX*Hshem3DsqnUg6FNs!!=pPl zi)x8!NsvtR2|&(cQ{~46UI1-ir(VI{{ijOno!<1H-v4QUZs4|ye`9%34Djv8Nd7CK z?%C#rZYz~Dannd>cf3Ol}fq-S?;dRg(_eWzTyEmYOub-+tRhi zK~DM!^>A>BwqB+(rR5WU)Fo`sae-%yP{<;i5y}`?Xd#|p9k7fl zBY?urHK;I5xqAb1p;u)2I0h+uX5!3-JE7Y~=|i|Qs`q!q7L;bYh?NMI7_9yeG+p!X zR=g&cGS(!dsh4cSwMkcq4A^6^G1wSp4XL>(CCPYL4n@~b7I(BV+%ft@pkJLkHh3NY zD4Qg?gPR-c%xsNz5qRC^{hc(p++q~{ko34YTszSLor9~?2!Zf_6Xd}La4?o5?a4h6 zzak?EHTo)nVEr(}7KmQY~v z{=yTs-Dgs0%7X|XEG!5<$3Bm8dkfE7nRzil=DH`uUW9M)ohzDSalFiPh`*kH)3o#2Bn*g1{B(`5PmQ@TlS|(a* zpDh|?Y#hL{K}?H)QWI6n)bFvc6ixhY4&w)LM<_kfka|RHOz2*nih%AU7KQ)qzH=znoT*4gF(|}}R|c^hvAowL%L%n1jQ}9)clV%3xM1TZ)Ze^Y zcO86Sv!(8&j9@D_adVQ5#5-PnpjQKgc=u}JLDlt*j&7DYl_=EmV&|+WOIQ9riQ9}x zJhM!D7dx*mq_MvmeLj`H66MVJ_%W@Nz)hDVaMwWB@(DZN?eqz@kIIVzV8iW^O&(jw zU^J2#2&H;xO#Zc=z>sRBL7zt!ofVGbk!;IG3lqw^!|0tf~c@X@^{hVQ4|5 z#5HI^_#@qT8Yio;DbHX((rzY2>u_mOjnwjJM^o`o26eTsrqsALI;Z*i14=%D>0C*p zc*_%Z4}U&Vd((;!nXznl^UsetZ!NE_Ef{=`rFHdn?euCmsa-v>Aali+xPDu8v8=vy ztI;=k9I~g`^<9^BZh(sG=C5Fmqm@|epo~?=@@vF=`(V?O*3UoSuV(X9%^Gb@60Sg` z!aqPinrn0{9eanu=MEXOp$ax@&iZD-J)@ke80jpXaKUjV9nunPwq3n4B0|wibuMkW zY@tSG6o`fL_{hgIPJFL5*E~g1V>|qkij+~kI>8uY{DId#R@NmBbawmpilNAvXSfgZ z@_Vb!EVUCQ$C|VyBtpNvBMr05mfLsKq3s^V1BQLg+ARCa?v6^>!r_U@mR1t4Q(kB> zjU3x^yFJ*IYUGdlr>sf~^OjXxWE;eJi@*`75I2VqD95DesGcf0mow({4O?G^7i^Q$ zSI2^5E~6<>!imxw=X@9m^<0r1s#>lH=kgruPP8RtYDg;=T|GNB26_5VAU*iCw4Y`#^Z-iGREd~vS)W31=`8!6geb8x!E6( zMi;bXyuo1@g`vaiBT4!Ui0+TBoF+$mpv+T0Qp2T>S;0gj_m})c4dsTrS|j&NvDc9W zwdme#aQgaD*QKfVOOLHO{&e8K-)z9#2#?z{QsA>r8)?5WykQWzO25M_P-k?JmF|dP z`L(K5qpfsZj(bK|iCJB}Y`d1wnvB86$)Gl$ID(tIj|(srd>$=^sA?E@USn#iv9x>Erv2Hd4BB|`AbnZcI-s$I?Y}XS)j$_y0kFq7ts#GsmLTRlfK%< zfOI|%Mv%Kxx)<|RDm}e4Ef{F`uU3$$sE~nVCtlCDal_y7x8}hX+wl2 zeo<&xRHVt6{U?YmtUwCbkkaIzh`*&ohbFG%nI1i^Skc+tP`PswIV0u>i# zkE8t72uPaD)*&UsXR=VIP2>g3>fJj=PnE4{ zjNZt~tMT(VS!YG(44OS-oSa=XoRwO-L^Pk5hVVe8P~Qy4BphZp%4A}8SuD^F#|v_x ze8|^3$hiK;?;$8Ti`S#B0D9+L_CqadYR>Blw&>4nQTrXIr!_3P)NPpV`+IPZ(Q~n0 zDv*qCSD9U8HuVhf*RYJLT#U{KHWP2IP_M}<;IAn+l4@fXuH6p8)j=N7ApLQ!{=Cs} zX{@MJ$aoUx+3ETcxwmm&T3UR`)uoh(JTRi=mQV^f7&#pBrz zW5Iz$)m;Gf{_l=HY|;Iy+j#2defc(0vhH}p!+9MxJ~u-l2>=ch-kLN%&{*g+=dqGr z*!yU?Zfr&UXf%GEcXXXn=#jPFEJ>Cx1s8WRu6EcBd?ET2QrRUrz1Lds^h><$2Ite3 zgMr+Be+jM+Y>%3p>!(It#cJ^?~EOACo61$}naE%B$?{J2xNS zrj?(K?N-^!nT;(N2X^iNTqtL|K0i&gPU>3=ujS=To6J5L`R}=MKHUV@uxr1BDluX2J$2T$pL=-{I2}F%Yh3bQ8aaKc?uaj>{4I zre@KLZ~gM#KLz5ApSFmvR@Psdb_^jX7ys(aw5ZVBf_H#n_@yfA5A)4eb?+v{lKxC& zeLOVa8Y1Q@vZlGKde20v+yW2-NPDz>J@WF<9&TLYw;u7xJ9_tnc>VTss;9eQj(_zZ z9{)W-@s6tPrM=sexXbJ+{C=q=Z}e%)AM$*DdJ9jq8y_Y%_T~L$w9&;OCLIWFxdpdy zq(?<20=vlgicT=Fx4Tkvy7HsP#7BR!!o*&_lbGj*&LYBBzh}AI~~#zI4&q@P?ohyZCGA zLeYYXaGUm(z91}~*#dWxKyBd?H;V=<)4cIuw1}1!w4+$@164bI|~TaBgjXd4?> z!(#^ClzsrvpL=|&lhLCdq7ZVTxjtFZrT$n&uo(a)QYQO{yVJ^qC(rj_AXigqhL~vQ zGBDl@Fg(Hmv4bO-{-Ua?*l--`syN_Aqe%~fe~ezZ**5~#Dx`&2f9_A)ZT^O}n|Xcx zv8oL%y1$L9jXIUGV9tg@RATlm5?(kKmojC*D&Wu%k5iXo64SvMXq_}R=CLOLmjXnk z_*=5e)lTqJFXFR59dA$rl3&gp)%Z`MNvv$+({CRiUUr|(!x4@@ksENGHs|H#4LpzM zNE)wGPcSZI>tl?)?F_h0FBtp3EpwfojNvlao-2YUY;a@N) zpyZkIM4|FBIk*L_f()U~aqIKBQX&8Cqd!sQWt>a8p&8-sGag5*YpJNHM6Gj0TkfMg z{c%=?MCRdKd_~(fr*@{< z{0~>E=Qem-3g=VczElnkdhoXN9=KZSRmySG7itvv=d0zF$5g^pV~f$W#gzRW6?cRQ zRUfZi#2NWe_pO<{Lz@P5d;_ZDniOhtd0*Se-M4`(mstCsQYz<$N&5BzXvu$cD1&~D zAqNU?ulg|#j2U?A5F1}g$^~$3>kL(|4d~`AX#5E9z$EL1%$$DrJwKFLVO_TW9qe4Gf;zW~cyud!&f z6%L=94^&9pwoaB#!l!eQyPaL?8r=9!b>NFZ;Gfz`A$uuy#_Y^%QP1_cBQKYkq0P^F zhf^{*b4Nm1QqJZwuRqoU9$ArjAN1h(Yo^g)Qsu**hwPC^x{&FBqyOlC%%u>ZDsCBDtdi9x>(p?(6di;^QB zno&Qd8x0w$JqN%+$F#1HkB*%>T%s5K1lOXVcLM}gQD>@a7vhF~7Xv=+o?U;l9{z!f zb*3^h)kBYIT~~~qnZT@oSGXvk$}4#8DDb-6_`sq#+owzf4nJMLrWv?In&MQN(#r;Z zrdQhk)g zspZv`^GnvKCAFL@20bt0Kpf6&w-hM(xG#q4`*3|G)8xOCAb-^a$9N-53-n)c{24Cc zt-3Tei#n<5bz#%o1u2v-RRldE93c`GCIzoU!f_&pEYFew##6?3{*e+vvA8{Fm+5A) z)1!IsE+(ui84W`w;oDVvqeJ}jKR4H->*n=<_7}fyAd1zh%bbqx!LHo~yNA!dd;3XK zM!=8FaPljWSj-eR2~lc7`QdAq{ophBbwx+LH;bq6z5v^S2r{1!CHbq*(myapTz-S< z;vU`*b34@DxBLwXk$UcQ;xlrboM!FJ?unRRY59re3;BXv{QeBR8^l4CFGFE31}{!>Wro88x9BKujxFHLNA^Jp-*qqzQJ zgIQGdv}^|P%~?(U+vtUje1EYTt9Q3t%ahjwy42fq?N)&cMD`bC+ns}EKUSIoCVG)> z$_;@ETR=J;?2S($@nqYK8wK-s2!|D1#W@!?ECC51taDm`xgH)gnoS~^X8@(a>;mbW zXBvS<>!Rj9@2m$W&DbtQ0bF>Fb+q?rhOxo8%b0!4;&4;I8p zlrig)RK-^ZT$huzz{WBJ)oK@1cs4r*7`oS5X9ULNH8R6>+T=(!)}K#3uLZoG;hnt? z$9P)DXj+-f6B?uk?PTA07Ab(Z&?6D&BDmx`MLc#;Bgo2Ds4is@lHPYYVWA}hf&}Q z9KI;|A>*fZH)d_;Bi__!DTXsU+_Qr%gR(AOJW~ocU3_0XB%bAW`SZ))tZPd#Ndl)& z!Gn8n1&eOrXUF0fKX_DBGe8V36Uph4Bq2z@10Ieb&^+vLvAd6~8KOWb#J{2}et{QD zEC4*3p!K4C34pii>-4LPBq{(}6?7V81}(@WTiix6BNK`3eDEPZj`PnI>|Y9Yrkgp+(@Dwjzj!u0rYnq*fIYavWErK&sGQZ`xbtKJkBS2lhZhzR6oor zh*98Vms09oim|<^@E@fFLNl8G1s>N99d1W$eEW2cLDPLRWk@kTw|)kX0?wDXOo-dR zcFHypcYVC#$y*RQ(G5Xy?%!BS2O!cM!Br+&6bI9z|Jq;vnES3;abJBX0Z60Vf>JN= z#H_=~7F99huNd4vz<}Rul+g2A6o3l^4|=SDNTU_yQHBN{B$gU($#?Zvo}Q=FL8L_h zhZ6#aO+ZjSJwV|a2y7F@MF7<%2lxAZZR)~+?u-Cwc2hTtz|R|gN~K&Q!yU~Z2bg2= z&GNP%58tq>IVQpj_rzptm$wXsvF_3@AvK#7Xc?%M^bDM=Vq(C3&(L{Nl6^6o(2en@ z|3vN4;MpO{W0@v)Aq|YEGp*;+Ul6MZxMG`deVML(Zm#gik3?31r3k3)S_wi2A`+Td zRV`cSSph-nFK}jnp3)D5GsKm8joeml1ud}8FIi&4Lf3)u?Vpcu#(@Hbejc23@NxYw z-2KA+5EL79hJ8O9`0_W${SdzjxU%V!@W9kMO7V57)FB?;SkU_6N+?}SPGcX`133uT z@viZNf6^Z!x)T6js(2$-;=*J+0#7lq}Is&}7h_Q&O*~&!R`#w!|=JsgwpDgf+%uA7@j7 zrV_n(S}Lmzbrr;k7(lKN*zb4=&-A6a={{;;unTz=X3LMGpGz4dq<&&j+2Xsx1R-bH zgk6o3zWY1{KX6z-w})>uE6Z|{2h?wjIw$KF^GM-r-?FiOpCYE2alOhdob4`(PiE4> z84<18gO?Qr)qcC|MQ-e0aUdue9q4$j4qzXGs>lK&k+&Guh8sk|i*aX4Efkn6SGU2F zQ_RP|So{}m>bpJf;8|?y#eQFJf&RN~IIZ%?5=Hhr#6P`jDQ6m-sukRi9Qqb!%lqcW z#VXkZ!I4SgU;C|z z8FX4r7-(?xV?)reUjOH66RA2}&U;T!{jh9X&3F@kI0*{ zrH4d>yZmme*hHA5w9DFuZ_Q3aZ2JqN4^08~nRR(sZ=iy+fS&8ECn4sw3+3IXV-=3w zzEOc;V@G~(*Vn$*ofG27mor;C9s8v&t(y-LuUc_+YEFKLbmEIZdWhZAo3MK1AlKl6 zh-Dh$EYw^n*$Hy5kGRvmcPd-AK!>n7>2!blhbZ3jDUtI5dAeRgvMx{&e zY~^$-_7UHZsx3fE(v&ni%OIqJz>=hE<#g(i9yCc`+d@UFibSPUAA+*AWxFHZ)O_hA zc?n#T7jEjZal~(9cS*qEBO3Fj!;M7gV4#BQrY{)xG{50Lz(j8NOBZn%l#09`b1Qg& znQk+RZJBh#Y3IFY&SZl^Od=2x?!4Z1>`DB5nsn4KOqL|d%c&*3t7c z<gpEov2XnbJ9XF6*@iSrCg&TlW6;^((NUJXU1LcOpp zF%j`(d2%@tZTM6`EcIpdR=az6hBJ(%Dp!hqYna zOZ=qEDuatQeLV&! zdF8K6msuL;5gObV%S>LMRI&;+7R)?ZXRu+wrk)D-y+d=?rk6IJD>DF~ z?TRNL8yEC2Ffy`h8@@*>b6DEvl#|TYZlJNl<|1M;R5njX#mx@~V$&OT=%(kUW8}rC zamZLb9~r;43D}*Wt-dKlQgDNN=Y0bVAiu@emufZg+U6EEt?Mrgo9P0`l~e^=q#xrM z4fSJjWxwyY8ie?tw(cF)WpERk2z8%#cOvwg)P*h(l;Q#S0N9yv25kX$Q8vP+Fq5o% zaezU$-Y0|~FPxjC5G4XACJ{Y4H%*NJ6K<<+J4co9&u}F<)4-KcbowE_^uju#nUPcY zb~qzkTY11kgi}TlcTXik7J3%)h1FT1+Jx8o2&nLuTr+3)i{87N^%qH~Wj4(Nt)TML z{1EKLgLIl8bGg~YTN_gx3_#A6QGZ5b{jM;XXF5UzDdXF`#qI+@*vu#alT+*l z5XcelvE>m$jv1&;6%3eZR;NT?h?yL-WiML%!u_KlStJS`7ZiUKZU*u%aA@6q(}`Vb ztw8h$k6f&%Ua}LhT_dKeuES)_a!MT*fxcbvUu1188MBac9V>~n4XkJ$g?Se6c2u#| za+1$kU_^X#DhH?hXAu;^@m44?*@NWQG@w5Wb{V8;r2nljT`-ro;S0_+;YAAV`wE1zf?6e;1Wr615Y*P@BU;=)f$SV=fbg2hY$??nwkq5ufZm4&&AjkDx zO?)DEB8mSFO=iwSS@ZkNeu{M)teFWAQFz;XqaXub#-n3U_}J@@0I~8-nI$sGrI|tK z5pG3)<2*-3IR|wPQb1E8k%7k>;T#+d2*>|H0{7_@T?v<@TaJfnS<1-Z`4J;9^xIl} zr*m@8c(Vo(L*ZKr?$$z|KcuhiqeWAG#Ulkho*wFJ&5BcX+iJrQE6M2%| z>j>T9w6XRKWPoR&IPx<{95DhN)2U;sn<$fWAOGq5*UU<9V*rYmlv>cFdoLQZRrVW9 z-+i6?lU_Z+f`q%Q_l_8U|Fa+$3IaIb8V>Mm(m+*#i$R=W5(!p3qzQ1lL}^DE9H=ca zO-M2?ly2W&NcP+pMF_Z<=-LNF>=Ez93u*meO7Il!F`IB##RP2VeI%c^cxTQ>KIfsVd=m?-G`X+mNV zLM5jQ)kh(;EBuR~1Ow7%QRxK;6&s}8o#QGfl8wD0sSv`7Kgr`7%U5BLi;x!OtrlC? zy~9HJz1dPzhbW*wlU_17Fh0;6r{6@IS)t83|5NfQ>-j_vL3kvHRX08PQ*=ftcxC~_ z<#qq5#teT@Krj52=YEk&@LZm|HaHLfKyajF^7bm=CN;qyL}W7x@EbHYosX0sA!5Qg z203P34L~>UxW75WYi-{iL`EYqk|mnttp_Kp7GetO$IXCGRvYP`5mA!3Tj*w*`zx&D zdKdN_zgXTQhlF724g; zR>L?ys}3)#7#^YUWJgg^jWS&8N4VI$`5P0C8K;z=ff|5vHx3KHpA@F6_iEP4EhG?X z>N|rxD8Oh;F;^KNmYb3=Jj?j}b=<^a+1IniWL;L9I4ikd5}SDLsdUdheMHv#O#O0>{cHqg^7?CY1XFh_cSn47 zDPNNsqbWxHSwG%*2;1gxn8-9T1M)DjP*?%He&eXF9}0VQ-Y@Ff3K8F}AHO#ZPA-Gz z&=3KKow65S34sd9O7=?omxM|!%gr&4-XAA2EZSoi1>MG6ZWDG-?mHWACG=w#Qup33 zEo%}y3wmn595F__wVBX(%UAKb{f<~P3|L$NGnCy>6=2L>$y@o$KY1*dsfj$@{+`%7 zEIB$EJIkX7qJpZ3FyT%U`Cs~7s7r=@Q&}h3sR0z;YHocx18ncpuKHz^i*HUtRf8P% zyw%#0@a9)__r>-Yb)2d3IKEEFGLwFm3Aii|QOJ)ZW7RaF+x+@KxII3x$8`~{$( z7aElkW-CZcRnfga)Ophue5u`MLkz&Dt7nL+Fb5eiC_-DP7?lR* zdmK*$?Df+=BPRR$E$ngZ4cD#d4%Ytm<=8W_4`CjCZrWW+el%><50B+ImwJ;k0p3Ze zx(9i0yXPA}6HjCPFr(?kO8|WVn=h82LfF(tctk#yvoFhdwpKO%UUyA>9_@^n;`y&2 z@MN-TZ@UfWqhPA**=im`bpiSZ>4O7hHuVI7U*+_Qw9(Ajwu-z6$@AtqDex3j1gjyU z?4L;Uj6vb-`mo*P#FrwmVNTWv3WERX0yND<1Wlj%1zXM>{D&xh1i2m`l`RKQIH7P_ z)VQrZ!m1ufJ@-2zf(QgFwC>@}I!L7S3eVvtyXX6$@Zb7&pOk7R4V(O=m$cx#CX?L0 zGLtaQ?zxSAqErogp${d;RhLc*ez{ElFVQG^>w<8*Ep$O(z+Mk8OyzTWhF*mhi2jt> zcb2aNbjbdG+!d6hdzkT!40!zkiTgc1x(0pED=`EYA53|`c8d6asv=Cs@tua1i+osf zJ~lwE`Sf1G><8G!5gW#3PGEzb-puy#tDrqK`<|W}HdrQTvI`c4p3D^WKat8VD%)x1 zy}N3kPxk&=#>!bsUn|=*bL-y+C)Kov+fIn5!RSfGp3`hVd=sTF>#bbNQy}c+ zXQ{sYJNcarGnmIW2%jltMaZ4{MD8sQp*yo;Q^*cquJTWgsHQ}CJJP38 z3nD4Q>PQesnEE-3q=7VY@gS1guC9kK^Z_-r1amqrJ@J1Mj}t~v>(yCn=GGO{EtB_s z*p2WXMG75K@v8IJm$R*zwg_DDk?~CjOPb58ANOKvE`O8X+KUd=rGzOAOIB~3CR5l8 z?<^wVlKvduchR|MmHVd`5keZBv*WhZ?x(}C6uA)kr2|;JZZ-ftEP6Bqwi&4 zoUF*qtmzMd_gjCi_v3}Th^I4j-|3RJf#Kf(pBEf((rQ(-J8*gfXfHX>jm*a!*sxny zb|@Vf_m`C0@1D*mkjYj3hPJHQ{_*~UOW$yLz(lG38STT{Vk>bc@@eU+!nxmsIkxcr zq)0tlUL58rTT+IXW}S9-0Nj%DeTvRf8AV20TgvKW5~kp0l*e5@30wSQ>fd-b7g8bS zE`w%)#`w7Zjan*&JKHoyCY}2LPAi5!xfc;L_Z>-ly)PvlfiE?L?=Mt(@9)Zs>J{OS zA6JOeZG%mQuVwCGOi_X_*=J#`Z_mVnGRRd~-JsP~v6F&usS>3W*mJ4gTP+DpT-0q@ zUY@MkX^j^@@AO^gU(2m%J>m!hH3)d=B$FIrPOz1?!<&lm9W#aiKHm6@=#AeD6|XM1 z2*v|rg~=BhCpzD`aZj`640}|4eIyuPOal&QBH(&&FFc`===XyT8YSzA-e>|V+e;GSmf{hN%yCRBRZdr zBZ3b9MnR`Ym^)hW;DVJHxatF86wYMRo6JN(!?6a}><9_}Zh;i;eKuEVFpWaI;k2|j zPTDe|e@9(bV0Uo%Av8+bTK^tU&G5dyhhvmgrXdU=ftYCY{C|@JWhAr|l5*js)jQq|^_?qC?NL41J{Y-_=o-5yS?+tW#Tlv4h`$%aUosZ@q-PH$_VvE&Fd1SgX zc0dAJJAMoh_kbwJ6Fxyou&nhYf}2OuyHeipC?Z(6>d2iZaLr1b#iJ_V?+2u_homPa zdrJ`0GXHdvFxKBt0RL}h#3p(=FV94cq1!Zk{+54tX1d2}FUkcSuJV0jG|6+< z5>x(JJiwTi-*)#~6D9er^D{Nf;rZSAdMOeOul0XG*i~7~q!@fsB-i37Y_Z1gY^m(M zTb%XKlGDCgySd&RG$9ed=UgA+e52iBJ3TS#>=|MHaeX4Z?U%dgeo<1p|4#9l?p zH0PVHkw)IBTInx|RrV&VL> zivoN&^WBo6>e#rKZ#gU5t!jNUfSB5Auhxfz4(LYm*_u{Xcf(m>6NmfJYj2hkxd0jM zFFoL$yWWdpWiCKMn}jna{6!l$4Lz;b`pc?;ZLOL9h8E3T%+msm6-N&ZNHF*9SNVME z=6K>?3$lA}6r~aUQUBFZLls2VY%8USi_`K#iw|R8rsJ>)iwG@0FA;eoJw+LG<^`kCf(WHy;YA0Eg&VHO=H@3{`Xf40>6i&v~( zcZ69c=Xt&6zbypAXZ!*ez2CY~-13vU=@h$MV_htrMl#o^J7^bV#vW2iOHZNz48uEIT)`dVKxWZB_l#G`O@cvxcmBj8uDS`I2i-O)rh>(D{cW=E#v7YVZ(RGY z{%mt&>9YJZi?@+r2Kc*T6cMmyCa48vPE4)Z718A^x>eZsnf;bf9!rzABACh^BA-wQ zh4s(ci~j_`Muc_kAd8W_o~H(7)z!stE!pAg`gN73?D;gv0h;t@t%`@)&O}U=%`yXTC?LrwUG)I7S^wFU5=vV&6y0Xgozi2Ae_sb zh;^fYMPGEtg$JS7wn~P;foC*-G(pFxSGNnPnolOTcgMxmE(!waHuRsu#UWND_yshSgwIfCLB}<*W!FjZ z#xzoZIhxvjUj$B^Mm!bCbG&8j!Z&_fJ}6WJ)eLtV1O*&1Xa=3sQjFHbkR;quAJwX2 zDg)^+Iq`6osP~2}GeNJnaAJTw_?&cM=11Tws%H*K@vQd|#BjfCa?AG#6?7 zt|Q+rNT-Y-Y{5wvRgUcZ-=2#xK@Wr30bE@x+?l*QfG?$hg4#lzzK?=MRv04*h=aR% z1%IB*rtFc&0nu$SRASW~9<(e$^y{n+G`bU=nh7|%A>?&+ANBqKY?|59C9 zIk$qL7vzklPD=wC3Ym_yKbMS+++7Up3&#?n6Li^8C@U+Q8Kpx#fP8glN!t^T+b@0+ zxhs_Z5sM9=@v8Fb`izKWh91mgf$&k(u-bc(W!Y_nx#S|=j32i&!&Mi)7*Bt+N2Y5P z#)JUmZY1I#vz>OUS8qSj@Mf17zX}QDLk?P5^#o#QYrQBrx4iySN{#Z$#+jnm{)*Kj z^VmcVP%KxFrE-wpqRnpam2U-y$~298=TldG`PgO48&~utNwpz-MfjoCt%mBetqY*fPqaRH6ErLsapA0OgHa1dpJLz8- zXRrxrfE>^uj2Lk>)ZW~{`n>ISlh5QKNZWN%(t2YSM`N`&t>p91EddbTH`l;Teplms zGgangvkyQRA0}*@UWxGV2JQ=Ee*OpCYDf?d=llsD2}#VfcluADQ!$X%g(hMi=$(8( ziqaG!lfcEN%Vo~SZ*2u@5fQVD5KF;S3~sNVoOJfTNS_ctcgJB)<0z)|K;kA91`q&| z8wGplg9w9RJG<}EQ={}a0YD8L(sy+^XmVq_b;=S^#VZU276^b-nWA@y|MA&NlD+)u&$;ar3&#J2*MLpzC|2p$tx4nKo6x~xj z{5#LCU2m0_)Ady+J6+35WjndSES;YBFBE=Q;AV+Uf%8JBQTlZfM$$f~sBOM`yj$9d z{APYYl!(}}qTjM~qAGoxSItl);IwsDr-PpEysALPjpi)x@LPDxr0obufGOR z<5`B`L^_#&3T!NL0S-ASpLiZUg@{ieE?pH63eNNwum0g_iiG`w9y$MY9~&D7HZmAL zCY#Wg9u2%jcpfGGCz&?PL9%FtXx96{ZYYp3vG$4*xL;(-YC@6*OCE0NFUR#)Y_c|r z_}j0ba7*F|sD*i$L~nfE`U}IOR}wcdCkHZVGt|9zo8SPx?VuG8usLLz%$l5w29;*} z!mgfgDYdUh#L66SXfBVF!WMQ6BV$EF6pv7dp$g1$vHwa(R#v^d0J1z(*s3UlB9JKg zQ@bBcL8)QZ&0M8&C!N|te?tIy-b24mkl4H3gV^l%trG?`!379-$t;!0|3tdQKfC)d z`_x^I2l`OWun)Mn5diQMg#0TGGxc2}ow;jfekYdeD$V{2?54Sv#1xx+_ZTGZ?t<`d zE%pkpY{=9ZG}F({$9^v}31t2H~W_aV9t*GNYN+0QcaY*4zVN z68%;mC*Bl4$$q8{OPYa_8Gn}DnEMSpdLppccxmUX`{y!vTNG*(tT!303qmEs_$Q?3iS)!dHbo`eCN@tA$>}@pVav2Yv-u&0*K_8&41V~CWy2|6R){+3n(U_Gq1Nh zOfau(5!z++K&kYX^l(Efl9L+dv0_r$E# zd565!Rxfc$I6WQT>rxXa;hu}&`S>Gb;Wai0wfOVNEhjP^rc!t`>|cpIathjdUwT<& znota+70##N{J6+@Tu6b3Z~RN9kzb{}F>A_|wA?TORKtLsoA72}*xM)kE;a>GEb`@0U%>`RxT{DkkgfCm`4aF`9%YF&l0?O^MWlNDZ$b%qqHbhe!@2 zP2&HATv@E4L<`1G$;aAQB{({M;N}HZuDNHc;u|VLZ5#LR8{Yy^g8MMBzY(}!Vt(e&|9ZW$o(;c6{fQlN7@TH{<8MEAWP3QGb z&1b{E@RTTz0hn-ZelRS!ga&@9{{$udOhRH3{+p|VN>C+GR)2a zAvz{Nz=%kJWh52Tw`VJ}o9(;^Di_jtI0d{|>hM}Vl@fJx<{OW`itdl{B#?T*K9_!7 z=s%l^e+C%YV_6I|kX&R|?P!5f1ztZS3vWO^0=FMnqoVazD)cUw#qgdcU+T>bQ(%TH zHmtfq=QzHSCRDCshp~zs9DFXE8yaSdeh#b&sz7S7WvLIAR6=`GN4;g);`qt%T#lPM z0IF-9ie^OK1Om{16=Yqg+a4sy3ZS~C4ix!%R8@F9VvM`${?6jJVOA3kE==qkFs&;w zLYm?%DVp(=iI@sD z*`@0AA0V#!vIxSmBef&uo+@a18ssKl`zo8)mg6hk8fUMel^@<^Nq(p3v+Q(LW_FJu zKN@lL$ZBM_lse4~!yrZ;HU1@+Q>}o8F=BL1C6yZ=2s95L*k0XJ`T=rv3wvZqRiK<;ggWxO4!DTD zZL($leA<)?4;pV;pnRcm$56)#pauvpGW#`czM2gsh+k72iY5dNUkB2Rg8P5pHK0!A)>>kOOLkzq9#<$>n%*W z+|e(+lv5-@ZGYClAY2G~jhpKzhzsM+F?T-j6z~911J~r&d&Yv9Xl_Jp88Q0T&b#ER z^q{jh^)^_${D9-6$$W{_`EiGbB=+$Ucm(&?#~0Plx!|4YImr4G$8rdTys;PU^6vsgF@$iRX z8*SFPI=n6KiZ`6!+Zc~L5$kwGD1L=c53D$}k0(riVkvjQd5EnD=n*z?LsZ!Yqe>Kv zx?7^4q>1Ipd8fhCN#OrLl{x#)92HQ!?uE9U0(KK8&SkX?4As3I34g@;==lD}VzY@^R@=P6S$MM*I*6lcT*|W)o zhuuZm&CF}oJBeErZr}?wO}>tdi%dtJPuP9_9IE*se?69Yp5AYah*%&w1784_t!(b@ zn0dH{>e`-vUyHTxiX7fOPyYPv46*>wee^}~K=@Ei-?sl36VfH?hVA)5^7<>}(Mc_# z)feBL1y@6>fcZN?+uO(_8B*9wVqLL1eUG+TpI$g)k?DICbJ=ACuri{_V&dtx&J3S^ zu%zkx;Vp}|J2HoQ-w_hzD$y?Q;cUdw7?eF>r%wPOj&cgpXw|=cOZmo_=O`xOZeULMnU(p-co;Z8n2E}jTeB5=zT6mHz9`z54TK%J(}0W|IT19ElbNFW}v>#Jr)Q^&RL=(&PHFMr5w zW5ZX-;HIUKP*wuY(A_uTG+{*gtcm`g#ngT&Zu8W?ZsC#hK-}?w=$DK$IH_|RL25YrOC1q{Kr|h_iOgr<61HEeiK>X+ zdnk&GB9UA%BRlQxhv8^cp#;?fUi?^ldH@k8U_QwNZ~aqZx3*H%Ipv=ay=cJP8Ex>h zf@0e8IT9_mfvj7G`McXp*7{Ra?a+r!LOXBh#eO1?3Y_&AKI8^?|zP5q>ChpFsp5&l;shv z3Rmhqp{h{+`0`mLV_1rYm;UK|Ts@pWVpq4G71&Re7FX@&E1UuQc<2Ynb zFLJWjcyskEbz)8Ir0?)#&j+v}p|pHIJD!FKte-X1zMpum%OzE}2M_YVZHCyT$(yl{ z`|S>y9xlQlX@(HD`6$?g5F8Ul$X^9Qk{1fU3-rgJsstw`&?RaGhZ+@Sv{r&UYw(;| z$P`#Vl=F5BKqVceb=Z=xxzSixlb@<0okWy_Za*PV&MNu_VOBiZFtY24_ZK0>SMEr& z|M9t+DL4|GE+D`z6y|spvQ0bS^F|PS9eFhHC`5sVs69WN+BaNvwOg$fI(Ysh37oo% zB-js%p!&mGfnwDYjO3Fj?`>%l=%yF!iD-vX&A(>^lV%izjm&G4B{X@_w&;>UGbzxS zM%#rp?{m^kCMjG{4($@hlF%LId{_f#mEan^3`%_PiD|D3T$=^>0mL1=)sydzM|WF+Go8I}s#hv=kF>;M?a*H!IdgJec5<$POT4$`T4e2xsT{P)P% z{ei0eQq0KGbl^`m&T4<~vfcZ%w*}*?AMfFOY^AaXpXTZDxaeYkHKBM_Nhjpz=Pvn! znIbdm!C$OT;FDdZP?q*OK8q(pAE)DhhRe01gZ<8-OHkS__fRl}0sA-*Fnv6<|Di|v z2GrAmc&>TL;D-^dM{kuB9Ue`AfktwDg@5%)6m=0`6BM%s0eA3 zj2lQ-u6jkUB#2Do3GyThiFye*dN8x@=U6NBkUlX)X`UPW`J40eDeSd+dfe1!iVGm{sJIn|=Tb~lTz;^|%Ceu~iJglg0?HV%q}2h#*a%7m-zE5~ zgD=?nuUVAtT`=udd8|%6{_g5#2spZA#+1$$3v=_N5>>Z7z7z3ysk+)jY1Uk@Xr88i ztqsoZaME3FdC{O!JpF@-meywC&-t^>Y+OXdok_Ap^iK`JP5T*bPy1EZqX8HI$QSUz zDwsz7!vKcVL`+*oOK-mej7U5lZ;$*RQ*RyBRu^@9C%C(72rh-^!5KXqdr>U9(GarF zG3)zoFg&yGuAkNvLhLj&PnGw;@TxbpWkACFunS7_O3>S(G;uy3znPoCNvD~ zmL`7Ag$Paq?>+OEXfe==d z3XKp}7P=XT2^aR2^Q3rS$;6=i@&MA}6B)8wJF1Wh?X{VmjuO!>&DY#>ojmKQ0#XgQZNk13`*_%n%m5tKqMw9E*?(WW?#XLFq)v zwsx4MO!$XBbXI{=1W`4f+lo6GcTb?ai@eMbxlP0sT%jSDgsG@>I&8ZJ+5myO1}5;wt_#WNKl z^ja5?XjB`TRKH^^U8y1C;A!dTtlUS1)6D!348ejJrr1$Qf&tPRi(*)a0dQ+HSA^RP zkuFBWNRhy3OL4imd~>K?Uk=1}lB(@#)XHi;o(=roYq;@_FG|1j^~~+Kt<#TnTF(g% zHqlR4+B`@gBa4Ll!vLvTbtCOdwCS2XHM^%_VQs43l8ou2))9$A;&x4c1TX$yw+Rx= z;gp*4V%35Vmokl`jWY6wT%gDG5;QT6RYlC|qmtk_(QE=%p$MLTuG-t(pH}AWtj}8f zwIWXoV)?CjmDrTOFUs2Su1y<<$R_ds?qlX8G{-sPG{c7yInJAGCd}KfD|=?qJ%}-s zmfF1S8G}_o98WOf^HUuer5i>A+OR9_slgJX>Fw`xA|%uP^){|-4(p8#i=^f^2!we3 zY;-ZCiYLoZdt8Kgfaucc{rz0`^OVP)ua}{nA8}=KdM?#a*0V;N(v=`QC3SdRm=Cf- zbx1Z<(l3UAewrnMiOAN#yyl{IH%_`E18QRdjegQ`{}A6wU97p3GgrWD)#g7PnZNCu z3moA1YO+7_duTickIaQtUf$!&oqlxHob0)GFj%v5y4=kKyT?M}2-Aw=)z=b5{a6ia zS}e;in`jujNqcwNQitVIHm^Bz2SpL8s z^a(Cm8bZqKUO~cDiT=4qvIRDn1kl=gjwN=kBhn4+JYqRqswzCSZT-cB#CS0lL!r2Zs1=8RQaUdEpT&`_f;Y$YJlBt7Td=|P0BQpO-D-=P(Qwh9?*_F8 zN}>}2_p9tsW`GIh$t;zv4hKq{SYrnMRrW+EA4NAz8cclRfMCD7WLs*=C*TV~ougcS zFCr?{R~3|M0xw0)AC$06JqpBpq-+7GyySSG>s1mgFYBRR3Dgk!fHwyRANrgru@Ij~ z7NK?oU%F3P^cw0_Z+TLQ7>6k;?HtI`D?$ZfnxU|B3YdxFntdFR)lv(!e=7{hDmW?| zyD4-*9jYblg?hNn(ROYA-oH!HC!aG$ps*i5Ll@p(-va>1>`M(sQxg-8c)X z$90*WBnMhA|5;r+#13*OYN0IQ^Ms#ix=cf#ppLL%nRCwvP% zLGh0Vs6ewz5fhLD9p$Fe4dc~m-WXkGF7+RXeSwf=M+$~a><63{PLK1oxyCMN>C}I5 z;3atQT+SwnsP8<#$eecmwZ|Pd8ik06AysS9J!a%7aIR7KgE)fhsh9*SlS}%$s&Y*y z`_I_HIj@j}TyV-kVBnKbB7UTUsK(TSg4Mqk02b-d33gIDIyWU3t%b@EZrU-S8oaNZ z?Ct!8iX9BZex)@Mwuz##G#NO8mo>UYeem>rgxjI>SQ$O+v^+UX0q2;rXB{J^zXab^ zmM4hmI>TqOlIzw-WoNB7f|)7ji<3TgDd~S|p2daHK1#;mf~@5{|HZ-0e8ybLdv81y zM2e6;Zk)R(O|^x(#KAd`5k-8%6@** zyKr>VCfsQ#x0fgU1{Z@wQ!oV|)W{_}*bNA)$Mj7DsXLfIlKP@9k>oDNLqmeAhRimIM^d6vSYTX9>QjECz%o#n=s{wKHZSLBzVyS_iSZWSyp)m4LLZ)Vb#ZOkBc1XdU%GN>38TFg~Sl*_> zD|6437(Df|(9s z>T;=Jn7$o8H!ehoxH@01xgdZ+gK{iw4_m{uryGyC7kPhIxEqlOdyjf-##j`f{3pz9 zK+8#}^Hn*>^8vFxv8Wmsg5$3`(c;eYA`W1B!MG_Q`z%n1%8*JI0^lqRp%tUk>|R3g zu$F7I|FMtLb?J^K)w(ot!B*icK){LRWvnaB{SJrKc9pf_HjkY1pC0=c8CpawvIHtf z&i?v|*#ja%#6sArPNvy-@QTHjHQ5QKa9>|cV=>Jd-V!Xu#`Ss+KBVYnO0_ehatSI~ zKsB{j-PBD7Hp`1$ds)%o5DeDv?E*{xkFE~FMvWGBK1WRki?f+GZ&EjRnex9aDaQXj zeP=~A^&EfZ?f5Oyva3p;Ctx`Tb8O&2s7O^qv)Vwv!1U_Hub-^D@WxW)p+VA@1%ZuG zqJBu12|>CB*+u1J-bm5m-&_&ju;ZZXe%Vd}6x-Lu+ZRm63UY-h9S>-@fpmC+pDW0M|fMyRAK)A3SkE zN`w`-?rY#6kfYc*)dm5MMWRXFQJ?xBg?9WG8L#) zf5!J@a-b?0`6Q91@`EYOCUxvw4W?HGkTS>t(v75XiqbFCGBK};S2W{8?{9W^U4vhr z+t2l18TwkndEcHwK+&36dUnMn(wDPfTw&-U7D~C%B~-ZH({-1*bYbAd{Li5?ld}GY zXG4uSpZeUU6`4GF39qyTadYBlgtU94eU;-TXq!U-3xWm@2%Mj$R!M23N4_i`%Xi`` zwnwF2I%EXrVON{b_?)dY$Fd#+cyusy@!;ZNzSfh)!9x&Fc0A3cRu3>A_N%NIq1E*5 z0P*$`wX^?1>YNk=*Na=np@59VJfRSV@pi;qDXvCRr`Dp00M`2zf|mK~PwHV?9Y|nT zNUQBh(*XvnE#S&*x29&rfp@Vqlx5ZDJUTK?q#_MFlSlo#hJ)3IJ`UuuFY1LF_{Y=| zz)KSxxNpgz0`+2}JZ0m+7GCfqu1%JZT8||PqB&{>G-|LRaf8AOZl;(6G?ctjK$ftG z-nX2=S{oe>qq-@RC7766(|XXKq^W!&kq(fa9u|0 z5nuH}6k`cSe;dtAjQp}VB()VIo5R2LWmPzA*dv2PVIC)4bsbTv5fyX-ZpBrh@*@i2 zqc}Ea1?E45Cyc$i5GkpFsaM5_%e)1 zMa37H(R~fJ%>kckPQRzyunWBV?Pqi1-f|c@wVWg>c1Y08dni8pv5@y5@y()v8-lDn1k6szT z(TwWwyLATwkD~Kp`5a)TkQZ5%u0#HLY*+2);4wQU9b()GL9{x=bhBDScKX3B;IvCc zsVjziT;ABP{o0~E(o)WJbA2--|6so6S@mQ#UK3T?r2Hw&CoHTm8b|fz@E!k`)6h=B zxX9C`&A83{k9aTmeyXo7=H?qt>%JD8HlG+QbTW#w+ft11{V;Snfq4xS>=maIxU2)K zl?6)2LQ`5o|1#r&i5)2obSk-E-75PPM4CFlY z3*N!1M$+A|ZW!$U$I&O{T%S9;B`Y&!?|wF8s&-he3Bjv~jUgoGLo1%Y5&AWaw~4h3 zV-DH_jA6-({J05CFx3RoXs<7X2ri>BCS|IXE*wqB7pI*}66y9y+^Rvb-BKd#T^Mx< z&%y_q;hf)fw^BtV1;Tw%5sS>*yGGulqJrOajGB1xv(SU5DnQ8iTrS>soT)@33N?M_ z>9C(L(N(kUunad!PwtX#z4xtqT;F~ze8s4?kctann$2CCaY|o49<&vdr0&mX$Coa4 zi`I=M!m5u{C}An=)ZEiCa~4ELK&1JWBmh&9i>LB2lIK=eK2~29c|t0V5jEkLGHNXD zf+?)&7mBV&PKbwHgUOtUKZE^O0DD>{ZApUzj#v>_BN0EbxkL2>dmT9ecBS_;zb^@rsTG10E-BYzMy+r^NGC6G=c@w z=crCZ03r_GvsVr$ASz?M-iB&)7C6di%E;_%2mtxqh$@E=M+s$yugxD|actw%=q~W> z)T|XXni#;%cHm#A4#?u`O_lo9!vOPfjjYMol8+Lvhm{Ll(LSE1BHzHl;qFcD9eZ&H z{8k@ZI}2dVcg~u=|DgG~IY5T_16BE;F-v||(5An*V!q2A_k*_+2e0I2Dv$k!+{sdH z;fHMAR>X&S#+6pvrf=fuVwH3is|SEkIJ=MK`trs|PJz9ujkp=bHlTgvEA1eq>frp@ zXei z$+jGxhn#31W&Ya~3i6}%4*y=KoFR4Vc3$a^0-I=8yJZMoGk9eMU{6`zqN(uM9pMzd zKZ0gyH+QNh6z#;!9kqU~xW~a@bCb|=bXr8|@Tf*fM`9dMUE-W@s%c?sa4(h>OhGc> zPP);=L;1)w@31A~hN8`2Vv!sQdgNeZ>KT!2ECDf;J3bA1Gtj1!8gEEzp$t$BkDi~|$3xU)60WuIU0^cy=_A-G(qz4XlBFgPYz?o{lwuT%tb6+9Q zNg}LfIySF&u4|gkdt4Vy%73Iw3NB);&!!Xzlejk#(S2)z0N&h+L4r-B&l|JQ3;!r9 zHFj)U)JVgum@p%G_R+Lo1#b)zGTvYxIp?5@rM0HD_!VG^i_=b*a4nzcU@yNJuhr4$ zK?6~}F20I2C|aYV*k^zavN<}oUk#I5FJ*SLqmJabXhm+%N}LCY_|N%QLqZYXw2n`Y zOQ$y6n;y4&E|Xszx%~4S)t4x&W*0j|6i*2JqMigq#`25PefVzMWn7@jY#|h+F_Jn_ z9&0GtZ_TBkQ@j~=YuxKI<~ut2!^n}XXhvl!Di9+NLP6^OY2n{UP?rjURN(07Xg5_y z3lwxBkPvAX&cVVs0>cZ3qOF6`*sO$8%CkvBGc;_J#2k6dSGo*&t-? z_Vgp-6LeG}eG@9+i+%;`!GJi#ma7pdX`VLY*|8q!W&`}Q14n<)H!N7ER2V@z9H4-s21YTFBU^o+ueN~~c+p!W*6C1QeUhJjV z_l&rh;BL2Ds-_jhEbqIRR279rs z&GG0b_OjyJ=A}5Mq#Cz`$fy?o*>FW4>6D}00FB0v!`s@=cIpHety*mWoe#G`^RAU;W}#Pa|%Np3OB}2S^yZIG<|5ED}$qRUV>5M3LpqW z|6%wFi5tX4i~hy5Qk%*th3QqT%2*{iQ`nBc;lc#Mo>t=V+?Ke+r>MOl5I$ksGS?r> zGy8`mWmZ5}A0Ke8xy=_2QkTrh927IQ~DGHh z$fyGvjUF7hjPt;}5BvC!Ef)$u$O0Y3EG4+JkgGN_;m-|SD+uoplW4aQtsTv=TBs`G zP@;ldzrfj8#%7K`mBAqNDgKYt!MA2Q!05~CU72Q;RwKi>xk#eY-089mDKGKUGB>Bq z@__zfZ&!!Safl%TnEaEYhYxS^FWz$r=EdoJ#Gg|o+;+S(X|X5e*_3y}Yvl=)H)J&5 z=75M4<@BB@u3{m@(GaLd3W5lU<+fYos|NwWX^9*}43<=$c)eiiMU|F*kBpxt17Qe{ zWcl#M78hOjUl|NTkw!#*n%$i)3*JWeUc*>kQjC;*pOLlPSFR;~fdNU@{(OjIp@tCL z0HxqV9+-4~-CbI@kUm9B`iI0UU>S_fJC|Xv- zDMfE$OekL7#BHwxig3qleU2E8W(_MGps1s}j!vzwRz^+lfSP+9>AR;HBLAY&5;%(C$DW!hImJB?rD!Y zVb;Tk5EC_V#Ykvw4m4`hYE6R)x}pFO+>-;)02q_7AFm?+4kdN=0jMla;;cb1Ljt$= ze0O*V;3X^r=s4QN5+~MnX;}H#2PkV#(rr}rcoMpn6zik5#M-}??bwn=jyNC_e`mTB zXP6c0bZEE{Q>^ER`WfUHCeKEz=S9P5LcP^bXZ~$szFBQg&lW$+huryZqTBXT_ln%G z`?tbRJ;{OaG6a;S7^CJZLSa7qPR8LEPft&6XcP6`)VwgeTUdc6yg?#U{xRF(zk?^V zW`0i#{SGAE3pgbcrwa0gdj{Z*x&Ty=REaFqF5%%KbPzxQs7;LK0b}A(t-b#~!G$^T zFMK@~{)dON>%9rmXRLav2@~=odYH=~n}teE*5IHsvwmkh!SbqDGAx+9WoSSxNhkP$ zyq2F%?zW#E^eg(_rOUZ4=wdRHvuxY7ps~CUfvTv#F^&X@f8V@NUnl49PeNCjVhkxB z2h=*wOxkv%YlPG-P0}-CshzoQsbmKxs-o2-oDYgN6mkmRtCmqJ#4kc}!BN?A%KC|$ ziN{~h(-kdf%{_1vV4^K_m836=3E0cW$^0J@UjUmDxOAUN*~2uWXY7EON|lM8HzE|N zmK7Vh4%y_o!e-raY&X(R*A!*m3(*L!ldoGdaXtY`r2`nEEPr?<9BxzldlOW}>ch7% zzM#W}GGt05AfCfFqL1nzwPJnTzJE(74ef_|xj0HOTuQdd_JQ-px&R_yf{!0EapCfG zWa5zX*l}2?_ddp?Jom~vm~-`{C=vQ16Jt7gZ8-w)bqF>U%iJEwA;=5Th#}N8dmhp= zpvDaJNq_+qc7SU`3BXKRXoBB9_UNv>MN@)ECnohy&^r!`v3(PF`h^zc!EYyEk zvxKugA!a^6kTz+CF{Zdtyo}jAiy{=YK53>KozeNV8fa3z>t$^#gP%q&02fA+>Pcuwze0xcckHC%oSOG>RVaxtTH z&0gb}ZHeivshVe7lfK z62=;0uzEww0!2UxveIG^z1Y-?;P25FgR%`Qi^*|EuYP{$Gt9k3@ju)yr4jSJmJt9{ zCofzR0wht|Ly2GiO(%M72K7W>0tTOiMT<}PAq^3fz3%{?ONxnFgO0^V@QcKT8AS^e zE>(@G0)CCj0#Xf~9~B9pHtwPqr0wzDLbG`P?(50?-50%)Tgv5jDlFw07ZT}RsK@s{ zC`qZa&-dX^E!SU;g7i0WKF_iM8HtF$YI@Y;(mIICxKv5It_T*@ zwO8}WRv6$Symb;Mkr-xFxB6u{4>bg4q1azf6+Wmk1N2-G*C+xqJje!OOpq|H0k~GI zJ|Ii&ueR-0|boXTJyNOkSI2+>bbYqCwnZN&Y;QWz?`gme(C z!-yKJX|t@x-JCf2_)!_Fv&!FbRg4p9?6pOczazB|UIeENP20hJRmKku4 zgVsFeTSXCy>8vG2?@!v$)-tp3%jE!9XmCIAZ!4bB?=72)98_r}B_Emr*f>{aB%6-A zlk$|J^-IoX15i9x@PEuifrJuI@s|bF{n;~F0O{cXARzI{I|fAkkPN`?g$>M&`J_ni zo-zwUO4&jaFG=}=97zU|R;Yo39Ob-*i`Kf(1XNsx0DP{oNOsiQe-x|`7tfqC;|-@K z&jc)3{yD75+15TUUS-4*=@_ww*2QQtJo1Zre%-Um| zs?=6T?PM6b!?YnrNN6B+s$;vt_OLm|M?(%rk@WIIE43YZ;#RFz3Qe(yr|hhi@=1tF zp--Cw%tyRkV|_3QesriZ%paBfJPJ)~%Rd|d8-%kAoI=HzkGb$^ocMC51;g|fui`9> z^yXsA@&849zxA(S3VE_~e25aaTdHxGzl8dhTb06vQu_Wm#cl}*k{Az;<$VnvEO9QH zBJz@Qc(+J57>2vYJ%m#E=2=D=K7^%&- z+Iug7R@SbTX08qpkrG%4M1XUCK|DG@{&yDbxM2HKLwZ(gp>F$=@kkQ<#%7_D^-84c zPp^ym05@LlbkWx=bCd#5xDwoc-qIw|8HYqZL_adtttjyl67**mM00Kx1$fbZ_YJdn;harm zNN-ma5|giC;%y=}AZo9H9N6J6pXR1V2sleOm6y?mG+TeC+Pv|&s;x2LKy$p&SHE7V7oGe+BwNC9LRvL$HA7t9D{FAnE@@64dx zH#aDNRiI6SfpB{}##mVfX?6sNX_d$~B$T2xCaL|zI9gu#emQ&>8sQ6t@wMs&>;=Ub zVu6JTpu}>dE#c9<+K~8QQ7R;Ar(jWFj)W!Q=EQXihQzRBU`@Bd0|^}q?>81PC!>Mz z7yGcyoT>EfA*)2AR0}g;;mT;M$9DHl@{Dtr0q49oy_>lNz#e+o{yHML0zIzVKqI%^ zPFVC?CLbAI@F)62(^+&SpooMX>U?Odd;9kEXysOJ=o!Qgd~AP7zb3fNIeHzX;r8SE z!UA*_Mj2r+?UGXh_JF7G6aERQ1g$PE?xD0=%a_VNUUV6133Ya14Z1!%W^;8t)!wLo zWb%ntx3wEVRG<`W5jb0%PX6$nd(VvB0v7jK4Wih=`}++aHgYJN6`gURP^$+($oNy0 zw9A4WX%H@ARPIL%)2?ukgbf`MR?syuoNuf{YxNh(XT{H5^hoz8+xadmu(6uVl-mv< zhMdXgz#Rfazc0tUp+A`CB2+jWVZPKmFcu`TM4Ru|2ULe|%^z@9pkK_&n6JrL8= zPXZ7&p9d)4wh$EmQxN|@+8`piTY~!E=dsWJ5(jw!-N^xAn8wC`eKwyd{2m4g8oH za^GbX2S}E?NjHMoJo`}BTrfo*@?oiP@Dj?HsMXSKxoj29iU*}d1i6{&Qc&uM3er@e zGgdlN&fE`zf|e}*ZaviMOajP)CrN|DyD{{7+y#|)RqZTOe-AsP$^JM<-1g`6a`gEA zSpq%Mnu~t0d+Rq6hh*$uDQ@|{x@PXLwgaDUdwX)bn^<1}dmez!Rz&gTi{?7Nnu%{@ zE~8X#s}4Wg+@T0@jC&eig7b(qOrTmE|9%EJf{l|A^9JnpZ?$uL^^vGlW~LcU^;Jd= zu%@|}a{hs=ZZ?`A!2hR>)q8xPxtM80O_Y?j0{(Xw#FC^|~ zYZr#tPU!3qN*bI&5+m%47=(^`Q7wwT`F_W)G44buwpw=hC7zw7VIuoN<{iV-qWaU+ zmkbfT4&kCmA(*Zj`mzqn4H@-e7f`!9Z0ymFA$3c9%l(}zB`It3@j+Oa{!cz>mLp2= zGOxK%$V;5IZ=Cyz7U`S8YzdiStIZ`F5@qi}LRagGw7YrH}3T;)}#Qla9lc{AGp<$zp7qOA_U7R%ISg#5djUq$zEQbYaz}+Ngz* zyQa$`$oiIUyo{oY{w}o_y0wW&(NbI%&S*nojYFJdDtp_A5TbjQ`xP&Q3tJ2ZZwrWy z&k{qi;{)fgWim?MLcE8L?3B=)l5S#q){~SD&Tzc(G&#Icmb$*_1DT=7U_&lfyk$R z!fWcqhQshGf~=&nU2FDExa`(bZOl*R2tzMyn0xEKXz2!5{vA(?SBKwZep^l2yO|T# zB5f4$)5YPwF^cIrm|IG0S;26GUcd(Q-~ShhZ{Wo+-l!4>kKe8SS$Ls_eg|o;N(KO48Vw9p@xkp`StMsHv^o`Pl_|xwHNERC*kZ}HdPKWnO(okV%rv)5 z%AXrykgh~mvmLy{#x1Rf=Cio%K0B4uF;T|y=jwhG=0F#RGhL>`Qju1QivA=HID?IoVhHL6jF zc}du|04)eA_r(y;6Y#V3?&CW%`2C~JuKPn{G^HzpGtCWAQs+LhLjUI zsi$-LOrM;c{6;F(;k1=e$W*xR%t)+x^9I-n@M0szLdTIUz0NWhbMj042g&Q5PS_4& zqX>Ap`q~c}Pw#oL5P1BXyw3AU@T>`;zSreHP&6q3e|g0enZQ@i)5Twu+FYUD@uB%7 zc<@;nnamnFEsG>p2ETfz*DvB7JNcA5@)R+s_DzCYMG1bwd%`MGtq!ku3|B(afw@m% z%rSE`z6sylIa)WRP(Vvd4%Q+tCM;(L!`qiKQD=-mTVLmAys5T+vx{Vz3tVuaR0tw# zL^{LwexHiu5o->LYYCR{?Y?MismWxzFqLR=70CT)5`;PkEi#Qf#$PPDQRpG;GMI)F zhB8oe%!;Z+@q!r6J;?(1T&`yKu~^TGARydfS9md#J34!+fu(8hjRKc$f4-|Z`@nJ6 zrJ8l>o4pzGQS4XU7`F+Awv;2WGr4gzbqfnyYHHjdJH}3KuXrEK(fx!s8AbvGc`=Fb z&+^|SeF-kM^EBw2gCkg7dI0q*)BS#@PbYPbqgSRX@FyGo&u4LpK^9jin@KJo;9G2M zn>bUA<;hm_RDKpl(cJ2^Y3N=gtSRECMDEl?-jdivuFUX@H7XIvA*#w-xhUMi$XiIL zbxGQj`-U{qQ3X9?jO?8>RcWFUU8%^lK;hOywHgSRIzoe2D)0>ASPxLP?@Az=(CC$u ztO3{fkNQqHFPtqCuNbDnQ}`PdpAQ`6B!6R9Nb6x6zzxjHm`01bA*fP28V{5bM2J|} zqJ08M1p^!m(TVqe!V&^V$!p3)wNQf3l&y4a9-JdW;_}s=mgIC}S4O$FtG2TWRZIRr z2^TJ98lfC4Yh_b>yJ+{Xx>ny8K;Kc3Ux}wZ!=5{xwj~g0cou=x=EBfgDs->=K-cP6 z=!P#6=|k2Xei8mOZq1(t-4m(@SqKBL)cQH_z0XQKsWl;T5i?&E04S;DzgNB`&qUX3 zPeknV6w0M)Caj{T>S}(c%#sZxxK@yG1VRAj`84pv@h7z%Q}9+epdG4cWXxZWHwPWz zf)Uvn@iD{DKf==C>=y4!5(p;{C_~O3q@z)*N-7-Yk90}(#lyyuQG}+i;5ItZg(0N} ziA@r%oA6py3DEhr74*JQH*mjDJxCu7%yZMbFY(}JD8^2H?0rR;YXe}b!N9*KiDRjn zOSTZ?!(ITv^%P>~sXcn(J(Lyr;@&+9R>Nh2v4D7uF zWW~<&Y-Tj1fy8t|y?X_WgC<9t5D+e=2b@2Sxq=G)brn(S;3&Agx+>N%I1d1M07$}c zQiUlV*Z^yi{BZfLbn6y>51ayY{EVsgz92Ec<0*oe@^v8z52bK%P#fgywr2@@fu*R7 z)*^vFXbEG9WQXvt1?46AIX^gs3P7|(_7?n{mI57}AHPpFt&2|pgp2m@mCseP)MY`> zYcP~lp_Lkh&~8tzAzf9r?J&7obE9&K@vQOaB@b?~c8#`T$v67~jjBw4a0-B4&|Kq~ zNyppD@!EtnkVFQ3mi?i!s@7%DC50D>QYvjglCngnJbsutNP!rbo+v7maCJGtqv{=c zRt*(dgkMUW)8k%d%N0bU<;2IQql&+X4g`We(pc&F#>>kzMeCy5un?iZyk1C4^&J!( zM%<3JYKLy@=F%7!r~2e=a&foBH<~frtTw*Ga&vQ&e27J4?B5*4-3)J}Xo1W5gVH5a z4p-mwL$8t+$GeiMK)%VQECM;?r3YP-;NU-@3 zL*#G@Z|hyESZ|vcGP5S^6F@OQV@vZdn{;|%q=Sh8@pmm!a`dfU_#ie7#wuon zy8;qV(TQ1m5Xp|Wh8LUEw?_;yT@EhW0YuNO4d4_a1mT?i>~`0()?IZnA3rboew1ss z8|f|5WfyuB&_oCUcL^&MhRa6Wo51?U2_+1D#LhI*FZePcMUudauBCSrLUGbA7l;so zH-pSWs|>50|0qweEF0nW6^6c=x?r*d`)e|$Ns5vQ90_O#ii&r`9KdJRYDGiTFf6t- z9NjN;Wh>DF`y5pn7v!M6V3r#N>cixNX$7A0OH@@|-~mB)r#B1;9F^{tOL5!3iRvSFS}1|FLARi!-M93aNMa+OU?^}`Dj>NUG; z02AJJd1||MBV|p}j2S(nBB-FI1JZ5PLhq&|I5xN-#}MploLM z-@iT2oa}D6&LmvHGVLZl>nhp5iXh^0ez0x4o!V#$B#KEiu1M8ZXU;NjPryz#{)ktP z-xKW~`l$;8zgz;uu!Bm1H&@S$8=BX*DHQ@jz*5`dhWjWX!vCk64wjqfHn7fyKuS4Q z#?-4kn*Fi6DeOI+ZR_+=L2G5AEk^jB1N*HC0D0>b(jPVaOYw0ORX1K}R)!iAZRVc7 zb-Bg#z*X=MN2hdmr~_CTSMf}xaKc*_8MC;WjCqiKw%i1=SW9A;%1gdZErK*pE6GFB zDvU#9duQhPMCyy)*M6Hpj4s6VL0(gxG*u`;1-1__QHU85!okrY@1ztZMvXc6PlL*m zCs;Q~8oxPIx!`u3?#X4)+ZRt7YAY&t{QzQFmBR`BL3->| zs7t^C7fG$q%S2&fPnnGrm-dxp{r?vUx-&uuPD%(CqcA>dcF4FrJ3;Nr`kKZeF~=cb z5FzVnsJK%}!iP_$k#RSvxV?77d{ilNKI4Dh4c*0$U%x~ zQ6^0hx{M^eBAolPqpE%oWS3@$eb>R))z4;FYNQ>Vp=nu~gy*OML95dLT+KYdxJI-H zc`o!~sR1!{V0ntg2UGN6Wq2k8bQxr=Of>Bc)6dw+-La|q78D9N=uOfOe z_zA6Qibi~-ZB6M+wcDu1w}AOtltOz5I;!M98$5<8j>Ncw21=Ych8Fxr>W11xJjQ=> z*UbO-t8<=JtuU=Z zf0a69duFL`+O#bH`w8AK3iT4b16;G;`kPcRQf0lbm*Fmv$kjz=!a|k-djm=Zj0(D8 z)X^!Xk7P-mG#2L6g!HKS{Q44?#NWQplqk9h3f_a)dFQ`F!d(xx>34i*KFuY#e0i(-W-4zFd*hv`jCC=UslQk9zCQ>Oq9FIRF+^F zPlE=Ep)^wEx*G-(sPfmIlNm4FbQXfs7>{(mg4K)~Ho$ngB8pgES$kD8xC`@+AcJAa ziKW?=Y+em?*l<^~{{Q&`9Dn13o#QMz8qanP3T`K6-oGqBb%9qyjv3e0ac=bz7>lwp^1|67R!h#@$?5UxJ2Qbtsn-G(H9)G4fu-X#yht);T3=Q%=CK2DQ z!+^&LBkQpwT4e_-(BkT8BZAwCuz&yHF z*VorCN518mAvbQBX&boXJ8X0=`whQO94}NA`G;Sy2Rz@MIbbG8ZtX(xkR_XMcRz2T zJZ*9EV(F8kqsR?K9*32`wXb5n*2|3+ZfDI)THV^suo|X*51@1LXo3$e?}ClWof}Z4 z%x&Vs&!(5`Ef46yG>^pJe*m3#2KsW@RB@@yfC#QBEU>5I4cp`!z}ZaO^c`* zJ*25H$U>0|;(*)ug(oRBV(c_6@tYFz$RNhZr^D;Zj;G@)8)yT*^!F#h*!}6e&;Ri! zkH{}P5rr>%VbA-(6^|O@Z!N1|i?SWN+pgN`>f&=>{?d0iJWmk(+)jtZJ9s`BT)Yn$ z*?fQV5O_K)vVkTT&f-Mvys23rHzdLEr&;=c4hRta?$nQb`@H$?-+LfAVMo!ikJRX~ zY(aSN<3H%+&Gu5)xw{)w2s{Nym@ajVw|z+C5{8b5x;-703HDO^|AcPR=b&LN?ZKO4 zC(t{{%ljTDc~l*0wp5}HY_zLm0Vp{SVN z*AdaT2Gqj0=brb~*rcwPJvNUbh+K&oQ(W)Zef@u@>D$ygUyE>#BG)PY@KUAB9T5*V zH?Ed#MC%8ZO~Qlc=YN|c6qch9V{`U@^~~pNZe&9iubU^7iVK_6tKL(txsvK-pU5vC zFQ)}<5JCu8zsQNcY-5rm$v8#axNij_&QZq;%>iZ_P7H7NcG~{cA=eVyueCZ0repx@ z2UxowcF4!g|E|2AT8Y{{Sf!qP+5ge_3KbtCbFWj%T6dE!5^Nr)Ji2!|vg*8k*>PPK zE&ixLDwj0Ihb0>g8m#^AR{L7-3`SybmDM(!lAZuGV45N}AMZm_Fvkv{+r&|Hh|o>u zv>U7U!_gg;7sVC+x9u}V!pwK{JJEN8(lDXsm>&lG zXml}vA~HMZIxSBAERtzCmD4842txq@2>jW+8ln80Os8xcg9FCu6{&+l*s?yFzrDD2{7)l`-Asl$qXW8ETa)yDdAM>L z!q;w9{gy%kDF5|ca0wnl6ewE{LFDkq^k-J!a-v9t?++#)i59~@K)1kP==lS!0qYD5 zG9wm#WQdJ2d>8*w7g0(6dOF3iw@2JuLDyDd?p2IctC)|~K}xUV{boRb2Zqy>C=}!+ z015)QOy%&OcWwl{zn=!;cjDkzrM4ni2BECTX7U%@&0W5FWw>BInFrxFs~5YYbl<)* zsQd#^__Eb;`HORkFSr|er#m)-jWOQ?9z+KqfTE&n^wb{m`6X{B z%NT%o&kT3hD!Sbbcu#t_0|3lnoi2Lcxz1r*5hF4CC{?=Q0(xIzmT*^ry~ACE{*gWy zhR*T*U5GbZunew27sljk>Js;`4?L$v@BfTQgF$RwV~T4$G-ff+xc;OZ-lJ)~(}}dp zjyw{V7W!N!gj;W9jyT3_rcMRN-MsA;t=Lo*p?Qp#K0z%;TbKVt616-L z7rCM-p38)EMAKO+rKjX&9H3A9Iw}jN{>R1#un|7A;%Oa>K+I_7-I8xHiN?m z^WHuXzVKq5k*JSF#4*Hfnvi3IIfPPJ{BBFw{Knu7pfbNm*NMS}3#Psh=t^bHD$nl_ zs`uwIyNl(&LzVq9_IA(5y>!9e>$m%!P2o}2_Cu(UIw)D2NfMxoAxwm=uyzH_{BK5rg84=l67}2WzLVRoY;%M@okx(-D zZ7ccV10Nk+^MmLR94lHJ`rA6wXYrc$6EozY0TAfo3;Au;}mA4<$>GNRM4m_J@ zV28|q+|Z-nd2day=o#_iBrkb+(Dbu&Xn!R7ne1%@h~)IS-+f3JxQg@M>j(GT--U3m z^Wbp05iyB?Mysu+6}D&iyt35pgMtPt`X8iwT^MEL5sGsh4YYYkLW|q-zgs&HS#p5A z|M`CZ{$?~V&9w@xOkgj{2EGM4rg;0%KKJZ$oO;^ev_?^9Rz;9@mvWn zdlWj0@6*l2*s%eAM!a!jh*zVSD$eCB-Y`;q0il16FS<_8l)nQ)#OOfmsX+1qu_ zCH@VXSB%X($)yB`y|x7Bt?n4*B`+_noHtOPJ%hq|>PyV81$dBbd!TGSf zP3B~iZoxW^vDru1z=9aj_YQ2f^&cW$I_&xjOZfoV6I<`HGK|+h|4#!o6R{Fl^N1#7 z`&T?z00&p}cPJYn<@ggYF^H$)F$SUb@Z_hMrEy@5E9f|^((6}@KV(75jY9|q?XA-@jd zpu}oTb8yZZ9zUM1H`Y&8P~@0f=pqpIstuF`Ypl0OynvQ)zX5Uo9*9f{NY;wAa7@b>E_2Y& zTn2`dyTW5XCFQnHaH2yGcjHg9q%jTIP9l_kr@ZY?%^oTJo)APrQXWp*7>+@ylI%hy zJv-=k%iDmQ65WGx@ivlD;pK7i<#2_!&T|eGC=SS@a-Ed?!%b-Q6d%HyG;%TK!L1Sx zVl(4{EOLL2KPO33DU3txq8$re^S@n>{Jt5n+C!~X6S^t;7579okcECmXC++Qe!S1N ze1w>gyF-OYx4KiOLjqYAM0<+La|^4oNizKn#P%pj?=WaNeMhV!aP|_1f#mOcf4O)3 zZL=%(0r}WD#WUTHv8Fy~H8klwLxcU-I6zg6602M`fN*T#_$)fX`f5zdUI;%ce6}~qV z1{64Aa@xcgNx@L8Z8(&92B4W5VIrRd9KV>9_H0O`VO$-iY^Pfp0os`IB6vU26$7Q> zlzT8#qlLA%iz9Ti(!@<40Vijs@M1!AGML1LORjo=%a|o)>gmS24K0(+{z8?8PD%lq z$&u)31Frf-nt&Y4VJk?&djc8hM(HbN~Ge=c>icLy@OP%yUkTK->V-2o` zXGZzphhWO~nXx}^i3iJi2pXYnST1#sV$24yo4PB;Df8)x3-#a&Oc(qK!ofyk(8<*k z;2q+RmPt7xmtvYpr0J~Bhf{C71hT$I_}BA<+Jkn(>_{xbIIr-%I0TSOM5MjovbTaz zX)IOAf+86LoHm5iP@8E94_fU-m8Q}H-EW5`ZNMw9SPKKmWacDS@Oy?0 zG&GY|a*Kw<_OpWtln-qRKz(b3Td7$j&vEWU^5$EiH$IjRo);wAmzdqWOz?3~xL$Sz zCLXdx8ia0SV@wDKPF)n4?wS9vfHciOd+$FHpQ{&81`m9@bw91(sA|-mv>#ADONUEQ&pW{plAUK>*D+9EX)? z4nznPmSTMjMr44=`4sWCBVS%RDW*WzU(h307Bv5ZmjpFlNKt1HzKiw-1;WdKf@}m; zS;G!I4W*pz>%s6x919+Um%`wNl{LT*MSF%p{A9~t!{2}l6z?Q-(?n!BMb>#dK4@DZ zp$Iu~d;b=GnZ_Y<1eqGn3N`{ZW%YJYP+%vxHsU2(?}Xw|70J+r8s6^aL=(pN*;U2M z5H=b>ISjMTj3yJs@C;3B$IH8|m>9U$bLW3_oy+0%W;AWrh04nasw*uG8r?oiTqre4 z>C(!}Cu8jiG^ne1=n3}yWaX)d)a!=9^Z9p+jT^VWu^x-8gpATE}hAI?%VP;H5EWUZ7VD+KN)XDB%W6)5KU`|8sKA}x$4%TNzI z)x*$T67I~@osxtM7Ensu0W$o1qqI1Nx=TNy9!*y#oMKw^ACF8oF-L2D zte;X|=+mmD-ea+;oa!T#vxN7a(eZ{@Lu-+~%?V&+5#AyNenJr}ERyc#ATcZK;)Wj=4dq^$@y92C{F!BpKDpGTf4a@yA;u8bcrM?NpRPeZ+rxIpu{F z_m*cR?iva}MS_WSf?fN;RoD`dQsEqUk=?r*j>mq>xw8q5T@CGJh+>P{Ab&JJ{`=gi ze%yOYNm2)U`{SM^U*0$iQdP44mBfFgdlf(@F)J~Y*oXww2Y=M}`k`^;BVQ+{D?J*- zPc8vXQ`zi@v*pMJk+7P|baR+V9={gzevf7`OXq(}DiDFo7e_OuWM4Ijpc4FiwEFy$ z^;*d%L#(P`5RN-o8-k!mvM0;UQsmxXo`yLbN@#;j;-pX)jx5rHtQVzq%!vJNditRk zR$=YYiAWlU>Z^BK(N{7wuB4%U3GNf!{QETY}gQ!_fjSd+La3Lp+) zNg-IudD?(bO{Tpr%_Z$*P-)==hS~aniryRuJ+Tf@H~d>Nh!bvq=tJ;9{O6Adms)T# ztY|f)4TM_i@Iq1%XfThtC;p`uj z3AQ;C$M5;uiF?D0K>@?k)5=Xva}6L#<=-VYRzmzJZmCm_q=Z?nL&sTyWRvhn)Q^OL8y@KL=khsH&=r>S(X+vx29!34QV2sV&SdSU=$IRK`r3e{#6R9SD=I?&yd!NDo|EwKyXpw!VuGX zx~jthk)zx{(x@sl2dpT%W*4TUX$9d}d?s9=5_5!Q;{Fl2dh{vs?&8cif%v3kdHhBE z`6HebU3M5u@$HiAZc&>=AbbMs?l0#pM#|dCQ%gJMieK1wZ@NC2c(=E-%?`WuOvXF{ zB$klSu+T{Jb!+rNw5O~3S?3Ay#>eOLfveaq`Z;P?&WuzV&F4~=Dz~`$7xJt~4Dy|~ zKEfGO4fa1naVjpLS`Cp7*e|ET;NfDcQ$%=Tl$PXngs9VYlYxhj6YFQskf8O&x01j4 z|Grp6V)t;lSe%|nw;A@dJ_b_MJ0v<4gyB5EMxDK2%iMgL5+_-Go8Kl#DD2yHqAbAZ zQEQ;9OaA*I3!svo8zWw9xz>7{6i+3`Cp!XbFGqb(9?tYNcwP@-yoJM*H znwxx6u#9hP4ucKL{1cpQP;1>NL15ZNdYrV94=|u_VAf&d_{Hi>5NIUUqJk6XrdZ&T zNmy9lF`X;z&<|cHxqi*opZgLlKo@7jH;N@uQjo4ft<5k)kWI`!1`4(gk&MfnP$zMP z7p7=FkUzzx(-UNOT{sL)Leg5L6dg1Ols%;VyMJ<)_?Be?^$4O<;RcTFI>aVPI1`J_2@}&v%s>PhgKABj zkM)i+_{0vyXSb2EV!zF2PbNFFzk17;hF#wffO%=OcxHN8DA6<*SQqf+?@-Zo|9zZ) zWEC>OWQAF)*R9dM(dBdT*RKjcD=kSi|FZSB*Wm_w;+8?cOpFR%lknR*#>M#-c`$@b zunA>MHK{lkZB!5ZDg#^L8Os9?DVA;3??}&^&0w33b#wz_9z*KmaPlC^R>YeJ4b2e>@do>8ji{l^kEY+=407_kdLjnmIJeIC-n8v zn(%E{AwO6w%MLz%Z^KcUG6;^3jDXz1Qp#t( z16<1rHkSpw!NBx@6gWKK$(nlw`4pb+CWAB#EdrWT@fG1Ehj&`&rv?OmF`NQ)LnOJm zT#30 zD8v_EDPpA-Ni1sg;m~pxD7)!)AYv#E)a3>JIv3`z-FHrz)XDDhxp;T~>STT91D5lb zr46YQqJ~0+2OysnO!*r)U*Hi6NkE7n1`0l$Ay9ISmDaX$b4z0U>9W%>621r+AO z#wX}y9&6`ehF>4)(;8$B zK1Y2qs4BG}q-C==MCzCOTv9w;6}7=YL@pdbfDQDVH*j3Tll>6ysh|Td^Li4<*85cv z+VQ-L-mkHP&(Lms0L@y{`#((I)5pRFGXq}GuhaT^vmB@x~bKlbLuMQ`$p;m^mbA2F7L2X7X$`I#4?px)2jf% z#^jZ7qQvo8eOTF5xW|=(SL?X@>FjlJ`Zoj--E5CAWRJb3Ed+Q1$zMPV*B22NIQWmS z2g)#*IP{N52y;OCKn^?d_pKCFv$a5={OxZbspzRK4)O3y?3*t@FgA0!rx~<(M166y zB|vW48PAdh`c;qsGG@<&gL8n0N(En47`AT`p2FaSkK;{HOO3v2 zWIpMKR9kfCN!Qr&q_H&;IF5YJ^RhhHsXtcsxyXGd)_7F>8)ET7+s-Kr-0e@kJ=M z#J^cTfbk<6d)y%It`iG6ncaQ(o-6GBb=z|Fr*)DgsehYKL!zz3MbY9Hx3LOMVx#yF%8Bb90@AQ#4F3=|keW^DO0PHE|GQ;4O9~R1cTRJ3pj?ok1a}O7B z1^KFPLE>J2TP2Rn6P<83kHLvPyVIL%##fo%@5B}I3=*?SeO)h$eI3Q?shksQhgLVy zc-s5_;dOr`V3M4eMDy;^)2l8q5Ta?J``i#NL0$hQ=Bo_Z5JR!26QV*88mYZ&<*OaW zSqMYLH_O;~#hBTnLjcmcw&-K`!{0YcFj(-80LB*YDfG{a{$`j&tJ4FW0uh2z)4oHd z2qFH$H`?rv-xUgx3%h}yv!=1oj)i#ke7v2h4V0$<_$+Mcaw2$)o7_X{p(sa85J-=U zG8EwcTI;!xM4JFHtjTvTC+l2zETMvA?c~j*)#%kQ$4Cfy&->o{6wZ|Kcu4%|YhwT_ zmo14<(NGSQPzEdRS(fdTi|8Zz1G)oizu`3$W~3})h!!{X*ao3-VQcr((I_miv%l$Z zq_R}98Qc?~ZVCME&&D&u%l;>C#l|ub0TR@Al^J8We5bU}MAMv|vJ>wqI7zqIPurzr z@Wpdkh-n*I_8Pp#7dHK?b`D?<*rKO)l?K5%Lh(@JWYIJ-H9bKs-54zc#z~M>v=`oM z+F-Hku`FWWg)#6>i1)ax@$cz!UFtb~N=sy>-serKg4}gQmeHa|pRUW=TJSb}9-XvA zi5a2`t=tt?z@92rQsEXx4jv3in(tlrDs$DC-@?$F?}xuxh*Leo=4%0GOjbX}MiuGc z;o!_E2pac6<+ESp=a5Jfi+)IewOf}@7@T(WN>Z~?r2%5tJiiKN0e6}8NT5^=(x;6ccx;a)BwR{ZAt6RMuOww?a8U60@GCAb_zd*6+iznsQ&G6s z`RTqIiou1HfZ6~uGMqirFLlWgLhcHlql3bYsb2TJm_M_(Fpq_fV^NK~@+vo`5R2z) ze?)GQYc5i}q_tP<=vx&*#=yzTSz^$k(#z{Q7WM7}8Dgg*G4&t7zj5lSfbgzKg^Ylb^U!~;s%VY`04T1VxfK_FXB6}YkiY;X!^O?B!(weSAC zQSZ~|^huN`>1T;oS^qr@HcOC9H#Tcl$`xcukGl6Jy?P2kyMaZk`+iWcYdvb0=35a3 zI)WR{!dtB=k(*_Ab6yDu!7GU<8qRWwE6w^x6?~3o*nj{H#Xy}d&+L;PZ+6KqOhE*R zWR!^f0;@Eaf$_rQVz4`o+cvR8E~jM4cSo=vxBZ7t`ot*6)4DBRlb_(_SO$K0N!u~k zGGO+E_^^sXbfnUToI}K~$~8S1Enp~yiwknlRm=w5D}b%w^a0+=F`Dm#5~ctb=`ze>*fEFJ>3DdbG)S%iheSgx-5U=r3zI2f2jxG@+< z?&!Q%RgIuZU9s|)M{rs~z|HqnPf{9T;-ryqgqj>?h+Mym|82mz-&r=z!T0~#2C*=P zx)EL{8bV2#3IsviFhoL;4M9*5h#Djy2fNJrZ3rFF^-D%;M|kGr%56O0$2&PoDS@ez zjCgw>7};yqY5XLPOcIG#H02fh`mBw=(3A%m82ZZq*(SbEK4BMo!x67@`xmxP(H#Oi z7xB&T*c^ccKXaWpu zR?}|Ei{|wLz-oF?K{g!^$=-ze(^gtmhp1g=aGHkACI7K5c6$j3Dzu2~#vqhff{_}b z?OkE3KT!`Xs3GI-#)J06z-ar`8F&MztKut*?Y6qO^@?UFn;;MW4_E}a_ z9L0`VhGv5=6U=50j2h1(19yRmI6-;c*g+44)@dg(4_AqQvF~F$h+meA6PUg7AU-c7 zkU-a$`U~yH09v{Z;3=BJv3Jug2c|0=l{wU+$HNLeh&?KjoOslss7q*_g^h@KB8)fJ(L4o#QyQe9h zuL;ftOI)TaFJ=r?hQcfJ=bs5*{Ruo@Ig}AOJxF;Ee7!oxnl7!W72Vhl;gWg3&^jMU z?v%Rx*T5({4O}fNRh*3K`S@Q3!x>tIg3;CRi5*&zr9kBQe};nWGH$1lf__~4g%Ub? zc2vBRvVR^S$^ijxU<@P8`8(BG6V_gp8UHL4DV7TJ?cgf83P%5!Ix6eOrD3mgDPgdJ zNeIB({O`+ZLI_9gfO>{{U#>qRd(V{jzKH$i?x>mx=PU=4@xkb%4gX|^Au@Hti&Oko zh=+qGf@@4enKoKsNB^JK{_45&lWn-^nQEnRVofaJNi&n9-p1CufP-oB>@mR028{rW zrSz}9Nz*{bB%SfzzZh$g;kTZRTNjh|gpGcnAuyBwjrfQ>cszDjwpdLkx-KUHiBh~Z z+)Zn2J>%B*Fe!9ddhfr=5Jq#><5gF|F*BA#I?}Hx{_mrJXg2fZEuLFzJyK8$-I>@7 zYbOU-aGI>OuZbKw&*Wv9{phG7!fvpjL0X_(Q(0p48sz>r`1pWIUd7`hdQleYvGv@H zN(W4CYN4}r-}MPOmf(bxuQtmTfBcmz?p6y&VjuV{szdmH#hGN^BEljzo+KOx6oOc# z%PQ0n#-!BPpU#o=5!na+a5K7@*Yj!f(lF_NAQV|Qj>c!X)%u^fw1{>Ts-=8@V)}b9 zL`4ediYQT|~xpz`BP+BhSkp|RuZhR%m zfomsrDtvjqB=unL8d9A9mi@n_mmvkS>1~8ry(MQ2AI(ns*9@!UV{E3*Ie5=U0?h5e z*D(DyN*>a>G`bA+>4L17Cn+x&!Ib;|-$eSpiK@o2)h%?TmG^b;CunBDL(h(3wD>yp zFX?mC_azw_K|Y7vQ7J-v*JYxCRakvlKOOp z!}`}ii8H)w5>JU!FDAVr-hqZ6mL?z|V2S>>-Tyb;_R|R|m3eto{W*92(fG2iu2fon zSE{uYdhl6j+eSRnr38thGgy6ml@aOM2j%qScd!CyMQZY-^=zXCK~5!}7S8+H!v7s)fy~*ze><}*?s-rq>h05geN2?P{c1jc~&09q=(vn=s$oCG4}81^A)AKOZm;iLMOSf8?n z;j~lbGMN{Nih_sKmXo~(<6o=sd+C&2Z?+F+P zPq$;GAZ^@Lk3+_UCEN(KA}22Gvc`!{;saa6F$whX4I|1XQ=x{w8f%u)w-E#oePLWo zG@l_W=&I4`qgQd?Y>l}pP$bRt1rgxJ?&s^RnN7UI=1O$_Hy!HnCS2Vzj#)gnMt~@D z*DT7=pbrE0I^t}k?+EN(J@pB(Ed}^F_Uz7Z2o$=( zf;wJm@^YD6;Ev1*$(P4NAO!7p209@JX|UM+?`)TsH(R}FF>7&L$Uo_Rd1eG;E8w9N zM%8=P8cTW9W>#|6YEZJ%05n`V%}*P3;cv$2xA%1*0E6~rY6g?KieHAR7n0M*x3`@a;`H+OWU{S++0egC@S|F`ywFg=P9^XJ6fw*$nu4tcJFq!HGW znJW4$sc%)~3ar%I%awym^>q8Hl)i+?r;k-l6v!bec;KljG(Ey^FAWD@SVC$GDopL7QO^HuAGZMbFt&_S9`0z0|H%fvmWIKQcULkfnoOK$j+y2S?UnQ+c z6$$0o$7*{tbTEK z#D5epw%WZX$Mv#$e)I3Dd9LGzt9Wz##v#DsI>?9e;Nz?i2NQVpcnH$@(I?>O0o*l5 zE-6wod|M?P=6|zz;}R4{zH(A^7sf5K(|JYN)Mb0J68E_LS##`RYNPOq zx#11%#pFXx$Ftqs>@mG_Rm>J6-^Wf@pcv9Y)zwS2tDVEyFfVMU#Z-PLf1k<6PCraz z`Y)5c!#9f$aRz>F)6s32M;wb(vxJ_q!B|MmbZituR-S@L!%A2jwZ#Vo@rd&uI#rxCWph>`#YRK;>mO!{wPv64+bMcdwyycQ=L0%lW5n{{>OW zRUg5XxJ27~-C9L+5)#j|laezX;!&fFWEmB#Xr`wzg}=#4cL}uca;kdLslWNTP(-`` z1bzqyi}QC-m%O!G?l#Ccd058|x;+-`zWX^Qv=VTUz4|!uDz@x?0phE(+@<{PyF~z` zHlzkp!z}^_}vie!SH;q9yNOb}$-~k>?wO?Z@s9+mz3n@4O!m)VKE~ot^I_FFr{cH7R?CFP7f9E$ zSSuc+cEbOtSvPyv#Kv(U>W*v@srpU$pjq0S9P9ILxWN1D=T`9z;#SH0zt8@@4;Le2 zyDR$vX{%4iAGsK*kK>X1*UF&MbeQx-GdC*UN`|rJLXU!1(7Gagj^MB>8*oJP+eF99 zPqfCIlcujT_MIKOdwY8U`Q1Q0h@0;2r^jdU$;rv{`$a#Z)_jYVCD6OB9|3oyA4~1VQiC&Y zw%EHJat5>J+JjdAHFro{T?WkFCUxZ`-<@AU0>yR~{ZjADb{3mw-*pWvF8C@?WVK(b zegAR6mK8Kmq^yvO!Np?=zE*ARTzXjTJ}g-Yd^!KV1a`>!es=91a7FVJ4SRmw^{Lxp z_2Rjc+W$1TLx8e8GEQ)%?ib&^VG*w!tsH>-#MTT#wqJ1VVa&||=vL@dJ7N6zDw~N}I zV5S?&etqMXUVV1o$YtYQ4=)QG<)W!_`G&bB_ChS* z(3hoqce~EM7nq^Nk#2nqm-hD7lpm%@WA2+DtLv&3hj($9F~)o)MQM$cCKM4Z#715#fs|Y3XaahexmeRm8Pnmj5H_}e2Q`+q%-p+Mk@%}_ECyS<@ynU z9G2#vk%5fBAIFy%dELn&&N4;^+F+=mEhXCUwh)6iPz_<;{p@g!dgQ$IeqnT4dZ{a8@l6VfZXJ5EJ`LwAuTEStB(3ZBi-*5;0bM zDa#!0l&L}PpZI?vRRKY>vLTqn+@3CYE*iP%J|6xfk0j&GXN(s|S#ww#V#&gy4z?2) zkgho~W+{o!x!i(qvPmO6MmVfs?H^|y6qp8RNcQcVghJy?MVeb-maSj3*cR}n5q5T_ z%8(I+pKMQWOh7F#h-k5?OWJ7%b%h}Lh&eeTo!&C?Uk`3{_alqVTIlU;f-Gcn$|@!5 zAhb1{DQ3-7a?*SlR0E}Bcvd$r@c=sRy~?~aVa5wx5Ob1n1C@6`Ox%h6_#VP|XS4h3 z`;e6p3T?ZJo<_!o7Cn08{>nGUjKL0rp~NfA{@BQL<{giTN>4(Qu(;8;dlRtrDfQ*r ze~RGRsT~zKVNAoJHM%~f z^XV~$0!J^&uV`BeF7&I#SM9S72yIUtJVy1=9lf_-#!bN$2KmEE0-Fh9VUR8=cPD?U ziv~+WxKVo3)uE9`-*IDH#jKwlADx8HFVLQCQ2_yHnOwDP?GBA^xkYqrDAT7U4h@j&FVB`{L>+0!MnA9xnB=Na;5-Au5GkY3mY zpmM=>@=e#`qziTNT2&+`X-I9fEt^-SLyu?fr1k^7*Ud8u&knsoNhdn*DlO&XaJ;PG zV_i9`;Y467jDY0-;S&BSxqF^ zPl6qGe`Vnpgf$aikd@*8KKHis;Uz@r`x24%hCO|3B@BS3R zjUG3`yi3uHieI3DKu*!O*_FxUz{@ynbH2$RIRcP3z4)I=$M5LI<(1dW95jIKnKyp4 zdq&TbsJGjqu}@!m57{a)x-v#cTice8GAzDt`}ANJuL%{FPw0VqmK~-4`R55%yMP+i z=y7pWvXCpV-}Iq1riAYX$K6vHBp`>LIQfX#xpMNvFf^nR_YJ;>#g0Niap7e5>SoT+ z&oR>48&}?oHlCBeXulyFC$S8qofUrZ1821f7DCWf;cikSi~8Zic1D2fCt> zH0V|(g?9gmp>J3pNFH2u)HAb{(wTREZ=%xyKK!1J9TM@Tkmm;Bl9r5kiC4mT9Goeu z$&z}rBA%(sP2>a7puLD=;#PEzo3+wdyXhLtF-g74xH-$pqW8fa5!=0+*%kH#u7oqQ zi{tmSO4V%JdAJ*-sIw=gqh>Q&b96)V(j5YJoj4!7ZE(1I0Jze~F84c|y`P z=8N%h)cLvT1fLItNCYJ>oSS_Y5S*l2b!e$f+?nd`MNF_3-}HQ=ePEm~U#YJYnjO$} z>EGd2K-8uaPM_*qA0|FwbN1yJ*hzHJ+Egq5ZEW_K28H=OfCv-+kCt zmA7yk90`KKU#uf;&7PzRG9^%Lf?1v6-Cte|@m@4dTBjM6e|B(n2oSvyZAYWoA4%aq zlD9Rgpb&0;2}QE}zL*>r)rHEE=*~mM_jnQD9WcsZHa^9@RjN91moWqPa$6TSfYqM3vCaYOsIw$Wc*II60m3$^7l}BV1 zDy^tz-W@!cDd*Gl^N~u*UQizS~fl83Jk9mI}m z9%m&t8#euHp7ztNALo6zVY0SXU5TZB+!TA0)E65^JDt8SBy6AOLZn$uyfpZH&89nF z6e;-m7Ya2qiW^!-b}@fYz2h!TILpnt8@?@brx@`+zU3Gw5I@<3bUoer<{R4OU;Bf_ z$=vsrTaDOEKS%c5n{i=`EnWKQ|6yM{qABvW^xO*Rd`#Xa@q?S?mZ4+uGVGO^u4}^u zZEv60TDO`?zUcHzreWmLLiOMJseNfo=X<;ZYQ3Gq(fa#)rTV-MDUA%}0$ z#9My6x>ioP^VsR!{El|PKNuN-osi&+zSG%mmpIsQBcZV~vaDONZ$9bgCWVrgcU9~& zqLlQh=Y&Jp;_`FGI<9ut?{i57nHmTed{`)=npjE2!%si`IE3nN-aInZTl!CxHuD8w zte>hf3LEWTsah!V37O(Y~7~E z7Faof-mwURKN^!9XbA<_3mg(uD2g^O^yU$86q7~*09)$MwNtby3UaSa=rhjpb4RnG zB3-5Dac1SCiWla@iyBcr?Alm-@8oM5P%&z2dL>!>wqNhJJ5z@VMFyXkj**sXRPEMo zg`5}_0@H&Z74Kpn%o)c!hUv)OAV0!BPHUM96Yo5%YP9b{!c2}N1j|A;tgs3MN;E}S zH|**tgt*)bA2_pmnuj8{&=_7PBK6L3r*ZHT@S2qsYkf%jy945Q&YDzQqkL`x#$<1m z<27osiix@j#R%u>zpWF~ZiY6mB;*usW!&w+=w&KQn-Ltc6Ynxb^4m=uXEOwL z5;xejO6hM#S?p}gF9=Omd8wwI8fRz>*>BR&7(I7!I(MW6ri%mK6Vg?xamL#`NFc>d znc|k+xUG0?%H6kdMiRWOku$o1h|V9s$_i=YLt?Z~B1%H!Rcze!P-AoEzA9ZzVDzR~ zrtk?8;Ir6;r47o>#Nn!9#zJ#&+-hVsj**co>WKTQ%L%Vyy$kx=iBiUJqFqaRcI&k} zw4gp)0TRLWwc?wibQgIJxzWO*Dh7b-a(DfDllY|+D}qH?v#4W)zsNNqx^MY-BJ3Ds zeq!NQp=*|zLhv*uF~*%?n*<7u_>Q2kS4x3|OD2_pt%MV(aIx#^D*B^~6Yly$ZkmN_|rQ%RPZW6<& zd-mmC;)t?iIL^r#{sXzI*&ZE1#^UoL@g#frZkQi(B*s5D#5;%GjUzh%5yXhU`HoVV z3hS6*@6p(A zn(#Z7jWCRU7|ggh{ZYdlV6!jt;54_AkB;{X3^-cQ_BoZQ?`H+gyA={DCd*2-gBcVq zNR3D;-dgIHYLy^Z%b5BL7yRx~$gesh?E7oV1hRz+Yg%?a`Z?|3`Olk$3zK3;XN~{j z{>;mBW3`s*!{H1G^Ep|}8h`OftP^l|y=V9sS*m0=kDJ*lustx}WLjZ>5N7p0+s^^M z8{?q?Zx&H0iJ7KX0?$5@q);gz$n~xM)5OrTA@xfP5zZG`j0+ZzDx#mm1V0s{b@hC; zWIe@!5z8kAZEUW;zPNgFLm?lhy}4rf6fb9Oh84UJV_G%Q+|Qla&TAY?AgofmZ^z}n z5Y>J-obzT-3{*OtBt-cZ438}D$5RWtlQ!Nr&YG2trt)u*RaByO_T3wDUgvFXxogfZ z{_haQNH?ZeX&AdhVNN1o6f`}r^`fLh%KYBf5?j}*QtsP)C#Q*O_~RyP5hoUx@kS7H z%e1NZ!zvn{!IZdi!pAQ#R4_<-=uHC!Y+!shs{NUyNcz6MP&Fafj<@<}zx8%^-cJ4g z;8Zi<17q0Z9+r2DA|#=y-fsm?z1z$B1LMx=Ul1wmYtiW5)EG;g>f_wW^&}RQi@T(^6G7nOt&<1vnecwqR2M)pZHZLTW3O2~%+Za;uGDU}Y2VbNsI@fn4XGN0KvMhS1? zAAT?g5Vugjo#?qGNh1;$afkRj@Rnlk=z%1WFOtvVLHV6t$3H1@bq!F+_9?eZj|lsJw&j=S$W zj@P9_8~+Y&NtN~vLFTT9)s6?=P9qRf0=7!*I%vP=Yjb3~ zL60UGVVCm4Nzyr4D0yIi6b4jp5wN9d2M?sVqLH0XYp+7N)6R%OuN50$*GyiFVwyDUG`biu*#aaBh^(Nsh1HP6MyINw9E(SB&mq4bpwFKD{#~ zAMd|TsSYY7bz*fjg%Ce^Ra(6AC+Qw($zKX9F`Ts{(BBBbNHRPGMDwst+krGQ=Wh*K{m@^}g_t zSrqp^&o6=7@Jq2ogAhNSnxm0}W(=gteG%AoqcQtjD*`9{T@Pr;v65RwoFBTm+@2cD z0HS6|aQqe*RZc3L_aIx{zp0+`i;VH|RNy^#siX)jm_y0W) z)8m%Tl}hK-G#~qxAhd3|;)eqt4J8kUm4*2gsBq8c#@Y0Y2zw`F8t2TuL$H+$_$Y@D znO+bHYk%?a8?fl)#B!=B;7nYa*jgV4%w}Dqh`Yz6h1p;7b|9RfmD!`(oi>Tlmgug> z^h}9_-LYaMWk9MCno3YntQ$1YNwhx2kWh)gFe!$!lj($4KnmFi>|AM)E=Xf^>mqs` zd<11wh1EkUNXtY?%^3zzh$-GCB%CB?`OTTc3hT@}IPd&=xOE&q5yUa&P0X>Q4!^5< z5Xz#?Zx`&U&bkq+EtcINIb(>?fnC;3lX3Gy93PUx8z0%zMI@*tNh02fz6C5*`r2m=T`y#21@_49a7Ik-e*T9HXFshpm@QYnCD!&ocKvYsn<Xv%6?1elA=^P zJlEsD+ljyO`bbsnuUhpN8qe~6cK9(-?tvQS!}Bjd8V%EzP2o^a=&CrZXdv0Hjyp@} zj<0iZZKW^W@K{%_(i}jUM*PKh#7q4XfA}Y!<>vaV3<0*Kc8CJA+olgFeP=-^wTFZ1 zU?1)gy-_YD#)LZ~xM#@{T=#t@E}37Prg|BjA%nb}bR(QY-c4yrt};q3*DEGCF9$D4 zFWlhG)t3A(%n*e8El!Tkxi1M4s4V4e3i*J^0{#azwB0OII5(*saB~BDnt4sSN6-E3 z(9{p7byCBT5f)rbJ>^aEln=Nu*NZ6?93E7>wx+5(1x$3eJdlR*q+C;me#wLklvhzH zgIhVC@rDiG?(XbJZQy(<*e>RlH36tsG9&VWmY@1PLr!DOk*^R!$lbLjca6c4Y0@q-G8FET!A;AS^05e?0(oS%}rLpxdf#I>uGD zFjbEt-kG6B+nvxvUvR-y{|)1s){~>F7(d){u|a-Qm>)YX(OzHNnQ_e&U(rOWEwycs&YHWS%=NA`pvxFX&_rB)Z}6unxYIx%A=tW zS$=4Vx#6+<=RNS$zrd~&sa69`*>Lo>n}WX@BcU-6kB`Erz4nDo(Ovj|YPs&OCf2PD zhN?&?p$JGzAV4TdsG$Z9Bw(Q&Kmm~&0Y&k^P);abs)rIf3PGBb6Hx(0au7t6VrU}> zD4-{L6mUQ(5hEgExx@Xwb^n7qKfG(!n)S~9;oarg&$DNWhP3dmlDCz{7CnUw-uMd~ z$0DBj-p|y*8BR~L|B~OYZTDO+(IDQz^lrn0$oxWVp%IfeR&^{Sp!$!`lgw%RiZLPR z(?gJI21e9sg1QgCF(R>}Rc1kksU5r-kowW3h^yLWVS2y?Lb*q-nOY}G?i8nNhny4h=wQRrcJ&Dj0j%2>_B++)jsO{a}o^sU*2e`hYrTF*)AB zL^ew>J<-HsIqO3%;xDedFerRAl`5=zCR-m>Ih4`&#nq#O6+ZZVGaxdoHtb}iV@xYs z@jtEIR`9rND}aF_TbFtkzR(7io_SQL1-qWC?y_LN5E8QrQ9pZAgyAfB{YJx^pDHFD z?mWs3Xr#$Ty~+4MwWz<}Bl<0(VnOCpLeP>)W=4QKZR(6UC03C9GJ81uYUR`(`LiGW zOXA3C_d9=|ssY~#fN$$SEhev@+dcCFJRJ(fgg_t3ps%jP6|ghdP?@mRLsVgyY?y7z znJi{~U195QwM|LCdUmJn&l@OB#`VCFOk3dA3roc1;PdIpZa(FyuN0W>W!H{$BvN-` z168uM8Rse9Zt?T^6NB7DcMObT`HdSVv$kI>9EO%u1Bw5-$p((q>R)=29qdr>(WlX@ ziWPE>l&|iNa9D}o-@N6lMJM#vrM93 zo-ieMUrF#reGKi$n%?TQC7}_zuhPj?ZtP^v%snZJ*m9KfI@VXN5{d_;ZPjGk4N2v6~D7cFKyOJQrc!08{^Df|oU8qHC};maa< zVdYd**0oIx5(t-wAr|i1qdq8{81ygM{*bb&>!}T=)mTVHEHVUNNUfU9)qH#7fVPB+ zCDpM;^3Aq|gXA!y_cv;ZGy>VbM_WUB`AxCQM%8`J$+0)q^ z*pPhxi7n-SZrbJtV3}>kwom!}i0jGR;#zxIVGB)R@$h6xn?nbs{DMPGLb7j_4rUH6 zh<|B1VXiW5y=^nLsgt20OC%7EYJbYfh@R;)j}T02$&n7o*_oeg^?mQPz> zN1RfZ7%5#nSj-Bm>rbQ^862*P2VNrtQE8B2O zGA>)@13AB33{Zu?XbjOBBR`d>Nz?}*-HXM%WKqd)^FYjA=c7QoChqkr^-qY5- zRj_1^0_l6&lSq&5iq7xFpPG z;(Mi4Et`9vcc&;cYAe7UPJ#(Uy;oSeZ8|efyU@z!M}XxN$^lfH&cPHJ?1K!^JU3zy zUv`t>9-hs8<9BtzJThJV5~27p3HNKKb3c8p%FAG-Q)~Oi$fz$}J3A&zf~b(nRQ#B( zvg#@9#S!|Z>f|e7@w#`$;fPR~Q%CF|b%>fv(@Iz_R?8s?Gp8?t!a;^s1QzYW@6c3V z@&p_Bzhc&o0Q_?3(R!Bw{7{4CPJ2^Fl<+9t$7MC7EIDFr?0v{tuJl*sm;3l0`AEwM zu^EX@RlPi`5~Hcgx{$jlDz{x4eKDQ*n{-yIrAKIYJm=M&Xiw_SpnX29oTC^1zCvHI zOv3MaM=2a{?F4?!hEvVek#E-EsivK~sX2=hDnXr`KQ22;1wD9FJ@Vd0BdSbQ>iuUK zu@6q@XA?~s8H$9g!@NVjD8)s}B)JXmIymJtFR;%dK!h{I(WPKSI%5@U!~mkJ;qatI zX9Zs!uq6P8AY@-M2d09$D$4g)Bz<3@2RLC|)T&A6L72O*DhruvbgYh8z#XhXuc>#( zj=tASdNZJ`7AuGxW@IX_ds*EI*xIY}8R}DyTFh2a5k>XtCs-k_OARm8@z@n7Ttb(Z zC>#YQwxj=xCTP$+c*ppk7+0sSv2sw-KSR{eS5`mu;~vp$m*|(k&XfRps0uwmy6(EU z=j{^9Q*7P4<&{mGrZp1sd~(%e0sCAerRA-uccG#_#+dlSbTMa3%CtyMA)84kI!-gh zF?c%QyR?eHHJEr^I`u;*a>;Mv2JM2rYx`7y2SZ8Krrw!FupW;}t&?RX^cVD$Bcd-i z%)}IO)iuqzI{;6!ug_CR^-B%?VUd5{F7UTzC zb=&0l3Dd7W2>BH6lF>Q$OLgR0YhjuAc{AS5@Tm2z{wclR_uke5qB#jd5V4qUBLE}{ zK<%2qUSc_%ZWThutHGq%aVB`02$0nI@Uy3V$tyMvM*L&F=ez?J$loQ~eu&~yLf#r{ z`Pe#m(rubH>=izwMsQGwQtWj;ckj=TUsCJ^5N!h9bCWq;H+{Oxni_&MRHOCJI(8<> z1H?wVeRXE`7v;^ZF5ZOUi&@Y(S#q)gKRX{i0m4;V0kE}zV}PW#%V8PzDXE?ywB_6M zHxOBJ%r>^sLLKJz=69!^SiQI#IFzQp6;w%&uD;|?0L1ghLj~O31oMjXr{>Z!^?I3?G(H(&!`${&V2WeyEX=c04G+aJUDv9BGoq3 z0P;YJibi%jmAt1O#(hFf_AYY16)UM-^G`APTq@F(T5RFum}jMQFLyZ+c$k+NQD4Y# zOaDgCu!VX3UIifDL24IKeN0KlKwRd}4Y9~@x7rzQd33nz7-OQlW77UWdXsi*Axf%) zHl;bcm{V$9FJg8E|9E}+nmzp!OuzsH-ei~?v_oW#taMqc1Ft?58N;>1^s7ne8tpYc z^wSPqaR9wvDlk0`iIgrWmG0W6H9XRfk)4%`otQA`y<=>*Q02D}s}FCwL9E?=x!ZsU zLvi(!TfbeTD5(Qc*N4TGML!z%eCe-w6c%3_v0!_SWD6&sfvN=Bh0I-bZX1nfRafvc zZN-Zc%D_;1^c^O8p|rYxXIg;%y61pVaPzFU`FxGjz`!-*v|?<`TR2l5R|@3)at;S0 z0hV^sXf8;C?O&?k+gB{{^=w&FbI$OoiT$nVexfpcAIdMtdHtz&qU`!}-PnP?{(@m$ zsf0mJL3c{a#)cDfYq#U3RxUmDco?hAuPJ?G%7ouDEy!$3QM20vxI)N@DkR6cn;Owv z^5>gkk>Tbu`Huc?ZRCG0Hy?{lTPB@*Vfikq1D4CI!C4hGo<;9-m>hNMDukJCHwa*) zw=mJ|y{Cg31wTG{CC{uQOZzGg-ul*H9>0PSxiqr+4i}?@9v`7Jx=s1^=rV_z&>m2` zENu7Wt~5|IcCmcOdhBebX}YL#+c>TOcz) R$rXSv7bjQ8R)?VUe*<&_d58c2 diff --git a/Doc/using/mac_installer_08_install_certificates.png b/Doc/using/mac_installer_08_install_certificates.png index c125eeb18aa0c140893a7e1825f059adbd2a759a..f476c7f37d245d6ed5379e42e99f6c048c96b43d 100644 GIT binary patch literal 169299 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