(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
_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
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("""
--- /dev/null
+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.