From 23a35156d289957e3ae204c131dc7ce0419b5183 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Thu, 17 Apr 2025 20:34:07 +0100 Subject: [PATCH 1/4] PEP-773: Replace open issues with decisions. Remove empty footnotes section. --- peps/pep-0773.rst | 69 +++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 41 deletions(-) diff --git a/peps/pep-0773.rst b/peps/pep-0773.rst index bb29f23edbc..5b69de4da36 100644 --- a/peps/pep-0773.rst +++ b/peps/pep-0773.rst @@ -1099,6 +1099,13 @@ almost equivalent packages from NuGet (the latter does not include Tcl/Tk, making them significantly incompatible for some users, but this is likely okay for especially old versions). +As of this PEP's acceptance, the plan is to create packages for all versions of +Python 3.10.0 onwards (excluding prereleases), so that all non-EOL releases can +be fully installed using PyManager. Version from Python 3.5.0 onwards (excluding +prereleases) will directly reference the packages on NuGet, making them easily +available in reduced form. Neither approach requires rebuilding the existing +releases, nor are any changes required to the sources of those releases. + Administrator installs ---------------------- @@ -1149,6 +1156,27 @@ substitution of 64-bit binaries. As PyManager runs as a standalone executable, this is not a necessary feature for the manager. +Test suite and debug symbols +---------------------------- + +The existing installer optionally allows installation of the Python standard +library test suite, and optional installation of debug symbols. Neither of these +are necessary for most users, but they are convenient for some. Preliminary +testing shows that omitting the test suite and debug symbols saves about 60% of +the size of the compressed package (from 46MB to 18MB). + +The "default" CPython packages installed by PyManager will therefore not include +the test suite or the debug symbols. However, there will be a second "company" +that does include these extras, ``PythonTest`` (as opposed to the default, +``PythonCore``). For example, where ``py install 3.13`` would install the +default, ``py install PythonTest\\3.13`` would install a second runtime with the +additional files (which can either be launched with ``py -V:PythonTest\\3.13``, +or simply ``py -V:3.13`` if no equivalent ``PythonCore`` version is installed). + +Debug binaries are no longer distributed, and all other optional features are +included by default. + + Security Implications ===================== @@ -1672,47 +1700,6 @@ We could also detect the metadata and warn if the selected runtime does not match its requirement, but this is not part of the initial proposal. -Open Issues -=========== - -Generate packages for old versions ----------------------------------- - -At present, we can install versions of Python back to 3.5 from the NuGet feed. -These are identical to the traditional installer releases of the same versions, -but do not include Tkinter, IDLE, documentation, or the test suite. However, it -is very little work (and no additional storage space) to use them for older -releases. - -New binaries releases will generate new packages, even for already released -versions (currently 3.12 and 3.13). So these will exist. The open issue is -whether we go back through old releases and generate full PyManager packages for -them all, and how far back to go. This is merely repackaging, and does not -require rebuilding or modifying the release. - - -Include test suite in PyManager packages ----------------------------------------- - -The test suite consumes the majority of the size of our current distribution, -but is not intended to be used by most of our users. By omitting it from the -standard PyManager package, all downloads become smaller and faster, at the cost -of some users having to obtain the test suite in another way (such as building -from source). - -It seems obviously preferable to have some way to access the exact test suite -intended for a particular build. So the question is whether to include it by -default (there are no optional components anymore), to publish it independently -(for manual download as a ZIP file), or to publish a second feed of packages -that include both the runtime and the test suite. - - -Footnotes -========= - -TODO: Collate references - - Copyright ========= From a5cb9314c3a8b6f5ac09a42efc7a1d423505b833 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Thu, 17 Apr 2025 22:53:06 +0100 Subject: [PATCH 2/4] Add note about global pip command --- peps/pep-0773.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/peps/pep-0773.rst b/peps/pep-0773.rst index 5b69de4da36..75c063525e5 100644 --- a/peps/pep-0773.rst +++ b/peps/pep-0773.rst @@ -1177,6 +1177,19 @@ Debug binaries are no longer distributed, and all other optional features are included by default. +Global pip command +------------------ + +Unlike the current Windows Store install, no global ``pip`` command is included +(the traditional installer also does not include a global ``pip`` command, +unless the options to modify ``PATH`` and to install pip are selected; the first +of these is off by default). This impacts global installation of packages, which +is already discouraged, but has no impact on activated virtual environments. + +The existing recommendation remains, which is to run ``python -m pip`` or +``py -V: -m pip`` to launch pip. + + Security Implications ===================== From 7253fa3a05df2e2ca5cf7f3948b3a642e0ab3f97 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Thu, 17 Apr 2025 23:16:21 +0100 Subject: [PATCH 3/4] Clarify use of 'Company' --- peps/pep-0773.rst | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/peps/pep-0773.rst b/peps/pep-0773.rst index 75c063525e5..8be229fac1d 100644 --- a/peps/pep-0773.rst +++ b/peps/pep-0773.rst @@ -1166,12 +1166,13 @@ testing shows that omitting the test suite and debug symbols saves about 60% of the size of the compressed package (from 46MB to 18MB). The "default" CPython packages installed by PyManager will therefore not include -the test suite or the debug symbols. However, there will be a second "company" -that does include these extras, ``PythonTest`` (as opposed to the default, -``PythonCore``). For example, where ``py install 3.13`` would install the -default, ``py install PythonTest\\3.13`` would install a second runtime with the -additional files (which can either be launched with ``py -V:PythonTest\\3.13``, -or simply ``py -V:3.13`` if no equivalent ``PythonCore`` version is installed). +the test suite or the debug symbols. However, there will be a second set of +packages that do include these extras, grouped under ``PythonTest`` (as opposed +to the default, ``PythonCore``). For example, where ``py install 3.13`` would +install the default, ``py install PythonTest\\3.13`` would install a second +runtime with the additional files (which can either be launched with ``py +-V:PythonTest\\3.13``, or simply ``py -V:3.13`` if no equivalent ``PythonCore`` +version is installed). Debug binaries are no longer distributed, and all other optional features are included by default. From 7055b4db82e5a94d3effc1b125fec7f61522d0ae Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Mon, 21 Apr 2025 15:49:44 +0100 Subject: [PATCH 4/4] Apply suggestions from code review Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Jelle Zijlstra --- peps/pep-0773.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/peps/pep-0773.rst b/peps/pep-0773.rst index 8be229fac1d..f37da03e028 100644 --- a/peps/pep-0773.rst +++ b/peps/pep-0773.rst @@ -1100,9 +1100,9 @@ making them significantly incompatible for some users, but this is likely okay for especially old versions). As of this PEP's acceptance, the plan is to create packages for all versions of -Python 3.10.0 onwards (excluding prereleases), so that all non-EOL releases can -be fully installed using PyManager. Version from Python 3.5.0 onwards (excluding -prereleases) will directly reference the packages on NuGet, making them easily +Python 3.10.0 onwards (including patch releases, but excluding pre-releases), so that all non-EOL releases can +be fully installed using PyManager. Versions from Python 3.5.0 onwards (excluding +pre-releases) will directly reference the packages on NuGet, making them easily available in reduced form. Neither approach requires rebuilding the existing releases, nor are any changes required to the sources of those releases.