• We enforce good practices in our code. For example, we will explicitly disallow subclassing from ndarray, we get rid of scalars, we fix the type system.

Given my other reply, probably no surprise that I strongly disagree with the idea of disallowing subclasses. But I'll add to that reply a more general sentiment, that I think one of the problems has been to think that as one develops code, one thinks one knows in advance what users may want to do with it, what input makes sense, etc. But at least I have found that I am often wrong, that I'm not imaginative enough to know what people may want to do. So, my sense is that the best one can do is to make as few assumptions as possible, so avoid coercing, etc. And if the code gets to a position where it needs to guess what is meant, it should just fail.

-- Marten