]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-92897: schedule the check_home deprecation to 3.15 (#129102)
authorFilipe Laíns 🇵🇸 <lains@riseup.net>
Mon, 20 Jan 2025 21:25:14 +0000 (21:25 +0000)
committerGitHub <noreply@github.com>
Mon, 20 Jan 2025 21:25:14 +0000 (21:25 +0000)
Doc/deprecations/pending-removal-in-3.15.rst
Lib/sysconfig/__init__.py
Lib/test/test_sysconfig.py
Misc/NEWS.d/next/Library/2025-01-20-20-59-26.gh-issue-92897.G0xH8o.rst [new file with mode: 0644]

index 3b03e1f49e6754a99ccf770a444c832510be6ba1..390bbff2835cf8227d618b1bf9e484f0653a629c 100644 (file)
@@ -51,6 +51,11 @@ Pending removal in Python 3.15
     This function is only useful for Jython support, has a confusing API,
     and is largely untested.
 
+* :mod:`sysconfig`:
+
+  * The ``check_home`` argument of :func:`sysconfig.is_python_build` has been
+    deprecated since Python 3.12.
+
 * :mod:`threading`:
 
   * :func:`~threading.RLock` will take no arguments in Python 3.15.
index 86dd391aa173b5ec3c3b1a829250ecdfbc3a586c..3c3c9796ec3307f691aa88d1dcdf3e0a1cbff5ad 100644 (file)
@@ -220,8 +220,15 @@ if "_PYTHON_PROJECT_BASE" in os.environ:
 def is_python_build(check_home=None):
     if check_home is not None:
         import warnings
-        warnings.warn("check_home argument is deprecated and ignored.",
-                      DeprecationWarning, stacklevel=2)
+        warnings.warn(
+            (
+                'The check_home argument of sysconfig.is_python_build is '
+                'deprecated and its value is ignored. '
+                'It will be removed in Python 3.15.'
+            ),
+            DeprecationWarning,
+            stacklevel=2,
+        )
     for fn in ("Setup", "Setup.local"):
         if os.path.isfile(os.path.join(_PROJECT_BASE, "Modules", fn)):
             return True
index a5676027eb7438ced53afe1274bed7db302fd422..1002d90074599a25fbb1f4bf8f722f304ecbb9a3 100644 (file)
@@ -712,9 +712,9 @@ class MakefileTests(unittest.TestCase):
 
 
 class DeprecationTests(unittest.TestCase):
-    def deprecated(self, removal_version, deprecation_msg=None, attribute_msg=None):
+    def deprecated(self, removal_version, deprecation_msg=None, error=Exception, error_msg=None):
         if sys.version_info >= removal_version:
-            return self.assertRaises(AttributeError, msg=attribute_msg)
+            return self.assertRaises(error, msg=error_msg)
         else:
             return self.assertWarns(DeprecationWarning, msg=deprecation_msg)
 
@@ -725,10 +725,24 @@ class DeprecationTests(unittest.TestCase):
                 'sysconfig.expand_makefile_vars is deprecated and will be removed in '
                 'Python 3.16. Use sysconfig.get_paths(vars=...) instead.',
             ),
-            attribute_msg="module 'sysconfig' has no attribute 'expand_makefile_vars'",
+            error=AttributeError,
+            error_msg="module 'sysconfig' has no attribute 'expand_makefile_vars'",
         ):
             sysconfig.expand_makefile_vars('', {})
 
+    def test_is_python_build_check_home(self):
+        with self.deprecated(
+            removal_version=(3, 15),
+            deprecation_msg=(
+                'The check_home argument of sysconfig.is_python_build is '
+                'deprecated and its value is ignored. '
+                'It will be removed in Python 3.15.'
+            ),
+            error=TypeError,
+            error_msg="is_python_build() takes 0 positional arguments but 1 were given",
+        ):
+            sysconfig.is_python_build('foo')
+
 
 if __name__ == "__main__":
     unittest.main()
diff --git a/Misc/NEWS.d/next/Library/2025-01-20-20-59-26.gh-issue-92897.G0xH8o.rst b/Misc/NEWS.d/next/Library/2025-01-20-20-59-26.gh-issue-92897.G0xH8o.rst
new file mode 100644 (file)
index 0000000..632ca03
--- /dev/null
@@ -0,0 +1,2 @@
+Scheduled the deprecation of the ``check_home`` argument of
+:func:`sysconfig.is_python_build` to Python 3.15.