Kaydet (Commit) d8921379 authored tarafından Martin v. Löwis's avatar Martin v. Löwis

Patch #798297: Add IMAP THREAD command.

üst 49ee14da
......@@ -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
......
......@@ -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.
......
......@@ -137,6 +137,7 @@ John DeGood
Vincent Delft
Roger Dev
Toby Dickenson
Yves Dionne
Daniel Dittmar
Walter Drwald
Jaromir Dolecek
......
......@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment