[PATCH 02/13] Re: Import newest version of imaplib2
glasse at cs.rpi.edu
Mon Feb 7 18:23:52 GMT 2011
On 02/06/2011 03:38 PM, Nicolas Sebrecht wrote:
> On Sun, Feb 06, 2011 at 11:58:56AM -0500, Ethan Glasser-Camp wrote:
>> This change does not do anything yet with imaplib2, merely makes it
>> available for future commits.
>> This file is identical to the one at
>> http://sydney.edu.au/engineering/it/~piers/python/imaplib2 .
> The http://sydney.edu.au/engineering/it/~piers/python/ page states it's
> a modified version from the standard distribution. It would be nice to
> explain what was changed and why we want this one.
Are you looking for this information in an email, in a commit message,
in comments, or what?
imaplib2, written by the same guy who wrote imaplib, is very different
from imaplib itself. Calling it a modified version from the standard
distribution is misleading. It's more like a complete rewrite. As such,
it's not really possible to summarize what was changed.
The largest thing is that imaplib2 is "threaded". Instead of doing
blocking writes/reads on the socket during/after every command, imaplib2
forks off threads to read and write to the socket based on input and
output buffers. This opens the door to asynchronous commands (every
command is potentially asynchronous, according to the docs), and in
particular IDLE, which is by definition an asynchronous command.
The author writes: "imaplib2 can be substituted for imaplib in existing
clients with no changes in the code", but that's pretty misleading. It
might be true for certain simple users of imaplib, but for us it's
completely false. Among other things, how untagged responses are stored
in-memory is different -- instead of a hash table, it's a list. I'm
guessing this is to preserve order of responses.
I think there are other miscellaneous improvements, like I think
imaplib2 is IPv6 safe out-of-the-box, but I haven't conducted an
extremely thorough examination of the differences :)
More information about the OfflineIMAP-project