could this be fixed by updating the __eq__ from object to only allow Self:
def __eq__(self, __value: Self) -> bool: ...
because currently since it takes object no subtypes can override it with something more specific. your example currently doesnt work for that reason:
class SupportsEq(Protocol[T]):
@override
def __eq__(self, other: T) -> bool: ... # error: error: Argument 1 of "__eq__" is incompatible with supertype "object"; supertype defines the argument type as "object"
but if object's __eq__ used the Self type, then a subtype could just do this and there'd be no issue:
Originally posted by @DetachHead in https://github.com/KotlinIsland/basedmypy/issues/574#issuecomment-1890800523