There are several other places where the code chooses the most convenient format to produce an output without informing the user, e.g.:

```
>>> a = sps.csr_matrix(np.arange(16).reshape(4, 4))
>>> b = sps.csr_matrix(np.arange(16, 32).reshape(4, 4))
>>> sps.hstack((a, b))
<4x8 sparse matrix of type '<type 'numpy.int32'>'
	with 31 stored elements in COOrdinate format>
```

I am not sure if this applies to your particular case, though. The other option is to do what some of the `sparse.linalg` functions (e.g. `solve`) do when called with an input that has to be converted to CSR or CSC format: raise a `SparseEfficiencyWarning`.

I would wait for @pv's opinon on this.