From b4cd6ba1a028c2624ac7bc93439b9d45f51cfeba Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Fri, 5 Jul 2019 02:03:23 -0700 Subject: [PATCH] bpo-37481: Deprecate distutils bdist_wininst command (GH-14553) The distutils bdist_wininst command is now deprecated, use bdist_wheel (wheel packages) instead. (cherry picked from commit 1da4462765b084dfa8d869b6cb5855e8f6014a11) Co-authored-by: Victor Stinner --- Doc/distutils/apiref.rst | 3 +++ Doc/distutils/builtdist.rst | 9 +++++++++ Doc/whatsnew/3.8.rst | 4 ++++ Lib/distutils/command/bdist_wininst.py | 10 +++++++++- Lib/distutils/tests/test_bdist_wininst.py | 5 +++-- .../Library/2019-07-02-13-08-30.bpo-37481.hd5k09.rst | 2 ++ 6 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-07-02-13-08-30.bpo-37481.hd5k09.rst diff --git a/Doc/distutils/apiref.rst b/Doc/distutils/apiref.rst index 2601d30f63eb4c..937f19f57be95a 100644 --- a/Doc/distutils/apiref.rst +++ b/Doc/distutils/apiref.rst @@ -1863,6 +1863,9 @@ Subclasses of :class:`Command` must define the following methods. .. module:: distutils.command.bdist_wininst :synopsis: Build a Windows installer +.. deprecated:: 3.8 + Use bdist_wheel (wheel packages) instead. + .. % todo diff --git a/Doc/distutils/builtdist.rst b/Doc/distutils/builtdist.rst index 8c65d9d591188b..b814f2e9508c9c 100644 --- a/Doc/distutils/builtdist.rst +++ b/Doc/distutils/builtdist.rst @@ -146,6 +146,9 @@ generated by each, are: | :command:`bdist_msi` | msi | +--------------------------+-------------------------------------+ +.. note:: + bdist_wininst is deprecated since Python 3.8. + The following sections give details on the individual :command:`bdist_\*` commands. @@ -298,6 +301,9 @@ file winds up deep in the "build tree," in a temporary directory created by Creating Windows Installers =========================== +.. warning:: + bdist_wininst is deprecated since Python 3.8. + Executable installers are the natural format for binary distributions on Windows. They display a nice graphical user interface, display some information about the module distribution to be installed taken from the metadata in the @@ -459,3 +465,6 @@ Starting with Python 2.6, bdist_wininst supports a :option:`!--user-access-contr option. The default is 'none' (meaning no UAC handling is done), and other valid values are 'auto' (meaning prompt for UAC elevation if Python was installed for all users) and 'force' (meaning always prompt for elevation). + +.. note:: + bdist_wininst is deprecated since Python 3.8. diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index 1f5694caf9a46e..38413a38bb8d6d 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -1065,6 +1065,10 @@ Build and C API Changes Deprecated ========== +* The distutils ``bdist_wininst`` command is now deprecated, use + ``bdist_wheel`` (wheel packages) instead. + (Contributed by Victor Stinner in :issue:`37481`.) + * Deprecated methods ``getchildren()`` and ``getiterator()`` in the :mod:`~xml.etree.ElementTree` module emit now a :exc:`DeprecationWarning` instead of :exc:`PendingDeprecationWarning`. diff --git a/Lib/distutils/command/bdist_wininst.py b/Lib/distutils/command/bdist_wininst.py index acaa184b5f7113..b5ed6f041e19a0 100644 --- a/Lib/distutils/command/bdist_wininst.py +++ b/Lib/distutils/command/bdist_wininst.py @@ -3,7 +3,9 @@ Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.""" -import sys, os +import os +import sys +import warnings from distutils.core import Command from distutils.util import get_platform from distutils.dir_util import create_tree, remove_tree @@ -58,6 +60,12 @@ class bdist_wininst(Command): # bpo-10945: bdist_wininst requires mbcs encoding only available on Windows _unsupported = (sys.platform != "win32") + def __init__(self, *args, **kw): + super().__init__(*args, **kw) + warnings.warn("bdist_wininst command is deprecated since Python 3.8, " + "use bdist_wheel (wheel packages) instead", + DeprecationWarning, 2) + def initialize_options(self): self.bdist_dir = None self.plat_name = None diff --git a/Lib/distutils/tests/test_bdist_wininst.py b/Lib/distutils/tests/test_bdist_wininst.py index 163f1cc97bf9a8..5c3d025d3321d2 100644 --- a/Lib/distutils/tests/test_bdist_wininst.py +++ b/Lib/distutils/tests/test_bdist_wininst.py @@ -2,7 +2,7 @@ import sys import platform import unittest -from test.support import run_unittest +from test.support import run_unittest, check_warnings from distutils.command.bdist_wininst import bdist_wininst from distutils.tests import support @@ -21,7 +21,8 @@ def test_get_exe_bytes(self): # this test makes sure it works now for every platform # let's create a command pkg_pth, dist = self.create_dist() - cmd = bdist_wininst(dist) + with check_warnings(("", DeprecationWarning)): + cmd = bdist_wininst(dist) cmd.ensure_finalized() # let's run the code that finds the right wininst*.exe file diff --git a/Misc/NEWS.d/next/Library/2019-07-02-13-08-30.bpo-37481.hd5k09.rst b/Misc/NEWS.d/next/Library/2019-07-02-13-08-30.bpo-37481.hd5k09.rst new file mode 100644 index 00000000000000..a3faecdd9151e6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-07-02-13-08-30.bpo-37481.hd5k09.rst @@ -0,0 +1,2 @@ +The distutils ``bdist_wininst`` command is deprecated in Python 3.8, use +``bdist_wheel`` (wheel packages) instead.