[Python-checkins] r86213 - in python/branches/py3k: Doc/library/nntplib.rst Lib/nntplib.py Lib/test/test_nntplib.py Misc/NEWS
antoine.pitrou
python-checkins at python.org
Fri Nov 5 20:16:37 CET 2010
Author: antoine.pitrou
Date: Fri Nov 5 20:16:37 2010
New Revision: 86213
Log:
Issue #10282: Add a `nntp_implementation` attribute to NNTP objects.
Modified:
python/branches/py3k/Doc/library/nntplib.rst
python/branches/py3k/Lib/nntplib.py
python/branches/py3k/Lib/test/test_nntplib.py
python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Doc/library/nntplib.rst
==============================================================================
--- python/branches/py3k/Doc/library/nntplib.rst (original)
+++ python/branches/py3k/Doc/library/nntplib.rst Fri Nov 5 20:16:37 2010
@@ -54,7 +54,7 @@
.. class:: NNTP(host, port=119, user=None, password=None, readermode=None, usenetrc=True, [timeout])
- Return a new instance of the :class:`NNTP` class, representing a connection
+ Return a new :class:`NNTP` object, representing a connection
to the NNTP server running on host *host*, listening at port *port*.
An optional *timeout* can be specified for the socket connection.
If the optional *user* and *password* are provided, or if suitable
@@ -111,19 +111,41 @@
NNTP Objects
------------
-:class:`NNTP` instances have the following methods. The *response* that is
-returned as the first item in the return tuple of almost all methods is the
-server's response: a string beginning with a three-digit code. If the server's
-response indicates an error, the method raises one of the above exceptions.
-
-.. note::
- Many of the following methods take an optional keyword-only argument *file*.
- When the *file* argument is supplied, it must be either a :term:`file object`
- opened for binary writing, or the name of an on-disk file to be written to.
- The method will then write any data returned by the server (except for the
- response line and the terminating dot) to the file; any list of lines,
- tuples or objects that the method normally returns will be empty.
+When connected, :class:`NNTP` objects support the following methods and
+attributes.
+Attributes
+^^^^^^^^^^
+
+.. attribute:: NNTP.nntp_version
+
+ An integer representing the version of the NNTP protocol supported by the
+ server. In practice, this should be ``2`` for servers advertising
+ :rfc:`3977` compliance and ``1`` for others.
+
+ .. versionadded:: 3.2
+
+.. attribute:: NNTP.nntp_implementation
+
+ A string describing the software name and version of the NNTP server,
+ or :const:`None` if not advertised by the server.
+
+ .. versionadded:: 3.2
+
+Methods
+^^^^^^^
+
+The *response* that is returned as the first item in the return tuple of almost
+all methods is the server's response: a string beginning with a three-digit
+code. If the server's response indicates an error, the method raises one of
+the above exceptions.
+
+Many of the following methods take an optional keyword-only argument *file*.
+When the *file* argument is supplied, it must be either a :term:`file object`
+opened for binary writing, or the name of an on-disk file to be written to.
+The method will then write any data returned by the server (except for the
+response line and the terminating dot) to the file; any list of lines,
+tuples or objects that the method normally returns will be empty.
.. versionchanged:: 3.2
Many of the following methods have been reworked and fixed, which makes
Modified: python/branches/py3k/Lib/nntplib.py
==============================================================================
--- python/branches/py3k/Lib/nntplib.py (original)
+++ python/branches/py3k/Lib/nntplib.py Fri Nov 5 20:16:37 2010
@@ -354,6 +354,7 @@
# Inquire about capabilities (RFC 3977)
self.nntp_version = 1
+ self.nntp_implementation = None
try:
resp, caps = self.capabilities()
except NNTPPermanentError:
@@ -365,6 +366,8 @@
# The server can advertise several supported versions,
# choose the highest.
self.nntp_version = max(map(int, caps['VERSION']))
+ if 'IMPLEMENTATION' in caps:
+ self.nntp_implementation = ' '.join(caps['IMPLEMENTATION'])
def getwelcome(self):
"""Get the welcome message from the server
Modified: python/branches/py3k/Lib/test/test_nntplib.py
==============================================================================
--- python/branches/py3k/Lib/test/test_nntplib.py (original)
+++ python/branches/py3k/Lib/test/test_nntplib.py Fri Nov 5 20:16:37 2010
@@ -949,6 +949,7 @@
caps = self.server.getcapabilities()
self.assertEqual(caps, {})
self.assertEqual(self.server.nntp_version, 1)
+ self.assertEqual(self.server.nntp_implementation, None)
class NNTPv2Tests(NNTPv1v2TestsMixin, MockedNNTPTestsMixin, unittest.TestCase):
@@ -971,6 +972,7 @@
'READER': [],
})
self.assertEqual(self.server.nntp_version, 3)
+ self.assertEqual(self.server.nntp_implementation, 'INN 2.5.1')
class MiscTests(unittest.TestCase):
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Fri Nov 5 20:16:37 2010
@@ -65,6 +65,8 @@
Library
-------
+- Issue #10282: Add a ``nntp_implementation`` attribute to NNTP objects.
+
- Issue #10283: Add a ``group_pattern`` argument to NNTP.list().
- Issue #10155: Add IISCGIHandler to wsgiref.handlers to support IIS
More information about the Python-checkins
mailing list