Skip to content

Conversation

@neonbhai
Copy link

@neonbhai neonbhai commented Oct 16, 2025

This PR Simplifies the wording of PyObject_IsSubclass documentation in the C API reference.


📚 Documentation preview 📚: https://cpython-previews--140236.org.readthedocs.build/

…eness

Simplify and clarify the wording of PyObject_IsSubclass documentation in
the C API reference.

pythonGH-140160
@bedevere-app bedevere-app bot added docs Documentation in the Doc dir skip news labels Oct 16, 2025
@python-cla-bot
Copy link

python-cla-bot bot commented Oct 16, 2025

All commit authors signed the Contributor License Agreement.

CLA signed

Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's also improve PyObject_IsInstance in this PR.

Comment on lines -379 to +389
Return ``1`` if the class *derived* is identical to or derived from the class
*cls*, otherwise return ``0``. In case of an error, return ``-1``.
Return ``1`` if *derived* is a subclass of *cls*, ``0`` if not, or ``-1`` on
error.
If *cls* is a tuple, the check will be done against every entry in *cls*.
The result will be ``1`` when at least one of the checks returns ``1``,
otherwise it will be ``0``.
If *cls* has a :meth:`~type.__subclasscheck__` method, it will be called to
determine the subclass status as described in :pep:`3119`. Otherwise,
*derived* is a subclass of *cls* if it is a direct or indirect subclass,
i.e. contained in :attr:`cls.__mro__ <type.__mro__>`.
If *cls* is a tuple, return ``1`` if *derived* is a subclass of any entry in
*cls*.
Normally only class objects, i.e. instances of :class:`type` or a derived
class, are considered classes. However, objects can override this by having
a :attr:`~type.__bases__` attribute (which must be a tuple of base classes).
The check respects :meth:`~type.__subclasscheck__` method if defined (see
:pep:`3119`); otherwise, checks whether *derived* is in
:attr:`cls.__mro__ <type.__mro__>`. Non-class objects with a
:attr:`~type.__bases__` attribute (which must be a tuple of base classes)
are also supported.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be better to just say that function is equivalent to the Python-level issubclass function. Then, details regarding __subclasscheck__ can be added there instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

2 participants