diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2015-12-08 10:14:50 (GMT) |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2015-12-08 10:14:50 (GMT) |
commit | 6e9d2e687b78e9c43e95666c00f721803c9fcba4 (patch) | |
tree | 2b0ab1da50c777375b3754f13c9cb2b4d0545b93 | |
parent | 45be8d67be0083c923ca31e4803de861177a2383 (diff) | |
download | cpython-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.rst | 12 | ||||
-rw-r--r-- | Doc/library/numbers.rst | 2 | ||||
-rw-r--r-- | Doc/library/selectors.rst | 8 | ||||
-rw-r--r-- | Doc/tools/extensions/pyspecific.py | 14 |
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} |