From 77359a86b8b48991eb1b411be1b84662343c8fe3 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Sat, 8 Apr 2023 07:16:43 -0700 Subject: [PATCH] gh-103373: Improve documentation for `__mro_entries__` (GH-103374) (cherry picked from commit 0ba0ca05d2b56afa0b055db02233e703fe138918) Co-authored-by: Alex Waygood --- Doc/reference/datamodel.rst | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index 87c538f6f2c..b086be26999 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -2085,11 +2085,15 @@ When a class definition is executed, the following steps occur: Resolving MRO entries ^^^^^^^^^^^^^^^^^^^^^ -If a base that appears in class definition is not an instance of :class:`type`, -then an ``__mro_entries__`` method is searched on it. If found, it is called -with the original bases tuple. This method must return a tuple of classes that -will be used instead of this base. The tuple may be empty, in such case -the original base is ignored. +.. 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 + 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::