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 |