gh-103373: `__mro_entries__` docs: improve cross references (#103398)

Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
This commit is contained in:
Alex Waygood 2023-04-11 11:25:45 +01:00 committed by GitHub
parent 21bea68e2e
commit e071f00aae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 7 deletions

View File

@ -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

View File

@ -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