summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/whatsnew/3.11.rst6
-rw-r--r--Lib/configparser.py9
-rw-r--r--Lib/test/test_configparser.py8
-rw-r--r--Misc/NEWS.d/next/Library/2022-01-26-18-30-34.bpo-46607.xnhT4a.rst3
4 files changed, 26 insertions, 0 deletions
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index c312645..537fa49 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -590,6 +590,12 @@ Deprecated
(Contributed by Hugo van Kemenade in :issue:`45173`.)
+* :class:`configparser.LegacyInterpolation` has been deprecated in the docstring
+ since Python 3.2. It now emits a :exc:`DeprecationWarning` and will be removed
+ in Python 3.13. Use :class:`configparser.BasicInterpolation` or
+ :class:`configparser.ExtendedInterpolation instead.
+ (Contributed by Hugo van Kemenade in :issue:`46607`.)
+
* The :func:`locale.getdefaultlocale` function is deprecated and will be
removed in Python 3.13. Use :func:`locale.setlocale`,
:func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>` and
diff --git a/Lib/configparser.py b/Lib/configparser.py
index f5666f5..de9ee53 100644
--- a/Lib/configparser.py
+++ b/Lib/configparser.py
@@ -525,6 +525,15 @@ class LegacyInterpolation(Interpolation):
_KEYCRE = re.compile(r"%\(([^)]*)\)s|.")
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ warnings.warn(
+ "LegacyInterpolation has been deprecated since Python 3.2 "
+ "and will be removed from the configparser module in Python 3.13. "
+ "Use BasicInterpolation or ExtendedInterpolation instead.",
+ DeprecationWarning, stacklevel=2
+ )
+
def before_get(self, parser, section, option, value, vars):
rawval = value
depth = MAX_INTERPOLATION_DEPTH
diff --git a/Lib/test/test_configparser.py b/Lib/test/test_configparser.py
index 569959c..efd98ff 100644
--- a/Lib/test/test_configparser.py
+++ b/Lib/test/test_configparser.py
@@ -1666,6 +1666,14 @@ class CoverageOneHundredTestCase(unittest.TestCase):
for warning in w:
self.assertTrue(warning.category is DeprecationWarning)
+ def test_legacyinterpolation_deprecation(self):
+ with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter("always", DeprecationWarning)
+ configparser.LegacyInterpolation()
+ self.assertGreaterEqual(len(w), 1)
+ for warning in w:
+ self.assertIs(warning.category, DeprecationWarning)
+
def test_sectionproxy_repr(self):
parser = configparser.ConfigParser()
parser.read_string("""
diff --git a/Misc/NEWS.d/next/Library/2022-01-26-18-30-34.bpo-46607.xnhT4a.rst b/Misc/NEWS.d/next/Library/2022-01-26-18-30-34.bpo-46607.xnhT4a.rst
new file mode 100644
index 0000000..e0c7ed0
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-01-26-18-30-34.bpo-46607.xnhT4a.rst
@@ -0,0 +1,3 @@
+Add :exc:`DeprecationWarning` to :class:`LegacyInterpolation`, deprecated in
+the docstring since Python 3.2. Will be removed in Python 3.13. Use
+:class:`BasicInterpolation` or :class:`ExtendedInterpolation` instead.