diff --git a/Lib/nntplib.py b/Lib/nntplib.py index 409342c78cd..b067d6b3dfc 100644 --- a/Lib/nntplib.py +++ b/Lib/nntplib.py @@ -361,7 +361,9 @@ class _NNTPBase: else: self._caps = caps if 'VERSION' in caps: - self.nntp_version = int(caps['VERSION'][0]) + # The server can advertise several supported versions, + # choose the highest. + self.nntp_version = max(map(int, caps['VERSION'])) def getwelcome(self): """Get the welcome message from the server diff --git a/Lib/test/test_nntplib.py b/Lib/test/test_nntplib.py index dd100ef62c5..e62b240abbc 100644 --- a/Lib/test/test_nntplib.py +++ b/Lib/test/test_nntplib.py @@ -558,7 +558,7 @@ class NNTPv2Handler(NNTPv1Handler): def handle_CAPABILITIES(self): self.push_lit("""\ 101 Capability list: - VERSION 2 + VERSION 2 3 IMPLEMENTATION INN 2.5.1 AUTHINFO USER HDR @@ -935,7 +935,7 @@ class NNTPv2Tests(NNTPv1v2TestsMixin, MockedNNTPTestsMixin, unittest.TestCase): def test_caps(self): caps = self.server.getcapabilities() self.assertEqual(caps, { - 'VERSION': ['2'], + 'VERSION': ['2', '3'], 'IMPLEMENTATION': ['INN', '2.5.1'], 'AUTHINFO': ['USER'], 'HDR': [], @@ -945,7 +945,7 @@ class NNTPv2Tests(NNTPv1v2TestsMixin, MockedNNTPTestsMixin, unittest.TestCase): 'POST': [], 'READER': [], }) - self.assertEqual(self.server.nntp_version, 2) + self.assertEqual(self.server.nntp_version, 3) class MiscTests(unittest.TestCase): diff --git a/Misc/NEWS b/Misc/NEWS index ae95b13c963..b97a181603d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -59,6 +59,9 @@ Core and Builtins Library ------- +- Issue #10280: NNTP.nntp_version should reflect the highest version + advertised by the server. + - Issue #10184: Touch directories only once when extracting a tarfile. - Issue #10199: New package, ``turtledemo`` now contains selected demo