gh-40038: Quote imaplib command arguments when necessary#152703
Open
serhiy-storchaka wants to merge 1 commit into
Open
gh-40038: Quote imaplib command arguments when necessary#152703serhiy-storchaka wants to merge 1 commit into
serhiy-storchaka wants to merge 1 commit into
Conversation
Argument quoting was inadvertently disabled when imaplib was ported to Python 3 (bpo-1210 commented out the ``_checkquote()`` call, bpo-9638 then removed it), so since Python 3.0 commands failed for arguments containing protocol-sensitive characters, such as a space in a mailbox name. Quoting is restored and reimplemented per the RFC 3501 grammar, so that arguments that need quoting are escaped and quoted, while flags, sequence sets and list wildcards are left intact. For backward compatibility, an argument already enclosed in double quotes is left unchanged, so code that quotes arguments itself keeps working. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Documentation build overview
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Argument quoting in
imaplibwas inadvertently disabled when the modulewas ported to Python 3 (bpo-1210, bpo-9638), so since Python 3.0 commands
silently fail for arguments containing protocol-sensitive characters,
such as a mailbox name with a space.
Quoting is restored and reimplemented per the :rfc:
3501grammar:arguments that need quoting are escaped and quoted, while flags, sequence
sets and list wildcards are left intact. For backward compatibility, an
argument already enclosed in double quotes is left unchanged, so code that
quotes arguments itself keeps working.
This supersedes #6395 and also resolves #92835, #58148, #90378 and
#148770.
I had almost finished this work about 1.5 years ago, but stopped,
exhausted, after writing roughly 30% of the tests — there are a lot of
them, they are wordy, and they require strict focus. I was finally able
to complete them now with the help of AI.