bpo-39586: Deprecate distutils bdist_msi command (GH-18415)

This commit is contained in:
Hugo van Kemenade 2020-02-10 15:26:40 +02:00 committed by GitHub
parent 5305cc9dbf
commit 29b3fc0a18
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 31 additions and 3 deletions

View file

@ -1855,6 +1855,9 @@ Subclasses of :class:`Command` must define the following methods.
.. class:: bdist_msi .. class:: bdist_msi
.. deprecated:: 3.9
Use bdist_wheel (wheel packages) instead.
Builds a `Windows Installer`_ (.msi) binary package. Builds a `Windows Installer`_ (.msi) binary package.
.. _Windows Installer: https://msdn.microsoft.com/en-us/library/cc185688(VS.85).aspx .. _Windows Installer: https://msdn.microsoft.com/en-us/library/cc185688(VS.85).aspx

View file

@ -149,6 +149,9 @@ generated by each, are:
.. note:: .. note::
bdist_wininst is deprecated since Python 3.8. bdist_wininst is deprecated since Python 3.8.
.. note::
bdist_msi is deprecated since Python 3.9.
The following sections give details on the individual :command:`bdist_\*` The following sections give details on the individual :command:`bdist_\*`
commands. commands.
@ -304,6 +307,9 @@ Creating Windows Installers
.. warning:: .. warning::
bdist_wininst is deprecated since Python 3.8. bdist_wininst is deprecated since Python 3.8.
.. warning::
bdist_msi is deprecated since Python 3.9.
Executable installers are the natural format for binary distributions on Executable installers are the natural format for binary distributions on
Windows. They display a nice graphical user interface, display some information Windows. They display a nice graphical user interface, display some information
about the module distribution to be installed taken from the metadata in the about the module distribution to be installed taken from the metadata in the
@ -468,3 +474,6 @@ installed for all users) and 'force' (meaning always prompt for elevation).
.. note:: .. note::
bdist_wininst is deprecated since Python 3.8. bdist_wininst is deprecated since Python 3.8.
.. note::
bdist_msi is deprecated since Python 3.9.

View file

@ -398,6 +398,10 @@ Build and C API Changes
Deprecated Deprecated
========== ==========
* The distutils ``bdist_msi`` command is now deprecated, use
``bdist_wheel`` (wheel packages) instead.
(Contributed by Hugo van Kemenade in :issue:`39586`.)
* Currently :func:`math.factorial` accepts :class:`float` instances with * Currently :func:`math.factorial` accepts :class:`float` instances with
non-negative integer values (like ``5.0``). It raises a :exc:`ValueError` non-negative integer values (like ``5.0``). It raises a :exc:`ValueError`
for non-integral and negative floats. It is now deprecated. In future for non-integral and negative floats. It is now deprecated. In future

View file

@ -6,7 +6,9 @@
Implements the bdist_msi command. Implements the bdist_msi command.
""" """
import sys, os import os
import sys
import warnings
from distutils.core import Command from distutils.core import Command
from distutils.dir_util import remove_tree from distutils.dir_util import remove_tree
from distutils.sysconfig import get_python_version from distutils.sysconfig import get_python_version
@ -122,6 +124,12 @@ class bdist_msi(Command):
'3.5', '3.6', '3.7', '3.8', '3.9'] '3.5', '3.6', '3.7', '3.8', '3.9']
other_version = 'X' other_version = 'X'
def __init__(self, *args, **kw):
super().__init__(*args, **kw)
warnings.warn("bdist_msi command is deprecated since Python 3.9, "
"use bdist_wheel (wheel packages) instead",
DeprecationWarning, 2)
def initialize_options(self): def initialize_options(self):
self.bdist_dir = None self.bdist_dir = None
self.plat_name = None self.plat_name = None

View file

@ -1,7 +1,7 @@
"""Tests for distutils.command.bdist_msi.""" """Tests for distutils.command.bdist_msi."""
import sys import sys
import unittest import unittest
from test.support import run_unittest from test.support import run_unittest, check_warnings
from distutils.tests import support from distutils.tests import support
@ -14,7 +14,8 @@ class BDistMSITestCase(support.TempdirManager,
# minimal test XXX need more tests # minimal test XXX need more tests
from distutils.command.bdist_msi import bdist_msi from distutils.command.bdist_msi import bdist_msi
project_dir, dist = self.create_dist() project_dir, dist = self.create_dist()
cmd = bdist_msi(dist) with check_warnings(("", DeprecationWarning)):
cmd = bdist_msi(dist)
cmd.ensure_finalized() cmd.ensure_finalized()

View file

@ -843,6 +843,7 @@ Dmitry Kazakov
Brian Kearns Brian Kearns
Sebastien Keim Sebastien Keim
Ryan Kelly Ryan Kelly
Hugo van Kemenade
Dan Kenigsberg Dan Kenigsberg
Randall Kern Randall Kern
Robert Kern Robert Kern

View file

@ -0,0 +1,2 @@
The distutils ``bdist_msi`` command is deprecated in Python 3.9, use
``bdist_wheel`` (wheel packages) instead.