Skip to content

Commit

Permalink
[3.12] Docs: mark up NotImplemented using the :data: role throughout …
Browse files Browse the repository at this point in the history
…the docs (GH-116135) (#116147)

(cherry picked from commit dbe44f1)

Co-authored-by: Erlend E. Aasland <erlend@python.org>
  • Loading branch information
miss-islington and erlend-aasland committed Feb 29, 2024
1 parent d49fdc8 commit 240e5f6
Show file tree
Hide file tree
Showing 16 changed files with 39 additions and 39 deletions.
4 changes: 2 additions & 2 deletions Doc/library/abc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,11 @@ a helper class :class:`ABC` to alternatively define ABCs through inheritance:
subclass of the ABC. (This class method is called from the
:meth:`~class.__subclasscheck__` method of the ABC.)

This method should return ``True``, ``False`` or ``NotImplemented``. If
This method should return ``True``, ``False`` or :data:`NotImplemented`. If
it returns ``True``, the *subclass* is considered a subclass of this ABC.
If it returns ``False``, the *subclass* is not considered a subclass of
this ABC, even if it would normally be one. If it returns
``NotImplemented``, the subclass check is continued with the usual
:data:`!NotImplemented`, the subclass check is continued with the usual
mechanism.

.. XXX explain the "usual mechanism"
Expand Down
14 changes: 7 additions & 7 deletions Doc/library/constants.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,27 +33,27 @@ A small number of constants live in the built-in namespace. They are:
the other type; may be returned by the in-place binary special methods
(e.g. :meth:`~object.__imul__`, :meth:`~object.__iand__`, etc.) for the same purpose.
It should not be evaluated in a boolean context.
``NotImplemented`` is the sole instance of the :data:`types.NotImplementedType` type.
:data:`!NotImplemented` is the sole instance of the :data:`types.NotImplementedType` type.

.. note::

When a binary (or in-place) method returns ``NotImplemented`` the
When a binary (or in-place) method returns :data:`!NotImplemented` the
interpreter will try the reflected operation on the other type (or some
other fallback, depending on the operator). If all attempts return
``NotImplemented``, the interpreter will raise an appropriate exception.
Incorrectly returning ``NotImplemented`` will result in a misleading
error message or the ``NotImplemented`` value being returned to Python code.
:data:`!NotImplemented`, the interpreter will raise an appropriate exception.
Incorrectly returning :data:`!NotImplemented` will result in a misleading
error message or the :data:`!NotImplemented` value being returned to Python code.

See :ref:`implementing-the-arithmetic-operations` for examples.

.. note::

``NotImplementedError`` and ``NotImplemented`` are not interchangeable,
``NotImplementedError`` and :data:`!NotImplemented` are not interchangeable,
even though they have similar names and purposes.
See :exc:`NotImplementedError` for details on when to use it.

.. versionchanged:: 3.9
Evaluating ``NotImplemented`` in a boolean context is deprecated. While
Evaluating :data:`!NotImplemented` in a boolean context is deprecated. While
it currently evaluates as true, it will emit a :exc:`DeprecationWarning`.
It will raise a :exc:`TypeError` in a future version of Python.

Expand Down
4 changes: 2 additions & 2 deletions Doc/library/exceptions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -335,9 +335,9 @@ The following exceptions are the exceptions that are usually raised.

.. note::

``NotImplementedError`` and ``NotImplemented`` are not interchangeable,
``NotImplementedError`` and :data:`NotImplemented` are not interchangeable,
even though they have similar names and purposes. See
:data:`NotImplemented` for details on when to use it.
:data:`!NotImplemented` for details on when to use it.

.. exception:: OSError([arg])
OSError(errno, strerror[, filename[, winerror[, filename2]]])
Expand Down
2 changes: 1 addition & 1 deletion Doc/library/importlib.rst
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ ABC hierarchy::
when invalidating the caches of all finders on :data:`sys.meta_path`.

.. versionchanged:: 3.4
Returns ``None`` when called instead of ``NotImplemented``.
Returns ``None`` when called instead of :data:`NotImplemented`.


.. class:: PathEntryFinder
Expand Down
2 changes: 1 addition & 1 deletion Doc/library/numbers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ Complex``. I'll consider ``a + b``:
2. If ``A`` falls back to the boilerplate code, and it were to
return a value from :meth:`~object.__add__`, we'd miss the possibility
that ``B`` defines a more intelligent :meth:`~object.__radd__`, so the
boilerplate should return :const:`NotImplemented` from
boilerplate should return :data:`NotImplemented` from
:meth:`!__add__`. (Or ``A`` may not implement :meth:`!__add__` at
all.)
3. Then ``B``'s :meth:`~object.__radd__` gets a chance. If it accepts
Expand Down
6 changes: 3 additions & 3 deletions Doc/library/pickle.rst
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ The :mod:`pickle` module exports three classes, :class:`Pickler`,
Special reducer that can be defined in :class:`Pickler` subclasses. This
method has priority over any reducer in the :attr:`dispatch_table`. It
should conform to the same interface as a :meth:`~object.__reduce__` method, and
can optionally return ``NotImplemented`` to fallback on
can optionally return :data:`NotImplemented` to fallback on
:attr:`dispatch_table`-registered reducers to pickle ``obj``.

For a detailed example, see :ref:`reducer_override`.
Expand Down Expand Up @@ -495,7 +495,7 @@ What can be pickled and unpickled?
The following types can be pickled:

* built-in constants (``None``, ``True``, ``False``, ``Ellipsis``, and
``NotImplemented``);
:data:`NotImplemented`);

