From e071f00aaefae9eccf787d5c50396c26c8616483 Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Tue, 11 Apr 2023 11:25:45 +0100 Subject: gh-103373: `__mro_entries__` docs: improve cross references (#103398) Co-authored-by: C.A.M. Gerlach --- Doc/library/types.rst | 4 ++-- Doc/reference/datamodel.rst | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Doc/library/types.rst b/Doc/library/types.rst index 747ba58..27b9846 100644 --- a/Doc/library/types.rst +++ b/Doc/library/types.rst @@ -75,9 +75,9 @@ Dynamic Type Creation This function looks for items in *bases* that are not instances of :class:`type`, and returns a tuple where each such object that has - an ``__mro_entries__`` method is replaced with an unpacked result of + an :meth:`~object.__mro_entries__` method is replaced with an unpacked result of calling this method. If a *bases* item is an instance of :class:`type`, - or it doesn't have an ``__mro_entries__`` method, then it is included in + or it doesn't have an :meth:`!__mro_entries__` method, then it is included in the return tuple unchanged. .. versionadded:: 3.7 diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index ed9ebab..9f91ade 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -2089,16 +2089,21 @@ Resolving MRO entries .. method:: object.__mro_entries__(self, bases) If a base that appears in a class definition is not an instance of - :class:`type`, then an ``__mro_entries__`` method is searched on the base. - If an ``__mro_entries__`` method is found, the base is substituted with the - result of a call to ``__mro_entries__`` when creating the class. - The method is called with the original bases tuple, and must return a tuple + :class:`type`, then an :meth:`!__mro_entries__` method is searched on the base. + If an :meth:`!__mro_entries__` method is found, the base is substituted with the + result of a call to :meth:`!__mro_entries__` when creating the class. + The method is called with the original bases tuple + passed to the *bases* parameter, and must return a tuple of classes that will be used instead of the base. The returned tuple may be empty: in these cases, the original base is ignored. .. seealso:: - :pep:`560` - Core support for typing module and generic types + :func:`types.resolve_bases` + Dynamically resolve bases that are not instances of :class:`type`. + + :pep:`560` + Core support for typing module and generic types. Determining the appropriate metaclass -- cgit v0.12