[PATCH] Sort message UID list
Dave Abrahams
dave at boostpro.com
Sun Jul 8 22:12:17 BST 2012
on Sat Jul 07 2012, corvus-AT-gnu.org (James E. Blair) wrote:
> Return a sorted list of UIDs in getmessageuidlist.
>
> Some MUAs (and their users) like to display messages in UID order
> (or "order received"). If offlineimap is used in IMAP<->IMAP mode,
> then the order messages are received by the second IMAP server will
> be different because offlineimap iterates over a UID list produced
> from the keys of a dictionary, which is unsorted.
>
> This change sorts that list of UIDs so that both IMAP servers will
> have their messages in the same order (except those times where
> messages are appended to folders on both repositories between
> syncs).
>
> Signed-off-by: James E. Blair <corvus at gnu.org>
> ---
> offlineimap/folder/Base.py | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/offlineimap/folder/Base.py b/offlineimap/folder/Base.py
> index 6f6f364..1052552 100644
> --- a/offlineimap/folder/Base.py
> +++ b/offlineimap/folder/Base.py
> @@ -181,7 +181,7 @@ class BaseFolder(object):
> def getmessageuidlist(self):
> """Gets a list of UIDs.
> You may have to call cachemessagelist() before calling this function!"""
> - return self.getmessagelist().keys()
> + return sorted(self.getmessagelist().keys())
>
> def getmessagecount(self):
> """Gets the number of messages."""
Just a couple of remarks:
a. when the list is very long, you could save a lot of CPU/memory by
sorting in place:
uids = self.getmessagelist().keys()
uids.sort()
return uids
b. on the other hand, this might turn out to be even better:
return sorted(self.getmessagelist())
it's certainly terser.
--
Dave Abrahams
BoostPro Computing
http://www.boostpro.com
More information about the OfflineIMAP-project
mailing list