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
diff --git a/Lib/distutils/__init__.py b/Lib/distutils/__init__.py
index 8eef902..fdad6f6 100644
--- a/Lib/distutils/__init__.py
+++ b/Lib/distutils/__init__.py
@@ -13,7 +13,8 @@
__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)
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index 4b002ec..2ce5c5b 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -9,6 +9,7 @@
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 @@ def byte_compile (py_files,
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,
diff --git a/Lib/test/test_distutils.py b/Lib/test/test_distutils.py
index a37f117..de94da5 100644
--- a/Lib/test/test_distutils.py
+++ b/Lib/test/test_distutils.py
@@ -5,14 +5,20 @@
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(*_):