issues: 558977158
This data as json
| id | node_id | number | title | user | state | locked | assignee | milestone | comments | created_at | updated_at | closed_at | author_association | active_lock_reason | draft | pull_request | body | reactions | performed_via_github_app | state_reason | repo | type |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 558977158 | MDU6SXNzdWU1NTg5NzcxNTg= | 3743 | A suggested solution to the `TypeError: Invalid value for attr:` error upon `.to_netcdf` | 6872529 | open | 0 | 3 | 2020-02-03T10:10:51Z | 2023-04-06T17:43:37Z | NONE | Even though netcdf conventions don't allow some data types in the attributes, it might be usefull to simply serialize those as strings rather than throw an error. Maybe add a Example: Setup a DataArray with bad values in the attributes: ```python import numpy as np from xarray import DataArray, load_dataset from pandas import Timestamp from numbers import Number valid_types = (str, Number, np.ndarray, np.number, list, tuple) da = DataArray( name='bad_values', attrs=dict( bool_value=True, none_value=None, datetime_value=Timestamp.now() ) ) ds = da.to_dataset() ds.bad_values.attrs ``` Output:
The code in the except clause can be easily impolemented under ```python try: ds.to_netcdf('test.nc') # Fails with TypeError: Invalid value for attr: ... except TypeError as e: print(e.class.name, e) for variable in ds.variables.values(): for k, v in variable.attrs.items(): if not isinstance(v, valid_types) or isinstance(v, bool): variable.attrs[k] = str(v)
ds_from_file = load_dataset('test.nc') ds_from_file.bad_values.attrs ``` Output: ```python TypeError Invalid value for attr: None must be a number, a string, an ndarray or a list/tuple of numbers/strings for serialization to netCDF files {'bool_value': 'True', 'none_value': 'None', 'datetime_value': '2020-02-03 10:43:38.479866'} ``` |
{
"url": "https://api.github.com/repos/pydata/xarray/issues/3743/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
} |
13221727 | issue |