Bug report
Bug description:
In the 3.15 alphas, the + operator does not dispatch to obj.__radd__ when the left hand object inherits from a sequence like class (list, tuple, ...), but does if it is a base instance.
class A: def __radd__(self, other): ... class B(tuple): ... () + A() # No error B() + A() # TypeError: can only concatenate tuple (not "A") to tuple
I originally ran into the issue with a NamedTuple, but looks like subclasses of array.array, bytearray, bytes, collections.deque, list, str, and tuple all raise the error.
Works in 3.14.3. git bisect'd to e6e376a , so something in the resolution between nb_add and sq_concat may have changed while optimizing (* has a similar problem with __rmul__ mapping to nb_multiply and sq_repeat).
CPython versions tested on:
CPython main branch
Operating systems tested on:
macOS