* integers, floating-point numbers, complex numbers;

Expand Down Expand Up @@ -897,7 +897,7 @@ functions and classes.
For those cases, it is possible to subclass from the :class:`Pickler` class and
implement a :meth:`~Pickler.reducer_override` method. This method can return an
arbitrary reduction tuple (see :meth:`~object.__reduce__`). It can alternatively return
``NotImplemented`` to fallback to the traditional behavior.
:data:`NotImplemented` to fallback to the traditional behavior.

If both the :attr:`~Pickler.dispatch_table` and
:meth:`~Pickler.reducer_override` are defined, then
Expand Down
6 changes: 3 additions & 3 deletions Doc/library/stdtypes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5447,10 +5447,10 @@ The NotImplemented Object

This object is returned from comparisons and binary operations when they are
asked to operate on types they don't support. See :ref:`comparisons` for more
information. There is exactly one ``NotImplemented`` object.
``type(NotImplemented)()`` produces the singleton instance.
information. There is exactly one :data:`NotImplemented` object.
:code:`type(NotImplemented)()` produces the singleton instance.

It is written as ``NotImplemented``.
It is written as :code:`NotImplemented`.


.. _typesinternal:
Expand Down
8 changes: 4 additions & 4 deletions Doc/library/unittest.mock.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2094,10 +2094,10 @@ to change the default.

Methods and their defaults:

* ``__lt__``: ``NotImplemented``
* ``__gt__``: ``NotImplemented``
* ``__le__``: ``NotImplemented``
* ``__ge__``: ``NotImplemented``
* ``__lt__``: :data:`NotImplemented`
* ``__gt__``: :data:`!NotImplemented`
* ``__le__``: :data:`!NotImplemented`
* ``__ge__``: :data:`!NotImplemented`
* ``__int__``: ``1``
* ``__contains__``: ``False``
* ``__len__``: ``0``
Expand Down
18 changes: 9 additions & 9 deletions Doc/reference/datamodel.rst
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ NotImplemented
.. index:: pair: object; NotImplemented

This type has a single value. There is a single object with this value. This
object is accessed through the built-in name ``NotImplemented``. Numeric methods
object is accessed through the built-in name :data:`NotImplemented`. Numeric methods
and rich comparison methods should return this value if they do not implement the
operation for the operands provided. (The interpreter will then try the
reflected operation, or some other fallback, depending on the operator.) It
Expand All @@ -170,7 +170,7 @@ See
for more details.

.. versionchanged:: 3.9
Evaluating ``NotImplemented`` in a boolean context is deprecated. While
Evaluating :data:`NotImplemented` in a boolean context is deprecated. While
it currently evaluates as true, it will emit a :exc:`DeprecationWarning`.
It will raise a :exc:`TypeError` in a future version of Python.

