Reading Section 2.2 of the CF conventions I gather that I can only use np.byte datatypes but if valid_range is using np.ubyte values then the byte data should be interpreted as unsigned.
This is currently not the case in this library. If we want to support this during auto_mask_and_scale then I'm happy to look into it.