The documentation is inconsistent about what the code is supposed to do here.  As you point out, the examples convert everything to some form or floating point, while the documentation of the return type says that the return array has the same type as the input array.  I thought that obeying the latter was preferable.

If that is what is desired, then given a np.ndarray of an integer type, convolve should return a np.ndarray of the same integer type, even though the internal computation is done in floating point (that could be added to the documentation).  I don't know why somebody would want to do that, but, hey, if that's what they want...

Having lists behave the same way seemed like a natural follow on -- so, if your input list is a bunch of integers, give back integers.  If it contains a float -- such that np.array(list).dtype is some sort of floating point -- give back floating point.

Note that the return type is always an ndarray, never a list, as the documentation states.