Expand Down Expand Up @@ -1780,18 +1780,18 @@ Basic customization
``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` calls
``x.__ge__(y)``.

A rich comparison method may return the singleton ``NotImplemented`` if it does
A rich comparison method may return the singleton :data:`NotImplemented` if it does
not implement the operation for a given pair of arguments. By convention,
``False`` and ``True`` are returned for a successful comparison. However, these
methods can return any value, so if the comparison operator is used in a Boolean
context (e.g., in the condition of an ``if`` statement), Python will call
:func:`bool` on the value to determine if the result is true or false.

By default, ``object`` implements :meth:`__eq__` by using ``is``, returning
``NotImplemented`` in the case of a false comparison:
:data:`NotImplemented` in the case of a false comparison:
``True if x is y else NotImplemented``. For :meth:`__ne__`, by default it
delegates to :meth:`__eq__` and inverts the result unless it is
``NotImplemented``. There are no other implied relationships among the
:data:`!NotImplemented`. There are no other implied relationships among the
comparison operators or default implementations; for example, the truth of
``(x<y or x==y)`` does not imply ``x<=y``. To automatically generate ordering
operations from a single root operation, see :func:`functools.total_ordering`.
Expand Down Expand Up @@ -2821,7 +2821,7 @@ through the object's keys; for sequences, it should iterate through the values.
Called to implement :func:`operator.length_hint`. Should return an estimated
length for the object (which may be greater or less than the actual length).
The length must be an integer ``>=`` 0. The return value may also be
:const:`NotImplemented`, which is treated the same as if the
:data:`NotImplemented`, which is treated the same as if the
``__length_hint__`` method didn't exist at all. This method is purely an
optimization and is never required for correctness.

Expand Down Expand Up @@ -2973,7 +2973,7 @@ left undefined.
function is to be supported.

If one of those methods does not support the operation with the supplied
arguments, it should return ``NotImplemented``.
arguments, it should return :data:`NotImplemented`.


.. method:: object.__radd__(self, other)
Expand Down Expand Up @@ -3003,7 +3003,7 @@ left undefined.
types. [#]_ For instance, to evaluate the expression ``x - y``, where *y* is
an instance of a class that has an :meth:`__rsub__` method,
``type(y).__rsub__(y, x)`` is called if ``type(x).__sub__(x, y)`` returns
*NotImplemented*.
:data:`NotImplemented`.

.. index:: pair: built-in function; pow

Expand Down Expand Up @@ -3495,7 +3495,7 @@ An example of an asynchronous context manager class::
the behavior that ``None`` is not callable.
.. [#] "Does not support" here means that the class has no such method, or
the method returns ``NotImplemented``. Do not set the method to
the method returns :data:`NotImplemented`. Do not set the method to
``None`` if you want to force fallback to the right operand's reflected
method—that will instead have the opposite effect of explicitly
*blocking* such fallback.
Expand Down
2 changes: 1 addition & 1 deletion Doc/reference/expressions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1532,7 +1532,7 @@ built-in types.
``x == x`` are all false, while ``x != x`` is true. This behavior is
compliant with IEEE 754.

* ``None`` and ``NotImplemented`` are singletons. :PEP:`8` advises that
* ``None`` and :data:`NotImplemented` are singletons. :PEP:`8` advises that
comparisons for singletons should always be done with ``is`` or ``is not``,
never the equality operators.

Expand Down
2 changes: 1 addition & 1 deletion Doc/whatsnew/2.7.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1130,7 +1130,7 @@ changes, or look through the Subversion logs for all the details.
(Added by Raymond Hettinger; :issue:`1818`.)

Finally, the :class:`~collections.abc.Mapping` abstract base class now
returns :const:`NotImplemented` if a mapping is compared to
returns :data:`NotImplemented` if a mapping is compared to
another type that isn't a :class:`Mapping`.
(Fixed by Daniel Stutzbach; :issue:`8729`.)

Expand Down
2 changes: 1 addition & 1 deletion Doc/whatsnew/3.10.rst
Original file line number Diff line number Diff line change
Expand Up @@ -828,7 +828,7 @@ Other Language Changes
:meth:`~object.__index__` method).
(Contributed by Serhiy Storchaka in :issue:`37999`.)
* If :func:`object.__ipow__` returns :const:`NotImplemented`, the operator will
* If :func:`object.__ipow__` returns :data:`NotImplemented`, the operator will
correctly fall back to :func:`object.__pow__` and :func:`object.__rpow__` as expected.
(Contributed by Alex Shkop in :issue:`38302`.)
Expand Down
2 changes: 1 addition & 1 deletion Doc/whatsnew/3.4.rst
Original file line number Diff line number Diff line change
Expand Up @@ -872,7 +872,7 @@ multiple implementations of an operation that allows it to work with
PEP written and implemented by Łukasz Langa.

:func:`~functools.total_ordering` now supports a return value of
:const:`NotImplemented` from the underlying comparison function. (Contributed
:data:`NotImplemented` from the underlying comparison function. (Contributed
by Katie Miller in :issue:`10042`.)

A pure-python version of the :func:`~functools.partial` function is now in the
Expand Down
2 changes: 1 addition & 1 deletion Doc/whatsnew/3.9.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1126,7 +1126,7 @@ Changes in the Python API
``logging.getLogger(__name__)`` in some top-level module called ``'root.py'``.
(Contributed by Vinay Sajip in :issue:`37742`.)

* Division handling of :class:`~pathlib.PurePath` now returns ``NotImplemented``
* Division handling of :class:`~pathlib.PurePath` now returns :data:`NotImplemented`
instead of raising a :exc:`TypeError` when passed something other than an
instance of ``str`` or :class:`~pathlib.PurePath`. This allows creating
compatible classes that don't inherit from those mentioned types.
Expand Down
2 changes: 1 addition & 1 deletion Misc/NEWS.d/3.10.0a6.rst
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ tests that are unrelated to :class:`ProcessPoolExecutor` on those platforms.
.. nonce: hsCNgX
.. section: Core and Builtins
If :func:`object.__ipow__` returns :const:`NotImplemented`, the operator
If :func:`object.__ipow__` returns :data:`NotImplemented`, the operator
will correctly fall back to :func:`object.__pow__` and
:func:`object.__rpow__` as expected.

Expand Down
2 changes: 1 addition & 1 deletion Misc/NEWS.d/3.11.0a1.rst
Original file line number Diff line number Diff line change
Expand Up @@ -660,7 +660,7 @@ Karabas.
.. section: Core and Builtins
Parameter substitution of the union type with wrong types now raises
``TypeError`` instead of returning ``NotImplemented``.
``TypeError`` instead of returning :data:`NotImplemented`.

..
Expand Down

0 comments on commit 240e5f6

Please sign in to comment.