> >>> np.array(5).shape
> ()
>
> and I used that because of the way traits enforce a data type, so scale could be a variable that's an array and it could still contain a scalar.
>
> However I see how this could be confusing if this function is public, so should it just be float | array_like, len = 3?

I find it clearer but it's maybe a detail. thanks for clarifying