source: vendor/python/2.5/Doc/lib/libnntplib.tex

Last change on this file was 3225, checked in by bird, 18 years ago

Python 2.5

File size: 15.5 KB
Line 
1\section{\module{nntplib} ---
2 NNTP protocol client}
3
4\declaremodule{standard}{nntplib}
5\modulesynopsis{NNTP protocol client (requires sockets).}
6
7\indexii{NNTP}{protocol}
8\index{Network News Transfer Protocol}
9
10This module defines the class \class{NNTP} which implements the client
11side of the NNTP protocol. It can be used to implement a news reader
12or poster, or automated news processors. For more information on NNTP
13(Network News Transfer Protocol), see Internet \rfc{977}.
14
15Here are two small examples of how it can be used. To list some
16statistics about a newsgroup and print the subjects of the last 10
17articles:
18
19\begin{verbatim}
20>>> s = NNTP('news.cwi.nl')
21>>> resp, count, first, last, name = s.group('comp.lang.python')
22>>> print 'Group', name, 'has', count, 'articles, range', first, 'to', last
23Group comp.lang.python has 59 articles, range 3742 to 3803
24>>> resp, subs = s.xhdr('subject', first + '-' + last)
25>>> for id, sub in subs[-10:]: print id, sub
26...
273792 Re: Removing elements from a list while iterating...
283793 Re: Who likes Info files?
293794 Emacs and doc strings
303795 a few questions about the Mac implementation
313796 Re: executable python scripts
323797 Re: executable python scripts
333798 Re: a few questions about the Mac implementation
343799 Re: PROPOSAL: A Generic Python Object Interface for Python C Modules
353802 Re: executable python scripts
363803 Re: \POSIX{} wait and SIGCHLD
37>>> s.quit()
38'205 news.cwi.nl closing connection. Goodbye.'
39\end{verbatim}
40
41To post an article from a file (this assumes that the article has
42valid headers):
43
44\begin{verbatim}
45>>> s = NNTP('news.cwi.nl')
46>>> f = open('/tmp/article')
47>>> s.post(f)
48'240 Article posted successfully.'
49>>> s.quit()
50'205 news.cwi.nl closing connection. Goodbye.'
51\end{verbatim}
52
53The module itself defines the following items:
54
55\begin{classdesc}{NNTP}{host\optional{, port
56 \optional{, user\optional{, password
57 \optional{, readermode}
58 \optional{, usenetrc}}}}}
59Return a new instance of the \class{NNTP} class, representing a
60connection to the NNTP server running on host \var{host}, listening at
61port \var{port}. The default \var{port} is 119. If the optional
62\var{user} and \var{password} are provided,
63or if suitable credentials are present in \file{~/.netrc} and the
64optional flag \var{usenetrc} is true (the default),
65the \samp{AUTHINFO USER} and \samp{AUTHINFO PASS} commands are used to
66identify and authenticate the user to the server. If the optional
67flag \var{readermode} is true, then a \samp{mode reader} command is
68sent before authentication is performed. Reader mode is sometimes
69necessary if you are connecting to an NNTP server on the local machine
70and intend to call reader-specific commands, such as \samp{group}. If
71you get unexpected \exception{NNTPPermanentError}s, you might need to set
72\var{readermode}. \var{readermode} defaults to \code{None}.
73\var{usenetrc} defaults to \code{True}.
74
75\versionchanged[\var{usenetrc} argument added]{2.4}
76\end{classdesc}
77
78\begin{excdesc}{NNTPError}
79Derived from the standard exception \exception{Exception}, this is the
80base class for all exceptions raised by the \module{nntplib} module.
81\end{excdesc}
82
83\begin{excdesc}{NNTPReplyError}
84Exception raised when an unexpected reply is received from the
85server. For backwards compatibility, the exception \code{error_reply}
86is equivalent to this class.
87\end{excdesc}
88
89\begin{excdesc}{NNTPTemporaryError}
90Exception raised when an error code in the range 400--499 is
91received. For backwards compatibility, the exception
92\code{error_temp} is equivalent to this class.
93\end{excdesc}
94
95\begin{excdesc}{NNTPPermanentError}
96Exception raised when an error code in the range 500--599 is
97received. For backwards compatibility, the exception
98\code{error_perm} is equivalent to this class.
99\end{excdesc}
100
101\begin{excdesc}{NNTPProtocolError}
102Exception raised when a reply is received from the server that does
103not begin with a digit in the range 1--5. For backwards
104compatibility, the exception \code{error_proto} is equivalent to this
105class.
106\end{excdesc}
107
108\begin{excdesc}{NNTPDataError}
109Exception raised when there is some error in the response data. For
110backwards compatibility, the exception \code{error_data} is
111equivalent to this class.
112\end{excdesc}
113
114
115\subsection{NNTP Objects \label{nntp-objects}}
116
117NNTP instances have the following methods. The \var{response} that is
118returned as the first item in the return tuple of almost all methods
119is the server's response: a string beginning with a three-digit code.
120If the server's response indicates an error, the method raises one of
121the above exceptions.
122
123
124\begin{methoddesc}{getwelcome}{}
125Return the welcome message sent by the server in reply to the initial
126connection. (This message sometimes contains disclaimers or help
127information that may be relevant to the user.)
128\end{methoddesc}
129
130\begin{methoddesc}{set_debuglevel}{level}
131Set the instance's debugging level. This controls the amount of
132debugging output printed. The default, \code{0}, produces no debugging
133output. A value of \code{1} produces a moderate amount of debugging
134output, generally a single line per request or response. A value of
135\code{2} or higher produces the maximum amount of debugging output,
136logging each line sent and received on the connection (including
137message text).
138\end{methoddesc}
139
140\begin{methoddesc}{newgroups}{date, time, \optional{file}}
141Send a \samp{NEWGROUPS} command. The \var{date} argument should be a
142string of the form \code{'\var{yy}\var{mm}\var{dd}'} indicating the
143date, and \var{time} should be a string of the form
144\code{'\var{hh}\var{mm}\var{ss}'} indicating the time. Return a pair
145\code{(\var{response}, \var{groups})} where \var{groups} is a list of
146group names that are new since the given date and time.
147If the \var{file} parameter is supplied, then the output of the
148\samp{NEWGROUPS} command is stored in a file. If \var{file} is a string,
149then the method will open a file object with that name, write to it
150then close it. If \var{file} is a file object, then it will start
151calling \method{write()} on it to store the lines of the command output.
152If \var{file} is supplied, then the returned \var{list} is an empty list.
153\end{methoddesc}
154
155\begin{methoddesc}{newnews}{group, date, time, \optional{file}}
156Send a \samp{NEWNEWS} command. Here, \var{group} is a group name or
157\code{'*'}, and \var{date} and \var{time} have the same meaning as for
158\method{newgroups()}. Return a pair \code{(\var{response},
159\var{articles})} where \var{articles} is a list of message ids.
160If the \var{file} parameter is supplied, then the output of the
161\samp{NEWNEWS} command is stored in a file. If \var{file} is a string,
162then the method will open a file object with that name, write to it
163then close it. If \var{file} is a file object, then it will start
164calling \method{write()} on it to store the lines of the command output.
165If \var{file} is supplied, then the returned \var{list} is an empty list.
166\end{methoddesc}
167
168\begin{methoddesc}{list}{\optional{file}}
169Send a \samp{LIST} command. Return a pair \code{(\var{response},
170\var{list})} where \var{list} is a list of tuples. Each tuple has the
171form \code{(\var{group}, \var{last}, \var{first}, \var{flag})}, where
172\var{group} is a group name, \var{last} and \var{first} are the last
173and first article numbers (as strings), and \var{flag} is
174\code{'y'} if posting is allowed, \code{'n'} if not, and \code{'m'} if
175the newsgroup is moderated. (Note the ordering: \var{last},
176\var{first}.)
177If the \var{file} parameter is supplied, then the output of the
178\samp{LIST} command is stored in a file. If \var{file} is a string,
179then the method will open a file object with that name, write to it
180then close it. If \var{file} is a file object, then it will start
181calling \method{write()} on it to store the lines of the command output.
182If \var{file} is supplied, then the returned \var{list} is an empty list.
183\end{methoddesc}
184
185\begin{methoddesc}{descriptions}{grouppattern}
186Send a \samp{LIST NEWSGROUPS} command, where \var{grouppattern} is a wildmat
187string as specified in RFC2980 (it's essentially the same as DOS or UNIX
188shell wildcard strings). Return a pair \code{(\var{response},
189\var{list})}, where \var{list} is a list of tuples containing
190\code{(\var{name}, \var{title})}.
191
192\versionadded{2.4}
193\end{methoddesc}
194
195\begin{methoddesc}{description}{group}
196Get a description for a single group \var{group}. If more than one group
197matches (if 'group' is a real wildmat string), return the first match.
198If no group matches, return an empty string.
199
200This elides the response code from the server. If the response code is
201needed, use \method{descriptions()}.
202
203\versionadded{2.4}
204\end{methoddesc}
205
206\begin{methoddesc}{group}{name}
207Send a \samp{GROUP} command, where \var{name} is the group name.
208Return a tuple \code{(\var{response}, \var{count}, \var{first},
209\var{last}, \var{name})} where \var{count} is the (estimated) number
210of articles in the group, \var{first} is the first article number in
211the group, \var{last} is the last article number in the group, and
212\var{name} is the group name. The numbers are returned as strings.
213\end{methoddesc}
214
215\begin{methoddesc}{help}{\optional{file}}
216Send a \samp{HELP} command. Return a pair \code{(\var{response},
217\var{list})} where \var{list} is a list of help strings.
218If the \var{file} parameter is supplied, then the output of the
219\samp{HELP} command is stored in a file. If \var{file} is a string,
220then the method will open a file object with that name, write to it
221then close it. If \var{file} is a file object, then it will start
222calling \method{write()} on it to store the lines of the command output.
223If \var{file} is supplied, then the returned \var{list} is an empty list.
224\end{methoddesc}
225
226\begin{methoddesc}{stat}{id}
227Send a \samp{STAT} command, where \var{id} is the message id (enclosed
228in \character{<} and \character{>}) or an article number (as a string).
229Return a triple \code{(\var{response}, \var{number}, \var{id})} where
230\var{number} is the article number (as a string) and \var{id} is the
231message id (enclosed in \character{<} and \character{>}).
232\end{methoddesc}
233
234\begin{methoddesc}{next}{}
235Send a \samp{NEXT} command. Return as for \method{stat()}.
236\end{methoddesc}
237
238\begin{methoddesc}{last}{}
239Send a \samp{LAST} command. Return as for \method{stat()}.
240\end{methoddesc}
241
242\begin{methoddesc}{head}{id}
243Send a \samp{HEAD} command, where \var{id} has the same meaning as for
244\method{stat()}. Return a tuple
245\code{(\var{response}, \var{number}, \var{id}, \var{list})}
246where the first three are the same as for \method{stat()},
247and \var{list} is a list of the article's headers (an uninterpreted
248list of lines, without trailing newlines).
249\end{methoddesc}
250
251\begin{methoddesc}{body}{id,\optional{file}}
252Send a \samp{BODY} command, where \var{id} has the same meaning as for
253\method{stat()}. If the \var{file} parameter is supplied, then
254the body is stored in a file. If \var{file} is a string, then
255the method will open a file object with that name, write to it then close it.
256If \var{file} is a file object, then it will start calling
257\method{write()} on it to store the lines of the body.
258Return as for \method{head()}. If \var{file} is supplied, then
259the returned \var{list} is an empty list.
260\end{methoddesc}
261
262\begin{methoddesc}{article}{id}
263Send an \samp{ARTICLE} command, where \var{id} has the same meaning as
264for \method{stat()}. Return as for \method{head()}.
265\end{methoddesc}
266
267\begin{methoddesc}{slave}{}
268Send a \samp{SLAVE} command. Return the server's \var{response}.
269\end{methoddesc}
270
271\begin{methoddesc}{xhdr}{header, string, \optional{file}}
272Send an \samp{XHDR} command. This command is not defined in the RFC
273but is a common extension. The \var{header} argument is a header
274keyword, e.g. \code{'subject'}. The \var{string} argument should have
275the form \code{'\var{first}-\var{last}'} where \var{first} and
276\var{last} are the first and last article numbers to search. Return a
277pair \code{(\var{response}, \var{list})}, where \var{list} is a list of
278pairs \code{(\var{id}, \var{text})}, where \var{id} is an article number
279(as a string) and \var{text} is the text of the requested header for
280that article.
281If the \var{file} parameter is supplied, then the output of the
282\samp{XHDR} command is stored in a file. If \var{file} is a string,
283then the method will open a file object with that name, write to it
284then close it. If \var{file} is a file object, then it will start
285calling \method{write()} on it to store the lines of the command output.
286If \var{file} is supplied, then the returned \var{list} is an empty list.
287\end{methoddesc}
288
289\begin{methoddesc}{post}{file}
290Post an article using the \samp{POST} command. The \var{file}
291argument is an open file object which is read until EOF using its
292\method{readline()} method. It should be a well-formed news article,
293including the required headers. The \method{post()} method
294automatically escapes lines beginning with \samp{.}.
295\end{methoddesc}
296
297\begin{methoddesc}{ihave}{id, file}
298Send an \samp{IHAVE} command. \var{id} is a message id (enclosed in
299\character{<} and \character{>}).
300If the response is not an error, treat
301\var{file} exactly as for the \method{post()} method.
302\end{methoddesc}
303
304\begin{methoddesc}{date}{}
305Return a triple \code{(\var{response}, \var{date}, \var{time})},
306containing the current date and time in a form suitable for the
307\method{newnews()} and \method{newgroups()} methods.
308This is an optional NNTP extension, and may not be supported by all
309servers.
310\end{methoddesc}
311
312\begin{methoddesc}{xgtitle}{name, \optional{file}}
313Process an \samp{XGTITLE} command, returning a pair \code{(\var{response},
314\var{list})}, where \var{list} is a list of tuples containing
315\code{(\var{name}, \var{title})}.
316% XXX huh? Should that be name, description?
317If the \var{file} parameter is supplied, then the output of the
318\samp{XGTITLE} command is stored in a file. If \var{file} is a string,
319then the method will open a file object with that name, write to it
320then close it. If \var{file} is a file object, then it will start
321calling \method{write()} on it to store the lines of the command output.
322If \var{file} is supplied, then the returned \var{list} is an empty list.
323This is an optional NNTP extension, and may not be supported by all
324servers.
325
326RFC2980 says ``It is suggested that this extension be deprecated''. Use
327\method{descriptions()} or \method{description()} instead.
328\end{methoddesc}
329
330\begin{methoddesc}{xover}{start, end, \optional{file}}
331Return a pair \code{(\var{resp}, \var{list})}. \var{list} is a list
332of tuples, one for each article in the range delimited by the \var{start}
333and \var{end} article numbers. Each tuple is of the form
334\code{(\var{article number}, \var{subject}, \var{poster}, \var{date},
335\var{id}, \var{references}, \var{size}, \var{lines})}.
336If the \var{file} parameter is supplied, then the output of the
337\samp{XOVER} command is stored in a file. If \var{file} is a string,
338then the method will open a file object with that name, write to it
339then close it. If \var{file} is a file object, then it will start
340calling \method{write()} on it to store the lines of the command output.
341If \var{file} is supplied, then the returned \var{list} is an empty list.
342This is an optional NNTP extension, and may not be supported by all
343servers.
344\end{methoddesc}
345
346\begin{methoddesc}{xpath}{id}
347Return a pair \code{(\var{resp}, \var{path})}, where \var{path} is the
348directory path to the article with message ID \var{id}. This is an
349optional NNTP extension, and may not be supported by all servers.
350\end{methoddesc}
351
352\begin{methoddesc}{quit}{}
353Send a \samp{QUIT} command and close the connection. Once this method
354has been called, no other methods of the NNTP object should be called.
355\end{methoddesc}
Note: See TracBrowser for help on using the repository browser.