Repository navigation
Postpone configparser deprecations until 3.12 #89336
Description
Activity
In the configparser module, these have been deprecated since Python 3.2:
- the SafeConfigParser class,
- the filename property of the ParsingError class,
- the readfp method of the ConfigParser class,
They can be removed in Python 3.11.
- added3.11only security fixesonly security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directory
on Sep 11, 2021 Also, the LegacyInterpolation class is deprecated since Python 3.2 but with no DeprecationWarning.
A quick sampling of GitHub results shows only copies of CPython's configparser.py and test_configparser.py
No use found in the top 200 PyPI packages.
Is it safe to remove now, or should it raise DeprecationWarning for a couple of releases first?
Searching 4,764 sdists from the top 5,000 PyPI packages, these 13 contain "LegacyInterpolation":
configparser-5.1.0.tar.gz configparser2-4.0.0.tar.gz eth_abi-2.1.1.tar.gz eth-account-0.5.6.tar.gz eth-hash-0.3.2.tar.gz eth-utils-1.10.0.tar.gz hexbytes-0.2.2.tar.gz jedi-0.18.1.tar.gz magicinvoke-2.4.5.tar.gz mypy-0.910.tar.gz pytype-2021.11.12.tar.gz web.py-0.62.tar.gz webcolors-1.11.1.tar.gzThe first two are stdlib backports: configparser is active and configparser2 was last updated in 2015:
configparser-5.1.0/src/backports/configparser/__init__.py: "LegacyInterpolation", configparser-5.1.0/src/backports/configparser/__init__.py:class LegacyInterpolation(Interpolation): configparser-5.1.0/src/configparser.py: "LegacyInterpolation", configparser-5.1.0/src/configparser.py: LegacyInterpolation, configparser-5.1.0/src/test_configparser.py: elif isinstance(self.interpolation, configparser.LegacyInterpolation): configparser-5.1.0/src/test_configparser.py: elif isinstance(self.interpolation, configparser.LegacyInterpolation): configparser-5.1.0/src/test_configparser.py: elif isinstance(self.interpolation, configparser.LegacyInterpolation): configparser-5.1.0/src/test_configparser.py: interpolation = configparser.LegacyInterpolation() configparser-5.1.0/src/test_configparser.py:class ConfigParserTestCaseLegacyInterpolation(ConfigParserTestCase, unittest.TestCase): configparser2-4.0.0/src/backports/configparser2/__init__.py:class LegacyInterpolation(Interpolation): configparser2-4.0.0/src/configparser2.py: LegacyInterpolation,The others are all configparser.pyi typeshed stub files:
eth_abi-2.1.1/venv/lib/python3.6/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth_abi-2.1.1/venv/lib64/python3.6/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-account-0.5.6/venv-py3.8/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-account-0.5.6/venv-py3.8/lib/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-account-0.5.6/venv-py3.8/lib64/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-account-0.5.6/venv-py3.8/lib64/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-account-0.5.6/venv/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-account-0.5.6/venv/lib/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-account-0.5.6/venv/lib64/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-account-0.5.6/venv/lib64/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-hash-0.3.2/venv-py3.8/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-hash-0.3.2/venv-py3.8/lib/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-hash-0.3.2/venv-py3.8/lib64/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-hash-0.3.2/venv-py3.8/lib64/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-hash-0.3.2/venv/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-hash-0.3.2/venv/lib/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-hash-0.3.2/venv/lib64/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-hash-0.3.2/venv/lib64/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-utils-1.10.0/venv-py3.8/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-utils-1.10.0/venv-py3.8/lib/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-utils-1.10.0/venv-py3.8/lib64/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-utils-1.10.0/venv-py3.8/lib64/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-utils-1.10.0/venv/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-utils-1.10.0/venv/lib/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-utils-1.10.0/venv/lib64/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... eth-utils-1.10.0/venv/lib64/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... hexbytes-0.2.2/venv-py3.8/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... hexbytes-0.2.2/venv-py3.8/lib/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... hexbytes-0.2.2/venv-py3.8/lib64/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... hexbytes-0.2.2/venv-py3.8/lib64/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... hexbytes-0.2.2/venv/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... hexbytes-0.2.2/venv/lib/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... hexbytes-0.2.2/venv/lib64/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... hexbytes-0.2.2/venv/lib64/python3.8/site-packages/mypy/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... jedi-0.18.1/jedi/third_party/typeshed/stdlib/3/configparser.pyi:class LegacyInterpolation(Interpolation): ... mypy-0.910/mypy/typeshed/stdlib/configparser.pyi:class LegacyInterpolation(Interpolation): pytype-2021.11.12/pytype/typeshed/stdlib/configparser.pyi:class LegacyInterpolation(Interpolation):Per https://mail.python.org/archives/list/python-dev@python.org/thread/GJTREADEXYAETECE5JDTPYWK4WMTKYGR/ we want to revert 1fc41ae for 3.11 to avoid causing pain.
per that thread and https://discuss.python.org/t/experience-with-python-3-11-in-fedora/12911 it sounds like you may be on top of filing upstream issues/PRs to get OSS projects to stop using the deprecated APIs. great! that should help this stick in 3.12.
as the commit removed several things at once, I suggest a full rollback, and smaller PRs for individual things if your upstream python project testing reveals things that nobody appears to be depending on.
Searching 4,764 sdists from the top 5,000 PyPI packages, these 13 contain "LegacyInterpolation"
Other removed symbols are causing troubles, like SafeConfigParser.
Example of Fedora bz #2025600: mom fails to build with Python 3.11: AttributeError: module 'configparser' has no attribute 'SafeConfigParser'.
=> https://bugzilla.redhat.com/show_bug.cgi?id=2025600
Another example: python-iniparse fails to build with Python 3.11: AttributeError: 'RawConfigParser' object has no attribute 'readfp'
https://bugzilla.redhat.com/show_bug.cgi?id=2019017
You can try to unfold https://bugzilla.redhat.com/buglist.cgi?bug_id=2016048&bug_id_type=anddependson&format=tvp and search for "configparser".
Currently, the issue title is "Remove configparser deprecations".
#75110 doesn't remove deprecated functions, but adds new warnings. It's really confusing to make this change as part of this issue.
Can you please create a new issue for #75110 "bpo-45173: Add DeprecationWarning to LegacyInterpolation"? If it's removed, it's not going to be removed before Python 3.13, so it's not directly related to this issue. By the way, it would be nice explain the rationale for removing it.
Sure, please see https://bugs.python.org/issue46607.
I've rebased #75110 to use the new issue number.
75 remaining items
- added a commit that references this issue
on Jun 26, 2022 - added 2 commits that reference this issue
on Nov 18, 2022 - added a commit that references this issue
on Nov 18, 2022 - added 2 commits that reference this issue
on Oct 10, 2023 - added 2 commits that reference this issue
on Dec 7, 2023 - added a commit that references this issue
on Jul 15, 2024
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
GitHub fields:
bugs.python.org fields: