The presence of the the valid_min, valid_max or valid_range attributes causes data to be masked for its "out-of-range" values. This is sometime surprising, particularly if the data has been modified between the read and write operations.
Proposal:
Add a warn_valid keyword parameter, default True to cfdm.read and cfdm.write that warns when such properties are present. The cfdm.write case will only warn if the data contains out-of-range values. Since data is not actually read by cfdm.read (lazy loading), it is not possible to check for out-of-range data during the read, so merely the presence of any of these properties will trigger the warning.
If warn_valid=False then warnings are suppressed.