Dataset format broken due to xarray bug (numpy.bool_ attrs not supported)

UPDATE:

This issue should be fixed when xarray releases a >=0.17.1.

Changes made to the data handling in !131 (merged) should be reverted at that point.


See https://github.com/pydata/xarray/issues/4981 for issue on xarray

Roundtrip of a dataset with a boolean attribute will raise:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-17-f74d2909a4a1> in <module>
      6 # This should be working
      7 file_name2 = "file_numpy_bool.nc"
----> 8 loaded_dset.to_netcdf(file_name2, engine="h5netcdf", invalid_netcdf=True)
      9 loaded_dset2 = xr.load_dataset(file_name2, engine="h5netcdf")
     10 

/usr/local/anaconda3/envs/dclab/lib/python3.7/site-packages/xarray/core/dataset.py in to_netcdf(self, path, mode, format, group, engine, encoding, unlimited_dims, compute, invalid_netcdf)
   1697             unlimited_dims=unlimited_dims,
   1698             compute=compute,
-> 1699             invalid_netcdf=invalid_netcdf,
   1700         )
   1701 

/usr/local/anaconda3/envs/dclab/lib/python3.7/site-packages/xarray/backends/api.py in to_netcdf(dataset, path_or_file, mode, format, group, engine, encoding, unlimited_dims, compute, multifile, invalid_netcdf)
   1057     # validate Dataset keys, DataArray names, and attr keys/values
   1058     _validate_dataset_names(dataset)
-> 1059     _validate_attrs(dataset)
   1060 
   1061     try:

/usr/local/anaconda3/envs/dclab/lib/python3.7/site-packages/xarray/backends/api.py in _validate_attrs(dataset)
    229     # Check attrs on the dataset itself
    230     for k, v in dataset.attrs.items():
--> 231         check_attr(k, v)
    232 
    233     # Check attrs on each variable within the dataset

/usr/local/anaconda3/envs/dclab/lib/python3.7/site-packages/xarray/backends/api.py in check_attr(name, value)
    221         if not isinstance(value, (str, Number, np.ndarray, np.number, list, tuple)):
    222             raise TypeError(
--> 223                 f"Invalid value for attr {name!r}: {value!r} must be a number, "
    224                 "a string, an ndarray or a list/tuple of "
    225                 "numbers/strings for serialization to netCDF "

TypeError: Invalid value for attr 'my_bool_attr': True must be a number, a string, an ndarray or a list/tuple of numbers/strings for serialization to netCDF files
Edited by Victor Negîrneac