mirror of https://github.com/python/cpython
Issue #21240: Add an abstractmethod directive to mark abstract methods in the docs more explicitly
This commit is contained in:
parent
45be8d67be
commit
6e9d2e687b
|
@ -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.
|
||||
|
||||
|
|
|
@ -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)``.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Reference in New Issue