+1 from me on this specific case.
On the other hand, there are similar arbitrariness in other cases. So I think there should be a broader discussion on what error should be raised in what situation in mathematical context. This is what I think:
A method (or function) takes objects as input and computes an output. The INPUT block defines coarsely the intended class of mathematical objects.
TypeError: the type (that can be checked by isinstance(obj, class)) of the input object does not belong to the intended class of mathematical objects
ValueError: the particular input object is not suitable as input
ArithmeticError: the particular input object is not suitable for arithmetic (sum, product, quotient, and the like) operation
ZeroDivisionError: the method performs division but the input is zero
NotImplementedError: there is no problem with the input object but the method is incapable to compute appropriate output.
RuntimeError: The method somehow cannot perform the computation. Perhaps a catchall error.