Skip to content

Conversation

@neonbhai
Copy link

@neonbhaineonbhai 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-appbedevere-appbot added docs Documentation in the Doc dir skip news labels Oct 16, 2025
@python-cla-bot
Copy link

python-cla-botbot commented Oct 16, 2025

All commit authors signed the Contributor License Agreement.

CLA signed

Copy link
Member

@ZeroIntensityZeroIntensity 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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting reviewdocsDocumentation in the Doc dirskip newstopic-C-API

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

2 participants

@neonbhai@ZeroIntensity