https://github.com/python/cpython/commit/0a6412f9cc9e694e76299cfbd73ec969b7d47af6
commit: 0a6412f9cc9e694e76299cfbd73ec969b7d47af6
branch: main
author: Filipe Laíns 🇵🇸 <[email protected]>
committer: FFY00 <[email protected]>
date: 2025-01-20T17:03:44Z
summary:
GH-129064: deprecate sysconfig.expand_makefile_vars (#129082)
files:
A Misc/NEWS.d/next/Library/2025-01-20-16-02-38.gh-issue-129064.JXasgJ.rst
M Doc/deprecations/pending-removal-in-3.16.rst
M Lib/sysconfig/__init__.py
M Lib/test/test_sysconfig.py
diff --git a/Doc/deprecations/pending-removal-in-3.16.rst
b/Doc/deprecations/pending-removal-in-3.16.rst
index 41b30defdba0bc..58f7c01bf39469 100644
--- a/Doc/deprecations/pending-removal-in-3.16.rst
+++ b/Doc/deprecations/pending-removal-in-3.16.rst
@@ -80,6 +80,12 @@ Pending removal in Python 3.16
has been deprecated since Python 3.13.
Use the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment variable
instead.
+* :mod:`sysconfig`:
+
+ * The ``~sysconfig.expand_makefile_vars`` function
+ has been deprecated since Python 3.14.
+ Use the ``vars`` argument of :func:`sysconfig.get_paths` instead.
+
* :mod:`tarfile`:
* The undocumented and unused :attr:`!TarFile.tarfile` attribute
diff --git a/Lib/sysconfig/__init__.py b/Lib/sysconfig/__init__.py
index ec9bb705925cdb..86dd391aa173b5 100644
--- a/Lib/sysconfig/__init__.py
+++ b/Lib/sysconfig/__init__.py
@@ -716,6 +716,15 @@ def expand_makefile_vars(s, vars):
variable expansions; if 'vars' is the output of 'parse_makefile()',
you're fine. Returns a variable-expanded version of 's'.
"""
+
+ import warnings
+ warnings.warn(
+ 'sysconfig.expand_makefile_vars is deprecated and will be removed in '
+ 'Python 3.16. Use sysconfig.get_paths(vars=...) instead.',
+ DeprecationWarning,
+ stacklevel=2,
+ )
+
import re
_findvar1_rx = r"\$\(([A-Za-z][A-Za-z0-9_]*)\)"
diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py
index ce504dc21af85f..a5676027eb7438 100644
--- a/Lib/test/test_sysconfig.py
+++ b/Lib/test/test_sysconfig.py
@@ -711,5 +711,24 @@ def test_parse_makefile(self):
})
+class DeprecationTests(unittest.TestCase):
+ def deprecated(self, removal_version, deprecation_msg=None,
attribute_msg=None):
+ if sys.version_info >= removal_version:
+ return self.assertRaises(AttributeError, msg=attribute_msg)
+ else:
+ return self.assertWarns(DeprecationWarning, msg=deprecation_msg)
+
+ def test_expand_makefile_vars(self):
+ with self.deprecated(
+ removal_version=(3, 16),
+ deprecation_msg=(
+ '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'",
+ ):
+ sysconfig.expand_makefile_vars('', {})
+
+
if __name__ == "__main__":
unittest.main()
diff --git
a/Misc/NEWS.d/next/Library/2025-01-20-16-02-38.gh-issue-129064.JXasgJ.rst
b/Misc/NEWS.d/next/Library/2025-01-20-16-02-38.gh-issue-129064.JXasgJ.rst
new file mode 100644
index 00000000000000..5939fdc8ef3469
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-01-20-16-02-38.gh-issue-129064.JXasgJ.rst
@@ -0,0 +1,2 @@
+Deprecate ``sysconfig.expand_makefile_vars``, in favor of using
+:func:`sysconfig.get_paths` with the ``vars`` argument.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]