Patch #798297: Add IMAP THREAD command.

This commit is contained in:
Martin v. Löwis 2003-11-10 06:44:44 +00:00
parent 49ee14dac5
commit d8921379e9
4 changed files with 38 additions and 0 deletions

View File

@ -355,6 +355,28 @@ msgnums = M.search(None, '(FROM "LDJ")')
Subscribe to new mailbox. Subscribe to new mailbox.
\end{methoddesc} \end{methoddesc}
\begin{methoddesc}{thread}{threading_algorithm, charset, search_criterion\optional{, ...}}
The \code{thread} command is a variant of \code{search} with threading semantics for
the results. Returned data contains a space
separated list of thread members.
Thread members consist of zero or more messages numbers, delimited by spaces,
indicating successive parent and child.
Thread has two arguments before the \var{search_criterion}
argument(s); a \var{threading_algorithm}, and the searching \var{charset}.
Note that unlike \code{search}, the searching \var{charset} argument is mandatory.
There is also a \code{uid thread} command which corresponds to \code{thread} the way
that \code{uid search} corresponds to \code{search}.
The \code{thread} command first searches the mailbox for messages that
match the given searching criteria using the charset argument for
the interpretation of strings in the searching criteria. It thren
returns the matching messages threaded according to the specified
threading algorithm.
This is an \samp{IMAP4rev1} extension command. \versionadded{2.4}
\end{methoddesc}
\begin{methoddesc}{uid}{command, arg\optional{, ...}} \begin{methoddesc}{uid}{command, arg\optional{, ...}}
Execute command args with messages identified by UID, rather than Execute command args with messages identified by UID, rather than
message number. Returns response appropriate to command. At least message number. Returns response appropriate to command. At least

View File

@ -69,6 +69,7 @@ Commands = {
'STATUS': ('AUTH', 'SELECTED'), 'STATUS': ('AUTH', 'SELECTED'),
'STORE': ('SELECTED',), 'STORE': ('SELECTED',),
'SUBSCRIBE': ('AUTH', 'SELECTED'), 'SUBSCRIBE': ('AUTH', 'SELECTED'),
'THREAD': ('SELECTED',),
'UID': ('SELECTED',), 'UID': ('SELECTED',),
'UNSUBSCRIBE': ('AUTH', 'SELECTED'), 'UNSUBSCRIBE': ('AUTH', 'SELECTED'),
} }
@ -679,6 +680,16 @@ class IMAP4:
return self._simple_command('SUBSCRIBE', mailbox) return self._simple_command('SUBSCRIBE', mailbox)
def thread(self, threading_algorithm, charset, *search_criteria):
"""IMAPrev1 extension THREAD command.
(type, [data]) = <instance>.thread(threading_alogrithm, charset, search_criteria, ...)
"""
name = 'THREAD'
typ, dat = self._simple_command(name, threading_algorithm, charset, *search_criteria)
return self._untagged_response(typ, dat, name)
def uid(self, command, *args): def uid(self, command, *args):
"""Execute "command arg ..." with messages identified by UID, """Execute "command arg ..." with messages identified by UID,
rather than message number. rather than message number.

View File

@ -137,6 +137,7 @@ John DeGood
Vincent Delft Vincent Delft
Roger Dev Roger Dev
Toby Dickenson Toby Dickenson
Yves Dionne
Daniel Dittmar Daniel Dittmar
Walter Dörwald Walter Dörwald
Jaromir Dolecek Jaromir Dolecek

View File

@ -57,6 +57,8 @@ Core and builtins
Extension modules Extension modules
----------------- -----------------
- os.getsid was added.
- The pwd module incorrectly advertised its struct type as - The pwd module incorrectly advertised its struct type as
struct_pwent; this has been renamed to struct_passwd. (The old name struct_pwent; this has been renamed to struct_passwd. (The old name
is still supported for backwards compatibility.) is still supported for backwards compatibility.)
@ -104,6 +106,8 @@ Extension modules
Library Library
------- -------
- imaplib.IMAP4.thread was added.
- Plugged a minor hole in tempfile.mktemp() due to the use of - Plugged a minor hole in tempfile.mktemp() due to the use of
os.path.exists(), switched to using os.lstat() directly if possible. os.path.exists(), switched to using os.lstat() directly if possible.