mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Issue #21240: Add an abstractmethod directive to mark abstract methods in the docs more explicitly
This commit is contained in:
commit
2e7fca8e48
4 changed files with 25 additions and 11 deletions
|
@ -230,7 +230,7 @@ ABC hierarchy::
|
||||||
.. deprecated:: 3.3
|
.. deprecated:: 3.3
|
||||||
Use :class:`MetaPathFinder` or :class:`PathEntryFinder` instead.
|
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
|
An abstact method for finding a :term:`loader` for the specified
|
||||||
module. Originally specified in :pep:`302`, this method was meant
|
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
|
:pep:`302` protocol for loading arbitrary resources from the storage
|
||||||
back-end.
|
back-end.
|
||||||
|
|
||||||
.. method:: get_data(path)
|
.. abstractmethod:: get_data(path)
|
||||||
|
|
||||||
An abstract method to return the bytes for the data located at *path*.
|
An abstract method to return the bytes for the data located at *path*.
|
||||||
Loaders that have a file-like storage back-end
|
Loaders that have a file-like storage back-end
|
||||||
|
@ -489,7 +489,7 @@ ABC hierarchy::
|
||||||
.. versionchanged:: 3.4
|
.. versionchanged:: 3.4
|
||||||
No longer abstract and a concrete implementation is provided.
|
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
|
An abstract method to return the source of a module. It is returned as
|
||||||
a text string using :term:`universal newlines`, translating all
|
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
|
when implemented, helps a module to be executed as a script. The ABC
|
||||||
represents an optional :pep:`302` protocol.
|
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
|
An abstract method that is to return the value of :attr:`__file__` for
|
||||||
the specified module. If no path is available, :exc:`ImportError` is
|
the specified module. If no path is available, :exc:`ImportError` is
|
||||||
|
@ -586,11 +586,11 @@ ABC hierarchy::
|
||||||
.. deprecated:: 3.4
|
.. deprecated:: 3.4
|
||||||
Use :meth:`Loader.exec_module` instead.
|
Use :meth:`Loader.exec_module` instead.
|
||||||
|
|
||||||
.. method:: get_filename(fullname)
|
.. abstractmethod:: get_filename(fullname)
|
||||||
|
|
||||||
Returns :attr:`path`.
|
Returns :attr:`path`.
|
||||||
|
|
||||||
.. method:: get_data(path)
|
.. abstractmethod:: get_data(path)
|
||||||
|
|
||||||
Reads *path* as a binary file and returns the bytes from it.
|
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.
|
Abstract. Retrieves the imaginary component of this number.
|
||||||
|
|
||||||
.. method:: conjugate()
|
.. abstractmethod:: conjugate()
|
||||||
|
|
||||||
Abstract. Returns the complex conjugate. For example, ``(1+3j).conjugate()
|
Abstract. Returns the complex conjugate. For example, ``(1+3j).conjugate()
|
||||||
== (1-3j)``.
|
== (1-3j)``.
|
||||||
|
|
|
@ -99,7 +99,7 @@ constants below:
|
||||||
:class:`BaseSelector` and its concrete implementations support the
|
:class:`BaseSelector` and its concrete implementations support the
|
||||||
:term:`context manager` protocol.
|
: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.
|
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:`ValueError` in case of invalid event mask or file descriptor, or
|
||||||
:exc:`KeyError` if the file object is already registered.
|
: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
|
Unregister a file object from selection, removing it from monitoring. A
|
||||||
file object shall be unregistered prior to being closed.
|
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:`ValueError` in case of invalid event mask or file descriptor, or
|
||||||
:exc:`KeyError` if the file object is not registered.
|
: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
|
Wait until some registered file objects become ready, or the timeout
|
||||||
expires.
|
expires.
|
||||||
|
@ -179,7 +179,7 @@ constants below:
|
||||||
This returns the :class:`SelectorKey` instance associated to this file
|
This returns the :class:`SelectorKey` instance associated to this file
|
||||||
object, or raises :exc:`KeyError` if the file object is not registered.
|
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.
|
Return a mapping of file objects to selector keys.
|
||||||
|
|
||||||
|
|
|
@ -164,6 +164,19 @@ class PyCoroutineMethod(PyCoroutineMixin, PyClassmember):
|
||||||
return PyClassmember.run(self)
|
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
|
# Support for documenting version of removal in deprecations
|
||||||
|
|
||||||
class DeprecatedRemoved(Directive):
|
class DeprecatedRemoved(Directive):
|
||||||
|
@ -368,5 +381,6 @@ def setup(app):
|
||||||
app.add_directive_to_domain('py', 'decoratormethod', PyDecoratorMethod)
|
app.add_directive_to_domain('py', 'decoratormethod', PyDecoratorMethod)
|
||||||
app.add_directive_to_domain('py', 'coroutinefunction', PyCoroutineFunction)
|
app.add_directive_to_domain('py', 'coroutinefunction', PyCoroutineFunction)
|
||||||
app.add_directive_to_domain('py', 'coroutinemethod', PyCoroutineMethod)
|
app.add_directive_to_domain('py', 'coroutinemethod', PyCoroutineMethod)
|
||||||
|
app.add_directive_to_domain('py', 'abstractmethod', PyAbstractMethod)
|
||||||
app.add_directive('miscnews', MiscNews)
|
app.add_directive('miscnews', MiscNews)
|
||||||
return {'version': '1.0', 'parallel_read_safe': True}
|
return {'version': '1.0', 'parallel_read_safe': True}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue