Update to match semantics of new imaplib2
The biggest change here is that imapobj.untagged_responses is no longer a dictionary, but a list. To access it, I use the semi-private _get_untagged_response method. * offlineimap/folder/IMAP.py (IMAPFolder.quickchanged, IMAPFolder.cachemessagelist): imaplib2 now explicitly removes its EXISTS response on select(), so instead we use the return values from select() to get the number of messages. * offlineimap/imapserver.py (UsefulIMAPMixIn.select): imaplib2 now stores untagged_responses for different mailboxes, which confuses us because it seems like our mailboxes are "still" in read-only mode when we just re-opened them. Additionally, we have to return the value from imaplib2's select() so that the above thing works. * offlineimap/imapserver.py (UsefulIMAPMixIn._mesg): imaplib2 now calls _mesg with the name of a thread, so we display this information in debug output. This requires a corresponding change to imaplibutil.new_mesg. * offlineimap/imaplibutil.py: We override IMAP4_SSL.open, whose default arguments have changed, so update the default arguments. We also subclass imaplib.IMAP4 in a few different places, which now relies on having a read_fd file descriptor to poll on. Signed-off-by: Ethan Glasser-Camp <ethan@betacantrips.com> Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:

committed by
Nicolas Sebrecht

parent
f9413226b8
commit
1bf4bee5e6
@@ -48,6 +48,8 @@ class UsefulIMAPMixIn:
|
||||
and self.is_readonly == readonly:
|
||||
# No change; return.
|
||||
return
|
||||
# Wipe out all old responses, to maintain semantics with old imaplib2
|
||||
del self.untagged_responses[:]
|
||||
result = self.__class__.__bases__[1].select(self, mailbox, readonly)
|
||||
if result[0] != 'OK':
|
||||
raise ValueError, "Error from select: %s" % str(result)
|
||||
@@ -55,9 +57,10 @@ class UsefulIMAPMixIn:
|
||||
self.selectedfolder = mailbox
|
||||
else:
|
||||
self.selectedfolder = None
|
||||
return result
|
||||
|
||||
def _mesg(self, s, secs=None):
|
||||
imaplibutil.new_mesg(self, s, secs)
|
||||
def _mesg(self, s, tn=None, secs=None):
|
||||
imaplibutil.new_mesg(self, s, tn, secs)
|
||||
|
||||
class UsefulIMAP4(UsefulIMAPMixIn, imaplibutil.WrappedIMAP4):
|
||||
# This is a hack around Darwin's implementation of realloc() (which
|
||||
|
Reference in New Issue
Block a user