Add DeprecationWarning to configparser's LegacyInterpolation #90765
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
assignee = None closed_at = <Date 2022-04-05.22:08:56.439> created_at = <Date 2022-02-02.07:01:09.212> labels = ['library', '3.11'] title = "Add DeprecationWarning to configparser's LegacyInterpolation" updated_at = <Date 2022-04-05.22:08:56.438> user = 'https://github.com/hugovk'
activity = <Date 2022-04-05.22:08:56.438> actor = 'vstinner' assignee = 'none' closed = True closed_date = <Date 2022-04-05.22:08:56.439> closer = 'vstinner' components = ['Library (Lib)'] creation = <Date 2022-02-02.07:01:09.212> creator = 'hugovk' dependencies =  files =  hgrepos =  issue_num = 46607 keywords = ['patch'] message_count = 5.0 messages = ['412339', '412347', '412391', '416785', '416822'] nosy_count = 4.0 nosy_names = ['gregory.p.smith', 'vstinner', 'lukasz.langa', 'hugovk'] pr_nums = ['30927'] priority = 'normal' resolution = 'fixed' stage = 'resolved' status = 'closed' superseder = None type = None url = 'https://bugs.python.org/issue46607' versions = ['Python 3.11']
The text was updated successfully, but these errors were encountered:
The LegacyInterpolation class of configparser has been deprecated in docs since 3.2, but without raising a DeprecationWarning.
The 3.2 HISTORY file says:
Searching the top 5,000 PyPI sdists, there's very little (if any "real") use of LegacyInterpolation. Details: https://bugs.python.org/issue45173#msg409685
Other configparser deprecations were added in 3.2, but with DeprecationWarnings.
Let's add a DeprecationWarning for a couple of releases before removal.
Oh, LegacyInterpolation is not documented at:
Its deprecation was never documented anywhere in Doc/.
Well, to respect the PEP-387, the class should emit a DeprecationWarning and its depreaction must be documented in What's New in Python 3.11.
It renamed BrokenInterpolation to LegacyInterpolation:
-class BrokenInterpolation(Interpolation): - """Deprecated interpolation as implemented in the classic ConfigParser. +class LegacyInterpolation(Interpolation): + """Deprecated interpolation used in old versions of ConfigParser.
It would be nice to have Łukasz's opinion on deprecating LegacyInterpolation.
The configparser.RawConfigParser has an "interpolation" parameter and configparser.RawConfigParser._DEFAULT_INTERPOLATION is an instance of configparser.Interpolation:
# Interpolation algorithm to be used if the user does not specify another _DEFAULT_INTERPOLATION = Interpolation()
If the BrokenInterpolation is removed in Python 3.13 and a project is affected by the removal, can it simply copy/paste the Python 3.12 copy in its project and continue using the class? configparser.Interpolation seems to be a clean ABC class, so it seems safe to copy/paste the code. It doesn't seem to depend on anything but configparser.Interpolation which is public (even if it's not documented).
I understand that *in practice*, removing the class would impact no project of the top 5000 PyPI projects. Thanks for checking!
Correct, only in the docstring:
I've updated #75110 to say "deprecated in the docstring" instead of "deprecated in docs".
Thanks Hugo for the your contribution. I close the issue.
You can offer them a PR to avoid the deprecated API, or at least notify them by creating an issue that this API is deprecated in Python 3.11.