bpo-41282: Fix distutils.utils.byte_compile() DeprecationWarning (GH-25406)

* byte_compile() of distutils.utils no longer logs a
  DeprecationWarning
* test_distutils no longer logs a DeprecationWarning
This commit is contained in:
Victor Stinner 2021-04-16 11:26:40 +02:00 committed by GitHub
parent a6a5c91b1e
commit 69ca32e0d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 7 deletions

View File

@ -13,7 +13,8 @@ import warnings
__version__ = sys.version[:sys.version.index(' ')]
warnings.warn("The distutils package is deprecated and slated for "
"removal in Python 3.12. Use setuptools or check "
"PEP 632 for potential alternatives",
_DEPRECATION_MESSAGE = ("The distutils package is deprecated and slated for "
"removal in Python 3.12. Use setuptools or check "
"PEP 632 for potential alternatives")
warnings.warn(_DEPRECATION_MESSAGE,
DeprecationWarning, 2)

View File

@ -9,6 +9,7 @@ import re
import importlib.util
import string
import sys
import distutils
from distutils.errors import DistutilsPlatformError
from distutils.dep_util import newer
from distutils.spawn import spawn
@ -419,8 +420,10 @@ byte_compile(files, optimize=%r, force=%r,
direct=1)
""" % (optimize, force, prefix, base_dir, verbose))
msg = distutils._DEPRECATION_MESSAGE
cmd = [sys.executable]
cmd.extend(subprocess._optim_args_from_interpreter_flags())
cmd.append(f'-Wignore:{msg}:DeprecationWarning')
cmd.append(script_name)
spawn(cmd, dry_run=dry_run)
execute(os.remove, (script_name,), "removing %s" % script_name,

View File

@ -5,14 +5,20 @@ the test_suite() function there returns a test suite that's ready to
be run.
"""
import distutils.tests
import test.support
import warnings
from test import support
from test.support import warnings_helper
with warnings_helper.check_warnings(
("The distutils package is deprecated", DeprecationWarning)):
import distutils.tests
def test_main():
# used by regrtest
test.support.run_unittest(distutils.tests.test_suite())
test.support.reap_children()
support.run_unittest(distutils.tests.test_suite())
support.reap_children()
def load_tests(*_):