The name `valid_shape` makes me think we should raise an exception if it's not valid.  

Maybe `has_nonzero_shape`?  I'm not totally sure.  

When does the shape end up with zero-sized dimensions?  Can we tell ahead of time (before we send the request), or is it data dependent?