xarray allows several types for netcdf attributes. Is it expected ?
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 4.2k
- Forks
- 1.4k
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 14
Description
What is your issue?
Xarray is permissive regarding the type of the attributes. If using a wrong type, the error reveals the valid types: For serialization to netCDF files, its value must be of one of the following types: str, Number, ndarray, number, list, tuple
Using a non iterable type used to raise an Exception when reading the saved netcdf, but this is now solved with #7085
The pending question is whether it is valid to save netcdf attributes with type other than a string or not.
The following lines are working (in a notebook):
xr.DataArray([1, 2, 3], attrs={'units': 1}, name='x').to_netcdf("tmp.nc")
!ncdump tmp.nc
xr.DataArray([1, 2, 3], attrs={'units': np.nan}, name='x').to_netcdf("tmp.nc")
!ncdump tmp.nc
xr.DataArray([1, 2, 3], attrs={'units': ['xarray', 'is', 'very', 'permissive', ]}, name='x').to_netcdf("tmp.nc")
!ncdump tmp.nc
On the other hand, the following line raises an error:
xr.DataArray([1, 2, 3], attrs={'units': None}, name='x').to_netcdf("tmp.nc")
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the DataArray.to_netcdf examples in the issue and compare the behavior of numeric, NaN, list, and None attributes. Determine whether non-string netCDF attributes are intended to be supported; done should be a clear decision reflected in consistent behavior and an appropriate test or documentation update.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- numpy, python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100