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 2026963757,I_kwDOAMm_X8540QMt,8522,Test failures on `main`,5635139,closed,0,,,7,2023-12-05T19:22:01Z,2023-12-06T18:48:24Z,2023-12-06T17:28:13Z,MEMBER,,,,"### What is your issue? Any ideas what could be causing these? I can't immediately reproduce locally. https://github.com/pydata/xarray/actions/runs/7105414268/job/19342564583 ``` Error: TestDataArray.test_computation_objects[int64-method_groupby_bins-data] AssertionError: Left and right DataArray objects are not close Differing values: L R ```","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8522/reactions"", ""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 1, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue 1899109828,PR_kwDOAMm_X85aeino,8193,Add some more mypy checks,5635139,closed,0,,,7,2023-09-15T21:40:14Z,2023-09-17T19:34:55Z,2023-09-17T19:24:58Z,MEMBER,,0,pydata/xarray/pulls/8193,"This disallows redundant casts FWIW I thought we had gone through many of the tests and forced them to have typed defs, maybe with the intention of turning on some elements of strict mode. But then I don't think we have any strictness checks at the moment, and I see many functions in the tests which don't have typing. Am I mis-rembering?? Or maybe we started but didn't get far enough (it is a big project...) ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8193/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 994264727,MDExOlB1bGxSZXF1ZXN0NzMyMjM5NjEw,5787,Update issue template to include a checklist,5635139,closed,0,,,7,2021-09-12T19:47:23Z,2022-04-27T08:23:27Z,2022-04-27T00:56:27Z,MEMBER,,0,pydata/xarray/pulls/5787," This may be overly prescriptive. We've had a number of recent issues which aren't minimal and link to external data, and then these languish on the Issue Tracker unanswered. That's a loss of time for all involved — the reporter of the issue as well as the maintainers. To the extent we can predict which issues will languish, it would be better to give that guidance up front, and encourage examples which are easier to engage with. So this introduces a checklist that people need to proactively fill out.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/5787/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 777586739,MDExOlB1bGxSZXF1ZXN0NTQ3ODQxNzk4,4753,Replace SortedKeysDict with dict,5635139,closed,0,,,7,2021-01-03T07:02:39Z,2021-05-19T19:30:19Z,2021-05-19T19:29:31Z,MEMBER,,0,pydata/xarray/pulls/4753," - [x] Tests added - [x] Passes `isort . && black . && mypy . && flake8` - [x] User visible changes (including notable bug fixes) are documented in `whats-new.rst` Inspired by @mathause research in https://github.com/pydata/xarray/issues/4571#issuecomment-724848270 Note that one test is removed: https://github.com/pydata/xarray/compare/master...max-sixty:sorted-keys?expand=1#diff-2db7f6624707083db4aaab1b62eb11352200ec9d3ac1055de84877912226d7b5L560 While I'm keen on simplifying the data structures, this may have some unforeseen consequences, and at least deserves some thought re how we handle differently ordered dims. Currently this PR retains the sorting in reprs.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/4753/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 705050342,MDExOlB1bGxSZXF1ZXN0NDg5ODYwODEx,4440,Add doctests to release notes,5635139,closed,0,,,7,2020-09-20T05:39:51Z,2020-09-20T21:24:18Z,2020-09-20T19:33:36Z,MEMBER,,0,pydata/xarray/pulls/4440,Any other changes?,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/4440/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 521754870,MDU6SXNzdWU1MjE3NTQ4NzA=,3514,Should we cache some small properties?,5635139,open,0,,,7,2019-11-12T19:28:21Z,2019-11-16T04:32:11Z,,MEMBER,,,,"I was doing some profiling on `isel`, and see there are some properties that (I think) never change, but are called frequently. Should we cache these on their object? Pandas uses [cache_readonly](https://github.com/pandas-dev/pandas/blob/master/pandas/_libs/properties.pyx#L7) for these cases. Here's a case: we call [`LazilyOuterIndexedArray.shape`](https://github.com/pydata/xarray/blob/af28c6b02fac08494f5d9ae2718d68a084d93949/xarray/core/indexing.py#L535) frequently when doing a simple indexing operation. Each call takes ~150µs. An attribute lookup on a python object takes ~50ns (i.e. 3000x faster). IIUC the result on that property should never change. I don't think this is the solution to performance issues, and there's some additional complexity. Could they be easy & small wins, though?","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3514/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue 514142439,MDExOlB1bGxSZXF1ZXN0MzMzODA1NTUy,3459,Dataset.map,5635139,closed,0,,,7,2019-10-29T18:46:04Z,2019-11-09T22:08:07Z,2019-11-09T21:10:23Z,MEMBER,,0,pydata/xarray/pulls/3459," - [x] Helps https://github.com/pydata/xarray/issues/1251 - [x] Tests added - [x] Passes `black . && mypy . && flake8` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API This is the first step towards organizing these functions a bit better, as outlined in https://github.com/pydata/xarray/issues/1251, https://github.com/pydata/xarray/issues/1618, https://github.com/pydata/xarray/pull/2674 While this one is a fairly easy decision, others are going to be harder. Open to a more methodical up-front process before we start making changes, if we think that's necessary.","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3459/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 514164837,MDExOlB1bGxSZXF1ZXN0MzMzODI0ODMx,3460,fix test suite warnings re `drop`,5635139,closed,0,,,7,2019-10-29T19:24:03Z,2019-10-31T04:39:11Z,2019-10-31T01:24:16Z,MEMBER,,0,pydata/xarray/pulls/3460,Some more warnings silenced,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3460/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 478690528,MDExOlB1bGxSZXF1ZXN0MzA1NzUxMzc0,3194,Remove future statements,5635139,closed,0,,,7,2019-08-08T21:14:35Z,2019-08-09T04:33:11Z,2019-08-09T04:33:08Z,MEMBER,,0,pydata/xarray/pulls/3194,Not sure why these weren't picked up in some of the previous python3-ifying,"{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3194/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 448295143,MDExOlB1bGxSZXF1ZXN0MjgyMTEyOTQ4,2987,Implement @ operator for DataArray,5635139,closed,0,,,7,2019-05-24T18:14:20Z,2019-06-01T20:00:24Z,2019-06-01T19:42:21Z,MEMBER,,0,pydata/xarray/pulls/2987," - [x] Closes https://github.com/pydata/xarray/issues/1053 - [x] Tests added - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API Is it really this easy? What am I missing?","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/2987/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 267826297,MDU6SXNzdWUyNjc4MjYyOTc=,1651,ENH: Forward & back fill methods,5635139,closed,0,,,7,2017-10-23T21:39:18Z,2018-02-09T17:36:30Z,2018-02-09T17:36:29Z,MEMBER,,,,"I think with `np.flip` and `bn.push`, this should be simple. They're both fairly new and so would require version checks / upgrading the minimums. One small issue, I wonder if anyone has come across this: `bottleneck` returns the numpy array rather than the DataArray - is that because it's not operating with the correct numpy interface? Forward fill: ``` array.values = bn.push(array.values, axis=array.get_axis_num(axis_name)) ``` Backfill: ``` axis = array.get_axis_num(axis_name) # reverse for bfill array = np.flip(array, axis=axis) # fill array.values = bn.push(array.values, axis=axis) # reverse back to original result = np.flip(scaling, axis=date_axis) ```","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1651/reactions"", ""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue 156591025,MDU6SXNzdWUxNTY1OTEwMjU=,859,BUG: Rolling on Dataset,5635139,closed,0,,,7,2016-05-24T19:35:32Z,2017-03-31T03:10:45Z,2017-03-31T03:10:45Z,MEMBER,,,,"This looks like it's available with `dir` / tab complete, but actually isn't: ``` python In [13]: xr.DataArray(np.random.rand(10,3)).to_dataset('dim_1').rolling --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in () ----> 1 xr.DataArray(np.random.rand(10,3)).to_dataset('dim_1').rolling /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/xarray/core/common.py in __getattr__(self, name) 135 return source[name] 136 raise AttributeError(""%r object has no attribute %r"" % --> 137 (type(self).__name__, name)) 138 139 def __setattr__(self, name, value): AttributeError: 'Dataset' object has no attribute 'rolling' ``` I _think_ this could be easy to implement as an `.apply` operation? (indeed, that could be a reasonable path for a whole host of operations - i.e. try and apply them to each array in the ds?) Also, as a very narrow point, I'm not sure why `.rolling_cls` is public? Probably should be private? Finally, the Rolling implementation is pretty sweet. I've been getting my hands dirty in the pandas one recently, and that we can have something as well featured as that with so few lines of code 👍 ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/859/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue 124441012,MDU6SXNzdWUxMjQ0NDEwMTI=,692,"Transpose modifies dtype of index, when a PeriodIndex",5635139,closed,0,,,7,2015-12-31T07:11:56Z,2016-01-03T18:41:04Z,2016-01-02T01:48:48Z,MEMBER,,,,"This is very peculiar & specific, but also fairly impactful for us. If you - Create a Dataset with a `coord` that is a `PeriodIndex` - Transpose that `coord` - Add a variable to the Dataset that needs to be reindexed ...then the type of the index changes from object to int64. This then causes other arrays added to that dataset to show up as `NaN`s throughout. Here's an example. Note the `dtype('O'))` at the end of each output. ``` python In [61]: series = pd.Series(np.random.rand(10),index=pd.period_range(start='2000', periods=10,name='date')) ​ ds = xray.Dataset({'number 1':series}) ds['number 2'] = ds['number 1'] ds, ds.date.dtype Out[61]: ( Dimensions: (date: 10) Coordinates: * date (date) object 10957 10958 10959 10960 10961 10962 10963 10964 ... Data variables: number 1 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ... number 2 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ..., dtype('O')) In [62]: ds, ds.date.dtype ds=ds.transpose('date') ds, ds.date.dtype Out[62]: ( Dimensions: (date: 10) Coordinates: * date (date) object 10957 10958 10959 10960 10961 10962 10963 10964 ... Data variables: number 1 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ... number 2 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ..., dtype('O')) In [63]: ds ds['number 3'] = ds['number 1'] ds, ds.date.dtype Out[63]: ( Dimensions: (date: 10) Coordinates: * date (date) object 10957 10958 10959 10960 10961 10962 10963 10964 ... Data variables: number 1 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ... number 2 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ... number 3 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ..., dtype('O')) In [64]: ds ds['number 4'] = ds['number 1'][:5] ds, ds.date.dtype Out[64]: ( Dimensions: (date: 10) Coordinates: * date (date) int64 10957 10958 10959 10960 10961 10962 10963 10964 ... Data variables: number 1 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ... number 2 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ... number 3 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 0.6723 ... number 4 (date) float64 0.1133 0.5952 0.5467 0.2035 0.2022 nan nan nan ..., dtype('int64')) ``` ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/692/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue