mirror of https://github.com/python/cpython
Patch #798297: Add IMAP THREAD command.
This commit is contained in:
parent
49ee14dac5
commit
d8921379e9
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue