Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Postpone configparser deprecations until 3.12 #89336

Closed
hugovk opened this issue Sep 11, 2021 · 11 comments
Closed

Postpone configparser deprecations until 3.12 #89336

hugovk opened this issue Sep 11, 2021 · 11 comments
Labels
3.11 deferred-blocker stdlib

Comments

@hugovk
Copy link
Member

@hugovk hugovk commented Sep 11, 2021

BPO 45173
Nosy @gpshead, @vstinner, @ambv, @hugovk, @miss-islington
PRs
  • #28292
  • #30952
  • #31084
  • 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:

    assignee = None
    closed_at = None
    created_at = <Date 2021-09-11.18:10:39.768>
    labels = ['deferred-blocker', 'library', '3.11']
    title = 'Remove configparser deprecations'
    updated_at = <Date 2022-02-02.18:41:39.221>
    user = 'https://github.com/hugovk'

    bugs.python.org fields:

    activity = <Date 2022-02-02.18:41:39.221>
    actor = 'miss-islington'
    assignee = 'none'
    closed = False
    closed_date = None
    closer = None
    components = ['Library (Lib)']
    creation = <Date 2021-09-11.18:10:39.768>
    creator = 'hugovk'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 45173
    keywords = ['patch']
    message_count = 10.0
    messages = ['401644', '401645', '401715', '409685', '411810', '412327', '412328', '412340', '412379', '412390']
    nosy_count = 5.0
    nosy_names = ['gregory.p.smith', 'vstinner', 'lukasz.langa', 'hugovk', 'miss-islington']
    pr_nums = ['28292', '30952', '31084']
    priority = 'deferred blocker'
    resolution = None
    stage = 'patch review'
    status = 'open'
    superseder = None
    type = None
    url = 'https://bugs.python.org/issue45173'
    versions = ['Python 3.11']

    @hugovk
    Copy link
    Member Author

    @hugovk hugovk commented Sep 11, 2021

    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.

    @hugovk hugovk added 3.11 stdlib labels Sep 11, 2021
    @hugovk
    Copy link
    Member Author

    @hugovk hugovk commented 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

    https://github.com/search?l=Python&p=1&q=LegacyInterpolation+extension%3Apy+language%3APython+language%3APython&ref=advsearch&type=Code

    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?

    @ambv
    Copy link
    Contributor

    @ambv ambv commented Sep 13, 2021

    New changeset 1fc41ae by Hugo van Kemenade in branch 'main':
    bpo-45173 Remove configparser deprecations (GH-28292)
    1fc41ae

    @hugovk
    Copy link
    Member Author

    @hugovk hugovk commented Jan 4, 2022

    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.gz
    

    The 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):
    

    @gpshead
    Copy link
    Member

    @gpshead gpshead commented Jan 26, 2022

    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.

    @vstinner
    Copy link
    Member

    @vstinner vstinner commented Feb 2, 2022

    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".

    @vstinner
    Copy link
    Member

    @vstinner vstinner commented Feb 2, 2022

    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.

    @hugovk
    Copy link
    Member Author

    @hugovk hugovk commented Feb 2, 2022

    Sure, please see https://bugs.python.org/issue46607.

    I've rebased #75110 to use the new issue number.

    @gpshead
    Copy link
    Member

    @gpshead gpshead commented Feb 2, 2022

    New changeset e8659b4 by Hugo van Kemenade in branch 'main':
    bpo-45173: Keep configparser deprecations until Python 3.12 (GH-30952)
    e8659b4

    @miss-islington
    Copy link
    Contributor

    @miss-islington miss-islington commented Feb 2, 2022

    New changeset ba4d79a by Hugo van Kemenade in branch '3.10':
    [3.10] bpo-45173: Note configparser deprecations will be removed in 3.12 (GH-31084)
    ba4d79a

    @ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
    @hugovk hugovk changed the title Remove configparser deprecations Postpone configparser deprecations until 3.12 Apr 10, 2022
    @hugovk
    Copy link
    Member Author

    @hugovk hugovk commented Apr 10, 2022

    This ended up being a postponement until 3.12.

    I've updated the title and let's close this issue and make a new removal issue for 3.12.

    @hugovk hugovk closed this Apr 10, 2022
    gpshead added a commit to gpshead/cpython that referenced this issue May 8, 2022
    hugovk added a commit to hugovk/cpython that referenced this issue May 10, 2022
    miss-islington pushed a commit to miss-islington/cpython that referenced this issue May 11, 2022
    …H-92636)
    
    (cherry picked from commit 75e4634)
    
    Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
    miss-islington added a commit that referenced this issue May 11, 2022
    …) (GH-92662)
    
    (cherry picked from commit 75e4634)
    
    
    Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
    
    Automerge-Triggered-By: GH:serhiy-storchaka
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    3.11 deferred-blocker stdlib
    Projects
    None yet
    Development

    No branches or pull requests

    5 participants