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
1705163672,PR_kwDOAMm_X85QQiiY,7834,Use `numpy.can_cast` instead of casting and checking,132147,closed,0,,,5,2023-05-11T06:36:06Z,2023-06-26T05:06:30Z,2023-06-26T05:06:29Z,CONTRIBUTOR,,1,pydata/xarray/pulls/7834,"In numpy >= 1.24 unsafe casting raises a RuntimeWarning for an operation that xarray does often to check if casting is safe. `numpy.can_cast` looks like an alternative approach designed for this exact case.

<!-- Feel free to remove check-list items aren't relevant to your change -->

- [ ] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
- [ ] New functions/methods are listed in `api.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7834/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1071806607,PR_kwDOAMm_X84va6lN,6049,Attempt datetime coding using cftime when pandas fails,132147,closed,0,,,2,2021-12-06T07:12:35Z,2022-01-04T00:28:15Z,2021-12-24T11:48:22Z,CONTRIBUTOR,,0,pydata/xarray/pulls/6049,"A netCDF4 dataset we use has a time variable defined as:
```
        double time(time) ;
                time:axis = ""T"" ;
                time:bounds = ""time_bnds"" ;
                time:calendar = ""gregorian"" ;
                time:long_name = ""time"" ;
                time:standard_name = ""time"" ;
                time:units = ""days since 1970-01-01 00:00:00 00"" ;
```

Note the `units` attribute, specifically a timezone offset of `00` without any `+-` sign.

xarray can successfully open this dataset and parse the time units, making a time variable with the expeced values. However, attempting to save this dataset (e.g. after slicing some geographic bounds or selecting a subset of variables), xarray would raise an error trying to reformat the time `units`.

This fix applies the same logic used in the decoding step to the encoding step - specifically, attempt to use `pandas` but if that fails then use `cftime`. The decoding step catches `ValueError` to do this, but `ValueError` was not caught in the encode workflow.

- [x] Tests added
- [x] Passes `pre-commit run --all-files`
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6049/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull