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
2278510478,PR_kwDOAMm_X85uhIGP,8998,Zarr: Optimize appending,2448579,open,0,,,0,2024-05-03T22:21:44Z,2024-05-03T22:23:34Z,,MEMBER,,1,pydata/xarray/pulls/8998,Builds on #8997 ,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8998/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2261844699,PR_kwDOAMm_X85toeXT,8968,Bump dependencies incl `pandas>=2`,2448579,closed,0,,,0,2024-04-24T17:42:19Z,2024-04-27T14:17:16Z,2024-04-27T14:17:16Z,MEMBER,,0,pydata/xarray/pulls/8968,"
- [ ] Closes #xxxx
- [ ] Tests added
- [ ] 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/8968/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2187743087,PR_kwDOAMm_X85ptH1f,8840,"Grouper, Resampler as public api",2448579,open,0,,,0,2024-03-15T05:16:05Z,2024-04-21T16:21:34Z,,MEMBER,,1,pydata/xarray/pulls/8840,"Expose Grouper and Resampler as public API
TODO:
- [ ] Consider avoiding IndexVariable
-----
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
- [x] New functions/methods are listed in `api.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8840/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2228266052,PR_kwDOAMm_X85r24hE,8913,Update hypothesis action to always save the cache,2448579,closed,0,,,0,2024-04-05T15:09:35Z,2024-04-05T16:51:05Z,2024-04-05T16:51:03Z,MEMBER,,0,pydata/xarray/pulls/8913,Update the cache always.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8913/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2228319306,I_kwDOAMm_X86E0XRK,8914,swap_dims does not propagate indexes properly,2448579,open,0,,,0,2024-04-05T15:36:26Z,2024-04-05T15:36:27Z,,MEMBER,,,,"### What happened?
Found by hypothesis
```
import xarray as xr
import numpy as np
var = xr.Variable(dims=""2"", data=np.array(['1970-01-01T00:00:00.000000000', '1970-01-01T00:00:00.000000002', '1970-01-01T00:00:00.000000001'], dtype='datetime64[ns]'))
var1 = xr.Variable(data=np.array([0], dtype=np.uint32), dims=['1'], attrs={})
state = xr.Dataset()
state['2'] = var
state = state.stack({""0"": [""2""]})
state['1'] = var1
state['1_'] = var1#.copy(deep=True)
state = state.swap_dims({""1"": ""1_""})
xr.testing.assertions._assert_internal_invariants(state, False)
```
This swaps simple pandas indexed dims, but the multi-index that is in the dataset and not affected by the swap_dims op ends up broken.
cc @benbovy
### What did you expect to happen?
_No response_
### Minimal Complete Verifiable Example
_No response_
### MVCE confirmation
- [ ] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
- [ ] Complete example — the example is self-contained, including all data and the text of any traceback.
- [ ] Verifiable example — the example copy & pastes into an IPython prompt or [Binder notebook](https://mybinder.org/v2/gh/pydata/xarray/main?urlpath=lab/tree/doc/examples/blank_template.ipynb), returning the result.
- [ ] New issue — a search of GitHub Issues suggests this is not a duplicate.
- [ ] Recent environment — the issue occurs with the latest version of xarray and its dependencies.
### Relevant log output
_No response_
### Anything else we need to know?
_No response_
### Environment
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8914/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
2136709010,I_kwDOAMm_X85_W5eS,8753,Lazy Loading with `DataArray` vs. `Variable`,2448579,closed,0,,,0,2024-02-15T14:42:24Z,2024-04-04T16:46:54Z,2024-04-04T16:46:54Z,MEMBER,,,,"### Discussed in https://github.com/pydata/xarray/discussions/8751
Originally posted by **ilan-gold** February 15, 2024
My goal is to get a dataset from [custom io-zarr backend lazy-loaded](https://docs.xarray.dev/en/stable/internals/how-to-add-new-backend.html#how-to-support-lazy-loading). But when I declare a `DataArray` based on the `Variable` which uses `LazilyIndexedArray`, everything is read in. Is this expected? I specifically don't want to have to use dask if possible. I have seen https://github.com/aurghs/xarray-backend-tutorial/blob/main/2.Backend_with_Lazy_Loading.ipynb but it's a little bit different.
While I have a custom backend array inheriting from `ZarrArrayWrapper`, this example using `ZarrArrayWrapper` directly still highlights the same unexpected behavior of everything being read in.
```python
import zarr
import xarray as xr
from tempfile import mkdtemp
import numpy as np
from pathlib import Path
from collections import defaultdict
class AccessTrackingStore(zarr.DirectoryStore):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._access_count = {}
self._accessed = defaultdict(set)
def __getitem__(self, key):
for tracked in self._access_count:
if tracked in key:
self._access_count[tracked] += 1
self._accessed[tracked].add(key)
return super().__getitem__(key)
def get_access_count(self, key):
return self._access_count[key]
def set_key_trackers(self, keys_to_track):
if isinstance(keys_to_track, str):
keys_to_track = [keys_to_track]
for k in keys_to_track:
self._access_count[k] = 0
def get_subkeys_accessed(self, key):
return self._accessed[key]
orig_path = Path(mkdtemp())
z = zarr.group(orig_path / ""foo.zarr"")
z['array'] = np.random.randn(1000, 1000)
store = AccessTrackingStore(orig_path / ""foo.zarr"")
store.set_key_trackers(['array'])
z = zarr.group(store)
arr = xr.backends.zarr.ZarrArrayWrapper(z['array'])
lazy_arr = xr.core.indexing.LazilyIndexedArray(arr)
# just `.zarray`
var = xr.Variable(('x', 'y'), lazy_arr)
print('Variable read in ', store.get_subkeys_accessed('array'))
# now everything is read in
da = xr.DataArray(var)
print('DataArray read in ', store.get_subkeys_accessed('array'))
```
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8753/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
2224300175,PR_kwDOAMm_X85rpG4S,8907,Trigger hypothesis stateful tests nightly,2448579,closed,0,,,0,2024-04-04T02:16:59Z,2024-04-04T02:17:49Z,2024-04-04T02:17:47Z,MEMBER,,0,pydata/xarray/pulls/8907,"
- [ ] Closes #xxxx
- [ ] Tests added
- [ ] 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/8907/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2000205407,PR_kwDOAMm_X85fzupc,8467,[skip-ci] dev whats-new,2448579,closed,0,,,0,2023-11-18T03:59:29Z,2024-04-03T21:08:45Z,2023-11-18T15:20:37Z,MEMBER,,0,pydata/xarray/pulls/8467,"
- [ ] Closes #xxxx
- [ ] Tests added
- [ ] 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/8467/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1989233637,PR_kwDOAMm_X85fOdAk,8446,Remove PseudoNetCDF,2448579,closed,0,,,0,2023-11-12T04:29:50Z,2024-04-03T21:08:44Z,2023-11-13T21:53:56Z,MEMBER,,0,pydata/xarray/pulls/8446,"joining the party
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8446/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 1, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2102850331,PR_kwDOAMm_X85lMW8k,8674,Fix negative slicing of Zarr arrays,2448579,closed,0,,,0,2024-01-26T20:22:21Z,2024-04-03T21:08:26Z,2024-02-10T02:57:32Z,MEMBER,,0,pydata/xarray/pulls/8674,"Closes #8252
Closes #3921
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8674/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2148245262,PR_kwDOAMm_X85nmmqX,8777,Return a dataclass from Grouper.factorize,2448579,closed,0,,,0,2024-02-22T05:41:29Z,2024-04-03T21:08:25Z,2024-03-15T04:47:30Z,MEMBER,,0,pydata/xarray/pulls/8777,"Toward #8510, builds on #8776","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8777/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2148164557,PR_kwDOAMm_X85nmU5w,8775,[skip-ci] NamedArray: Add lazy indexing array refactoring plan,2448579,closed,0,,,0,2024-02-22T04:25:49Z,2024-04-03T21:08:21Z,2024-02-23T22:20:09Z,MEMBER,,0,pydata/xarray/pulls/8775,"This adds a proposal for decoupling the lazy indexing array machinery, indexing adapter machinery, and Variable's setitem and getitem methods, so that the latter can be migrated to NamedArray.
cc @andersy005 ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8775/reactions"", ""total_count"": 2, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 2, ""eyes"": 0}",,,13221727,pull
2198991054,PR_kwDOAMm_X85qTNFP,8861,upstream-dev CI: Fix interp and cumtrapz,2448579,closed,0,,,0,2024-03-21T02:49:40Z,2024-04-03T21:08:17Z,2024-03-21T04:16:45Z,MEMBER,,0,pydata/xarray/pulls/8861,"
- [x] xref #8844
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8861/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2215539648,PR_kwDOAMm_X85rLW_p,8891,2024.03.0: Add whats-new,2448579,closed,0,,,0,2024-03-29T15:01:35Z,2024-03-29T17:07:19Z,2024-03-29T17:07:17Z,MEMBER,,0,pydata/xarray/pulls/8891,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8891/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2206047573,PR_kwDOAMm_X85qrHyn,8875,Optimize writes to existing Zarr stores.,2448579,closed,0,,,0,2024-03-25T15:32:47Z,2024-03-29T14:35:30Z,2024-03-29T14:35:29Z,MEMBER,,0,pydata/xarray/pulls/8875,We need to read existing variables to make sure we append or write to a region with the right encoding. Currently we decode all arrays in a Zarr group. Instead only decode those arrays for which we require encoding information.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8875/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2206385638,PR_kwDOAMm_X85qsSKm,8877,Don't allow overwriting indexes with region writes,2448579,closed,0,,,0,2024-03-25T18:13:19Z,2024-03-27T16:24:37Z,2024-03-27T16:24:35Z,MEMBER,,0,pydata/xarray/pulls/8877,"- [x] Closes #8589
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
cc @slevang
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8877/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2189750364,PR_kwDOAMm_X85p0Epw,8847,pandas 3 MultiIndex fixes,2448579,closed,0,,,0,2024-03-16T03:51:06Z,2024-03-20T15:00:20Z,2024-03-20T15:00:18Z,MEMBER,,0,pydata/xarray/pulls/8847,"xref #8844
Closes https://github.com/xarray-contrib/flox/issues/342","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8847/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2021856935,PR_kwDOAMm_X85g81gb,8509,Proof of concept - public Grouper objects,2448579,open,0,,,0,2023-12-02T04:52:27Z,2024-03-15T05:18:18Z,,MEMBER,,1,pydata/xarray/pulls/8509,"Not for merging, just proof that it can be done nicely :)
Now builds on #8840
~Builds on an older version of #8507~
Try it out!
```python
import xarray as xr
from xarray.core.groupers import SeasonGrouper, SeasonResampler
ds = xr.tutorial.open_dataset(""air_temperature"")
# custom seasons!
ds.air.groupby(time=SeasonGrouper([""JF"", ""MAM"", ""JJAS"", ""OND""])).mean()
ds.air.resample(time=SeasonResampler([""DJF"", ""MAM"", ""JJAS"", ""ON""])).count()
```","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8509/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2187682227,PR_kwDOAMm_X85ps6tB,8839,[skip-ci] Fix upstream-dev env,2448579,closed,0,,,0,2024-03-15T04:08:58Z,2024-03-15T04:37:59Z,2024-03-15T04:37:58Z,MEMBER,,0,pydata/xarray/pulls/8839,"
upstream-dev env is broken
- [x] Closes #8623
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8839/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2187646833,PR_kwDOAMm_X85psy9g,8837,Add dask-expr for windows envs,2448579,closed,0,,,0,2024-03-15T03:27:48Z,2024-03-15T04:06:05Z,2024-03-15T04:06:03Z,MEMBER,,0,pydata/xarray/pulls/8837,"
- [x] Closes #8830
- [ ] Tests added
- [ ] 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/8837/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2184606202,PR_kwDOAMm_X85picsD,8827,Add `dask-expr` to environment-3.12.yml,2448579,closed,0,,,0,2024-03-13T18:07:27Z,2024-03-13T20:20:46Z,2024-03-13T20:20:45Z,MEMBER,,0,pydata/xarray/pulls/8827,xref https://github.com/pydata/xarray/actions/runs/8269168819/job/22623800305?pr=8777,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8827/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2148242023,PR_kwDOAMm_X85nml9d,8776,Refactor Grouper objects,2448579,closed,0,,,0,2024-02-22T05:38:09Z,2024-03-07T21:50:07Z,2024-03-07T21:50:04Z,MEMBER,,0,pydata/xarray/pulls/8776,"Some refactoring towards the Grouper refactor described in #8510
1. Rename to Resampler from ResampleGrouper
2. Refactor to a single ""ResolvedGrouper"" object that encapsulates the underling Grouper/Resampler object: UniqueGrouper, BinGrouper, or TimeResampler.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8776/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2135011804,I_kwDOAMm_X85_QbHc,8748,release v2024.02.0,2448579,closed,0,14808389,,0,2024-02-14T19:08:38Z,2024-02-18T22:52:15Z,2024-02-18T22:52:15Z,MEMBER,,,,"### What is your issue?
Thanks to @keewis for volunteering at today's meeting :()","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8748/reactions"", ""total_count"": 3, ""+1"": 0, ""-1"": 0, ""laugh"": 1, ""hooray"": 0, ""confused"": 0, ""heart"": 2, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
2098626592,PR_kwDOAMm_X85k-Mnt,8657,groupby: Don't set `method` by default on flox>=0.9,2448579,closed,0,,,0,2024-01-24T16:20:57Z,2024-01-26T16:54:25Z,2024-01-26T16:54:23Z,MEMBER,,0,pydata/xarray/pulls/8657,"
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8657/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2086607437,I_kwDOAMm_X858XxpN,8616, new release 2024.01.0,2448579,closed,0,,,0,2024-01-17T17:03:20Z,2024-01-17T19:21:12Z,2024-01-17T19:21:12Z,MEMBER,,,,"### What is your issue?
Thanks @TomNicholas for volunteering to drive this release!","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8616/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 1, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
2065788086,PR_kwDOAMm_X85jOw74,8585,Enable Zarr V3 tests in all CI runs.,2448579,closed,0,,,0,2024-01-04T14:45:44Z,2024-01-05T17:53:08Z,2024-01-05T17:53:06Z,MEMBER,,0,pydata/xarray/pulls/8585,"🤦🏾♂️
Spotted in https://github.com/pydata/xarray/pull/8460
Builds on #8586 ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8585/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2064420057,I_kwDOAMm_X857DIzZ,8581,bump min versions,2448579,closed,0,,,0,2024-01-03T17:45:10Z,2024-01-05T16:13:16Z,2024-01-05T16:13:15Z,MEMBER,,,,"### What is your issue?
Looks like we can bump a number of min versions:
```
Package Required Policy Status
----------------- -------------------- -------------------- ------
cartopy 0.20 (2021-09-17) 0.21 (2022-09-10) <
dask-core 2022.7 (2022-07-08) 2022.12 (2022-12-02) <
distributed 2022.7 (2022-07-08) 2022.12 (2022-12-02) <
flox 0.5 (2022-05-03) 0.6 (2022-10-12) <
iris 3.2 (2022-02-15) 3.4 (2022-12-01) <
matplotlib-base 3.5 (2021-11-18) 3.6 (2022-09-16) <
numba 0.55 (2022-01-14) 0.56 (2022-09-28) <
numpy 1.22 (2022-01-03) 1.23 (2022-06-23) <
packaging 21.3 (2021-11-18) 22.0 (2022-12-08) <
pandas 1.4 (2022-01-22) 1.5 (2022-09-19) <
scipy 1.8 (2022-02-06) 1.9 (2022-07-30) <
seaborn 0.11 (2020-09-08) 0.12 (2022-09-06) <
typing_extensions 4.3 (2022-07-01) 4.4 (2022-10-07) <
zarr 2.12 (2022-06-23) 2.13 (2022-09-27) <
```","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8581/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
2065809896,PR_kwDOAMm_X85jO1oX,8586,Bump min deps.,2448579,closed,0,,,0,2024-01-04T14:59:05Z,2024-01-05T16:13:16Z,2024-01-05T16:13:14Z,MEMBER,,0,pydata/xarray/pulls/8586,"
- [x] Closes #8581
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8586/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2052952379,I_kwDOAMm_X856XZE7,8568,Raise when assigning attrs to virtual variables (default coordinate arrays),2448579,open,0,,,0,2023-12-21T19:24:11Z,2023-12-21T19:24:19Z,,MEMBER,,,,"### Discussed in https://github.com/pydata/xarray/discussions/8567
Originally posted by **matthew-brett** December 21, 2023
Sorry for the introductory question, but we (@ivanov and I) ran into this behavior while experimenting:
```python
import numpy as np
data = np.zeros((3, 4, 5))
ds = xr.DataArray(data, dims=('i', 'j', 'k'))
print(ds['k'].attrs)
```
This shows `{}` as we might reasonably expect. But then:
```python
ds['k'].attrs['foo'] = 'bar'
print(ds['k'].attrs)
```
This also gives `{}`, which we found surprising. We worked out why that was, after a little experimentation (the default coordinate arrays seems to get created on the fly and garbage collected immediately). But it took us a little while. Is that as intended? Is there a way of making this less confusing?
Thanks for any help.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8568/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
2047617215,PR_kwDOAMm_X85iUJ7y,8560,Adapt map_blocks to use new Coordinates API,2448579,closed,0,,,0,2023-12-18T23:11:55Z,2023-12-20T17:11:18Z,2023-12-20T17:11:16Z,MEMBER,,0,pydata/xarray/pulls/8560,"Fixes roundtripping of string dtype indexes
- [x] Tests added
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8560/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1954809370,I_kwDOAMm_X850hAYa,8353,Update benchmark suite for asv 0.6.1,2448579,open,0,,,0,2023-10-20T18:13:22Z,2023-12-19T05:53:21Z,,MEMBER,,,,"The new asv version comes with decorators for parameterizing and skipping, and the ability to use `mamba` to create environments.
https://github.com/airspeed-velocity/asv/releases
https://asv.readthedocs.io/en/v0.6.1/writing_benchmarks.html#skipping-benchmarks
This might help us reduce benchmark times a bit, or at least simplify the code some.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8353/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
2033054792,PR_kwDOAMm_X85hi5U2,8532,Whats-new for 2023.12.0,2448579,closed,0,,,0,2023-12-08T17:29:47Z,2023-12-08T19:36:28Z,2023-12-08T19:36:26Z,MEMBER,,0,pydata/xarray/pulls/8532,"
- [ ] Closes #xxxx
- [ ] Tests added
- [ ] 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/8532/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1989588884,I_kwDOAMm_X852lreU,8448,mypy 1.7.0 raising errors,2448579,closed,0,,,0,2023-11-12T21:41:43Z,2023-12-01T22:02:22Z,2023-12-01T22:02:22Z,MEMBER,,,,"### What happened?
```
xarray/namedarray/core.py:758: error: Value of type Never is not indexable [index]
xarray/core/alignment.py:684: error: Unused ""type: ignore"" comment [unused-ignore]
xarray/core/alignment.py:1156: error: Unused ""type: ignore"" comment [unused-ignore]
xarray/core/dataset.py: note: In member ""sortby"" of class ""Dataset"":
xarray/core/dataset.py:7967: error: Incompatible types in assignment (expression has type ""tuple[Alignable, ...]"", variable has type ""tuple[DataArray, ...]"") [assignment]
xarray/core/dataset.py:7979: error: ""Alignable"" has no attribute ""isel"" [attr-defined]
```
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8448/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
2003229011,PR_kwDOAMm_X85f9xPG,8472,Avoid duplicate Zarr array read,2448579,closed,0,,,0,2023-11-21T00:16:34Z,2023-12-01T02:58:22Z,2023-12-01T02:47:03Z,MEMBER,,0,pydata/xarray/pulls/8472,"We already get the underlying Zarr array in
https://github.com/pydata/xarray/blob/bb8511e0894020e180d95d2edb29ed4036ac6447/xarray/backends/zarr.py#L529-L531
and then pass it to `open_store_variable`. Just pass that array down to `ZarrArrayWrapper` instead of reading it from the datastore again.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8472/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
2015530249,PR_kwDOAMm_X85gnO8L,8489,Minor to_zarr optimizations,2448579,closed,0,,,0,2023-11-28T23:56:32Z,2023-12-01T02:20:19Z,2023-12-01T02:18:18Z,MEMBER,,0,pydata/xarray/pulls/8489,Avoid repeatedly pinging a remote store by requesting keys at one go.,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8489/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1997656427,PR_kwDOAMm_X85frEdb,8461,2023.11.0 Whats-new,2448579,closed,0,,,0,2023-11-16T19:55:12Z,2023-11-17T21:02:22Z,2023-11-17T21:02:20Z,MEMBER,,0,pydata/xarray/pulls/8461,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8461/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1997136566,PR_kwDOAMm_X85fpRL3,8458,Pin mypy < 1.7,2448579,closed,0,,,0,2023-11-16T15:31:26Z,2023-11-16T17:29:04Z,2023-11-16T17:29:03Z,MEMBER,,0,pydata/xarray/pulls/8458,"xref #8448
get back to green checks for now.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8458/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1995186323,PR_kwDOAMm_X85finmE,8452,[skip-ci] Small updates to IO docs.,2448579,closed,0,,,0,2023-11-15T17:05:47Z,2023-11-16T15:19:59Z,2023-11-16T15:19:57Z,MEMBER,,0,pydata/xarray/pulls/8452,Also fixes the RTD failure on main,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8452/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1635949876,PR_kwDOAMm_X85MpxlL,7659,Redo whats-new for 2023.03.0,2448579,closed,0,,,0,2023-03-22T15:02:38Z,2023-11-06T04:25:54Z,2023-03-22T15:42:49Z,MEMBER,,0,pydata/xarray/pulls/7659,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7659/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1630533356,PR_kwDOAMm_X85MXo4e,7643,Whats-new for release 2023.03.0,2448579,closed,0,,,0,2023-03-18T19:14:55Z,2023-11-06T04:25:53Z,2023-03-20T15:57:36Z,MEMBER,,0,pydata/xarray/pulls/7643,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7643/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 1, ""eyes"": 0}",,,13221727,pull
1533942791,PR_kwDOAMm_X85HahUq,7440,v2023.01.0 whats-new,2448579,closed,0,,,0,2023-01-15T18:20:28Z,2023-11-06T04:25:52Z,2023-01-18T21:18:49Z,MEMBER,,0,pydata/xarray/pulls/7440,Should update the date and delete empty sections before merging,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7440/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1975400777,PR_kwDOAMm_X85efqSl,8408,Generalize explicit_indexing_adapter,2448579,open,0,,,0,2023-11-03T03:29:40Z,2023-11-03T03:53:25Z,,MEMBER,,1,pydata/xarray/pulls/8408,Use `as_indexable` instead of `NumpyIndexingAdapter`,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8408/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1942673099,PR_kwDOAMm_X85cxp-D,8305,Update labeler.yml to add NamedArray,2448579,closed,0,,,0,2023-10-13T21:39:56Z,2023-10-14T06:47:08Z,2023-10-14T06:47:07Z,MEMBER,,0,pydata/xarray/pulls/8305,"
- [ ] Closes #xxxx
- [ ] Tests added
- [ ] 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/8305/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1942893480,I_kwDOAMm_X85zzjOo,8306,keep_attrs for NamedArray,2448579,open,0,,,0,2023-10-14T02:29:54Z,2023-10-14T02:31:35Z,,MEMBER,,,,"### What is your issue?
Copying over @max-sixty's comment from https://github.com/pydata/xarray/pull/8304#discussion_r1358873522
> I haven't been in touch with the NameArray discussions so forgive a glib comment — but re https://github.com/pydata/xarray/issues/3891 — this would be a ""once-in-a-library"" opportunity to always retain attrs in aggregations, removing the `keep_attrs` option in methods.
>
> (Xarray could still handle them as it wished, so xarray's external interface wouldn't need to change immediately...)
@pydata/xarray Should we just delete the `keep_attrs` kwarg completely for NamedArray and always propagate attrs? `obj.attrs.clear()` seems just as easy to type.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8306/reactions"", ""total_count"": 4, ""+1"": 4, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
1874773066,PR_kwDOAMm_X85ZMtUP,8126,Allow creating DataArrays with nD coordinate variables,2448579,closed,0,,,0,2023-08-31T04:40:37Z,2023-09-22T12:48:38Z,2023-09-22T12:48:34Z,MEMBER,,0,pydata/xarray/pulls/8126,"- [x] Closes #8106
- [x] Tests added
- [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
cc @blaylockbk
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8126/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1902086612,PR_kwDOAMm_X85aoYuf,8206,flox: Set fill_value=np.nan always.,2448579,open,0,,,0,2023-09-19T02:19:49Z,2023-09-19T02:23:26Z,,MEMBER,,1,pydata/xarray/pulls/8206,"
- [x] Closes #8090
- [x] Tests added
- [ ] 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/8206/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1888576440,I_kwDOAMm_X85wkWO4,8162,Update group by multi index,2448579,open,0,,,0,2023-09-09T04:50:29Z,2023-09-09T04:50:39Z,,MEMBER,,,,"ideally `GroupBy._infer_concat_args()` would return a `xr.Coordinates` object that contains both the coordinate(s) and their (multi-)index to assign to the result (combined) object.
The goal is to avoid calling `create_default_index_implicit(coord)` below where `coord` is a `pd.MultiIndex` or a single `IndexVariable` wrapping a multi-index. If `coord` is a `Coordinates` object, we could do `combined = combined.assign_coords(coord)` instead.
https://github.com/pydata/xarray/blob/e2b6f3468ef829b8a83637965d34a164bf3bca78/xarray/core/groupby.py#L1573-L1587
There are actually more general issues:
- The `group` parameter of Dataset.groupby being a single variable or variable name, it won't be possible to do groupby on a full pandas multi-index once we drop its dimension coordinate (#8143). How can we still support it? Maybe passing a dimension name to `group` and check that there's only one index for that dimension?
- How can we support custom, multi-coordinate indexes with groupby? I don't have any practical example in mind, but in theory just passing a single coordinate name as `group` will invalidate the index. Should we drop the index in the result? Or, like suggested above pass a dimension name as group and check the index?
_Originally posted by @benbovy in https://github.com/pydata/xarray/issues/8140#issuecomment-1709775666_
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8162/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
1812504689,I_kwDOAMm_X85sCKBx,8006,Fix documentation about datetime_unit of xarray.DataArray.differentiate,2448579,closed,0,,,0,2023-07-19T18:31:10Z,2023-09-01T09:37:15Z,2023-09-01T09:37:15Z,MEMBER,,,,"Should say that `Y` and `M` cannot be supported with `datetime64`
### Discussed in https://github.com/pydata/xarray/discussions/8000
Originally posted by **jesieleo** July 19, 2023
I have a piece of data that looks like this
```
Dimensions: (time: 612, LEV: 15, latitude: 20, longitude: 357)
Coordinates:
* time (time) datetime64[ns] 1960-01-15 1960-02-15 ... 2010-12-15
* LEV (LEV) float64 5.01 15.07 25.28 35.76 ... 149.0 171.4 197.8 229.5
* latitude (latitude) float64 -4.75 -4.25 -3.75 -3.25 ... 3.75 4.25 4.75
* longitude (longitude) float64 114.2 114.8 115.2 115.8 ... 291.2 291.8 292.2
Data variables:
u (time, LEV, latitude, longitude) float32 ...
Attributes: (12/30)
cdm_data_type: Grid
Conventions: COARDS, CF-1.6, ACDD-1.3
creator_email: chepurin@umd.edu
creator_name: APDRC
creator_type: institution
creator_url: https://www.atmos.umd.edu/~ocean/
... ...
standard_name_vocabulary: CF Standard Name Table v29
summary: Simple Ocean Data Assimilation (SODA) soda po...
time_coverage_end: 2010-12-15T00:00:00Z
time_coverage_start: 1983-01-15T00:00:00Z
title: SODA soda pop2.2.4 [TIME][LEV][LAT][LON]
Westernmost_Easting: 118.25
```
when i try to use xarray.DataArray.differentiate
`data.u.differentiate('time',datetime_unit='M')`
will appear
```
Traceback (most recent call last):
File """", line 1, in
File ""D:\Anaconda3\lib\site-packages\xarray\core\dataarray.py"", line 3609, in differentiate
ds = self._to_temp_dataset().differentiate(coord, edge_order, datetime_unit)
File ""D:\Anaconda3\lib\site-packages\xarray\core\dataset.py"", line 6372, in differentiate
coord_var = coord_var._to_numeric(datetime_unit=datetime_unit)
File ""D:\Anaconda3\lib\site-packages\xarray\core\variable.py"", line 2428, in _to_numeric
numeric_array = duck_array_ops.datetime_to_numeric(
File ""D:\Anaconda3\lib\site-packages\xarray\core\duck_array_ops.py"", line 466, in datetime_to_numeric
array = array / np.timedelta64(1, datetime_unit)
TypeError: Cannot get a common metadata divisor for Numpy datatime metadata [ns] and [M] because they have incompatible nonlinear base time units.
```
Would you please told me is this a BUG?
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8006/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1861692451,PR_kwDOAMm_X85YgtYD,8098,[skip-ci] dev whats-new,2448579,closed,0,,,0,2023-08-22T15:20:54Z,2023-08-22T20:46:29Z,2023-08-22T20:46:29Z,MEMBER,,0,pydata/xarray/pulls/8098,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8098/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1855338426,PR_kwDOAMm_X85YLRQH,8081,Add 2023.08.0 whats-new,2448579,closed,0,,,0,2023-08-17T16:36:06Z,2023-08-18T20:12:27Z,2023-08-18T20:12:25Z,MEMBER,,0,pydata/xarray/pulls/8081,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8081/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1829952467,PR_kwDOAMm_X85W1yq4,8033,Reduce pre-commit update frequency to monthly from weekly.,2448579,closed,0,,,0,2023-07-31T20:16:05Z,2023-08-01T16:48:12Z,2023-08-01T16:48:10Z,MEMBER,,0,pydata/xarray/pulls/8033,We could even go down to `quarterly`,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8033/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1824824446,I_kwDOAMm_X85sxJx-,8025,"Support Groupby first, last with flox",2448579,open,0,,,0,2023-07-27T17:07:51Z,2023-07-27T19:08:06Z,,MEMBER,,,,"### Is your feature request related to a problem?
[flox](https://github.com/xarray-contrib/flox) recently added support for first, last, nanfirst, nanlast. So we should support that on the Xarray GroupBy object.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8025/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
1642299599,I_kwDOAMm_X85h44DP,7683,automatically chunk in groupby binary ops,2448579,closed,0,,,0,2023-03-27T15:14:09Z,2023-07-27T16:41:35Z,2023-07-27T16:41:34Z,MEMBER,,,,"### What happened?
From https://discourse.pangeo.io/t/xarray-unable-to-allocate-memory-how-to-size-up-problem/3233/4
Consider
``` python
# ds is dataset with big dask arrays
mean = ds.groupby(""time.day"").mean()
mean.to_netcdf()
mean = xr.open_dataset(...)
ds.groupby(""time.day"") - mean
```
In `GroupBy._binary_op`
https://github.com/pydata/xarray/blob/39caafae4452f5327a7cd671b18d4bb3eb3785ba/xarray/core/groupby.py#L616
we will eagerly construct `other` that is of the same size as `ds`.
### What did you expect to happen?
I think the only solution is to automatically chunk if `ds` has dask arrays, and `other` (or `mean`) isn't backed by dask arrays. A chunk size of `1` seems sensible.
### Minimal Complete Verifiable Example
_No response_
### MVCE confirmation
- [ ] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
- [ ] Complete example — the example is self-contained, including all data and the text of any traceback.
- [ ] Verifiable example — the example copy & pastes into an IPython prompt or [Binder notebook](https://mybinder.org/v2/gh/pydata/xarray/main?urlpath=lab/tree/doc/examples/blank_template.ipynb), returning the result.
- [ ] New issue — a search of GitHub Issues suggests this is not a duplicate.
### Relevant log output
_No response_
### Anything else we need to know?
_No response_
### Environment
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7683/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1812646094,PR_kwDOAMm_X85V7g7q,8007,Update copyright year in README,2448579,closed,0,,,0,2023-07-19T20:00:50Z,2023-07-20T21:13:27Z,2023-07-20T21:13:26Z,MEMBER,,0,pydata/xarray/pulls/8007,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8007/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1797636782,I_kwDOAMm_X85rJcKu,7976,Explore updating colormap code,2448579,closed,0,,,0,2023-07-10T21:51:30Z,2023-07-11T13:49:54Z,2023-07-11T13:49:53Z,MEMBER,,,,"### What is your issue?
See https://github.com/matplotlib/matplotlib/issues/16296
Looks like the MPL API may have advanced enough that we can delete some of our use of private attributes.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7976/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1701070898,PR_kwDOAMm_X85QCzA1,7830,Fix .groupby(multi index level),2448579,closed,0,,,0,2023-05-08T23:16:07Z,2023-06-06T00:21:36Z,2023-06-06T00:21:31Z,MEMBER,,0,pydata/xarray/pulls/7830,"- [x] Closes #6836
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7830/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1700678362,PR_kwDOAMm_X85QBdXY,7828,GroupBy: Fix reducing by subset of grouper dims,2448579,open,0,,,0,2023-05-08T18:00:54Z,2023-05-10T02:41:39Z,,MEMBER,,1,pydata/xarray/pulls/7828,"
- [x] Tests added
Fixes yet another bug with GroupBy reductions. We weren't assigning the group index when reducing by a subset of dimensions present on the grouper
This will only pass when flox 0.7.1 reaches conda-forge.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7828/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1692597701,I_kwDOAMm_X85k4v3F,7808,Default behaviour of `min_count` wrong with flox,2448579,closed,0,,,0,2023-05-02T15:04:11Z,2023-05-10T02:39:45Z,2023-05-10T02:39:45Z,MEMBER,,,,"### What happened?
```python
with xr.set_options(display_style=""text"", use_flox=False):
with xr.set_options(use_flox=False):
display(
xr.DataArray(
data=np.array([np.nan, 1, 1, np.nan, 1, 1]),
dims=""x"",
coords={""labels"": (""x"", np.array([1, 2, 3, 1, 2, 3]))},
)
.groupby(""labels"")
.sum()
)
with xr.set_options(use_flox=True):
display(
xr.DataArray(
data=np.array([np.nan, 1, 1, np.nan, 1, 1]),
dims=""x"",
coords={""labels"": (""x"", np.array([1, 2, 3, 1, 2, 3]))},
)
.groupby(""labels"")
.sum()
)
```
```
# without flox
array([0., 2., 2.])
Coordinates:
* labels (labels) int64 1 2 3
# with flox
array([nan, 2., 2.])
Coordinates:
* labels (labels) int64 1 2 3
```
### What did you expect to happen?
The same answer. We should set `min_count=0` when `min_count is None`
### Minimal Complete Verifiable Example
_No response_
### MVCE confirmation
- [ ] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
- [ ] Complete example — the example is self-contained, including all data and the text of any traceback.
- [ ] Verifiable example — the example copy & pastes into an IPython prompt or [Binder notebook](https://mybinder.org/v2/gh/pydata/xarray/main?urlpath=lab/tree/doc/examples/blank_template.ipynb), returning the result.
- [ ] New issue — a search of GitHub Issues suggests this is not a duplicate.
### Relevant log output
_No response_
### Anything else we need to know?
_No response_
### Environment
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7808/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1692612622,PR_kwDOAMm_X85PmMOy,7809,Fix `min_count` behaviour with flox.,2448579,closed,0,,,0,2023-05-02T15:13:17Z,2023-05-10T02:39:45Z,2023-05-10T02:39:43Z,MEMBER,,0,pydata/xarray/pulls/7809,"
- [x] Closes #7808
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7809/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1677167290,PR_kwDOAMm_X85Oyokd,7775,[skip-ci] dev whats-new,2448579,closed,0,,,0,2023-04-20T17:54:27Z,2023-04-20T21:08:14Z,2023-04-20T21:08:11Z,MEMBER,,0,pydata/xarray/pulls/7775,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7775/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1677161134,PR_kwDOAMm_X85OynVg,7774,[skip-ci] Release 2023.04.2,2448579,closed,0,,,0,2023-04-20T17:49:46Z,2023-04-20T18:26:39Z,2023-04-20T18:26:37Z,MEMBER,,0,pydata/xarray/pulls/7774,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7774/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1671616256,PR_kwDOAMm_X85OgCYb,7762,Fix binning by unsorted array,2448579,closed,0,,,0,2023-04-17T17:04:45Z,2023-04-18T14:48:28Z,2023-04-18T14:48:23Z,MEMBER,,0,pydata/xarray/pulls/7762,"- [x] Closes #7759
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7762/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1668569869,PR_kwDOAMm_X85OV_JV,7757,Add whats-new for v2023.04.0,2448579,closed,0,,,0,2023-04-14T16:36:01Z,2023-04-14T17:25:37Z,2023-04-14T17:25:35Z,MEMBER,,0,pydata/xarray/pulls/7757,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7757/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1658287743,PR_kwDOAMm_X85N0Afw,7736,"align: Avoid reindexing when join=""exact""",2448579,closed,0,,,0,2023-04-07T02:46:08Z,2023-04-12T14:41:53Z,2023-04-12T14:41:51Z,MEMBER,,0,pydata/xarray/pulls/7736,"xref #7730, #7737
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7736/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1658319105,PR_kwDOAMm_X85N0Gez,7738,[skip-ci] Add alignment benchmarks,2448579,closed,0,,,0,2023-04-07T03:40:32Z,2023-04-07T22:31:08Z,2023-04-07T22:31:05Z,MEMBER,,0,pydata/xarray/pulls/7738,xref #4648,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7738/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1656619829,PR_kwDOAMm_X85Nuo9M,7729,Test: new index from dask.array computes only once,2448579,closed,0,,,0,2023-04-06T03:52:22Z,2023-04-06T04:15:47Z,2023-04-06T04:15:45Z,MEMBER,,0,pydata/xarray/pulls/7729,"Closes #1533
Seems to have been fixed by the indexes refactor","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7729/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1649611456,I_kwDOAMm_X85iUxLA,7704,follow upstream scipy interpolation improvements,2448579,open,0,,,0,2023-03-31T15:46:56Z,2023-03-31T15:46:56Z,,MEMBER,,,,"### Is your feature request related to a problem?
Scipy 1.10.0 has some great improvements to interpolation ([release notes](https://docs.scipy.org/doc/scipy/release.1.10.0.html#scipy-interpolate-improvements)) particularly around the fancier methods like `pchip`.
It'd be good to see if we can simplify some of our code (or even enable using these options).
### Describe the solution you'd like
_No response_
### Describe alternatives you've considered
_No response_
### Additional context
_No response_","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7704/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
1268667121,PR_kwDOAMm_X845hbaE,6689,Refactor GroupBy init to avoid factorization,2448579,closed,0,,,0,2022-06-12T18:41:04Z,2023-03-29T16:28:29Z,2023-03-29T16:28:29Z,MEMBER,,1,pydata/xarray/pulls/6689,"Refactoring `GroupBy.__init__` as a step toward #6610
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6689/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1636110117,PR_kwDOAMm_X85MqTjx,7660,[skip-ci] dev whats-new,2448579,closed,0,,,0,2023-03-22T16:22:46Z,2023-03-22T17:57:15Z,2023-03-22T17:57:13Z,MEMBER,,0,pydata/xarray/pulls/7660,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7660/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1600469223,PR_kwDOAMm_X85Ky0-D,7562,"Support first, last with dask arrays",2448579,closed,0,,,0,2023-02-27T04:54:09Z,2023-03-03T23:13:57Z,2023-03-03T23:13:52Z,MEMBER,,0,pydata/xarray/pulls/7562,"Use dask.array.reduction. For this we need to add support for the `keepdims` kwarg to `nanfirst` and `nanlast`. Even though the final result is always keepdims=False, dask runs the intermediate steps with keepdims=True.
- [ ] Closes #xxxx
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7562/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1574631376,PR_kwDOAMm_X85JcpzG,7512,Update HOW_TO_RELEASE.md,2448579,closed,0,,,0,2023-02-07T16:23:50Z,2023-02-07T17:40:52Z,2023-02-07T17:40:50Z,MEMBER,,0,pydata/xarray/pulls/7512,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7512/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1574621206,PR_kwDOAMm_X85Jcnno,7511,Update whats-new for dev,2448579,closed,0,,,0,2023-02-07T16:17:20Z,2023-02-07T17:40:28Z,2023-02-07T17:40:26Z,MEMBER,,0,pydata/xarray/pulls/7511,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7511/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1548082114,PR_kwDOAMm_X85IEVEf,7454,Mention flox in docs,2448579,closed,0,,,0,2023-01-18T20:46:30Z,2023-01-26T16:59:44Z,2023-01-26T16:59:41Z,MEMBER,,0,pydata/xarray/pulls/7454,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7454/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1536791632,PR_kwDOAMm_X85HkDxR,7449,[skip-cii] Add pyodide update instructions to HOW_TO_RELEASE,2448579,closed,0,,,0,2023-01-17T17:46:51Z,2023-01-19T14:01:39Z,2023-01-19T14:01:37Z,MEMBER,,0,pydata/xarray/pulls/7449,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7449/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1548137655,PR_kwDOAMm_X85IEhQU,7455,[skip-ci] whats-new for next release,2448579,closed,0,,,0,2023-01-18T21:32:59Z,2023-01-19T14:01:20Z,2023-01-19T14:01:17Z,MEMBER,,0,pydata/xarray/pulls/7455,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7455/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1473583411,PR_kwDOAMm_X85ELiEY,7351,[skip-ci] whats-new for dev,2448579,closed,0,,,0,2022-12-02T23:44:48Z,2022-12-04T18:25:22Z,2022-12-04T18:25:20Z,MEMBER,,0,pydata/xarray/pulls/7351,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7351/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1472041871,PR_kwDOAMm_X85EGUMF,7345,Whats-new: 2022.12.0,2448579,closed,0,,,0,2022-12-01T22:27:33Z,2022-12-02T22:57:57Z,2022-12-02T22:57:53Z,MEMBER,,0,pydata/xarray/pulls/7345,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7345/reactions"", ""total_count"": 3, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 2, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1436632685,PR_kwDOAMm_X85CPVIi,7257,[skip-ci] dev whats-new,2448579,closed,0,,,0,2022-11-04T20:47:21Z,2022-11-04T23:08:03Z,2022-11-04T23:08:01Z,MEMBER,,0,pydata/xarray/pulls/7257,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7257/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1421036686,PR_kwDOAMm_X85BbOeg,7205,Fix binning when labels are provided.,2448579,closed,0,,,0,2022-10-24T15:40:27Z,2022-10-26T15:56:37Z,2022-10-26T15:56:35Z,MEMBER,,0,pydata/xarray/pulls/7205,"- [x] Closes #7198
- [x] Tests added
- [ ] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7205/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
802525282,MDExOlB1bGxSZXF1ZXN0NTY4NjUzOTg0,4868,facets and hue with hist,2448579,open,0,,,0,2021-02-05T22:49:36Z,2022-10-19T07:27:32Z,,MEMBER,,0,pydata/xarray/pulls/4868,"
- [x] Closes #4288
- [ ] Tests added
- [x] Passes `pre-commit run --all-files`
- [ ] 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/4868/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
802431534,MDExOlB1bGxSZXF1ZXN0NTY4NTc1NzIw,4866,Refactor line plotting,2448579,open,0,,,0,2021-02-05T19:51:24Z,2022-10-18T20:13:14Z,,MEMBER,,0,pydata/xarray/pulls/4866,"
Refactors line plotting to use a `_plot1d` decorator.
Next i'll use this decorator on `hist` so we can ""facet"" and ""hue"" histograms.
see #4288
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/4866/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1408327952,PR_kwDOAMm_X85Aw5A3,7161,dev whats-new ,2448579,closed,0,,,0,2022-10-13T19:36:19Z,2022-10-18T19:16:22Z,2022-10-13T21:05:08Z,MEMBER,,0,pydata/xarray/pulls/7161,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7161/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1302718665,PR_kwDOAMm_X847TJVP,6780,Update flox repo URL,2448579,closed,0,,,0,2022-07-12T23:25:23Z,2022-10-18T19:16:20Z,2022-07-13T02:36:50Z,MEMBER,,0,pydata/xarray/pulls/6780,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6780/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1283026595,PR_kwDOAMm_X846Rn-p,6719,Add new datasets to tutorial.load_dataset docstring,2448579,closed,0,,,0,2022-06-23T22:20:08Z,2022-10-18T19:16:19Z,2022-06-28T18:53:31Z,MEMBER,,0,pydata/xarray/pulls/6719,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6719/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1286270270,PR_kwDOAMm_X846cLwN,6732,[skip-ci] Reorganize the Plotting section of API Reference,2448579,closed,0,,,0,2022-06-27T19:50:23Z,2022-10-18T19:16:17Z,2022-06-28T18:52:32Z,MEMBER,,0,pydata/xarray/pulls/6732,"One top level heading with Dataset, DataArray, and
Faceting subsections.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6732/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1302210315,PR_kwDOAMm_X847RabS,6776,Update map_blocks to use chunksizes property.,2448579,closed,0,,,0,2022-07-12T15:16:45Z,2022-10-18T19:16:15Z,2022-07-14T17:42:26Z,MEMBER,,0,pydata/xarray/pulls/6776,"Raise nicer error if provided template has no dask arrays.
- [x] Closes #6763
- [x] Tests added","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6776/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1370340170,PR_kwDOAMm_X84-zpR-,7022,Preserve all attrs with GroupBy by default.,2448579,closed,0,,,0,2022-09-12T18:26:47Z,2022-10-18T19:15:21Z,2022-09-13T15:30:29Z,MEMBER,,0,pydata/xarray/pulls/7022,"Closes #7012
When `use_flox=False`, we pass `keep_attrs=None` to `Data*.reduce`. This ends up delete Dataset and DataArray level attrs but preserves coordinate variable attrs. We now set the default to True always to match the default behaviour of `apply_ufunc` used by `flox.xarray.xarray_reduce`.
- [x] Closes #7012
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7022/reactions"", ""total_count"": 3, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 1, ""eyes"": 0}",,,13221727,pull
1330389950,PR_kwDOAMm_X848vgCB,6882,Allow decoding of size-0 datetimes,2448579,closed,0,,,0,2022-08-05T21:00:13Z,2022-10-18T19:15:17Z,2022-08-10T17:25:19Z,MEMBER,,0,pydata/xarray/pulls/6882,"
- [x] Closes #1329
- [x] Tests added
- [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst`
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6882/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1306156897,PR_kwDOAMm_X847ejCK,6788,Warn when grouping by dask array.,2448579,closed,0,,,0,2022-07-15T15:15:03Z,2022-10-18T19:15:15Z,2022-07-15T18:05:06Z,MEMBER,,0,pydata/xarray/pulls/6788,"Currently computes eagerly; we want to not do that in the future
(broken out from #6689)
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6788/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1408315481,PR_kwDOAMm_X85Aw2RF,7160,v2022.10.0 whats-new,2448579,closed,0,,,0,2022-10-13T19:25:11Z,2022-10-13T20:28:06Z,2022-10-13T20:28:05Z,MEMBER,,0,pydata/xarray/pulls/7160,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7160/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
626591460,MDU6SXNzdWU2MjY1OTE0NjA=,4107,renaming Variable to a dimension name does not convert to IndexVariable,2448579,closed,0,4160723,,0,2020-05-28T15:11:49Z,2022-09-27T09:33:42Z,2022-09-27T09:33:42Z,MEMBER,,,,"
Seen in #4103
#### MCVE Code Sample
```python
from xarray.tests import assert_identical
coord_1 = xr.DataArray([1, 2], dims=[""coord_1""], attrs={""attrs"": True})
da = xr.DataArray([1, 0], [coord_1])
obj = da.reset_index(""coord_1"").rename({""coord_1_"": ""coord_1""})
assert_identical(da, obj)
```
#### Expected Output
#### Problem Description
```
AssertionErrorTraceback (most recent call last)
in
----> 1 assert_identical(da, obj)
~/work/python/xarray/xarray/tests/__init__.py in assert_identical(a, b)
160 xarray.testing.assert_identical(a, b)
161 xarray.testing._assert_internal_invariants(a)
--> 162 xarray.testing._assert_internal_invariants(b)
163
164
~/work/python/xarray/xarray/testing.py in _assert_internal_invariants(xarray_obj)
265 _assert_variable_invariants(xarray_obj)
266 elif isinstance(xarray_obj, DataArray):
--> 267 _assert_dataarray_invariants(xarray_obj)
268 elif isinstance(xarray_obj, Dataset):
269 _assert_dataset_invariants(xarray_obj)
~/work/python/xarray/xarray/testing.py in _assert_dataarray_invariants(da)
210 assert all(
211 isinstance(v, IndexVariable) for (k, v) in da._coords.items() if v.dims == (k,)
--> 212 ), {k: type(v) for k, v in da._coords.items()}
213 for k, v in da._coords.items():
214 _assert_variable_invariants(v, k)
AssertionError: {'coord_1': }
```
#### Versions
Output of xr.show_versions()
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/4107/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
1378174355,I_kwDOAMm_X85SJUWT,7055,Use roundtrip context manager in distributed write tests,2448579,open,0,,,0,2022-09-19T15:53:40Z,2022-09-19T15:53:40Z,,MEMBER,,,,"### What is your issue?
File roundtripping tests in `test_distributed.py` don't use the `roundtrip` context manager (thpugh one uses `create_tmp_file`) so I don't think any created files are being cleaned up.
Example:
https://github.com/pydata/xarray/blob/09e467a6a3a8ed68c6c29647ebf2b09288145da1/xarray/tests/test_distributed.py#L91-L119","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/7055/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue
1262168838,PR_kwDOAMm_X845LyRA,6667,Set keep_attrs for flox,2448579,closed,0,,,0,2022-06-06T17:58:10Z,2022-09-12T18:08:35Z,2022-06-06T18:53:37Z,MEMBER,,0,pydata/xarray/pulls/6667,"Closes #6666
False by default following Dataset.reduce","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6667/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1352462722,PR_kwDOAMm_X8494KNn,6958,[skip-ci] Stop applying topic-documentation label,2448579,closed,0,,,0,2022-08-26T16:09:58Z,2022-08-26T16:10:30Z,2022-08-26T16:10:29Z,MEMBER,,0,pydata/xarray/pulls/6958,"Lots of false positives.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6958/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1342137214,PR_kwDOAMm_X849V9ip,6925,Update PR labels,2448579,closed,0,,,0,2022-08-17T18:38:02Z,2022-08-19T15:53:41Z,2022-08-19T15:53:40Z,MEMBER,,0,pydata/xarray/pulls/6925,"Use `topic-documentation` and automatically run benchmarks
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6925/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1326096263,PR_kwDOAMm_X848hKwg,6869,Add cupy-xarray; update pint-xarray url,2448579,closed,0,,,0,2022-08-02T16:26:02Z,2022-08-02T16:56:22Z,2022-08-02T16:56:21Z,MEMBER,,0,pydata/xarray/pulls/6869,,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6869/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1313843378,PR_kwDOAMm_X8474tEy,6815,Release notes for v2022.06.0,2448579,closed,0,,,0,2022-07-21T21:51:33Z,2022-07-22T15:45:00Z,2022-07-22T15:44:58Z,MEMBER,,0,pydata/xarray/pulls/6815,"
- [x] Closes #6645
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6815/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1306166753,PR_kwDOAMm_X847elJQ,6789,Refactor groupby binary ops code.,2448579,closed,0,,,0,2022-07-15T15:24:44Z,2022-07-20T01:30:11Z,2022-07-20T01:30:09Z,MEMBER,,0,pydata/xarray/pulls/6789,Cleaner implementation; also broken out from #6689 ,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6789/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1306155046,PR_kwDOAMm_X847eipZ,6787,Update groupby attrs tests,2448579,closed,0,,,0,2022-07-15T15:13:08Z,2022-07-15T21:37:44Z,2022-07-15T21:37:43Z,MEMBER,,0,pydata/xarray/pulls/6787,Update tests + add a couple more,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6787/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull
1289174987,I_kwDOAMm_X85M1z_L,6739,"""center"" kwarg ignored when manually iterating over DataArrayRolling",2448579,closed,0,,,0,2022-06-29T19:07:07Z,2022-07-14T17:41:01Z,2022-07-14T17:41:01Z,MEMBER,,,,"### Discussed in https://github.com/pydata/xarray/discussions/6738
Originally posted by **ckingdon95** June 29, 2022
Hello, I am trying to manually iterate over a DataArrayRolling object, as described [here ](https://docs.xarray.dev/en/stable/user-guide/computation.html#rolling-window-operations)in the documentation.
I am confused why the following two code chunks do not produce the same sequence of values. I would like to be able to manually iterate over a DataArrayRolling object, and still be given center-justified windows. Is there a way to do this?
```python
import xarray as xr
import numpy as np
my_data = xr.DataArray(np.arange(1,10), dims=""x"")
# Option 1: take a center-justified rolling average
result1 = my_data.rolling(x=3, center=True).mean().values
result1
```
This returns the following values, as expected:
```
array([nan, 2., 3., 4., 5., 6., 7., 8., nan])
```
Whereas when I do it manually, it is not equivalent:
```python
# Option 2: try to manually iterate, but the result is not centered
my_data_rolling = my_data.rolling(x=3, center=True)
result2 = [window.mean().values.item() for label, window in my_data_rolling]
result2
```
This returns
```
[nan, nan, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]
```
Is this an issue with the window iterator? If it is not an issue, then is there a way for me to get the center-justified windows in the manual iteration?
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/6739/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue