This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vstinner
Recipients hugovk, lukasz.langa, vstinner
Date 2022-02-02.10:02:46
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1643796167.3.0.718448057372.issue46607@roundup.psfhosted.org>
In-reply-to
Content
Oh, LegacyInterpolation is not documented at:
https://docs.python.org/dev/library/configparser.html

> Other configparser deprecations were added in 3.2, but with DeprecationWarnings.

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.


> The LegacyInterpolation class of configparser has been deprecated in docs since 3.2, but without raising a DeprecationWarning.

I found the following change:
---
commit 7f64c8a5121576fd8f92010b7a936b89581c4051
Author: Łukasz Langa <lukasz@langa.pl>
Date:   Thu Dec 16 01:16:22 2010 +0000

    Broken ConfigParser removed, SafeConfigParser renamed to ConfigParser.
    Life is beatiful once again.
---

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.


The BrokenInterpolation class was added  by bpo-10499:
---
commit b6a6f5f886ed869612e16cd1e29a1190996dc78d
Author: Łukasz Langa <lukasz@langa.pl>
Date:   Fri Dec 3 16:28:00 2010 +0000

    Issue 10499: Modular interpolation in 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).


https://bugs.python.org/issue45173#msg409685:
> Searching 4,764 sdists from the top 5,000 PyPI packages, these 13 contain "LegacyInterpolation": (...)
> two are stdlib backports: (...)
> The others are all configparser.pyi typeshed stub files: (...)

I understand that *in practice*, removing the class would impact no project of the top 5000 PyPI projects. Thanks for checking!
History
Date User Action Args
2022-02-02 10:02:47vstinnersetrecipients: + vstinner, lukasz.langa, hugovk
2022-02-02 10:02:47vstinnersetmessageid: <1643796167.3.0.718448057372.issue46607@roundup.psfhosted.org>
2022-02-02 10:02:47vstinnerlinkissue46607 messages
2022-02-02 10:02:47vstinnercreate