Reports a class that inherits from two base classes with incompatible disjoint bases (PEP 800).
A class is a disjoint base when it carries the
@typing.disjoint_base decorator or has a non-empty
__slots__ attribute (including dataclasses created with
slots=True). Many built-in types — int,
str, float, tuple, list,
dict, and others — are disjoint bases.
If two classes each trace back to a different, unrelated disjoint base,
they cannot share a common subclass — Python raises a
TypeError at runtime due to incompatible memory layouts.
Example:
class A:
__slots__ = ('x',)
class B:
__slots__ = ('y',)
class C(A, B): # error: A and B have incompatible disjoint bases
pass
Classes that share a common disjoint base ancestor (e.g., two subclasses of the same slotted class) are not flagged.