Skip to content

bpo-39366: Remove xpath() and xgtitle() methods of NNTP. #18035

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jan 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 0 additions & 27 deletions Doc/library/nntplib.rst
Original file line number Diff line number Diff line change
Expand Up @@ -542,33 +542,6 @@ them have been superseded by newer commands in :rfc:`3977`.
if available.


.. method:: NNTP.xpath(id)

Return a pair ``(resp, path)``, where *path* is the directory path to the
article with message ID *id*. Most of the time, this extension is not
enabled by NNTP server administrators.

.. deprecated:: 3.3
The XPATH extension is not actively used.


.. XXX deprecated:

.. method:: NNTP.xgtitle(name, *, file=None)

Process an ``XGTITLE`` command, returning a pair ``(response, list)``, where
*list* is a list of tuples containing ``(name, title)``. If the *file* parameter
is supplied, then the output of the ``XGTITLE`` command is stored in a file.
If *file* is a string, then the method will open a file with that name, write
to it then close it. If *file* is a :term:`file object`, then it will start
calling :meth:`write` on it to store the lines of the command output. If *file*
is supplied, then the returned *list* is an empty list. This is an optional NNTP
extension, and may not be supported by all servers.

:rfc:`2980` says "It is suggested that this extension be deprecated". Use
:meth:`descriptions` or :meth:`description` instead.


Utility functions
-----------------

Expand Down
7 changes: 7 additions & 0 deletions Doc/whatsnew/3.9.rst
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,13 @@ Deprecated
Removed
=======

* :class:`nntplib.NNTP`: ``xpath()`` and ``xgtitle()`` methods have been removed.
These methods are deprecated since Python 3.3. Generally, these extensions
are not supported or not enabled by NNTP server administrators.
For ``xgtitle()``, please use :meth:`nntplib.NNTP.descriptions` or
:meth:`nntplib.NNTP.description` instead.
(Contributed by Dong-hee Na in :issue:`39366`.)

* :class:`array.array`: ``tostring()`` and ``fromstring()`` methods have been
removed. They were aliases to ``tobytes()`` and ``frombytes()``, deprecated
since Python 3.2.
Expand Down
39 changes: 0 additions & 39 deletions Lib/nntplib.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@
import socket
import collections
import datetime
import warnings
import sys

try:
Expand Down Expand Up @@ -834,44 +833,6 @@ def over(self, message_spec, *, file=None):
fmt = self._getoverviewfmt()
return resp, _parse_overview(lines, fmt)

def xgtitle(self, group, *, file=None):
"""Process an XGTITLE command (optional server extension) Arguments:
- group: group name wildcard (i.e. news.*)
Returns:
- resp: server response if successful
- list: list of (name,title) strings"""
warnings.warn("The XGTITLE extension is not actively used, "
"use descriptions() instead",
DeprecationWarning, 2)
line_pat = re.compile('^([^ \t]+)[ \t]+(.*)$')
resp, raw_lines = self._longcmdstring('XGTITLE ' + group, file)
lines = []
for raw_line in raw_lines:
match = line_pat.search(raw_line.strip())
if match:
lines.append(match.group(1, 2))
return resp, lines

def xpath(self, id):
"""Process an XPATH command (optional server extension) Arguments:
- id: Message id of article
Returns:
resp: server response if successful
path: directory path to article
"""
warnings.warn("The XPATH extension is not actively used",
DeprecationWarning, 2)

resp = self._shortcmd('XPATH {0}'.format(id))
if not resp.startswith('223'):
raise NNTPReplyError(resp)
try:
[resp_num, path] = resp.split()
except ValueError:
raise NNTPReplyError(resp) from None
else:
return resp, path

def date(self):
"""Process the DATE command.
Returns:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
The previously deprecated ``xpath()`` and ``xgtitle()`` methods of
:class:`nntplib.NNTP` have been removed.