summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2015-12-08 10:14:50 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2015-12-08 10:14:50 (GMT)
commit6e9d2e687b78e9c43e95666c00f721803c9fcba4 (patch)
tree2b0ab1da50c777375b3754f13c9cb2b4d0545b93
parent45be8d67be0083c923ca31e4803de861177a2383 (diff)
downloadcpython-6e9d2e687b78e9c43e95666c00f721803c9fcba4.zip
cpython-6e9d2e687b78e9c43e95666c00f721803c9fcba4.tar.gz
cpython-6e9d2e687b78e9c43e95666c00f721803c9fcba4.tar.bz2
Issue #21240: Add an abstractmethod directive to mark abstract methods in the docs more explicitly
-rw-r--r--Doc/library/importlib.rst12
-rw-r--r--Doc/library/numbers.rst2
-rw-r--r--Doc/library/selectors.rst8
-rw-r--r--Doc/tools/extensions/pyspecific.py14
4 files changed, 25 insertions, 11 deletions
diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst
index da61353..02b0a11 100644
--- a/Doc/library/importlib.rst
+++ b/Doc/library/importlib.rst
@@ -230,7 +230,7 @@ ABC hierarchy::
.. deprecated:: 3.3
Use :class:`MetaPathFinder` or :class:`PathEntryFinder` instead.
- .. method:: find_module(fullname, path=None)
+ .. abstractmethod:: find_module(fullname, path=None)
An abstact method for finding a :term:`loader` for the specified
module. Originally specified in :pep:`302`, this method was meant
@@ -453,7 +453,7 @@ ABC hierarchy::
:pep:`302` protocol for loading arbitrary resources from the storage
back-end.
- .. method:: get_data(path)
+ .. abstractmethod:: get_data(path)
An abstract method to return the bytes for the data located at *path*.
Loaders that have a file-like storage back-end
@@ -489,7 +489,7 @@ ABC hierarchy::
.. versionchanged:: 3.4
No longer abstract and a concrete implementation is provided.
- .. method:: get_source(fullname)
+ .. abstractmethod:: get_source(fullname)
An abstract method to return the source of a module. It is returned as
a text string using :term:`universal newlines`, translating all
@@ -546,7 +546,7 @@ ABC hierarchy::
when implemented, helps a module to be executed as a script. The ABC
represents an optional :pep:`302` protocol.
- .. method:: get_filename(fullname)
+ .. abstractmethod:: get_filename(fullname)
An abstract method that is to return the value of :attr:`__file__` for
the specified module. If no path is available, :exc:`ImportError` is
@@ -586,11 +586,11 @@ ABC hierarchy::
.. deprecated:: 3.4
Use :meth:`Loader.exec_module` instead.
- .. method:: get_filename(fullname)
+ .. abstractmethod:: get_filename(fullname)
Returns :attr:`path`.
- .. method:: get_data(path)
+ .. abstractmethod:: get_data(path)
Reads *path* as a binary file and returns the bytes from it.
diff --git a/Doc/library/numbers.rst b/Doc/library/numbers.rst
index 8ab07d0..718a50e 100644
--- a/Doc/library/numbers.rst
+++ b/Doc/library/numbers.rst
@@ -35,7 +35,7 @@ The numeric tower
Abstract. Retrieves the imaginary component of this number.
- .. method:: conjugate()
+ .. abstractmethod:: conjugate()
Abstract. Returns the complex conjugate. For example, ``(1+3j).conjugate()
== (1-3j)``.
diff --git a/Doc/library/selectors.rst b/Doc/library/selectors.rst
index 56cfc6b..3847bbd 100644
--- a/Doc/library/selectors.rst
+++ b/Doc/library/selectors.rst
@@ -99,7 +99,7 @@ constants below:
:class:`BaseSelector` and its concrete implementations support the
:term:`context manager` protocol.
- .. method:: register(fileobj, events, data=None)
+ .. abstractmethod:: register(fileobj, events, data=None)
Register a file object for selection, monitoring it for I/O events.
@@ -112,7 +112,7 @@ constants below:
:exc:`ValueError` in case of invalid event mask or file descriptor, or
:exc:`KeyError` if the file object is already registered.
- .. method:: unregister(fileobj)
+ .. abstractmethod:: unregister(fileobj)
Unregister a file object from selection, removing it from monitoring. A
file object shall be unregistered prior to being closed.
@@ -136,7 +136,7 @@ constants below:
:exc:`ValueError` in case of invalid event mask or file descriptor, or
:exc:`KeyError` if the file object is not registered.
- .. method:: select(timeout=None)
+ .. abstractmethod:: select(timeout=None)
Wait until some registered file objects become ready, or the timeout
expires.
@@ -179,7 +179,7 @@ constants below:
This returns the :class:`SelectorKey` instance associated to this file
object, or raises :exc:`KeyError` if the file object is not registered.
- .. method:: get_map()
+ .. abstractmethod:: get_map()
Return a mapping of file objects to selector keys.
diff --git a/Doc/tools/extensions/pyspecific.py b/Doc/tools/extensions/pyspecific.py
index d44b052..6311283 100644
--- a/Doc/tools/extensions/pyspecific.py
+++ b/Doc/tools/extensions/pyspecific.py
@@ -164,6 +164,19 @@ class PyCoroutineMethod(PyCoroutineMixin, PyClassmember):
return PyClassmember.run(self)
+class PyAbstractMethod(PyClassmember):
+
+ def handle_signature(self, sig, signode):
+ ret = super(PyAbstractMethod, self).handle_signature(sig, signode)
+ signode.insert(0, addnodes.desc_annotation('abstractmethod ',
+ 'abstractmethod '))
+ return ret
+
+ def run(self):
+ self.name = 'py:method'
+ return PyClassmember.run(self)
+
+
# Support for documenting version of removal in deprecations
class DeprecatedRemoved(Directive):
@@ -368,5 +381,6 @@ def setup(app):
app.add_directive_to_domain('py', 'decoratormethod', PyDecoratorMethod)
app.add_directive_to_domain('py', 'coroutinefunction', PyCoroutineFunction)
app.add_directive_to_domain('py', 'coroutinemethod', PyCoroutineMethod)
+ app.add_directive_to_domain('py', 'abstractmethod', PyAbstractMethod)
app.add_directive('miscnews', MiscNews)
return {'version': '1.0', 'parallel_read_safe': True}