Perhaps so.  But I'm pretty sure the previous behavior would accept lists as shapes as well and therefore we should probably mimic that behavior.   I thought about testing explicitly for the empty tuple, but decided against it because the empty list should be acceptable as well. 

I do like the first test to convert shape to the expected form followed by the test on shape.   That's nice.   
'''
if len(shape) == 1 and isinstance(shape[0], tuple):
    shape = shape[0]
if not shape:
   ...
'''
But, I would rather test explicitly for the length of shape and still allow any sequence for the shape.