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.
\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{, ...}}
Execute command args with messages identified by UID, rather than
message number. Returns response appropriate to command. At least

View File

@ -69,6 +69,7 @@ Commands = {
'STATUS': ('AUTH', 'SELECTED'),
'STORE': ('SELECTED',),
'SUBSCRIBE': ('AUTH', 'SELECTED'),
'THREAD': ('SELECTED',),
'UID': ('SELECTED',),
'UNSUBSCRIBE': ('AUTH', 'SELECTED'),
}
@ -679,6 +680,16 @@ class IMAP4:
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):
"""Execute "command arg ..." with messages identified by UID,
rather than message number.

View File

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

View File

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